Marco Cantu’s blog post about Running a Delphi Linux Application on Google Cloud Shell got me wondering more about the Google Cloud Shell, specifically around the networking. First of all, is the IP address public?
jim@cloudshell:~$ hostname -I
jim@cloudshell:~$ curl icanhazip.com
So the private IP is different from the public IP. I’ll need to test to see if it is mapped with NAT or something. Seems unlikely though. Google offers public facing computers as part of their cloud services, so it makes sense that you would use those instead.
Next question is around bandwidth.
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
Results in . . .
Retrieving speedtest.net configuration...
Testing from Google Cloud (220.127.116.11)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Mimosa Networks (San Jose, CA) [17.60 km]: 40.662 ms
Testing download speed........
Download: 322.69 Mbit/s
Testing upload speed........
Upload: 260.94 Mbit/s
322.69 Mbit/s down and 260.94 Mbit/s up is really impressive! So if you have a task that requires a lot of bandwidth and then condenses it down to a smaller digest, it would be a really useful platform.
Join us Tuesday, March 20th, for a LIVE conversation with Boian Mitov of Mitov software as we talk about Arduino, Visuino, IoT, Industrial Automation, AI and more!
(We had to reschedule due to technical difficulties)
11 AM Mountain Daylight Time
Earlier this week Craig and I had a conversation the Cool App winners
Enter your cool apps and vote today!
Join Craig, David, and Jim as they discuss Delphi powered Games and Graphics engines LIVE!
Live Tuesday, February 27th, 2018 at 12 PM Central Standard Time
On Monday this week David, Craig, and Jim discuss some of their favorite programming books, both focusing on Delphi and C++ specific ones, and general programming topics.
I’ve run into this a few times, where a REST Service returns results in pages, so you have to make multiple passes to get all the data. One thing I love about the RAD REST Client Library is the ability to store all the data in the FDMemTable where you can work on it. Unfortunately when you can only get part of the results that limits the functionality. Here is a simple solution to get all the pages in a single FDMemTable.
What you need is a second FDMemTable. My first one is called MembersTempTable, and it is attached to the Response Adapter. The second one is called MembersMemTable and it will hold the complete set of data.
// Drop any existing data<br />
<p> // Get the first page<br />
MembersRequest.Params.ParameterByName('limit').Value := '50';<br />
MembersRequest.Params.ParameterByName('offset').Value := '0';<br />
<p> // This clones the FDMemTable<br />
[coStructure, coRestart, coAppend]);</p>
<p> // Now we add the other tables<br />
// Repeat until we don't get a full page<br />
while MembersTempTable.RecordCount = 50 do<br />
// Start with the next page<br />
MembersRequest.Params.ParameterByName('offset').Value :=<br />
(MembersMemTable.RecordCount - 1).ToString;<br />
// Append those records into our FDMemTable<br />
MembersMemTable.CopyDataSet(MembersTempTable, [coAppend]);<br />
MembersMemTable.IndexFieldNames := 'id';<br />
Join Craig, David, and Jim as they discuss Delphi Web Frameworks LIVE!
13-Feb-2018 at 12 AM CST [other timezones]
Planning to discuss some of the following . . .
Here is the replay of my webinar on Delphi and the Blockchain. We start with some basics of Bitcoin and cryptocurrency, but we look specifically at some simple examples of what the blockchain is and how to use it.
- Cryptography Basics
- Cryptocurrency Overview
- BitCoin, Ethereum, & PascalCoin
- Digital Contracts
- Bitcoin price tracking
- Mining – Proof of Work
- Blockchain Overview
- Blockchain Chat
- Other Blockchain Usages
- Blockchain is an emerging technology – there is still a lot to learn and discover
- Everyone is focused on the Bitcoin gold rush, but Blockchain may have the bigger/longer impact
- Read the original whitepaper bitcoin.org/bitcoin.pdf
- More information
- Stay tuned to Delphi.org for code and more
[Delphi Blockchain Examples]
Craig and Jim discussed Single Board Computers (SBC) and Delphi in this Live Episode of The Podcast at Delphi.org
If you are wanting to target these boards from Delphi remember if it is an ARM processor you will want to run Android, and if it is an x86 then you will want to run Windows or Linux. Here are some links to some of the single board computers we discussed:
- MinnowBoard by NetGate is an x86 based SBC that includes configurations with Dual Ethernet, which is great for creating network appliances. It includes support for both Linux and Windows. I’ve yet to test it, but I expect it will work fine.
- Udoo x86 is another x86 based SBC (thus the name – but be aware they have non-x86 boards with different names) it supports both Windows and Linux operating systems, and your Delphi apps will run swimmingly under both operating systems. There are 4 different variations of the x86 with different configurations. It includes both a Intel Braswell SOC as the main OS CPU that runs Linux and Windows, and also an Intel Curie Microcontroller that is Arduino compatible. There are GPIO pins for both boards, and the Curie pins are compatible with most Arduino shields. You have a dedicated serial connection between the two so you can create an Arduino app with Visuino that runs on the Curie, talking to various sensors and it will run independently of your Delphi app running on the Braswell.
- LattePanda is a Windows 10 specific SBC and comes with Windows 10 preinstalled. There are two different hardware configurations, and you can choose for it to have Windows 10 activated or use your own license. It also includes a separate Arduino compatible ATmega32u4 microprocessor, again with the dedicated serial connection between the two processors and GPIO pins for both processos. I was able to get Linux installed, but I wouldn’t recommend it as it was a lot of effort and the WiFi wasn’t compatible. You could technically install Delphi IDE on both the LattePanda and Udoo x86, but more likely you would want to use a dedicated development computer and then use the remote debugger/platform assist server on the SBC. They have a new LattePanda Alpha they recently launched on Kickstarter which significantly upgraded stats.
- BeagleBone Black is an older ARM SBC that has its own Android distro. This works better than trying to shoehorn Android onto the Raspberry Pi – while you can get it installed, the BeagleBone Black’s Android distro is much more reliable. It has the GPIO pins like a Raspberry Pi. It is a little older and but might still be a good solution for your projects.
- Orange Pi is another Raspberry Pi type ARM device that is cheaper and designed to run Android. They have a lot of different models to choose from, and just released a new one at CES. I’ve ordered a few to test, but they should run Delphi Android apps great. I have a spreadsheet of all the different Orange Pi boards and some basic specs for easy comparison. No guarantees it is 100% correct though.
We have a whole new streaming solution that should fix all the issues we were having, so expect better audio quality this time. Join Craig, David and myself for the latest on Delphi, C++Builder and software development in general.