Delphi

5 Ways To Modernize Your Data Access Pipeline

Building database applications with RAD Studio (Delphi & C++ Builder) gives the best experience for developers. For instance, if you want to connect to a database, just drop a database connection component into the project and select the source of the data. Then open the LiveBindings designer and link the database fields to the UI controls and that is it! If you want to connect to a remote database you can make use of the REST Client Library and Rad Studio’s incredibly powerful REST Debugger. Perhaps you need to connect Azure or AWS? That is covered too – just drop the Cloud Connection Provider component. configure it securely, and everything works right away. What sort of topics are covered in this article? We’re going to take a whistle-stop tour through some of the ways using Rad Studio Delphi and C++ builder can make life much easier for developers looking to work with database servers and data. What is FireDAC? How can I convert my programs from the Borland Database Engine BDE to FireDAC? How can I connect to Amazon Web Services and Microsoft Azure with Delphi or C++ Builder? What is the Embarcadero REST Client Library? How do I bind a data source to UI controls in seconds? What is FireDAC? FireDAC is a multi-device data-access library that comes with RAD Studio Delphi and C++ Builder. One thing you can do with FireDAC is talk to SQL databases. You can also make use of an ODBC connection to talk to ODBC data sources.  With its powerful universal architecture, FireDAC enables native high-speed direct access from Delphi and C++Builder to InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Advantage DB, Firebird, Access, Informix, DataSnap, and more, including the NoSQL Database MongoDB. FireDAC features: An enterprise-grade data access engine A unified API Has high-performance Data Access Where can I learn more about using FireDAC? How can I convert my programs from the Borland Database Engine BDE to FireDAC? On the FireDAC page, there is the BDE to FireDAC set of steps that will take you through taking the existing source code, your existing forms in Delphi, and running refined utility which is per-regular expression search and replaces utility. Also, there is a script for migrating BDE that will convert the forms and source code for Delphi into use FireDAC whether it is in data modules on your forms or in your source code for database connectivity.  In general, the FireDAC components have a high compatibility level with the BDE data access components. This includes the syntax and semantics of the properties and methods in the FireDAC and BDE. You can learn some other parts which are different in Migrating BDE Applications to FireDAC. Check out this tutorial to learn more: How can I connect to Amazon Web Services and Microsoft Azure with Delphi or C++ Builder? Delphi & C++ Builder come with Cloud components that allow you to easily utilize cloud services from Amazon Web Services and Microsoft Azure. As you can see, these two core components can be used to connect to AWS or Azure. There is a really helpful sample project called CloudExplorer, that familiarizes you with how to: Initialize Connection Get Selected Account Update Cloud File List Get Selected Cloud File Upload Selected Local File Download Selected Cloud […]

Read More

Why You Should Be Fearless When Developing With Delphi

I keep telling anyone I can, Delphi is superb language for developing applications for all platforms, desktop, mobile or the web. Delphi can make gorgeous apps for the desktop such as Windows, Linux or macOS and yet is just as capable for mobile devices such as iOS and Android. You can create web apps with Delphi – not just simple pages but fully capable involved creations which contain all the power and functionality that is possible on the modern web. But don’t just take my word for it – take a whizz through any of the articles on this blog, watch sessions from DelphiCon 2021 and the Desktop First Summit or visit the wonderful DelphiBooks website and take your pick from the many authors on there. In fact, this year has proven to be a bit of frenzy when it comes to new Delphi books, driven in part by Packt who are fast proving to be major champions of books relating to Delphi. There’s even an updated Delphi Alexandria 11 version of the Delphi must-have Object Pascal Handbook by Marco Cantú which you can download for free. It’s Packt who once again are the publishers behind the most recent addition to the Delphi literary library: Fearless Cross-Platform Development with Delphi by Delphi MVP David Cornelius. As soon as I read chapter rundowns during the run up to the release period, I pre-ordered this book. It was worth every cent. Here’s my review. Why Fearless Cross-Platform Development with Delphi? I only have one issue with David Cornelius’ book “Fearless Cross-Platform Development with Delphi” and it’s the title. This book should have been called something like “how to do almost anything you could ever want with Delphi” because that’s exactly what this book is. A handbook on how to write modern applications using the Delphi language so that they look, work, and behave nicely on almost any computer or device you can think of. It’s an opening opus of quite spectacular proportions. It’s a love story of the power and flexibility of the Delphi language. It’s a gripping tale of diving into a sea of development tasks and possibilities and emerging with the pages dripping with tips, tricks and techniques which cover almost absolutely anything you could want to do as an application developer writing apps that can work on desktops, mobile and even the web. I struggle to believe this is David’s first book. If it is then he must be encouraged by us all, and Packt his publishers, to draw on his skills to write some more. “Fearless Cross-Platform Development With Delphi” takes us on a journey from the basics of using the IDE, Delphi’s integrated development environment, project management tips, through more esoteric topics like the command line compiler. After that whirlwind “this is how to do it” introduction, suitable for newcomers to RAD Studio’s development ecosystem, David goes on to give a brief overview of how Delphi’s Object Pascal language came about, emerging as it did from the likes of Apple Pascal and the greatly-loved Borland Turbo Pascal. He takes care to point out how Delphi has continued to evolve from those early beginnings so that it incorporates a whole range of modern programming language features embracing constructs and capabilities to ensure it not only remains technically competitive […]

Read More

How To Make A Fully Working Slack Bot In Under 10 Minutes

Slack is one of the leading communication platforms for millions of users. You can send instant messages, share documents, share images, and perform many different actions which improve the collaboration between team members. You can also automate and control many outside processes and even smart hardware with Bots in Slack. The best thing of all is you can create Slack bots VERY EASILY using RAD Studio Delphi. What is SDriver? SDriver is a Delphi wrapper for Slack API by Andrea Magni who is one of our fabulous Embarcadero MVP team. SDriver is a free and open-source wrapper for Delphi developers. The best thing is that the wrapper utilizes the native HTTP client libraries for each supported platform – System.Net.HttpClient. SDriver is also implemented with the System. Threading library to work asynchronously. What are the features of SDriver? Compatible with FireMonkey, Visual Component Library, and also Non-visual components Support for Message Attachments Support for Incoming Webhooks Implemented using Native HTTP Client Libraries Async implementation using Parallel Programming Library What are Incoming Webhooks? Incoming Webhooks are a simple way to post messages from apps into Slack. By creating Incoming Webhooks you get a unique URL which you can send a JSON payload with the message text and some options. Andrea’s source code repository contains links to explain this in more depth as does the official Slack website. POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX Content-type: application/json { “text”: “Hello, world.” } POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX Content–type: application/json {     “text”: “Hello, world.” } implementation {$R *.dfm} uses System.Diagnostics , SDriver.Message, SDriver.Interfaces, SDriver.IncomingWebHook; procedure TForm1.SendActionExecute(Sender: TObject); var LWebHook: IMessageBuffer; LMessage: IMessage; LStopWatch: TStopWatch; begin LStopWatch := TStopWatch.StartNew; LMessage := TMessage.Create(EditMessage.Text + ‘ [‘ + TimeToStr(Now) + ‘]’); LMessage.UserName := EditUserName.Text; LMessage.Icon_URL := EditIcon_URL.Text; LMessage.Icon_Emoji := EditIcon_Emoji.Text; LMessage.Channel := EditChannel.Text; LWebHook := TIncomingWebHook.Create(EditWebHookURL.Text, False); LWebHook.Push(LMessage); LWebHook.Flush; end; procedure TForm1.SendActionUpdate(Sender: TObject); begin SendAction.Enabled := (EditWebHookURL.Text ”) and (EditMessage.Text ”); end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 implementation   {$R *.dfm}   uses   System.Diagnostics , SDriver.Message, SDriver.Interfaces, SDriver.IncomingWebHook;   procedure TForm1.SendActionExecute(Sender: TObject); var   LWebHook: IMessageBuffer;   LMessage: IMessage;     LStopWatch: TStopWatch; begin   LStopWatch := TStopWatch.StartNew;     LMessage := TMessage.Create(EditMessage.Text + ‘ [‘ + TimeToStr(Now) + ‘]’);   LMessage.UserName := EditUserName.Text;   LMessage.Icon_URL := EditIcon_URL.Text;   LMessage.Icon_Emoji := EditIcon_Emoji.Text;   LMessage.Channel := EditChannel.Text;     LWebHook := TIncomingWebHook.Create(EditWebHookURL.Text, False);   LWebHook.Push(LMessage);   LWebHook.Flush; end;   procedure TForm1.SendActionUpdate(Sender: TObject); begin   SendAction.Enabled := (EditWebHookURL.Text > ”) and (EditMessage.Text > ”); end; Check out the SDriver now! Do you want to see how fast development with RAD Studio and Delphi can be – why not download a free trial now?

Read More

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