Noutați

Upscale Images Via Machine Learning With Javascript Super Resolution API

  Images are everywhere. Whether on the internet, our phones, or even in our day-to-day lives, most people amass huge volumes of data in the form of digital images of varying quality. Any library of digital images, personal or public, is likely to contain low-quality or blurry images. Unfortunately, however, these can problematic to view or, or worse, to analyze. In particularly bad cases, you need to zoom to better see or analyze parts of an image, but even then the image may lack the detail or resolution to do this effectively.  For this reason, having an automated and intelligent tool that can upscale and create high-quality, high-resolution images is remarkably useful. Enter DeepAI’s Super Resolution API. It uses machine learning (ML) and AI techniques to upscale images into higher resolutions without compromising their quality or losing their content. DeepAI’s Super Resolution AI can generate an upscaled version of an image within seconds. If this sounds useful, let’s take a look at how you can quickly build a Sencha Ext JS app that upscales any image you input by calling the DeepAI Super Resolution API. Once we are done, your final app will look like this: What is the DeepAI Super Resolution API? To understand the DeepAI Super Resolution API, once you have your prerequisites installed type the following at the command prompt: curl -F ‘image=https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Tulipa_orphanidea_060506.jpg/260px-Tulipa_orphanidea_060506.jpg’ -H ‘api-key:quickstart-QUdJIGlzIGNvbWluZy4uLi4K’ https://api.deepai.org/api/torch-srgan This command accepts the URL of an input image and submits an API key to generate a new version of the image with a higher resolution and better quality. If you get it right, the response from the API looks like this: {   “id”: “025c64f7-a610-4ee5-aa33-b215d703c595”,   “output_url”: “https://api.deepai.org/job-view-file/025c64f7-a610-4ee5-aa33-b215d703c595/outputs/output.jpg”} As you can see, it returns a response that is a JSON object with the URL of the upscaled image. Better yet, not only is the input image enlarged 4 times, it has also has improved in quality. One thing you need to be aware of though, is that with DeepAI APIs, you only get a quick start API key with a set number of queries. Once your trial expires, you have to get your own API key. How can I upscaling images using AI in Javascript? If you think this is useful, here are 4 easy steps that you can follow to build your own application in a matter of minutes. Step 1: Create an Ext JS Minimal Desktop Application To develop an app to upscale any image you input, first create a blank minimal desktop application in EXT JS. If you are new to Sencha’s Ext JS framework, you can follow this tutorial to create a minimal desktop application from the command prompt. I have chosen to create all my files in a folder called super-res and I call the app superRes. Step 2: Include the DeepAI Package To include the DeepAI package, open the index.html file located in the main directory and add the following line anywhere in the header of the HTML: Step 3: Create the Main View In the main view, we have the following: A text field for the URL of the input image An area to display the input image A button labelled ‘Upscale Image’ A text field to display the URL of the output upscaled image An area to display the output image To get started, […]

Read More

Biggest Cloud Breaches of 2020

Published May 20, 2021 WRITTEN BY ED TITTEL. Ed Tittel is a long-time IT industry writer and consultant who specializes in matters of networking, security, and Web technologies. For a copy of his resume, a list of publications, his personal blog, and more, please visit www.edtittel.com or follow @EdTittel 2020 was a year to remember, and that many would like to forget, for a variety of reasons ranging from the largest global pandemic since the Spanish Flu of 1918, to political turmoil in the USA over a fractious Presidential race, to economic and employment dips of epic proportions. And indeed, 2020 also came with a number of record-setting security breaches, nearly all of which involved the cloud in some form or fashion. In fact, there are numerous top 10 security breach collections among which to choose. One in particular is worth reciting, and then reflecting on the cloud’s presence in that itemized list. PCR is a leading information source for IT resellers and distributors in the United Kingdom. It reports its top 10 based on the number of records breached in the incidents selected. They cite the Risk Based Security Report to observes that nearly 3K breaches were reported just for Q1 2020, and the number records exposed at 36 billion (for the whole year of 2019, “only” 15 billion records were exposed). Here’s their top 10 list with some annotations and reflections, in ascending order by number of records breached: 10. Unknown source (201M): In January, 2020, security researchers found a database containing over 200M sensitive personal records online. The compromised host was on the Google Cloud Platform, so though the source or owner of the data remains unidentified, there’s no disputed that this collection of US personal and demographic data has a definite cloud connection. After Google was alerted to the matter, it took the server down over a month later. 9. Microsoft (250M): In January, 2020, MS itself reported a data breach on servers storing customer support analytics in its Azure Cloud. The records involved included email and IP addresses, plus support case details, stored on 5 ElasticSearch services, inadvertently disclosed owing to misconfigured security rules. 8. Wattpad (268M): In June, 2020, records belonging to this Canadian website and app for writers used to publish user-generated stories and text were exposed (later reports raise the count to 271M records). Malicious actors compromised the company’s SQL database which contained account information, email and IP addresses, and other personal data. Reports on this breach do not mention a specific cloud connection, but the site’s current DNS information appears to show it is hosted by Amazon Web Services (a definite cloud connection). 7. Broadvoice (350M): A US provider of Voice over IP (VoIP) services to business, October, 2020, reports confirm exposure of 350 million customer records from this company. Data disclosed includes names, phone numbers, and call transcripts, including calls to medical and financial services providers. Owing to a configuration error, security researchers were able to access ten of the company’s databases without providing access credentials. Broadvoice changed the configuration and notified relevant legal authorities. It’s not clear that these databases were cloud-based, though it’s hard to imagine a VoIP company NOT doing business in the cloud. 6. Estée Lauder (440M): In January, 2020, the company had an unprotected, unencrypted […]

Read More

Automate Aircraft Workflow With Delphi And A Mobile Phone

If you’re like me flying is probably a slightly mystical experience. You’re not entirely sure how the plane defies gravity and the job of a pilot seems to involve a bewildering array of switches, dials and incredibly expensive sunglasses. There’s a lot more going on, of course, beyond the cockpit and safety briefings. Modern flights, even in smaller aircraft, involve much more tedious ephemera like equipment reservations, invoices, fees and the relentless recording of flight data. Making the process of flying less trying Belgian developers Micriconsult have poured their talent into a dedicated Android app specially for members of The Noordzee Vliegclub. Using RAD Studio Delphi and the Firemonkey FMX framework they have helped ease and automate some of the tasks of the flying business with some thoughtful and intelligent workflow analysis to create a really useful tool which pilots can simply carry around in their pocket – especially useful for smaller light-commercial and pleasure craft where space is at a premium. Noordzee Vliegclub Website What does the Noordzee Vliegclub app do? The app allows a member from the Noordzee Vliegclub to reserve a plane, to enter the flight data to help fulfil legal obligations as well as keep tabs on the myriad expenses of the modern world of flight. According to the developer, “It also keeps track of all flights and all costs involved, presented as monthly invoices. At any time a member can update its database data. This app allows a member from the Noordzee Vliegclub to reserve a plane and enter the flight data. At any time a member can update its database data. A flight instructor can define a plane as a training plane (preventing members to use it for regular flights), authorize a pilot member to fly on a specific plane type and keep track on the flying hours of each student. Users who are not a member of the Noordzee Vliegclub cannot use this app.” Google Play Noordzee Vliegclub Screenshot Gallery You could really make a difference – use your talent with RAD Studio today and be a high-flyer!

Read More

What’s new in TMS FNC UI Pack 3.4

There are a lot of great new features available in our FNC components and this blog will highlight the new additions to the TMS FNC UI Pack. If you want to check the improvements on TMS FNC Maps, click here. For the list of fixes and improvements, you can check the version history, but two new components were added to the product as well. TTMSFNCPassLock TTMSFNCPassLock is an updated version of the FMX passlock in the TMS FMX UI Pack.This component gives you the ability to add password protection to your application. It’s not only possible to further customize the buttons and pattern, but also the ability to not show the length of your password. Next to that you have the similar workings of the numpad and pattern layout and the learn mode to set a new password. TTMSFNCControlPicker The TTMSFNCControlPicker helps you to create a dropdown variant of your control. This can be done with the ITMSFNCControlPicker interface and is implemented by default in the TTMSFNCTreeView, TTMSFNCTableView, TTMSFNCListBox and TTMSFNCListEditor. It is possible to implement the interface in your own control, for more information regarding the necessary procedures and functions to implement, please check the documentation.Some additional events are available, to mimic the basic mechanics of the interface without implementing it and to make the control even more customizable. This is an example of the base implementation to retrieve the content that should be shown in the dropdown edit. It shows the number of times the button was clicked. First create a new extended button class: type TButtonEx = class(TButton, ITMSFNCControlPickerBase) private FCount: Integer; function PickerGetContent: String; protected procedure Click; override; public constructor Create(AOwner: TComponent); override; end; { ButtonEx } procedure TButtonEx.Click; begin inherited; Inc(FCount); if Assigned(Parent) and (Parent is TTMSFNCCustomSelector) and Assigned(Parent.Owner) and (Parent.Owner is TTMSFNCControlPicker)then begin //Update ControlPicker if assigned as control (Parent.Owner as TTMSFNCControlPicker).UpdateDropDown; end; end; constructor TButtonEx.Create(AOwner: TComponent); begin inherited; FCount := 0; Text := ‘Click this’; end; function TButtonEx.PickerGetContent: String; begin Result := IntToStr(FCount) + ‘ Clicks’; end; The only thing left to do is creating the button and assiging it to a TTMSFNCControlPicker: procedure TForm1.FormCreate(Sender: TObject); begin b := TButtonEx.Create(Self); b.Parent := self; TMSFNCControlPicker.Control := b; end;

Read More

Announcing support for FMXLinux!

Intro A couple of weeks ago we announced beta support for FMXLinux and today we announce stable support. The beta period is finished and we now fully support FMXLinux in the latest version of all of our FNC products. Download the latest update today to get started! Below is a list of FNC products that have been tested in FMXLinux. With FMXLinux, we add a new platform to the wide variety of already supported platforms in FNC. TMS FNC Components can be used simultaneously on these frameworks TMS FNC Components can be used simultaneously on these operating systems/browsers TMS FNC Controls can be used simultaneously on these IDEs Getting Started The components have been tested and deployed on a Linux environment (Ubuntu 20.04) after properly setting up FMXLinux and other dependencies required for various parts of FNC. Support for FMXLinux is limited to RAD Studio 10.4 Sydney and the path to the source files has to be manually configured in the library path (the automated installer currently does not pick up FMXLinux). Please follow the instructions below to add FMXLinux support to RAD Studio. Please note that adding the SDK is an essential part of the configuration process and it is important to add the SDK to RAD Studio when all the necessary libraries are added to your Linux environment. After following the above instructions, please execute the following commands sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 sudo apt-get install zlib1g-dev sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 sudo apt install libwebkit2gtk-4.0-dev Add each path that contains FNC source files of the products you have installed to the Linux 64 bit library path. Start a new multi-device FMX project and select the Linux 64 bit profile. When the PAServer is running correctly, you can connect to Linux environment and start deploying your application.  Video The above instructions along with a showcase of some FNC components are demonstrated in the video below. Stay tuned! With FMXLinux support we add yet another major and exciting feature to the already huge amount of features and components FNC has to offer. Yesterday we also announced exciting new features and improvements in TMS FNC Maps 1.5 and TMS FNC UI Pack 3.4. Read the linked blog posts to find out more. Stay tuned for more FNC improvements and features coming up in the near future!.

Read More

What’s new in TMS FNC Maps 1.5

We are back with another substantial update for TMS FNC Maps. 4 new components are introduced in TMS FNC Maps v1.5: TTMSFNCStaticMap, TTMSFNCMapsImage, TTMSFNCTollCost and TTMSFNCTimeZone. 1. Static Maps & Map Image The new TTMSFNCStaticMap component lets you request a static map image for a specific location. The static image can be customized by setting the map type (roads, satellite …), zoom level and an optional marker at the center point. The resulting image can be displayed by using the TTMSFNCMapsImage component. The following mapping services are supported: Azure, Bing, Google, Here, MapBox, TomTom Only a single line of code is needed to request and display a static map image: TMSFNCMapsImage1.URL := TMSFNCStaticMap1.GetStaticMap(CenterCoordinate,  TMSFNCMapsImage1.Width, TMSFNCMapsImage1.Height, ZoomLevel, ShowMarkerBoolean, MapType);     2. Toll Cost calculation Using the TTMSFNCTollCost component the toll route costs between an origin and destination location can be calculated. Toll cost information is returned for each toll segment along the route together with turn by turn directions. The following mapping services are supported: Here, PTV xServer The toll cost calculation can be requested with just one line of code: TMSFNCTollCost1.GetTollCost(OriginCoordinate, DestinationCoordinate); 3. TimeZone information The TTMSFNCTimeZone component can be used to request time zone information for a specified location. The following mapping services are supported: Azure, Bing, Google, Here Again a minimum of code is needed to request and display time zone information: procedure TForm1.TMSFNCMaps1MapClick(Sender: TObject;  AEventData: TTMSFNCMapsEventData);begin  TMSFNCTimeZone1.GetTimeZone(AEventData.Coordinate.toRec)end;procedure TForm1.TMSFNCTimeZone1GetTimeZone(Sender: TObject;  const ARequest: TTMSFNCTimeZoneRequest;  const ARequestResult: TTMSFNCCloudBaseRequestResult);var  it: TTMSFNCTimeZoneItem;begin  it := ARequest.Items[0];  memo.Lines.Clear;  memo.Lines.Add(‘TimeZone: ‘ + it.TimeZone);  meTimeZone.Lines.Add(it.Description);  meTimeZone.Lines.Add(‘Offset: ‘ + it.Offset);  meTimeZone.Lines.Add(‘DST: ‘ + it.DSTOffset);end; 4. Minor improvements Apart from all the new components, some improvements are also included with this update. One of the noteworthy improvements is the possibility to retrieve the index of the waypoints in the optimized order for TTMSFNCDirections. The following mapping services are supported: Azure, Google Maps, TomTom That’s it for this TMS FNC Maps v1.5 update. I hope you’ll enjoy all these exciting new features!

Read More

Developer Stories: Simon Hooper Recounts The Story of His Wise Eyes Application

Simon Hooper started programming with Delphi 26 years ago. He has recently submitted his application (Wise Eyes) at the Delphi 26th Showcase Challenge and he talked with us about his programming experiences. You can visit his Wise Eyes website for more information. When did you start using RAD Studio Delphi and have long have you been using it? Since Delphi 1.  Over 26 years ago! What was it like building software before you had RAD Studio Delphi? Delphi heralded a new generation of development tools.  When Microsoft only had buggy betas of Foxpro, Borland had a ground-breaking polished product. I had been recruited to rewrite an application that had “hit the buffers” in terms of GUI development using tools of DOS era origin.  My decision to use the brand new Delphi was applauded time and again.  We were working with multi-dimensional databases, writing GUIs with lots of drag and drop coupled to fast data handling.  I hardly touched a TDataset during my first 3 years with Delphi.  That changed! How did RAD Studio Delphi help you create your showcase application? We had much Delphi experience to leverage.  It is the complete development tool in one package.  Cross platform, data handling, GUI builder.  It’s well developed OO structure is vital to a large project.  With a project that is pushing boundaries we are able to build and integrate our own functions, components and tools when Delphi does not (yet) have them. What made RAD Studio Delphi stand out from other options? From a single tool with a common code base are delivering web server for Linux and Windows, and desktop for Windows and macOS. No reliance on Java, .Net, PHP interpreter or similar causing installation, compatibility and versioning headaches.  Native compile is simple, fast and keeps our IP secure. What made you happiest about working with RAD Studio Delphi? We were able to build a really solid structure, within which the wide functionality of the product is slotting in nicely.  A structure to edit and store report definitions though RTTI is infinitely extendable.   Interfaces enable any data source to be fed into the report generation engine.  Similarly interfaces on the output of the engine enable the same report to be rendered to browser, Excel, CSV or whatever.  Extensive use of records passed by pointer reduces the amount of copying, and by extension memory used. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? My biggest grin came was when we load-tested the server module.  The minimum target for a viable product was 20 reports per minute per processor core.  100rpm/core would be “time for a beer” as my son put it.  The result: a staggering 300rpm/core!  Wise Eyes is fast because Delphi is fast. What are some future plans for your showcase application? Wise Eyes is just beginning.  Our Excel Inject is popular, but people are using Google Sheets and other online spreadsheets.  With the aforementioned structure existing code will extend quite easily. Multi-lingual capability is close, for which Delphi’s Unicode support is vital. The headline feature for version 2 will be easy drag and drop report writing for managers, without first building a datamart. Thank you, Simon! Visit the link below to view his showcase entry. Delphi is fast and reliable – […]

Read More

Delphi Versatility: FelixGO Workflow Logistics Android App

FelixGO is the smartphone version of Felix Tools from German-base Felix Systems Logistics Factory and it is built using RAD Studio Delphi and the versatile Firemonkey FMX cross-platform framework. According to the Felix Systems, “this app allows the creation of freight orders, transportation needs, on the basis of harvest declarations FHPDAT logistics standards. The system can be used on Android smartphones or tablets. The app is integrated into a logistics center and Felix automated master data provided. Create messages are transmitted to the Felix logistics center and processed by it.” As Felix quite rightly says, less paper equals more efficiency and that is what they are aiming for with this very nicely organized and engineered app. FelixTools and the Felix Go app collates all the data for the entire workflow process from the initial contract letters right through the billing cycle. Websites FelixGO Google Play FelixGO Screenshot Gallery You could harness the power of RAD Studio Delphi’s versatile development tools to help control your user’s workflow. Try RAD Studio today and see what it can do to increase efficiencies.

Read More

Cartoonify Photos With This Easy But Powerful Neural Network

Based on this wiki : a convolutional neural network (CNN, or ConvNet) is a class of deep neural network, most commonly applied to analyze visual imagery. They are also known as shift invariant or space invariant artificial neural networks (SIANN). Convolutional Neural Network? That sounds complicated! Is it? Good news,  DeepAI.org has provided an API to access, so we can quickly build applications using it. Follow along as we show you how.. How do I set up an app with DeepAI API? We can emulate what curl does for access to DeepAI API, because it looks quite straight-forward. curl -F ‘image=@/path/to/your/file.jpg’ -H ‘api-key:1ade887c-a8e2-4b91-b888-947aa67cde17’ https://api.deepai.org/api/toonify curl     –H span class=“s1”>‘api-key:1ade887c-a8e2-4b91-b888-947aa67cde17’/span>     https://api.deepai.org/api/toonify here what that looks like in Delphi code: procedure Toonify; var LRestClient: TRESTClient; LRestRequest: TRESTRequest; LImageDownload: TDownloadURL; LResponse: TJSONObject; begin LRestClient := TRESTClient.Create(TOONIFY_API_URL); LRestRequest:= TRESTRequest.Create(nil); try LRestRequest.Method := rmPOST; LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); LRestRequest.AddFile(‘image’, OriginalFilename); LRestRequest.Client := LRestClient; LRestRequest.Execute; LResponse := LRestRequest.Response.JSONValue as TJSONObject; // LReponse image url processing here .. finally LRestRequest.Free; LRestClient.Free; end; end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 procedure Toonify; var   LRestClient: TRESTClient;   LRestRequest: TRESTRequest;   LImageDownload: TDownloadURL;   LResponse: TJSONObject; begin   LRestClient := TRESTClient.Create(TOONIFY_API_URL);   LRestRequest:= TRESTRequest.Create(nil);   try     LRestRequest.Method := rmPOST;     LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);     LRestRequest.AddFile(‘image’, OriginalFilename);     LRestRequest.Client := LRestClient;     LRestRequest.Execute;     LResponse := LRestRequest.Response.JSONValue as TJSONObject;     // LReponse image url processing here ..   finally     LRestRequest.Free;     LRestClient.Free;   end; end; Using the API’s JSON output The above code is only accessing JSON result from Toonify API, which JSON result similar to the following: { “id”: “fcf837eb-640f-4f02-97e29ab02377”, “output_url”: “https://api.deepai.org/job-view-file/fcf837eb-ab02377/outputs/output.jpg”} {     “id”: “fcf837eb-640f-4f02-97e29ab02377”,     “output_url”: “https://api.deepai.org/job-view-file/fcf837eb-ab02377/outputs/output.jpg”} Converting the API output into something useful So, to download the image and then attach it to the component Timage as a result of the process, here is the code: var .. LMemStream: TMemoryStream; LBitmapItem: TFixedBitmapItem; .. begin .. LImageDownload := TDownloadURL.Create; LMemStream := TMemoryStream.Create(); try LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream); LBitmapItem := Image2.MultiResBitmap.Add; LBitmapItem.Bitmap.LoadFromStream(LMemStream); except on E: Exception do ShowMessage(‘Error: ‘+E.Message); end; LImageDownload.Free; LMemStream.Free; .. end 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var   ..   LMemStream: TMemoryStream;   LBitmapItem: TFixedBitmapItem;   .. begin   ..   LImageDownload := TDownloadURL.Create;   LMemStream := TMemoryStream.Create();   try    LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream);    LBitmapItem := Image2.MultiResBitmap.Add;    LBitmapItem.Bitmap.LoadFromStream(LMemStream);   except on E: Exception do    ShowMessage(‘Error: ‘+E.Message);   end;   LImageDownload.Free;   LMemStream.Free;   .. end Full Delphi source code to cartoonify and image using the DeepAI API The full Tonify method is this: procedure TForm2.Toonify; var LRestClient: TRESTClient; LRestRequest: TRESTRequest; LImageDownload: TDownloadURL; LResponse: TJSONObject; LMemStream: TMemoryStream; LBitmapItem: TFixedBitmapItem; begin LRestClient := TRESTClient.Create(TOONIFY_API_URL); LRestRequest:= TRESTRequest.Create(nil); try LRestRequest.Method := rmPOST; LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); LRestRequest.AddFile(‘image’, OriginalFilename); LRestRequest.Client := LRestClient; LRestRequest.Execute; LResponse := LRestRequest.Response.JSONValue as TJSONObject; LImageDownload := TDownloadURL.Create; LMemStream := TMemoryStream.Create(); try LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream); LBitmapItem := Image2.MultiResBitmap.Add; LBitmapItem.Bitmap.LoadFromStream(LMemStream); except on E: Exception do end; LImageDownload.Free; LMemStream.Free; finally LRestRequest.Free; LRestClient.Free; end; 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 33 34 procedure TForm2.Toonify; var   LRestClient: TRESTClient;   LRestRequest: TRESTRequest;   LImageDownload: TDownloadURL;   LResponse: TJSONObject;   LMemStream: TMemoryStream;   LBitmapItem: TFixedBitmapItem; begin   LRestClient := TRESTClient.Create(TOONIFY_API_URL);   LRestRequest:= TRESTRequest.Create(nil);   try     LRestRequest.Method := rmPOST;     LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);     LRestRequest.AddFile(‘image’, OriginalFilename);     LRestRequest.Client := LRestClient;     LRestRequest.Execute;     LResponse := LRestRequest.Response.JSONValue as TJSONObject;     LImageDownload := TDownloadURL.Create; […]

Read More

Developer Stories: Brian Thomson Shares Insights On His Pro Workout Application

Brian Thomson has been using Delphi since its 1.0. Brian submitted a showcase entry (Helpful Workout Application Is Delphi Powered) to the Delphi 26th Showcase Challenge and we interviewed him to learn more about his experiences with Delphi. You can find out more about his application and download it here on Pro Workout. When did you start using RAD Studio/Delphi and have long have you been using it?  I have been using Delphi since 1.0, and the predecessor (Object Pascal) for 5 years before then.  My entire career has been based around Delphi.  Delphi is still my favorite way to write programs. What was it like building software before you had RAD Studio/Delphi? The tools I was using before Delphi were completely non-visual.  We went through iteration after iteration just trying to get the screens to look right! How did RAD Studio Delphi help you create your showcase application? First, there are several aspects of multi-platform development that have been handled for me like a cross-platform-capable clipboard and file system utilities.  While writing my app there were a few items that I had to write for myself in a cross platform manner.  This made me appreciate what had been done for me all the more! What made RAD Studio Delphi stand out from other options? 1. It was already a tool that I was very familiar with. 2. The visual layout tools are FAR easier to use than the XML based setups other tools use. 3. The capability to write the app as a truly cross platform project meant that I could do rapid testing cycles on Windows before putting it out on mobile. What made you happiest about working with RAD Studio Delphi? For me there is no language that is easier to read than Delphi. The IDE is wonderful. The debugging tools on Windows are amazing. They still need to be brought up to that level on Android, but I expect they could get there. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? One of the first issues I noticed was that a truly cross platform application needs to be ready for any resolution on any device.  As a single developer I decided that rather than creating many copies of each of my graphics in different sizes, that I would need to use vector graphics to enable me to define a graphic once, and resize it as needed.  Delphi gave me the ability to write a component that would do basic EPS graphics.  This increased my ability to incorporate graphics while lowering the weight of including the graphics. What are some future plans for your showcase application? My app is designed to help people do a better job when they workout.  As such I plan to set up a web-based infrastructure that will allow me to host workout programs, designed by professionals, which will then be able to be purchased by end users. Thanks Brian! You can take a look at his software’s showcase entry below. Showcase  

Read More