Noutați

Have You Made Your Application Server HTTP/2 Ready?

In early 2015, HTTP/2 was introduced as the new standard by IESG. This standard makes your application faster, simpler, and more robust. In this article we take you through the differences between HTTP/1 and HTTP/2, the benefits and some key terms. Why should I use HTTP/2? Converting from using HTTP/1 to HTTP/2 brings the following benefits: HTTP/2 reduces latency by enabling full request and response multiplexing. Efficient compression of HTTP header fields. Support for request prioritization. Multiple concurrent exchanges on the same connections. An unsolicited push of representations from servers to clients. What is SPDY? SPDY was an experimental protocol, developed at Google and announced in mid-2009. The primary goal with SPDY was to try to reduce the load latency of web pages by addressing some of the well-known performance limitations of HTTP/1.1. Since 2012 the new experimental protocol was supported by the Chrome, Firefox, and Opera web browsers. A rapidly growing number of sites, both large and small, were deploying SPDY within their infrastructure. In effect, SPDY was on track to become a de facto standard through growing industry adoption. After a lot of discussion within the working group, the SPDY specification was adopted as a starting point for the new HTTP/2 protocol. If you want to read more about this click here for the full story  What are the key differences between HTTP/1.x and HTTP/2? The most significant changes between HTTP/1.x and HTTP/2 are : There is a new binary framing layer which dictates how the HTTP messages are encapsulated and transferred between the client and server. The HTTP semantics, such as verbs, methods, and headers, are unaffected, but the way they are encoded while in transit is different. Unlike the newline delimited plaintext HTTP/1.x protocol, all HTTP/2 communication is split into smaller messages and frames, each of which is encoded in binary format. All communication is performed over a single TCP connection. For the official “RFC” document describing HTTP/2 you can go to the following link: https://datatracker.ietf.org/doc/html/rfc7540#section-4 What are the performance differences between HTTP/1.x and HTTP/2? The really great thing about Delphi is we can already use the latest technology so that server applications with the HTTP/2 protocol can be implemented by developers. One of the Embarcadero Technology Partners, namely ESEGECE, has created a HTTP server component which implements the HTTP/2 protocol. Let’s compare the performance difference between the HTTP/1 and HTTP/2 using ESEGECE’s components. You can download a trial version here: https://www.esegece.com/websockets/download Here’s a video taking you through the demo: As you can see HTTP/2 has a speed of at least 50% more than HTTP/1.x RAD Studio Delphi gets your applications from idea to reality with maximum speed and efficiency. Why not try it for yourself today?

Read More

Example WebSockets Server And Client Chat Application

WebSockets are gaining more and more strength with the implementation in most browsers, including for mobile devices. This article introduces briefly, the concept of WebSockets, and creates a chat app using a websockets component for Delphi, by Delphi component provider Esegece. What are Websockets? The WebSockets protocol allows the creation of a client-server communication channel with bidirectional transmission where both sides (client and server) can transmit data simultaneously. WebSockets came to fill the shortcomings of the HTTP protocol for this purpose, which by the way, is unidirectional (transmission occurs only from one end to the other). The most common uses for WebSockets are, among other things: home brokers (where quotes are updated all the time), social network feeds, chat apps, collaborative tools, and even multi-player games What are the differences between HTTP and WebSockets? WebSockets are a great choice if there is a need for a connection to remain open for a long time for constant data exchange. In summary, the benefits over HTTP are Low Latency, Persistent Connection and Full-Duplex (bidirectional transition). A WebSockets Delphi component To create our chat app we will use the WebSockets component. Here we are using the eSeGeCe Delphi WebSocket component. You can check its benefits here. Also, you can check some implementations here and the documentation here. To start the work, you need to download the eSeGeCe Delphi WebSocket Components and the Indy Components. These two and a video of how to install them, you can check here. How to create a WebSockets Delphi client for a chat application Let’s start with the client-side. After installing the components, get a TsgcWebSocketClient component along with two TEdit a TMemo, and a TButton. The two TEdit controls will be used as name and message fields. The TMemo control will be the field that displays all messages. In the TsgcWebSocketClient properties, you need to change just the host and port. Add ‘localhost’ to the host and 5416 to the port. Looking at the code, there are two main parts. The connection and the messages. For connection and disconnection, you can add the following in the OnShow and OnClose methods of the form: procedure TFrmClient.FormShow(Sender: TObject); begin sgcWsClient.Active := True; end; procedure TFrmClient.FormClose(Sender: TObject; var Action: TCloseAction); begin sgcWsClient.Active := False; end; procedure TFrmClient.FormShow(Sender: TObject); begin   sgcWsClient.Active := True; end;   procedure TFrmClient.FormClose(Sender: TObject; var Action: TCloseAction); begin   sgcWsClient.Active := False; end; To receive a message is very simple. The OnMessage event of the TsgcWebSocketClient, already comes with the text sended by the server. You just need to get it and put on the TMemo component: procedure TFrmClient.sgcWsClientMessage(Connection: TsgcWSConnection; const Text: string); begin mmLog.Lines.Add(Text); end; procedure TFrmClient.sgcWsClientMessage(Connection: TsgcWSConnection;   const Text: string); begin   mmLog.Lines.Add(Text); end; Sending a message over a WebSockets connection using Delphi To send a message is also, very simple. You can use the OnClick event of the button: sgcWsClient.WriteData(edtName.Text + ‘: ‘ + edtMessage.Text); sgcWsClient.WriteData(edtName.Text + ‘: ‘ + edtMessage.Text); Creating a WebSocket Delphi Server for a Chat Application For this WebSocket Delphi Server Example, we will need the TsgcWebSocketHTTPServer component, and at least, a TMemo. In the sgcWebSocketHTTPServer properties Options, mark the HTML files. Also in Fallback/ServerSentEvents/Retry, set to 3 and set the port to 5416. Here we also have two main parts, when looking in the code: the connection, and the messages. You […]

Read More

Quickly Build Powerful Executive And Admin Dashboards With Javascript

First impressions last, especially when you start working with a new framework or library. Many people struggle and it difficult and frustrating. That is why Sencha has put in the time and effort to make Ext JS accessible, no matter what your skill level is. This is because on your first contact with our framework it is important that you can familiarize yourself quickly and get started running basic code examples that show you its real potential. Today we will show you just how easy it is to get up and running with Sencha. How to Download GPL Version You may not know this but Ext JS has a GPL version in addition to our Ext JS Trial. It is a totally free, fully functional version. Simply put, you can build anything you want, but you have to share your code with the community. Pretty cool. To get started using the GPL version all you have to do is fill out this form. Once you are done, you will receive an email download link. Getting Started Getting started once you have downloaded the software is easy. The Ext JS documentation has a lot of guides explaining all the steps you need to run the product and start recreating its examples. To get you moving more quickly however here is the bare minimum you need to know. Starting with Sencha CMD If you still don’t have Sencha CMD, you can download it for free here. Once you have it installed you need to make sure it is properly configured. To do this, run the following command on the CMD terminal/shell: If it returns sencha cmd, you are good to go. If it doesn’t, click here. It will take you to more information on how to install, configure and use Sencha CMD. You shouldn’t need it though because we will cover the basics here. Reusing Ext JS Templates as Our Base Application Sencha CMD and Ext-gen use templates to help you create your applications. For example, the Executive Dashboard and Admin Dashboard are templates that you can use as a base to automatically help you through your own applications. How to Build Executive Dashboard Example To get started let’s check out the Executive Dashboard. First, there is a very important trick — Open the app.json file on ext-7.0.0-gpl/templates/executive-dashboard and replace the word from ${ext.dir} to ${framework.dir}. A single command to creates the application. Remember to use your own username : sencha -sd /Users/fabio/sencha-sdks/ext-7.0.0-gpl generate app -s /Users/fabio/sencha-sdks/ext-7.0.0-gpl/templates/executive-dashboard ExecutiveDashboard ./executive-dashboard-extjs /Users/fabio/sencha-sdks/ext-7.0.0-gpl is where your Ext JS GPL SDK folder is. /Users/fabio/sencha-sdks/ext-7.0.0-gpl/templates/executive-dashboard is the template. In this case, we are using the executive dashboard, which means your application will start with all elements existent on it. ExecutiveDashboard is the name of our application. That will be our namespace for our classes. ./executive-dashboard-extjs is the path where we will create our project structure containing the needed files. Done! You have created an application. Now, let’s run the command that will call up the server on a specific port and see the result: The output of this command will show you the URL where your app will be available. in this case, it is available on http://localhost:1841/. Open it on your browser and you will see the app created: How to Build Admin Dashboard Example To build […]

Read More

Custom control development with TMS WEB Core for Visual Studio Code, an intern reports

At tmssoftware.com we love to have interns. I believe it is a fantastic experience to learn young aspiring software developers about Delphi, its eco-system, its amazing productivity and at the same time, absorb a lot of energy, get new fresh ideas and get to know what drives and motivates the next generation of software developers. So, also this school year, we had 2 interns learning all about Delphi, TMS WEB Core, Object Pascal, components and much more here at tmssoftware.com. Today, we want to give the word to our intern, and very soon colleague, Bradley who did a lot of stunning work this school year and tells in his first blog post about building his first custom control for TMS WEB Core. Nothing but an amazing and exciting story! So, with pleasure, I give the word to Bradley: A first custom web control Having only one year experience using Delphi and TMS WEB Core, I was assigned the (at first sight) daunting task of developing my first ever custom web control, namely a chat box control. I had only been developing web applications since I joined tmssoftware.com as an intern, so clearly writing a component was something completely new. Using the available documentation and the experience of my mentor Bruno I quickly obtained the necessary skills for developing a TMS WEB Core custom control, the TWebChatBox control. First steps To gain some experience, I first developed another very small control, a custom toggle button control to switch a web application between full-screen and normal mode. I went for developing the custom control directly from TMS WEB Core for Visual Studio Code because I just feel more comfortable for web projects to use this IDE. I had the “privilege” to use first the alpha and then the beta version of TMS WEB Core for Visual Studio Code v1.3 (released yesterday btw) as this introduced component package support. Using the new package support for installing custom controls made it very easy to test the control, also at design-time. The development of this first small control allowed me to get used to the concept of custom controls as well as the steps involved to get it installed in the IDE. Starting the chatbox implementation After I was comfortable enough with the principle of custom controls. I’ve started building the chat box component. As there were a ton of features on the requirements list, I had actually no idea where to start. I’ve focused first of all on a working way of sending/receiving messages. When I had that going, I started focusing on adding a basic design, followed up by adding the necessary properties for manipulating said chat box.  I think implementing collections as a way of managing messages was the only thing I really struggled with. Having never implemented anything like this, figuring out how to implement the chat message bubbles at collection item level was a challenge. If you add a message to your collection, a chat message bubble will be generated and displayed in the chat control. The collection item will also keep a reference of the chat message bubble so that you can manipulate it later on. A chat bubble contains several HTML elements. We have a SPAN for the message. For the user avatar there is an IMG element. […]

Read More

How To Visualize Data With D3 And JavaScript Using Treemaps, Heatmaps, And Pivot Heatmaps

The D3 package in Sencha Ext JS boasts several powerful components. By utilizing them, you can create amazing data visualizations that can help your business uncover valuable insights both easily and conveniently. In this post, we will discuss three of the most useful Ext JS native components: Treemap, Heatmap, and Pivot Heatmap. Let’s dive in. What is D3?   D3 (Data Driven Components) is a powerful JavaScript library. It enables you to produce dynamic and interactive data visualizations in the web browser, utilizing modern web standards. These standards include SVG, HTML, and CSS. Best of all, D3 is open-source, so you can use it without spending a single penny. How to Visualize Data Using D3 and JavaScript Because the Sencha D3 JavaScript package is fully integrated with Ext JS, you can create powerful data visualizations and implement them into your Ext JS web applications with ease. Although there are many different component types in the D3 package, in this post, we will discuss only Treemaps, Heatmaps, and Pivot Heatmaps. D3 Treemap The D3-treemap is a powerful component that recursively subdivides areas into rectangles, where the area of any node in a tree corresponds to its comparative value. Let’s take a look at this example: To create the visualization shown above, simply follow these steps: 1. First, you have to create the model: Ext.define(‘KitchenSink.model.Stock’, { extend: ‘Ext.data.TreeModel’,   fields: [ ‘name’, ‘description’, ‘cap’, { name: ‘leaf’, calculate: function(data) { return data.root ? false : !data.children; } }, { name: ‘change’, calculate: function() { return (-5 + Math.random() * 10).toFixed(2); // percentages } }, { name: ‘expanded’, type: ‘boolean’, defaultValue: true } ],   proxy: { type: ‘ajax’, url: ‘data/tree/stocks.json’ }   }); Here, you are adding different fields, including name, field, description, leaf, and change. 2. Next, you have to create the View. To do so, add the following code: Ext.define(‘KitchenSink.view.d3.TreeMap’, { extend: ‘Ext.panel.Panel’, xtype: ‘d3-view-treemap’, controller: ‘treemap’,   requires: [ ‘KitchenSink.view.d3.StocksViewModel’, ‘Ext.d3.hierarchy.TreeMap’ ],   width: 930, height: 600,   profiles: { classic: { width: 930, companyPanelWidth: 215 }, neptune: { width: 930, companyPanelWidth: 215 }, graphite: { width: 1000, companyPanelWidth: 300 }, ‘classic-material’: { width: 1000, companyPanelWidth: 300 } },   layout: ‘border’,   viewModel: { type: ‘stocks’ },   items: [ { xtype: ‘treepanel’, region: ‘west’, title: ‘Companies’, split: true, splitterResize: false, collapsible: true, minWidth: 100, width: 215, useArrows: true, displayField: ‘name’, rootVisible: false, bind: { store: ‘{store}’, selection: ‘{selection}’, focused: ‘{selection}’ }, tbar: { xtype: ‘segmentedbutton’, width: ‘100%’, items: [ { text: ‘Market Cap’, pressed: true }, { text: ‘Uniform’ } ], listeners: { toggle: ‘onNodeValueToggle’ } } }, { xtype: ‘panel’, region: ‘center’, layout: ‘fit’, items: { xtype: ‘d3-treemap’, reference: ‘treemap’, rootVisible: false, interactions: { type: ‘panzoom’, zoom: { doubleTap: false } }, bind: { store: ‘{store}’, selection: ‘{selection}’ }, nodeValue: ‘cap’, noParentValue: true, scaleLabels: true, colorAxis: { scale: { type: ‘linear’, domain: [-5, 0, 5], range: [‘#E45649’, ‘#ECECEC’, ‘#50A14F’] }, field: ‘change’, processor: function(axis, scale, node, field) { var record = node.data;   return record.isLeaf() ? scale(record.get(field)) : ‘#ececec’; } } } } ] }); 3. Once you are don there, you have to create the View Model: Ext.define(‘KitchenSink.view.d3.StocksViewModel’, { extend: ‘Ext.app.ViewModel’,   requires: [ ‘KitchenSink.model.Tree’, ‘Ext.data.TreeStore’ ],   alias: ‘viewmodel.stocks’,   stores: { store: { type: ‘tree’, model: ‘KitchenSink.model.Stock’, autoLoad: true } },   data: […]

Read More

How NIST SP 800-53 Revision 5 Affects Application Security

Published May 27, 2021 WRITTEN BY MICHAEL SOLOMON Michael G. Solomon, PhD, CISSP, PMP, CISM, PenTest+, is a security, privacy, blockchain, and data science author, consultant, educator and speaker who specializes in leading organizations toward achieving and maintaining compliant and secure IT environments. The National Institute of Standards and Technology (NIST) is a non-regulatory agency of the U.S. Department of Commerce that, among other things, maintains physical science laboratories and produces guidance for assessing compliance with a wide range of standards. NIST has a long history of providing documents that help organizations and agencies assess compliance with cybersecurity standards and implement changes to strengthen compliance and security. The NIST Special Publication (SP) series provides “guidelines, technical specifications, recommendations and reference materials, comprising multiple sub-series.” One sub-series, SP 800, focuses on cybersecurity, specifically containing guidelines for complying with the Federal Information Security Modernization Act (FISMA). (If you are interested in digging further into NIST cybersecurity offerings, check out the relatively new SP 1800 cybersecurity practice guides as well.)  How NIST SP 800-53 Revision 5 Affects Application Security NIST SP 800-53, “Security and Privacy Controls for Information Systems and Organizations,” provides guidance for selecting the most effective security and privacy controls as part of a risk management framework. The latest revision of NIST SP 800-53, revision 5, was released on September 23, 2020. Revision 5 includes requirements for RASP (runtime application self-protection) and IAST (interactive application security testing). While these approaches to application security are not new, making them a required element of a security framework is a first. Let’s examine how NIST SP 800-53 revision 5 affects the secure application development process. What NIST SP 800-53 contains The initial version of SP 800-53 was released in 2005, titled “Recommended Security Controls for Federal Information Systems.” SP 800-53 always focused on federal information systems, at least up through revision 4. Then, revision 5 dropped the word “federal” from its title. That means SP 800-53 is now a more general guidance document that applies to commercial information systems as well as federal systems. This may seem to be a minor change, but it really means that NIST just expanded the scope of their recommendations. SP 800-53 isn’t a mandate at all, but it does signal a strengthening of guidance from the federal government for non-federal environments. SP 800-53 contains a catalog of security and privacy controls, organized into 20 control families. Chapter two of SP 800-53 “describes the fundamental concepts associated with security and privacy controls, including the structure of the controls, how the controls are organized in the consolidated catalog, control implementation approaches, the relationship between security and privacy controls, and trustworthiness and assurance.” The other major chapter of SP 800-53, chapter three, includes a catalog of security and privacy controls, each of which includes a discussion of that control’s purpose and how it fits into a layered security approach. The goal of SP 800-53 is to provide a consolidated guidance document that describes security and privacy controls, how they are related to one another, and how to best select, deploy and assess the controls required for specific use cases. What revision 5 means to application security Although SP 800-53 revision 5 provides general guidance for selecting security and privacy controls, a noticeable portion of changes since revision 4 focus on software. As […]

Read More

Developer Stories: Georgi Todorov Gerasimov Talks Us Through His Sophisticated File Encryption App

Georgi Todorov Gerasimov has been using Delphi for many years. He has a showcase entry submission (FPS-SE) at the Delphi 26th Showcase Challenge and we got to talk to him about his great Delphi experiences throughout the years. You can purchase and download his application over at File Protect System website. When did you start using RAD Studio Delphi and have long have you been using it? We have been using RAD Studio/Delphi for years. The moment Delphi XE entered the market, we started to work on a project for post quantum encryption of sensitive to critical information, which we named File Protect System – FPS. What was it like building software before you had RAD Studio/Delphi? Before the advent of RAD Studio/Delphi we faced many problems in the development of specialized REST servers. Another serious problem that our team has faced in that time was testing the end-user applications, which were utilizing web based interface. How did RAD Studio Delphi help you create your showcase application? With the advent of RAD Studio XE7/Delphi all R&D processes passed to a qualitatively new level. The technical abilities that provided us technologies like Datasnap, Tethering, Indy, FastReport, FireMonkey, etc. allowed us to speed up development processes and to raise the efficiency and reliability of our software products. At the moment we are reorganizing our working processes in order to start working with RAD Studio 10.4 Sydney. What made RAD Studio Delphi stand out from other options? One of the main advantages of RAD/Studio Delphi is the presence of unique instruments that allow quick implementation of attractive by its nature interface solutions. Another significant advantage is the high quality of the visual components and the exceptionally good compilers. What made you happiest about working with RAD Studio Delphi? It is a pleasure to work with RAD Studio/Delphi because this is an IDE that allows the developers to get a view of the project as a whole. When we get the result, every member of our team is satisfied, and that gives us the ambition to continue our development and grow. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? RAD Studio XE7/Delphi helped us to finalize successfully the first versions of the File Protect System – FPS. We were able to create application that provides the end user with the ability to protect its own files and electronic messages. Something more, the application we developed allows the user to transform every single electronic device (including mobile ones) into high performance encryption system What are some future plans for your showcase application? File Protect System will continue to evolve in the future. At the moment our team is working on the integration of server-based solutions for post quantum protection of corporate structures that are using DB systems like Oracle, MS, MySQL, and DB2. Along with this we are working on our mobile solutions and DLP (Data Loss Prevention) modules that expand the functionality of File Protect System (FPS). Something more, we are continuously evolving our integrated mail client BS Mail, which is becoming popular as a stand-alone application for critical information transfer. Thank you for taking the time to talk to us Georgi. Take a look at his entry showcase below and see what kind of […]

Read More

Powerful Advanced Scientific Computing – it’s easy!

What is Scientific Computing? According to Golub and Ortega in 1992, Scientific Computing is the collection of tools, techniques, and theories required to solve mathematical models of problems in Science and Engineering. A majority of these tools, techniques, and theories are originally developed in Mathematics, which are many of them having their genesis long before the advent of electronic computers. Computation becomes crucially important in situations such as: The problem at hand cannot be solved by traditional experimental or theoretical means, such as attempting to predict climate change Experimentation may be dangerous, e.g., characterization of toxic materials The problem would be too expensive or time-consuming to try to solve by other avenues, e.g. determination of the structure of proteins Nowadays, Scientific Computing is acknowledged as the “third pillar of science”, standing right next to theoretical analysis and experiments for scientific discovery. Why use Python for Scientific Computing? Here are the 6 reasons to use Python for Scientific Computing: Python has built-in support for Scientific Computing. Python is a highly extensible language. Python has very good input/output (I/O) options. Python has strong support for task automation. Python has bridges to MATLAB or Octave. Python can use a web front end. Delphi adds Powerful GUI Features and Functionalities to Python In this tutorial, we’ll build Windows Apps with extensive Scientific Computing capabilities by integrating Python’s Scientific Computing libraries with Embarcadero’s Delphi, using Python4Delphi (P4D). P4D empowers Python users with Delphi’s award-winning VCL functionalities for Windows which enables us to build native Windows apps 5x faster. This integration enables us to create a modern GUI with Windows 10 looks and responsive controls for our Python Web Scraping applications. Python4Delphi also comes with an extensive range of demos, use cases, and tutorials. We’re going to cover the following… How to use NumPy, SciPy, SymPy, scikit-learn, Theano, and Cirq Python libraries to perform Scientific Computing tasks All of them would be integrated with Python4Delphi to create Windows Apps with Scientific Computing capabilities. Prerequisites Before we begin to work, download and install the latest Python for your platform. Follow the Python4Delphi installation instructions mentioned here. Alternatively, you can check out the easy instructions found in the Getting Started With Python4Delphi video by Jim McKeeth. Time to get Started! First, open and run our Python GUI using project Demo1 from Python4Delphi with RAD Studio. Then insert the script into the lower Memo, click the Execute button, and get the result in the upper Memo. You can find the Demo1 source on GitHub. The behind the scene details of how Delphi manages to run your Python code in this amazing Python GUI can be found at this link. Open Demo01.dproj. 1. How do I enable NumPy inside Python4Delphi in Windows? NumPy is a popular Python library used for scientific computing applications. NumPy is an acronym for “Numerical Python”. NumPy is the fundamental package for array computing with Python. NumPy’s operations are divided into three main categories: Fourier Transform and Shape Manipulation, Mathematical and Logical Operations, and Linear Algebra and Random Number Generation. To make it as fast as possible, NumPy is written in C and Python. Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with […]

Read More

Photomate Automation Supercharges Your Inventory Workflow

The workflow behind the selling and buying of vehicle parts is convoluted and tricky to navigate. It typically involves lots of photos of metallic objects so that the buyer – or seller – can more easily identify whether or not the part is the right one. Photomate works in conjunction with the Car-Part.com website and their Checkmate inventory management system to ease the process of taking those identifying photos and uploading them to the correct places to create online listings. The app greatly simplifies that entire workflow process. RAD Studio Delphi powers Photomate Photomate is written using RAD Studio Delphi where it uses the power of the Firemonkey FMX cross-platform framework to integrate with the mobile device’s built-in camera and sensors to perform its magic. What does the Photomate developer say about their app? According the developer, “The photos you take in Photomate are sent to the Checkmate inventory management system, and then uploaded to online listings. When you include photos in your online listings, you help your customers feel more comfortable browsing and purchasing parts from you. With Photomate, you have the opportunity to select which parts of your inventory need photos to ensure that all of your online listings have images.” Unique features listed for the app include Select specific parts in your inventory that need photos, and assign these parts to Photomate Assign specific parts to specific employees, creating individual “to do” lists Communicate between managers, employees, and coworkers with comment fields Take photos or use images already in your device’s photo gallery Select the best image to serve as the part’s thumbnail for online listings Set any image to be “private” (sent to Checkmate, but not posted online) Send images to Checkmate to be included in inventory details and uploaded to online listings on Car-Part.com, Car-Part Pro, Trading Partners, eBay, mobile searches, and individual recycler websites Google Play Photomate Screenshot Gallery

Read More

Photomate Automation Supercharges Your Inventory Worflow

The workflow behind the selling and buying of vehicle parts is convoluted and tricky to navigate. It typically involves lots of photos of metallic objects so that the buyer – or seller – can more easily identify whether or not the part is the right one. Photomate works in conjunction with the Car-Part.com website and their Checkmate inventory management system to ease the process of taking those identifying photos and uploading them to the correct places to create online listings. The app greatly simplifies that entire workflow process. RAD Studio Delphi powers Photomate Photomate is written using RAD Studio Delphi where it uses the power of the Firemonkey FMX cross-platform framework to integrate with the mobile device’s built-in camera and sensors to perform its magic. What does the Photomate developer say about their app? According the developer, “The photos you take in Photomate are sent to the Checkmate inventory management system, and then uploaded to online listings. When you include photos in your online listings, you help your customers feel more comfortable browsing and purchasing parts from you. With Photomate, you have the opportunity to select which parts of your inventory need photos to ensure that all of your online listings have images.” Unique features listed for the app include Select specific parts in your inventory that need photos, and assign these parts to Photomate Assign specific parts to specific employees, creating individual “to do” lists Communicate between managers, employees, and coworkers with comment fields Take photos or use images already in your device’s photo gallery Select the best image to serve as the part’s thumbnail for online listings Set any image to be “private” (sent to Checkmate, but not posted online) Send images to Checkmate to be included in inventory details and uploaded to online listings on Car-Part.com, Car-Part Pro, Trading Partners, eBay, mobile searches, and individual recycler websites Google Play Photomate Screenshot Gallery

Read More