From the blog

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

Law of the Instrument and the Curse of the Programmer

If you aren’t familiar with the Law of the Instrument, otherwise known as Maslow’s hammer/gavel, or the golden hammer it is often expressed as If your only tool is a hammer, you treat everything like a nail. My understanding is that the law of the instrument means you are limited by instruments or tools you know how to use. For example, if you have a screw, some wood, and a hammer, then you might successfully get the screw into the wood, but a screwdriver would be a better alternative. The law of the instrument also means an obsession with the perfection of the instruments you know. I remember back in the day when I was convinced there was no reason to bother with any other programming languages because Delphi was the best. Now I’ve spent some time using a lot of other programming languages, and so I can confidently say Delphi is the best, while I can also see the value and use of other programming languages. I believe it is worthwhile learning about new technologies, frameworks, languages, or methodologies. Then you can pick the correct one for the job. This doesn’t mean you need to be an expert in all of them, but you should know enough that you are confident in your choice. The reverse of this is the obsession to chase new and exciting technologies and recreate things every few years. This keeps the developers entertained, but doesn’t really provide business value. Again I believe Delphi does a good job with this as it respects your existing code while moving forward to new platforms, features, and frameworks. So what is the Curse of the Programmer? When I’m talking to other programmers I see two behaviors. The first is, every problem they encounter in life (at work and beyond) they respond with “I could write a program to do this,” or some variation. By extension, they also cast a critical eye toward any software system (even those developed by themselves) to see how to do them better. This results in a huge backlog of projects that they create to fix problems, fix a problem better, or just out of curiosity to see if they can. This is similar to the Law of the Instrument, but I see it more as your learning the flexibility and power of programming results in your seeing many opportunities to apply it. I’ve talked to people in other industries, and I think the general tendency is fairly universal, it is just that programming is (in my opinion) so much more powerful and flexible than many other applied technologies. The second behavior, which is something to be more cautious about falling into, is the urge to create a “library” or “framework” instead of finishing the program at hand. For example, you are creating a program to solve a problem, and in the process, you create series of libraries just in case you need to solve similar problems. There is value in having reusable libraries, functions, components, and frameworks. The trick is to not let the creation of them get in the way of shipping. The best way I’ve found to deal with this is to only create the library when you need it. Write your code with the appropriate level of coupling to solve the problem at hand. When you need to […]

Read More

Delphi Language Guide

The Delphi Language Guide describes the Delphi language as it is used in RAD Studio development tools. This book principally describes the Delphi language on the Win32 development platform, with annotations about other supported platforms, such as Win64 and mobile. Based on content in the DocWiki, this is provided by Embarcadero Technologies and licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Read More

Delphi Programming for Beginners

25 Modules with exercises, for absolute beginners. Textbook created as part of Embarcadero’s academic program. The book was originally published in Russian and translated into English and several other languages. The author Yuriy Kalmykov is a well-known expert in software development and author of many programming publications and textbooks, including “Teaching Delphi Programming in Schools”. This book is the result of twenty-five years of instructing students as a member of the Informatics and Control Processes faculty at the National Research

Read More

Delphi Community Edition License (Free)

All the features of the Professional version of Delphi software available with a free license if you have your own or a dedicated PC. You install a ​named license​ after you register online. Keep in mind that there are restrictions on the use of this license. These are clearly explained upon download. This is ideal for student’s home projects or in a setting where you can have a dedicated PC.

Read More

Delphi CE Bootcamp 2018

8 Weeks of Delphi Skill Development with Delphi Experts [Enroll for Free] Week 1 – Delphi Language Introduction with Marco Cantu Week 2 – GUI Fundamentals (FMX and VCL) with Andrea Magni Week 3 – Mobile / Multi-Platform Concepts with Ian Barker Week 4 – DataBase/FireDAC with Cary Jensen Week 5 – Debugging with Alan Fletcher Week 6 – REST Services & APIs with Cesar Romero Week 7 – Threading and Performance with Olaf Monien Week 8 – Using 3rd Party Components with Ian Barker

Read More

Delphi Pascal Track on Exercism

Code practice and mentorship for everyone. Exercism is 100% free forever. 76 Exercises Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning. Exercises available at a variety of difficulties and different topics. [Join the Delphi Pascal Track]

Read More

50 Cross Platform Samples For Delphi 10.3 Rio FireMonkey

50 new cross platform samples for Delphi 10.3 Rio FireMonkey available over on Github. The demos heavily feature low code ways of using components to do more with less code. The samples cover everything from JSON and XML to REST and the device Camera. Additionally, they cover things like asynchronous HTTP requests, animations, LiveBindings, grids, drawers, and much more. The demos are available to deploy on Android, IOS, MacOS, Windows, Linux, and HTML5. The source code is freely available under a BSD license. LiveBindings and TFDMemTable components are used throughout most of the samples. Some samples are more extensive like the BubbleChatApp, the Camera sample, and the ToDoList demo. If you are just getting into FireMonkey development with Delphi or you are an old hat with Delphi there is something here for everyone. The TShadowEffect is used and examples of various Material Design elements are also visible in the demos. Some of the icons are from Material.io while some of the images used are from the Pexels site. Elements from other development tools like Cards, AppBars, BottomSheets, and Stateful controls are also demonstrated. The code used in the samples is Object Pascal but the same concepts can be used in C++Builder’s FireMonkey with the sample code easily translatable to C++. If you test these demos and have fixes on specific platforms you can contribute the fix back to the repo. Here is the full list of demos. [GitHub] 01-HelloWorld02-HelloWorldStyled03-StatelessCards04-StatefulControl05-OnChangeTracking06-OnClick07-SimpleTabs08-FrameTabs09-AsyncREST10-StringGridWithJsonData11-DrawerMenu12-PlatformMenu13-Animation14-JSONStorage15-BubbleChatApp16-ChangeGlyphColor17-ToggleButton18-ButtonOnClick19-IconButton20-UpdateEditField21-UpdateCheckBox22-UpdateRadioButton23-UpdateSwitch24-UpdateScrollBar25-UpdateDateEdit26-ToolBar27-FloatingActionButton28-PopupMenuButton29-FooterButtons30-CustomFooterTabs31-BottomSheets32-SnackBar33-ShowMessageDialog34-OptionsDialog35-RowsAndColumnLayout36-Cards37-Alignment38-ListViewFromJson39-ListViewFromStringList40-DataImage41-Fullscreen42-TestConnection43-Dial44-TodoList45-Calendar46-Splitter47-ProgressBar48-ImageViewer49-Camera50-XML via FMXExpress

Read More

CodeRage 2018 Replay

CodeRage is Embarcadero Technologies’ annual virtual developer conference. Sessions focus on inspiring our developers with new and emerging technologies, best practices, creating better development teams, app design, using code to solve community and market needs, and more. [Enroll for Free] Over 20 Courses on covering all things Delphi. (There are other courses covering C++Builder, InterBase, and other related topics).

Read More