From the blog

Save and load Excel .XLSX files from grids in Delphi or C++Builder apps

The Microsoft Excel file as industry standard The Excel .XLSX file format is these days a de facto standard file format to exchange all kinds of tabular data. As the information in an Excel sheet is 2 dimensional, a grid control is the most logical choice for viewing such data or to be the source of such data. For a long time, the TMS VCL TAdvStringGrid component offered built-in support to open and save .XLS files natively without the need to have Microsoft Excel installed. Given how complex the .XLSX file format is, TAdvStringGrid offered only built-in support to save and load .XLSX files via OLE automation, i.e. with the requirement to have Microsoft Excel installed. On the other side, also for a long time, we have the TMS FlexCel product that specializes in native Excel file manipuluation, i.e. reading, writing, modifying Excel files (.XLS and .XLSX) as well as reporting based on Excel template files or exporting Excel files to PDF, HTML, …  TMS FlexCel has grown into an extremely feature rich and sophisticated product to work with Excel files. Hence, the idea to make it extremely easy to take advantage of the FlexCel technology to also allow to natively save and load .XLSX files in our grid components, in particular our VCL grid for Windows application development with Delphi or C++Builder as well as our FNC grid for cross-platform development for Windows, macOS, iOS, Android, Linux. [adinserter block=”2″] Bridge components To make this possible, we introduced two free bridge components, the TMS VCL Grid Excel bridge and the TMS FNC Grid Excel bridge. These are non-visual components TAdvGridExcelExport, TAdvGridExcelImport or TTMSFNCGridExcelExport, TTMSFNCGridExcelImport,  that simply connect to either TAdvStringGrid (and descending components) as well as the TTMSFNCGrid cross-platform grid component. After hooking the grid to this component via a property Grid, import or export is as low-code as a single line of code: To load .XLSX sheet data into a grid:   TMSFNCGridExcelImport1.Import(‘test.xlsx’, ‘my sheet’); In case you wish to work with multiple sheets at once, the bridge components can be connected to a TAdvGridWorkbook and multiple sheets will be imported or exported via the same functions. To save the data from the grid to an .XLSX file:   TMSFNCGridExcelExport1.Export(‘test.xlsx’); and in addition to export to Excel files, there are methods:   TMSFNCGridExcelExport1.ExportPDF(‘test.pdf’); or   TMSFNCGridExcelExport1.ExportHTML(‘test.html’); to export the grid to PDF or HTML files. By default, the TAdvGridExcelExport or TTMSFNCGridExcelExport take in account a lot of cell characteristics for the import or export. This includes: background color font color font name & size cell alignment cell pictures cell merging cell checkboxes cell sizes hyperlinks There is further fine control over what grid and/or Excel features will be imported & exported via properties under: TTMSFNCGridExcelImport.ImportOptions, TAdvGridExcelImport.ImportOptions and TTMSFNCGridExcelImport.ExportOptions, TAdvGridExcelExport.ExportOptions Also, the bridge components also allow you to specify what range of cells to import or export. By default this is the range of used cells in the grid or Excel file, but via TTMSFNCGridExcelImport.LocationOptions, TAdvGridExcelImport.LocationOptions and TTMSFNCGridExcelImport.LocationOptions, TAdvGridExcelExport.LocationOptions you have fine-grained control over what range of cells will be involved in the export/import. Finally, if you want to dynamically control in code additional formatting of cells, there is the TAdvGridExcelExport.OnCellExport() event that is triggered for every cell and allows to override in code the cell format to apply for […]

Read More

Extensions for TMS WEB Core for Delphi

1. Introduction TMS WEB Core is a framework that allows the user to write JavaScript web client applications with the Object Pascal language. Therefore the Object Pascal code is transpiled to JavaScript with the pas2js compiler . TMS WEB Core supports the three IDEs Embarcadero RAD Studio with Delphi, Microsoft Visual Studio Code and Lazarus. This article is primarily concerned with Delphi and shows four options to extend the TMS WEB Core product: Creating design-time packages Writing custom WEB Core components Using & registering base web form classes Registering custom Frames 2. Demo The above mentioned options are practically shown in the demo DemoPackage (download here) which contains a run-time package, a design-time package, a TMS WEB Core application and a VCL application. 3. Packages Delphi projects can contain packages, either for regular programs and for the IDE. A package is a Delphi specific library, similar to a DLL (Dynamic Link Library) on Windows. Packages end with the extension .BPL (Borland Package Library) and are created by the compiler after compilation. When starting an application, the packages are loaded statically. We have to differentiate between two sorts of packages. These are run-time packages and design-time packages. 3.1. Run-time Packages A run-time package is a library that includes parts of the source code and provides parts of the functionality of the application. Instead of having one single executable, it is split into a small executable and multiple packages. 3.2. Design-time Packages Design-time packages are used by the Delphi IDE to make components load dynamically. Therefore components must be registered. Doing this, the IDE tool palette will list the components and this allows the designer to display the components. It is good practice to split the code into run-time code for the run-time package and register code (and any other code that might be only needed and used at design-time) for the design-time package. This design-time package for this demo is DemoPackageIDE.dproj. 3.3. How to set design-time and run-time packages The options of a project can be set in the so called “Project Options”. There is a radio button in the section “Description”, in which the options “Run-time only” and “Design-time only” can be selected. The option “Design-time and Runtime” can be selected, but is as mentioned above not recommended. 3.4. Build control It is also recommended to select “Explicit rebuild” since the option “Rebuild as needed” often leads to problems with packages that are distributed over several project groups. 4. Writing custom TMS WEB Core components The demo contains the unit MyFloatEdit with the component TMyFloatEdit which is a small improvement of a TWebEdit. 4.1. Registering a Component The Delphi IDE calls all public procedures named “Register” from design-time packages. These procedures are called when the design-time package is loaded. Inside a Register procedure components can be registered. The Demo shows how this looks like: interface procedure Register; implementation procedure Register;begin  RegisterComponents(‘My TMS WEB components!!’, [TMyFloatEdit]);end; 4.2. DesignIDE package In order to call RegisterComponents it is necessary to require the DesignIDE package in a Designtime package. The Demo shows this: requires…  DesignIDE,… 4.3. Platforms In order to register a component the Delphi designer needs to be informed which platforms the component shall be used for (e.g. Win32, Win64 and WEB). In the Delphi IDE all TMS WEB Core projects are treated […]

Read More

The Anatomy Of A Great Angular Material Component

Angular Material is a reusable library stocked with UI components modeled after the arrival of Google Material Design. It ensures that each element has been thoroughly tested for performance and reliability standards. Angular Material functions as a framework based on the fundamentals of web design, powering up-to-date browser portability and device independence. The Angular Material Component contains all the default assets of a website to be prepared before it’s ready to deploy on a JS environment. Not only are the building blocks released regularly, but the framework also has many callable API methods to access. By providing the user with well-maintained documentation and custom CSS styling, they will be able to launch a working application in due time. What Makes Angular Material Components Convenient for Development?  It takes more than just mashing together templates to build a collection of Angular Component tools capable of designing software that considers the user experience. A component library should, at its very core, extend the existing functionality of the Angular framework. To be specific, the goal has always been to automate repetitive tasks in hopes of saving time on code maintenance. This Angular library employs the following API-supported templates:  Advanced from fields with autocomplete and date pickers A variety of navbars, touch-swipe, and speed dial navigation Grid layouts including data tables, organized tabs, and collapsable lists Spreadsheets, rich text editors, charts, and progress bars for business purposes Interactive buttons, menus, checkboxes, lists, portals, etc.  Angular Material offers many use cases, such as managing large data sets, creating seamless user interfaces, and consistently executing projects with version control. Rather than rewrite code for individual functions, developers can enjoy the perks of a responsive front-end for implementing custom code into their demos. The key advantages are: Faster development speeds. An easier learning curve. Shortcuts for debugging scripts. Cross-browser support on all components. Another key selling point is using schematics to generate toolbars and menus that make up the dashboard—while entirely optional, customizing your Angular Material theme with “mixins” can transform a bland site into a work of art for your viewers. Under the Guides tab are some resources to set up: For one, you could install a CDK stepper that directs the user from one step to the next. And to change the font, typography settings are easy to configure. The possibilities are nearly endless if you know exactly what components fit together on each web page. Examples of top Angular libraries include MaterialPro Angular 9, NGX-Bootstrap, Prime NG, and Angular Fire 2, which you might’ve heard of. Why does Angular Need to Install a Component Dev Kit (CDK) Package?  The CDK package contains schematics that are available over the Angular CLI. This library assigns a set of replicable behaviors to each building block, allowing Angular developers to reuse code logic whenever they need to add a common interaction pattern.  It is certainly a time-saving collection, especially when tasked with positioning overlays, creating data tables, managing scroll behavior, or presenting content in a hierarchy.  On Angular Material, properties are defined in the Overview tab. Every method has a tutorial on implementing it, and snippets are available for direct copy and pasting.  For instance, if you want to configure site accessibility, you could control the FocusMonitor service, which identifies changes in an element’s focus state. Then it indicates whether the focus […]

Read More

How Technology Is Changing How We Treat D3 Heat Maps

Sencha Ext JS is a JavaScript framework for creating data-intensive, cross-platform online and mobile applications for any modern device. It gives developers access to a number of fantastic libraries. Sencha Ext JS’s D3 package has many useful components. You can use them to generate fantastic data visualizations that will help your company uncover vital business insights. In this article, we’ll look at one of the most useful native Ext JS components, the D3 heat map. We will show you how technology has made it more essential than ever. What is the Importance of D3 in Ext JS? A good application presents its data clearly and appealingly. D3 is a popular way of accomplishing this. Moreover, the D3 package makes integrating D3 into your Ext JS application even more straightforward than before. D3 is a JavaScript package with a lot of features. It allows you to create dynamic and interactive data visualizations using modern web standards in your web browser. SVG, HTML, and CSS are examples of these standards. D3 is also free and open-source, so you can use it without investing a dime. What are Heatmaps? A heatmap (or heat map) is a graphical representation of data with color-coded values. They’re crucial for determining what works and doesn’t work on a website or product page. Heatmaps allow you to evaluate your product’s performance and increase user engagement and retention by experimenting with how particular buttons and items are placed on your website. This enables you to prioritize the tasks that will increase customer value. Heatmaps make it simple to view and understand complex data at a glance. Website and product heatmaps use a range of colors, red to blue, to depict the most popular (hot) and least popular (cold) aspects of your site’s website content. These plots help you identify trends and optimize your product and site to increase user engagement and sales. They do this by aggregating user behavior and providing a snapshot of how your target audience interacts with an individual website or product page by combining quantitative and qualitative data. How is D3 Heat Map Affected by the Shift in the Technological Landscape? The ‘d3-heatmap’ component is used to display matrices with individual values expressed as colors. Ext.d3.axis is used twice in this component. You can easily visualize complex data, such as multidimensional arrays, using the Sencha Ext JS D3-heatmap component. Heatmaps are a visual representation of matrices with individual values represented as colors. Today heatmaps are very popular! Fiddle is a web application that allows you to create, run, and share code examples using the Ext JS framework. Fiddle is compatible with the same systems and browsers as Ext JS 6.2.0. It features an online IDE and a view of your running example without the need to install anything locally. The following code generates one of the most basic heat maps: Ext.create(‘Ext.panel.Panel’, {renderTo: Ext.getBody(),title: ‘Heatmap Chart’,height: 750,width: 750,layout: ‘fit’,items: [{xtype: ‘d3-heatmap’,padding: {top: 20,right: 30,bottom: 20,left: 80}, xAxis: {axis: {ticks: ‘d3.time.days’,tickFormat: “d3.time.format(‘%b %d’)”,orient: ‘bottom’},scale: {type: ‘time’},title: {text: ‘Date’},field: ‘date’,step: 24 * 60 * 60 * 1000}, yAxis: {axis: {orient: ‘left’},scale: {type: ‘linear’},title: {text: ‘Total’},field: ‘bucket’,step: 100}, colorAxis: {scale: {type: ‘linear’,range: [‘white’, ‘orange’]},field: ‘count’,minimum: 0}, tiles: {attr: {‘stroke’: ‘black’,’stroke-width’: 1}}, store: {fields: [{name: ‘date’, type: ‘date’, dateFormat: ‘Y-m-d’},’bucket’,’count’],data: [{ “date”: “2012-07-20”, “bucket”: 800, “count”: 119 },{ “date”: “2012-07-20”, […]

Read More

What Is An Angular Material Component, And Why Does It Matter?

Whether you have been a developer for a long time or are a total novice, it is likely you have come across Angular. Originally created in the TypeScript programming language, Angular immediately earned a reputation as a game-changer for application development. Its numerous features, like the exceptional ability to reuse code and construct programs for any deployment target, are highly sought after in the industry. Angular is well-known for its incredible speed, considered the maximum speed possible on a web platform today. It stands out because it gives developers complete control over scalability and includes features like Web Workers and server-side rendering. With Angular, you frequently use Angular Material Components to build data-sensitive web apps. This is because they are developed and tested to ensure they are viable and interact seamlessly. Although Angular is excellent for developing web apps, it lacks any pre-built components. This presents a challenge for developers who cannot afford the time and effort to generate them from scratch. To overcome this, they must rely on the professional community. To deal with this issue, Sencha’s ExtAngular is an important Angular web development tool. It allows developers to create apps with flawlessly harmonized components that are also professionally tested to ensure quality. Read on to find out more about Angular components and how you can use them to easily build stunning web applications. What is Angular Material Component? To understand Angular Material Components, you need to understand the Angular framework and its restrictions. Angular is one of the most popular JavaScript frameworks for developing Web apps based on components. Its limitations, however, restrict its capabilities. This is most notable in its lack of pre-built components. This shortcoming generates a lot of frustration among developers who don’t want to create components from scratch, That is where Sencha’s ExtAngular comes in. It enables you to create and construct a web application at a breakneck pace, with no additional trouble or lost productivity. Sencha’s ExtAngular includes 140+ pre-built and pre-tested user interface components. It also provides support for a wide range of state-of-the-art tools like Sencha Themer and Sencha Fiddle. Both of these tools enhance the elegance and aesthetics of your app while keeping your design fresh and adaptable. For more flexibility and to eliminate the need to create native Android Java or Apple iOS Objective-C or Swift apps, you can also use Angular on mobile platforms. To do that, however, you need to create your own app. If you don’t want to start from scratch, ExtAngular minimizes your development time while increasing your productivity. That means you can develop and sell more applications, more quickly. Why Does Sencha ExtAngular Matter? Grids, tree grids, pivot grids, charts, D3 visualizations, trees, calendars, buttons, and menus, are among the 115+ components included in ExtAngular for Angular developers. All of the components have been thoroughly tested and are intended to operate together. In this way, ExtAngular raises productivity. It helps developers get apps to market faster while lowering integration and maintenance costs. Let’s look at some features of ExtAngular. How does the Grids and Data-Driven Documents Package Enable Development of Visually Compelling Web Applications? ExtAngular is well-known for its PivotGrid capability. It allows developers to easily show and project data so that users may examine and assess it before making a choice. The sum, […]

Read More

What is Delphi’s DNA

I was chatting with someone who was less familiar with Delphi. He asked what is it about Delphi that makes so many people continue to love it. I thought I would share my answer and see what everyone else thinks. Developer productivity – When Delphi was first introduced it was going head to head with Visual Basic in getting things done fast, and most of the time Delphi was faster for getting things done, and the rest of the time it was still really fast. That continues today. I’ve done presentations for people and they blown away with how fast I can do things with Delphi. Fast native apps – When it comes to app performance Delphi was way faster than VB and is competitive with Visual C++ and any other compiler out there. This is because it builds native apps that run fast. Database access – One of the original goal of Delphi was first class database connectivity. That is something Delphi continues to deliver. BDE was ahead of its time, but FireDAC is a whole new breed. And the great thing is there are so many 3rd party data access libraries to choose from, to give you just the right set of features you need. Platform API access – I remember the first time I needed to access some Windows messages and a Windows API that wasn’t exposed through the RTL. I kind of expected it to be a lot of work. I was pleasantly surprised with how easy and natural it was to add that to my program. I love that Delphi lets you work at the nice high productive level, and then reach down to “touch the metal” and access the APIs. Visual form designers – I’ll admit it, Delphi has spoiled me. I’ve checked out a number of other programming tools, and it is rare to find one that works as good. The ability to design your user interface and preview what it will look like so easily is so useful. Reliable applications – I’ve heard stories about when they demonstrated Delphi’s ability to handle exceptions and people were falling out of their chairs. I don’t know what it is about Delphi, it might just be that the developers who use it are amazing, but I am frequently impressed with how reliable programs are that are developed with Delphi. Good strong community – All the Tech Partners, MVPs, authors, trainers, and developers make the Delphi community amazing. It is always great to see all the amazing projects everyone is working on. So many people willing to help and just be fantastic. It is a great community to be part of. I made this graphic a while ago to explain why developing with Delphi was so awesome. I call it the three levels of development. The idea is each level builds on the one beneath it. The higher levels provide great productivity benefits. The great thing about Delphi is it lets you easily move between these levels. You can do so much in code, even at design time, but it doesn’t keep you at that high level. When you need it you can move down to a lower level, even to the point of writing inline assembly code on Win32. Most other development tools are stuck at just one level, or with just bits and pieces of the other levels. Delphi gives you all […]

Read More

Press Release: Embarcadero Launches LearnDelphi.org, a Delphi-Centric Learning Ecosystem, to Promote Delphi Education

LearnDelphi.org provides a platform for Delphi developers and educators, along with free licensing options and ways to get involved January 16, 2020 11:00 AM Eastern Standard Time AUSTIN, Texas–(BUSINESS WIRE)–Embarcadero (a division of Idera, Inc.), a provider of cross-platform app development productivity tools, today announced the launch of LearnDelphi.org, a learning ecosystem for Delphi developers, a teaching platform for Delphi educators, and a key destination for all things related to the Delphi Community. “Now Delphi, the best language and IDE for learning to program, has a completely free environment for education” Tweet this LearnDelphi.org is a collection of resources and free content for teaching and learning software development curated by and for Delphi developers. The site includes Delphi licensing options and resources such as ebooks, slideshows, and video tutorials, as well as ways to get involved. The content is compiled and supported by Embarcadero’s MVPs, community members,subject matter experts, and employees, and will be available in multiple languages over time. Potential contributors, educational liaisons, and educators are always welcome and encouraged to get involved. “Now Delphi, the best language and IDE for learning to program, has a completely free environment for education,” said Landerson Gomes dos Santos, logistics, and transport specialist and Embarcadero MVP. “Delphi’s Community Edition includes all the features and facilities for those who want to take the first steps in developing applications for computers and mobile devices. LearnDelphi.org is an exciting initiative for the Delphi community, bringing together resources that students and teachers need to make learning in Delphi more efficient and fun.” Delphi Community Edition offers free professional-grade, non-commercial licenses that are ideal for students’ home projects or early-stage start-ups (see FAQs). Academic Edition is another free option that offers a group-oriented classroom licensing package that is ideal for high schools and universities that meet certain qualifications. “Delphi’s Object Pascal is the best programming language for anyone wanting to learn to program, and the Delphi Community Edition from Embarcadero is a great place to start building apps for Windows, macOS, Android and iOS. It lets you quickly and easily build apps for Windows, macOS, Android, and iOS,” said Jim McKeeth, chief developer advocate at Embarcadero. “LearnDelphi.org is an intuitive compilation of resources that students and teachers need for learning to program with Delphi.” Delphi expanded significantly in the context of RAD Studio, which pioneered rapid visual object-oriented programming. Over the years, Pascal and Delphi became a staple for computer education and continue to be standard in many countries where many students learn to program with it. Today’s Delphi has rich support for Objects, Anonymous methods, Generics, Multi-Threading, and a robust type system. With free libraries, it is easy to expand Delphi with Duck Typing, Domain-Specific, Functional Logic, Neural Networking, and more. No other programming language provides such diverse programming paradigms with a simple language, native compilation, and rich IDE and tooling. “Since the availability of the Starter Edition, and later with Community Edition, Delphi has been freely offered as a supported language on learning sites, such as Exercism.io,” said Ryan Potts, software developer at Gateway Ticketing Systems and Embarcadero MVP. “It is great to see Delphi regaining the momentum and popularity it truly deserves.” Visit LearnDelphi.org to find learning resources or to get involved. About Embarcadero Embarcadero builds tools that solve productivity problems for application developers. The company’s products allow users to design, build and run […]

Read More

Learn Delphi on Exercism.io

One of Embarcadero’s MVPs, Ryan Potts, is the originator and maintainer of the Delphi track on Exercism – a site dedicated to making it easy for people to learn different programming languages. He was interviewed by the Exercism team previously, but I thought it would be interesting to interview him about what Exercism is, and how all of you can be involved. What is Exercism? How long has it been around, and how many students visit it? A not-for-profit organization providing opportunity through programming education The Delphi track had 3 new solutions submitted, 1 for mentoring. See their about page for more It was originally founded in 2013 by Katrina Owen. Each week I receive a mentoring update.  The most recent update indicates that during the last week of 2019 2,152 people submitted 8,107 solutions across all the language tracks.  Of those 2,339 were submitted for mentoring. 174 mentors gave feedback on 1,963 solutions. What sort of programming languages are found on Exercism? There are 51, including our favorite, Delphi! What kind of exercises might someone find on Exercism? Do any of the exercises involve building Graphical User Interfaces or accessing databases? What about accessing REST APIs? These are things that Delphi makes so much easier. Or are they all console applications? At the moment all the exercises are console only.  I have considered creating some Delphi specific exercises to utilize Delphi’s ability to pretty easily build GUIs, just haven’t had the time myself.  This would be a great way other experienced Delphi developers to help.  Does a student need any experience to start? No, but knowledge of the command line is essential. Does it cost anything? What sort of tools does a student need to get started?  Each language track has set up instructions to let you know what you need and where to find it. For example with Delphi you need to install Delphi. There is also a command-line tool that all the tracks use. If a student is completely new to Delphi what do they need to do to get started. Once someone has signed up for the Delphi track they will find instructions on how to set up their system.  (They are a bit dated, a few versions of Delphi have been released since I wrote these.) Other links are also available from the same location for more Delphi related resources. Is it true the Exercism Windows CLI installer is written in Delphi? Exercism’s Windows CLI Installer is open source and written entirely in Delphi. It automatically determines the correct version (32/64 bit) of the Exercism CLI the student needs then downloads the CLI, extracts it, and puts it in the right place. The installer has been downloaded 15,000 times, which I’m pretty proud of!  Is Exercism only for new developers or are there things experienced developers might learn there as well? It is not only for new developers, but is probably geared towards someone with only a little experience, knowledge of how to operate a terminal (command prompt) interface is essential.  How is Exercism similar to a code kata?  It essentially IS a repository of code katas; with added benefit of having someone knowledgeable in the language you are working in review and critique your work. The term code kata is a concept first used by Dave Thomas, co-author of the book […]

Read More

Why I Keep Choosing Delphi

Early on I learned Turbo Pascal, which was a huge step up from the Basic and Batch File programming I cut my teeth on. When Delphi came along I thought it was brilliant and fell in love immediately. I had no interest in learning other programming languages or tools. Delphi did it all, and that was great. I found myself plenty of work and enough to keep my interest. I was curious about other programming languages, from an academic point of view. I took a night school class in Assembly. I had a smattering of C & C++. Looked at some Ruby (back before it was hip), Java, JavaScript, etc. Eventually, I found myself spending a few years debugging laser printers, which ran a combination of C/C++/COM all on a Linux platform. From there I went back to full-time Delphi programming, but the new company I was working for bought into the “there aren’t enough Delphi developers” myth and decided to move to C# & WinForms. We immediately were able to hire some new C# developers, but as we got to know them we found out they had more Delphi experience than C#, but they bought into the “there are no Delphi jobs” myth and re-branded themselves as C# developers. (This is what we call a circular argument or self-fulfilling prophecy.) In the end, the project took 4 times longer than it should have, despite having more developers, and “more modern developer tools.” They really should have stuck with Delphi. I moved to a new job doing Delphi development full time, and then that company bought into the C# & Silverlight are the future. Since I had C# experience, I started working on the new Silverlight front end. The back end and the desktop app remained in Delphi (with a little C++). We all know what happened with Silverlight (if you even remember it . . .) From there I ended up really branching out. I did a lot more work with C#, Xamarin, Java, JavaScript, Objective-C, and Oxygene (known as Delphi Prism at the time). There was still some Delphi mixed in too. I taught a few classes and workshops on Android development with Java. I learned to appreciate some of the benefits, strengths, and qualities of each. I found things about all of them I liked (less so about Objective-C). It was at this point I could see that most developer skills work across languages, tools, and platform. There is value in knowing and using multiple languages. The basic tenants of each language influence the way you do things in other languages, in a positive way, helping you to look at problems in a different way. There are some projects, platforms, and problems that are best suited to certain programming languages and tools. For example, if you are working with the web, you need to know at least some JavaScript, HTML & CSS (the latter two not being programming languages, but I digress), even if you are using some sort of abstraction layer. Throughout all of this, I still found myself choosing to Delphi for personal projects. Occasionally I’d try personal projects in other tools and languages as a way to get to know them better, but I still found Delphi to be a better solution for most general purpose projects. […]

Read More

Software Developer Ranked #1 Job for 3rd Straight Year

Back in 2018 U.S. News an World Report ranked Software Developer as the best job for 2018, pushing out Dentist, and it is still ranks the top job in 2020. They use data from the U.S. Bureau of Labor and Statistics to rank jobs based on pay, job security, mental engagement, stress, room to advance, satisfaction, and work-life balance. Since you are here, you most likely agree with that ranking and are surprised it took so long for someone else to recognize it. This means we will see a lot of people interesting in software development. Anyone looking for a better job is likely to start at the top of that list and work their way down until they find one they are interested in. Not to mention everyone who sees the headlines about Software Developer replacing Dentist as the #1 Best Job. Whatever the reason, software developers will get a lot more attention. When I’m talking to people about career advice I think it is more important to choose a career that suits the individual (internal factors) than basing the decision purely on external factors like pay, etc. That being said, I honestly believe Software Development is only going to get more important. Going forward, software development and related jobs (many of which aren’t even invented yet) will consume the many of the other jobs as automation and artificial intelligence take over more aspects of our life. It all depends on which side of the automation revolution you want to be. When I was really young (like 3rd grade) I knew I wanted to program computers for a living. A family friend told me that I should look for a different job because by the time I entered the career market computers would be programming themselves and there would be no jobs. I remember thinking once that happens there would be no jobs, and someone would need to teach the computers how to program themselves better. Just recently I was in Tokyo for the 10.2 launch event. I was talking to members of the press, and one of them made a similar assertion “What is the point of releasing better developer tools when soon computers will be programming themselves?” I shared the story from when I was a kid and said that “Yes, AI is automating and consuming other jobs, but the programmer will be the last to go. Once AI’s no longer need humans to make them better there will be no jobs for anyone!” So what does this mean for you, as a software developer today? Congratulation’s you choose wisely! But be prepared for a lot of people to come to you for career advice.

Read More