Delphi

This Is How To Outsmart Your Peers On Automation

What is Industrial Automation? Industrial automation is the technology by which a process or procedure is performed with minimal human assistance. For instance: Machinery, processes in factories, boilers, and heat-treating ovens Steering and stabilization of ships Aircraft and other applications and vehicles with reduced human intervention All sorts of machinery are examples of automation. The common control types are On/Off which is discrete it’s either doing it or it’s not doing it. There’s PID (proportional integral derivative) which is interesting, and logical sequence or state system control – “moving from step A to step B” types of activities. What does lab monitoring and instrumentation mean? Lab monitoring and instrumentation is just the process of reading sensors to collect information from devices that define physical qualities. For example, in a lab, if you’re experimenting and you need to know what the state is of the experiment at all times as you’re collecting data. In industry, an example would be if you need to be monitoring machinery and make sure they are working properly. There are some examples of the type of settings information you may be gathering through monitoring or instrumentation. What single board devices are available for starting automation? Thousands of different single-board computers can be utilized in automation. Typically, these devices have an interface called ‘GPIO’ pins on them. These pins can, for example, be attached to and thus read and write various sensors. Here are some examples of single-board devices: UDOO x86 II – Intel Celeron N3160 2.24Ghz UP Board – Intel Atom x5-78350 LattePanda Delta 432 – Intel 8th Gen Celeron N4100 Atomic Pi – Intel Atom x5-78350 quad-core with 2M Cache What is a PID Controller? Essentially a PID Controller creates a control/loop mechanism to use feedback for continuous correction. This means is it measures the performance of the control system.  PID – AKA “Three-term controller” A control loop mechanism employing feedback for continuous correction For example, cruise control on a car. What is a Programmable Logic Controller (PLC)? A PLC is a programmable logic controller – this is similar to Arduino.  Ruggedized industrial digital computer Replaces hardwired relays Makes use of multiple digital and analog I/O Function as a real-time system collecting information and constantly correcting operations Similar o Remote Terminal Units except RTUs do not have control loops or algorithms Often networked together with other PLC and SCADA systems One of three common Industrial Control Systems with SCADA and Distributed Control System (DCS)  What communication libraries are available for Delphi & C++ Builder? AsyncPro – https://github.com/TurboPack/AsyncPro ComPort Library – https://sourceforge.net/projects/comport/ WinSoft ComPort – https://winsoft.sk/comport.htm TciaComPort – https://www.mestdagh.biz/ ZylSerialPort – https://www.zylsoft.com/serialport.htm Moreover, when you install Delphi and C++ Builder these components will be installed: Indy Components THTTPClient TBluetoothDevice TBluetoothLEDevice What is Visuino? Visuino or Visuino Pro is visual programming for Arduino and PLC. It is built by Boian Mitov who is the founder of Mitov Software. Besides Visuino, Mitov Software offers a set of components and libraries like: ControlLab for industrial automation components SignalLab for digital signal processing (DSP) LogicLab, Plotlab, and more Visuino Pro is designed around the additional use case as additional functionality that comes with programmable logic controllers. It also has the ability that you can see the code that it’s going to generate back and forth.  Graphical development environment for Arduino Automatically […]

Read More

How To Make Faster And More Glamorous Modern Apps With C++

Hello C++ Developers, LearnCPlusPlus.org is packed full of great articles for professionals and beginners on new modern C++ topics to speed up your applications and to make them look visually stunning with an updated, modern look in a few simple steps. In these articles, we explain how you can simply use all cores of your CPU by using Parallel Programming Library in C++ Builder. We explain the dark and light sides of the Brute Force Method. We teach how you can use the sscanf function in C and C++. How you can apply Glow Effects and Shadow Effects to have a gorgeous modern application with UI visuals which really add a touch of glamour so they don’t just work better they look better too. Examples and some tips in the posts may help Delphi developers too. If you are new to RAD Studio, we think these posts may help you as much as a rapid introduction to programming in C++, all the way to the most robust, modern, and latest techniques for those more experienced with the language. For those who are perhaps wanting to expand their knowledge with the most up-to-date features, routines, and methodologies this is a great little boost (pun intended) to your C++ knowledge. The new RAD Studio 11, C++ Builder 11, Delphi 11 are released with great new features and we are developing and testing new examples for you with the latest RADS 11 that means.LearnCPlusPlus.org examples are working well with the latest C++ Builder. You can see more of our C++ posts on this blog by clicking the following dynamic search link: https://blogs.embarcadero.com/?s=C%2B%2B Here are our selections, How can we use C++ Builder in the most modern and efficient ways? These posts are designed to be easy to understand the modern and professional ways that we use in C++. Here are the topics, This Is How To Use Parallel Programming in C++ Builder? Why You Should Know About Brute Force Methods in C++? What Is The sscanf Function In C++ And How Can I Use It? How To Make Controls Have A Glow Effect In C++? How To Add Shadow Effects To Your C++ Apps? What kind of C++ questions are we answering? These are the questions that we answer in this collection: How can I use all cores and threads of my CPU? What is Parallel Programming? How can I speed up my applications? Is there an example of using TParallel in C++ Builder? How does C++ Builder help with parallel programming in C++? What is Brute Force Method? How we can use the Proof By Exhaustion Method? What are Proof by Case and Proof by Analysis? How we can code Brute Force Method in C++? How we can prevent our servers from Brute Force Attacks? What is the sscanf function? How can I use sscanf in C++? Where can I find format specifiers for the sccanf function? What is the syntax of sscanf? What is a simple example of the sscanf function in C++? Is there a full example of sscanf function in C++?  Is there an easy way to add glow effects to components? How can I add glow to alpha images on my applications? What is a Glow Effect in C++? How can I use TGlowEffect in C++ Builder? What are the visual tips to add glows in the development of C++ applications? Is there an easy way to add custom shadows to components? How can I add shadow to alpha images on my applications? What is the Shadow Effect in C++? How can I […]

Read More

New Platform Identifiers in RAD Studio, Delphi and C++Builder 11 Alexandria

System.Classes.pas     { Platform identifiers }   pidWin32          = $00000001;   pidWin64          = $00000002;   pidOSX32          = $00000004;   pidiOSSimulator32 = $00000008;   pidiOSSimulator   = pidiOSSimulator32 deprecated ‘Use pidiOSSimulator32’;   pidAndroidArm32   = $00000010;   pidAndroid32Arm   = pidAndroidArm32 deprecated ‘Use pidAndroidArm32’;   pidAndroid        = pidAndroidArm32 deprecated ‘Use pidAndroidArm32’;   pidLinux32        = $00000020;   pidiOSDevice32    = $00000040;   pidiOSDevice      = pidiOSDevice32 deprecated ‘Use pidiOSDevice32’;   pidLinux64        = $00000080;     pidWinNX32        = $00000100;   pidWinIoT32       = $00000200; // Embedded IoT (Internet of Things) Windows w/ Intel Galileo   pidiOSDevice64    = $00000400;   pidWinARM32       = $00000800;   pidWin32ARM       = pidWinARM32 deprecated ‘Use pidWinARM32’;   pidOSX64          = $00001000;   pidLinuxArm32     = $00002000;   pidLinuxArm64     = $00004000;   pidAndroidArm64   = $00008000;   pidAndroid64Arm   = pidAndroidArm64 deprecated ‘Use pidAndroidArm64’;     pidiOSSimulator64 = $00010000;     pidOSXArm64       = $00020000;   pidWinArm64       = $00040000;   pidiOSSimulatorArm64 = $00080000;     pidAllPlatforms = pidWin32 or pidWin64 or                     pidOSX32 or pidOSX64 or pidOSXArm64 or                     pidiOSDevice32 or pidiOSDevice64 or                     pidiOSSimulator32 or pidiOSSimulator64 or                     pidAndroidArm32 or pidAndroidArm64 or                     pidLinux64;     { Platform family identifiers }   pfidWindows     = pidWin32 or pidWin64;   pfidOSX         = pidOSX32 or pidOSX64 or pidOSXArm64;   pfidiOS         = pidiOSDevice32 or pidiOSDevice64 or                     pidiOSSimulator32 or pidiOSSimulator64;   pfidAndroid     = pidAndroidArm32 or pidAndroidArm64;   pfidLinux       = pidLinux64;

Read More

9 Signs You Should Invest in Automation

In today’s economy, efficiency, speed, and productivity is key to prolonged success. However, many businesses still waste precious time and resources running manual processes that can be automated. Knowing when it’s time to automate specific manual processes can be pivotal to the growth and success of your business.  To help in your decision-making, here are nine signs you should invest in automation. 1. Do you have error-prone repetitive processes? Often, business processes involve a series of sequential tasks based on predefined rules or conditions, many of which are of a repetitive nature. More often than not, manually repeating any process can lead to errors, as humans may miss a step or forget to click a button. In contrast, automation can significantly mitigate such errors.  For instance, if you’re automating a UI testing process, the whole test would strictly run based on predefined instructions. However, if the same test is run manually, humans may forget to test a specific use case, leading to inaccurate results.  2. Are you finding a lack of repeat business? Do you find it difficult to retain your customers or get repeat business from your previous buyers or subscribers? In that case, it might be an indication that your customer satisfaction strategy is lacking. For example, a slow response time can be off-putting for many customers.  All customer satisfaction efforts should be focused on making your customers happy, not on manually running admin tasks that can easily be automated.  3. Are you falling short on achieving your desired throughput? Inherently, humans aren’t as productive as machines; from physical or mental fatigue to other factors that may reduce human productiveness, you may find yourself way off your target. Manually run business tasks can only be completed when someone is working. However, with automation, you can efficiently complete business tasks faster and more accurately, with little or no supervision.  4. Are you experiencing the effects of a labor shortage? According to the United States Unemployment Report by trading economics, unemployment is currently the lowest it has ever been since 1969. Additionally, talents in specific skill markets are going extinct, and organizations struggle to find or attract a quality workforce. While automation can’t completely eliminate your dependency on manual labor, it can significantly reduce it.   5. Do you need faster process completion? Business processes can easily be delayed due to poor communication, amongst other factors. For example, waiting on the go-ahead for certain tasks or manually collaborating to complete in-house projects opens up the opportunity for process delay. If you find yourself needing to speed up processes, then you should look towards automating those processes. Getting the go-ahead on tasks, collaboration, etc., can all be managed from a centralized automation system.   6. Do you need to track KPIs? In this data-centric world, it is important to track performance metrics, so you know what’s working and what isn’t. Running manual business processes would also mean manually collecting performance data, which could be very difficult. However, most automation tools automatically record data you can access and use at will. This way, you can boost efficiency and productivity by focusing your time on analyzing data rather than collecting them.  7. Do you have a need for instant information access? Cloud-based automation systems allow anyone at any time to complete the tasks they need […]

Read More

RAD Studio 11 November Patch

Вслед за выпуском новейшей версии продукта всегда следует ряд исправлений, которые производитель считает необходимым быстро внести в продукт. Иногда это происходит из-за поздно найденной критической ошибки, но обычно – производитель окончательно приводит продукт в соответствие со своими и общепринятыми стандартами качества. В октябре этого года Embarcadero выпустила Patch 1.0 для версии RAD Studio 11 Alexandria, вслед за которым был выпущен November patch. Неудобство таких последовательных патчей может заключаться в том, что для получения обновленной версии пользователям приходится  “накатывать” их друг за другом, в порядке их выхода (не дай бог, перепутать порядок!) Ноябрьский патч лишен этого недостатка: он уже содержит в себе  все изменения и исправления из предыдущего и может быть применен на системах, в которые уже были внесены изменения патча 1.0  Патч предназначен для избавления от одной выявленной регрессии патча 1.0 и содержит обновления для PAServer (инструмент удаленного размещения и отладки приложений)  на платформах macOS и iOS. Установка этого патча рекомендуется всем пользователям RAD Studio 11. Патч доступен для активных пользователей подписки на обновления в менеджере пакетов GetIt и  на сайте загрузки my.embarcadero.com.  Процесс установки описывается в файле Readme.txt патча и ниже в этом посте. В Readme.txt также содержится список проблем, решаемых этим патчем. Установка на основе GetIt При запуске IDE (или при следующем обновлении страницы приветствия) вы увидите значок “Patch Available”, который находится в другом месте на странице приветствия RAD 11. Выбрав значок или открыв менеджер пакетов GetIt и перейдя в раздел “Патчи и исправления”, вы увидите следующий пункт (см картинку): Если вы скачаете патч через GetIt, он установится автоматически, создав резервную копию заменяемых файлов. Патч поставляется в виде пакета отложенной установки, что означает, что он устанавливается после выключения IDE (вам будет предложено перезагрузиться, но вы можете подождать до этого момента). Помните, что вам нужно будет подтвердить запрос UAC Windows сразу после начала процесса установки. Пока вы это не сделаете, процесс установки будет ждать!  Запрос UAC отображается в отдельном окне и может быть перекрыт другими окнами. Обратите внимание, что размер загружаемого патча превышает 900 МБ, поэтому этап загрузки из окна консоли (открываемого при выключении IDE) займет некоторое время. Если установка RAD Studio была неполной,  некоторые файлы не будут найдены (например, в случае отсутствия файлов локализации среды или при неполной установке платформ). Это ожидаемо, предусмотрено и нормально. После завершения процесса установки патча среда RAD Studio IDE автоматически перезапускается. Обратите внимание, что версию PAServer для macOS, обновленную этим патчем, необходимо установить на ваше устройство macOS вручную, как написано в Readme.txt. Ручная установка Вы также можете найти патч на портале my.embarcadero.com. В этом случае необходимо загрузить ZIP-файл патча и установить его вручную, следуя шагам, аналогичным шагам автоматической установки. Перед установкой патча необходимо вручную закрыть RAD Studio IDE (если IDE запущена, вы увидите ошибку). В этом случае вы найдете основной файл загрузки RAD Studio 11 November Patch с пакетным файлом, который вы можете запустить или вручную распаковать ZIP-файл в соответствующие подпапки папки установки RAD Studio. Вам также придется скопировать PAServer, установить на Mac и повторно импортировать SDK. Более подробное описание патча вы найдете в файле Readme.txt   Вот список некоторых проблем качества, решаемых ноябрьским патчем RAD Studio 11 Проблемы, связанные с PAServer RSP-36094 Невозможно скомпилировать на macos, нет такого файлаRSP-36068 Проблема с paserver на arm osx montereyRSP-36064 Исключение-Klasse 6 при попытке запустить приложение Firemonkey на macOS Monterey Проблемы, связанные с VCL RSP-36207 Ширина GroupBox на унаследованной форме изменяется на значение по умолчаниюRSP-36077 Исходный код […]

Read More

A Beginner’s Guide to Artificial Intelligence

There’s no denying the tumult, horrors and massive loss of life during World War II. But, as is often the case, from this environment of desperation and hardship sprang many technological advances. Alan Turing, helped lead an unprecedented cadre of mathematicians and logicians to success in building a special purpose computer which could break the secret communication codes of their military enemies. Turing emerged from this period inspired to consider the future possibilities of more generalized computing devices and where that could lead society and how those machines would evolve. Turing wrote a paper in 1950 titled “Computing Machinery and Intelligence,” which he opened with the statement: “I propose to consider the question; can machines think?”. It was a ground-breaking paper not least because it contained a test which Turing originally called “The Imitation Game” but which later became more popularly known as “The Turing Test”. The Turing Test laid out, for the first time, a foundation for how we might consider a machine – a computer – to be “intelligent”. The main premise of the test is that if we cannot tell if we are speaking to a machine or a human – or if we guess and guess wrongly – then, put simply, that machine is probably best considered ‘intelligent’. It’s a simple definition but that simplicity belies the genius of it. How have things changed since Alan Turing’s time? Computing technology- and along with it artificial intelligence – has grown exponentially since Turing’s time. Yet we are still only standing on the first rung of a very long ladder. Picture this; a machine that can organize your portable home library alphabetically, just as you’d like. Or a machine that could prepare a customized daily schedule for everyone at the office. Makes your life/job easier, doesn’t it? These are the products of artificial intelligence.  But why is it termed “artificial intelligence”? Well, these machines are designed using complex algorithms and mathematical functions that aim to incorporate human-like intelligence, to make decisions and solve problems as we do. However, AI may not be as obvious as in the above examples. In fact, AIs have various applications in almost every area of life. You can find AI in smartphones, cars, wrangling our social media feeds, playing (and beating us) in games, automating banking decisions and anti-fraud or money-laundering activities, widespread private and government surveillance, even performing roles in our vehicles to enhance safety and usability. The real question, however, is what does an AI do at its core? What makes a product or machine artificially intelligent? Three basic components make up this answer. We’ll describe them using this illustration.  Let’s assume we build our robot in a lab and transport it to a park. Regardless of the difference in lighting and landscape between our lab and the park, the robot must perform as expected. This ability to adapt quickly to a new situation is called “generalized learning.” The robot then gets to a crossroad; one, muddy and the other paved. Here, it must determine which path to take based on the circumstances. This portrays the robot’s “decision-making” ability. After a few meters on the paved road, the robot approaches a body of water it cannot swim through. Using a plank added to the robot as input, it can cross to […]

Read More

Artificial Intelligence: Expectations vs. Reality

Let’s face it; we humans can be drawn to exaggerate and over-generalize when it comes to modern technology, especially during its early-adoption, nascent phases. This is understandable, many major tech introductions have the potential to change the way the world works or how we execute specific tasks. For that particular reason, the uprise of not-seen-before technologies can create ripples of attention as the start to shake-up the status quo. Moreover, Sci-Fi movies with not-so-accurate technology themes can feed that disquiet, causing the public to create exaggerated notions of what technologies like artificial intelligence would mean for humanity. Time-traveling liquid metal murder robots from the future may seem too far-fetched, but computers which have all the smart answers and can bring about World peace by exposing crimes before they’ve happened? Yes, much more plausible to the average non-technical person even though this would require a coordinated effort from multiple disparate government agencies who are suddenly magically released from the constraints of fiscal budgeting and the regular popularity contest of elections. These plausible possibilities, in turn, increase the need to define what’s real and what isn’t with modern technologies like AI.  There are a lot of misconceptions about artificial intelligence. From intelligent robots eventually turning against and enslaving humans in a dystopian societal apocalypse to AI replacing humans in all areas of life. The AI hype is real. In this article, we’ll be discussing some common AI expectations and defining their underlying reality.  Are we about to face an AI Apocalypse? From The Matrix to The Terminator, almost all AI-related movies portray a future where mankind is overwhelmed by technology which has turned from friend to a foe whose main, single-purposed goal is our annihilation. The AI turns against the human race or tries to take over the world. This isn’t entirely bad, as long as it is all understood to be as fictional as a world populated by dragons and reincarnated dinosaurs. But this is not often the case; the media influence is, tangibly, stronger than ever, and a large percentage of the public translates this easily-consumed fiction into an absolutely likely reality. In other words, such movies add to how the world sees AI innovations. No matter how close to modern times you foray, you’ll find that the narrative remains the same; machine revolting against humans, often with an underlying moral narrative of “well, we got what we deserved”. Almost none portray a world which results from a more probable extension of the various forms of artificial intelligence that actually exist, with fiction being mainly about the human-like type AI.  The Royal Society Report explains the implications of exaggerated expectations and fictional narratives. It reads as follows; “Both fictional and many non-fictional narratives focus on issues that form either a very small subset of contemporary AI research or that are decades if not centuries away from becoming a technological reality. This disconnect between the narratives and the reality of the technology can have several major negative consequences. The prevalence of narratives focused on utopian extremes can create expectations that the technology is not (yet) able to fulfill. This, in turn, can contribute to a hype bubble, with developers and communicators potentially feeding into the bubble through over-promising. If such a bubble bursts because the technology was unable to live up […]

Read More

Delphi 11 Alexandria Defines

uses   System.IOUtils;   procedure TForm1.Button1Click(Sender: TObject); begin   case TOSVersion.Platform of     TOSVersion.TPlatform.pfWindows:       PlatformPath := ‘Windows’;     TOSVersion.TPlatform.pfMacOS:       PlatformPath := ‘macOS’;     TOSVersion.TPlatform.pfiOS:       PlatformPath := ‘iOS’;     TOSVersion.TPlatform.pfAndroid:       PlatformPath := ‘Android’;     TOSVersion.TPlatform.pfWinRT:       PlatformPath := ‘WinRT’;     TOSVersion.TPlatform.pfLinux:       PlatformPath := ‘Linux’   else       PlatformPath := ‘Unexpected platform’   end;     Memo1.Lines.Add(‘TPlatform: ‘+PlatformPath);   Memo1.Lines.Add(TOSVersion.ToString);     {$IF DEFINED(IOS)}     Memo1.Lines.Add(‘Defined: IOS’);   {$ENDIF}   {$IF DEFINED(IOS32)}     Memo1.Lines.Add(‘Defined: IOS32’);   {$ENDIF}   {$IF DEFINED(IOS64)}     Memo1.Lines.Add(‘Defined: IOS64’);   {$ENDIF}     {$IF DEFINED(ANDROID)}     Memo1.Lines.Add(‘Defined: ANDROID’);   {$ENDIF}   {$IF DEFINED(ANDROID32)}     Memo1.Lines.Add(‘Defined: ANDROID32’);   {$ENDIF}   {$IF DEFINED(ANDROID64)}     Memo1.Lines.Add(‘Defined: ANDROID64’);   {$ENDIF}     {$IF DEFINED(MACOS)}     Memo1.Lines.Add(‘Defined: MACOS’);   {$ENDIF}   {$IF DEFINED(MACOS64)}     Memo1.Lines.Add(‘Defined: MACOS64’);   {$ENDIF}   {$IF DEFINED(OSX)}     Memo1.Lines.Add(‘Defined: OSX’);   {$ENDIF}   {$IF DEFINED(OSX64)}     Memo1.Lines.Add(‘Defined: OSX64’);   {$ENDIF}     {$IF DEFINED(MSWINDOWS)}     Memo1.Lines.Add(‘Defined: MSWINDOWS’);   {$ENDIF}   {$IF DEFINED(WIN32)}     Memo1.Lines.Add(‘Defined: WIN32’);   {$ENDIF}   {$IF DEFINED(WIN64)}     Memo1.Lines.Add(‘Defined: WIN64’);   {$ENDIF}     {$IF DEFINED(LINUX)}     Memo1.Lines.Add(‘Defined: LINUX’);   {$ENDIF}   {$IF DEFINED(LINUX32)}     Memo1.Lines.Add(‘Defined: LINUX32’);   {$ENDIF}   {$IF DEFINED(LINUX64)}     Memo1.Lines.Add(‘Defined: LINUX64’);   {$ENDIF}       {$IF DEFINED(DCC)}     Memo1.Lines.Add(‘Defined: DCC’);   {$ENDIF}     {$IF DEFINED(CONSOLE)}     Memo1.Lines.Add(‘Defined: CONSOLE’);   {$ENDIF}     {$IF DEFINED(POSIX)}     Memo1.Lines.Add(‘Defined: POSIX’);   {$ENDIF}   {$IF DEFINED(POSIX32)}     Memo1.Lines.Add(‘Defined: POSIX32’);   {$ENDIF}   {$IF DEFINED(POSIX64)}     Memo1.Lines.Add(‘Defined: POSIX64’);   {$ENDIF}     {$IF DEFINED(CPUX86)}     Memo1.Lines.Add(‘Defined: CPUX86’);   {$ENDIF}   {$IF DEFINED(CPUX64)}     Memo1.Lines.Add(‘Defined: CPUX64’);   {$ENDIF}     {$IF DEFINED(CPU32BITS)}     Memo1.Lines.Add(‘Defined: CPU32BITS’);   {$ENDIF}     {$IF DEFINED(CPU64BITS)}     Memo1.Lines.Add(‘Defined: CPU64BITS’);   {$ENDIF}     {$IF DEFINED(CPUARM)}     Memo1.Lines.Add(‘Defined: CPUARM’);   {$ENDIF}   {$IF DEFINED(CPUARM32)}     Memo1.Lines.Add(‘Defined: CPUARM32’);   {$ENDIF}   {$IF DEFINED(CPUARM64)}     Memo1.Lines.Add(‘Defined: CPUARM64’);   {$ENDIF}     {$IFDEF DEBUG}     Memo1.Lines.Add(‘DEBUG is Defined’);   {$ELSE}     Memo1.Lines.Add(‘DEBUG is Not Defined’);   {$ENDIF} end;

Read More

What Is It Like To Be A Developer David Cornelius?

Hello. This article is part of a series where we speak with professional software developers, ask them what it’s like to write code for a living, and perhaps gain a few insights into the software development industry along the way. Our guest today is a Delphi MVP and author David Cornelius. David describes himself as “a programmer through-and-through”. He runs a small software development business from his home office and seems to have his priorities right when he says “I love family, music, strategy board games, and the great outdoors”. Living, as he does, half-way between the Pacific Ocean and the Cascade Mountains David says means he is offered a wide variety of places to explore—either on a motorcycle or by hiking from a campground. Hi David, thank you for talking to me today Well, it’s very nice to meet you, Ian!! 😁 David, in his “auditioning for James Bond” pose Which Embarcadero product(s) do you use a) the most b) regularly? a & b: Delphi XE, 10.4, 11. Every day. How and/or why did you become a developer? When I was in grade school, my favorite subject was math. I got a programmable TI (Texas Instruments) calculator and would compete with my grandfather on the most complex calculations we could come up with in its limited 32 steps. The small high school I attended had a TRS-80 with a cassette “drive” for storage but I got impatient waiting for it to load/save and with its many retries and errors so lost interest. But later, when the school set up its first computer lab with three Apple IIs, I spent all available time teaching myself AppleSoft BASIC. When I got to the end of the tutorial book and realized a friend of mine was writing games that could not have been done in BASIC alone, I knew there was so much more to learn—I was hooked on programming by that point! Majoring in Computer Science in college was the obvious next step and the rest, as they say, is history. Do you think you will ever stop being a developer? If so, what would be next? No—I have too many ideas to ever stop, even if I sell my house and travel the country in an RV, I’d still be programming part of the time. What made you start using Delphi/C++ Builder? College exposed me to several different programming languages. I studied assembly on three different processors, enjoyed the structure of FORTRAN, got bored with COBOL and dropped the class, looked at some niche languages like SNOBOL, and taught myself C using Mark William’s Let’s C. But the most useful class was one that taught general programming concepts using an inexpensive tool that allowed us to edit, compile, and debug all in one IDE, a new concept in the mid-80s. It was Turbo Pascal. Later at my first long-term programming job, I was given the opportunity to start a brand-new application and I could choose whatever programming tool I wanted. I went with Turbo Pascal, then at version 4, because I already knew how to use it, I could drop to assembly if I needed to (which I actually did occasionally), and it was starting to get popular—it was the logical place to start. As the application grew over the […]

Read More

5 Of The Top Reasons Why You Should Use APIs

An Application Programmable Interface or API allows two applications to interact with each other using the API as a bridge or intermediary. If you are not familiar with how to integrate an API then you may be spending a lot of time unnecessarily writing a lot of code from scratch. In other words you may be working too hard! Are you wasting time by writing a lot of code from scratch? This is the main reason you need to start considering integrating APIs into your software. So, we will talk about how to avoid reinventing the wheel every time you design an application. It’s not just the time expended coding things that could have been handled by the API; writing lots of additional code also means you open yourself up to the possibility that you inadvertently introduce errors – bugs – or unintended behavior. Your new code doesn’t benefit from the ‘wisdom of crowds’ which APIs can bring. A professional API from a specialist source often has many thousands of users/consumers who have used the API before and that means any problems and kinks have probably been caught and rectified before you even begin. Letting someone else do the work is always the hard work is always the smart choice, isn’t it? Is it hard to use an API? When I got my first programming internship 4 years ago, in my first whole month, I spent my time integrating different APIs into the web app. I found integrating hard, but after integrating one API, it all become so easy and fun. All I had to do was pay attention to the documentation of the APIs. Using RAD Studio Delphi we also get some additional help to supercharge our skills. RAD Studio has tools such as the REST Debugger and the marvelously powerful REST components do all the hard work for us and help promulgate low code from us and maximum power from our apps. By the end of this tutorial, you will learn how to employ these kinds of useful yet easy to use tools to easily and quickly integrate one of the market-leading APIs into your cross-platform Delphi application. This is the best-kept secret about Delphi that users of other computer languages often overlook – the “RAD” in RAD Studio stands for “rapid application development” and it’s not some kind of tricksy marketing trope; RAD Studio brings your apps from ideas into reality as fast as possible with that legendary rock-solid Delphi application stability means they keep on working too long after many competing technologies have fallen out of fashion or simply become obsolete due to their reliance on runtime support which atrophies over time. What does this article teach me about using APIs in my desktop and mobile apps? I hope that this tutorial will help you start your API Integrator career. We will cover: Explore various APIs and see what they can do for our desktop and mobile applications Look and at how to integrate APIs for use in our own apps Code a demo cross-platform app using Delphi that integrates API The only thing you need is a copy of RAD Studio and basic knowledge of the Delphi programming language! Are you using automation to connect to an API? We have dozens of tutorials on building a […]

Read More