Categories
Conferences MVP

Pictures from the 10.3 Rio Preview in Brazil

We just shared a preview of 10.3 Rio in Brazil on Tuesday, the 23 of October here at the Embarcadero Conference in São Paulo. Over 750 developers were in attendance, and the speakers included many Embarcadero and Sencha MVPs. I snapped a few pictures from the event that I thought I would share.

With a name like 10.3 Rio is great we were able to do a preview event in Brazil as part of their annual developer conference. I’ve been in attendance every year since I started at Embarcadero, and it is something I always look forward to. Most years the attendance is around 400 to 500. I’m sure the news about 10.3 Rio and the recent Community Edition helped contribute to the high attendance numbers this year. Either way it is great to see the Delphi developer community continue to grow.

I hope to get some more of the pictures I was in with the MVPs and other speakers, as well as some other general conference pictures. I’ll share those later when I get them.

Multiple sessions in the same room
All the sessions were the same room with the attendees using headsets to switch between the audio tracks. If you didn’t have a headset the room was pretty quiet.
David Millington kicking off the Keynote
David Millington kicking off the Keynote where we previewed some 10.3 Rio features
The Exhibit Hall
The Exhibit Hall with some great partners
This is me in front of the welcome sign
This is me in front of the welcome sign
David Millington in front of a sign that says Embarcadero.com/br with a cityscape and reg icons for Delphi and different mobile and desktop platforms
David Millington in front of the welcome sign
RGB Rio Glasses
I’m wearing the Rio RGB Glasses with the Delphi powered controller on my Android phone
Kelver and Fernando with David and I
Kelver and Fernando with David and I
David Millington in front of a screen showing new Delphi language features
David Millington showing new Delphi language features

Stay tuned for more news about 10.3 Rio and other pictures from the event!

Categories
Conferences News

Robert “Uncle Bob” Martin is Speaking at CodeRage XII

Here in the Delphi community, we all know Dr. Bob Swart, and CodeRage wouldn’t be complete without him (he has a session this year on Customizing DataSnap Method Output, don’t worry.). This year we are also hearing from Uncle Bob, the author of Clean Code – A Handbook of Agile Software Craftsmanship. This is one of those “must reads” that all software developers should have on their bookshelf.

I had an opportunity to see Uncle Bob speak a few years ago, and it was very memorable. This session will be like no others you’ve seen. He is speaking on “The Clean Coder – An Introduction to Software Professionalism.” His session and the live Q&A will be available only during the live CodeRage session, so be sure to join Uncle Bob for this amazing session!

Register now!

Robert "Uncle Bob" Martin

Categories
Android Conferences

Android Services Presentations and Workarounds

Another round up of Android Service related resources.

For starters here are my slides from my Android Services presentation in Brazil.

Creating Android Services with Delphi and RAD Studio 10 Seattle from Jim McKeeth

You can also download the Workarounds and fixes for the Java templates and Android Manifest from CodeCentral.

You can catch a replay of Julian Mesa’s session from CodeRage X

And check out my other Android Services posts.

Categories
Conferences

T-Shirts from Brazil Delphi Conference

I picked up some great T-Shirts during my visit to Brazil.

Delphi Developer: The evolution of mankind
Delphi Developer: The evolution of mankind

I really like this one as the Delphi Developer is the highest evolved form of developer. This is evident by not only their great taste in development tools, but also by the fact they are incredibly productive and produce great apps for all the platforms.

Aquasoft - coffeed powered developer
Aquasoft warns: This shirt contains a Delphi Developer. To run it, please fill with coffee and press F9.

I’ll take some Guaraná Antarctica instead of coffee though. Just not sure where my F9 key is located. Carlos from Aquasoft showed me a very cool ORM he is working on. Hopefully we will see some more of that in the near future.

Windows, Apple, Android = Delphi
Windows, Apple, Android = Delphi Developer

I love that Windows, Apple and Android are all following the Delphi Developer.

TDevRocks
www.TDevRocks.com.br

TDevRocks is a great blog by MVP Adriano Santos.

Categories
Brain Computer Interface Conferences

Meet Me in Philly at the CodeCamp

Philly.NET CodeCampI’m joining Nick Hodges in King of Prussia, Pennsylvania for the Philly.NET Code Camp 2014 Refactored. I’ll be showing off the latest version of Appmethod, including the Free Forever C++ for Android version. Astute readers may have noticed that my sessions are not on .NET, and the conference isn’t actually in Philadelphia. I’m guessing that is the “Refactored” part.

If you are in the area, stop by and say hi. They still have tickets for the two day event where you can catch all three of Nick and my sessions, and maybe a few others if you are interested.


 

Unit Testing: What it is, Why you should be doing it, and how to do it

Saturday, June 21st, 2014 at 7:30 pm on 

Michael Feathers defines “legacy code” as “code that has no unit tests”. Without unit tests your code is fragile, hard to change, and unreliable. Unit testing is the only way that you can be sure that your code does what it is supposed to do.

This talk discusses the basics of Unit Testing by defining terms, discussing what Unit Testing is and is not, and talking about the best techniques and practices for writing unit tests.

All the demos will be in Delphi code, but the principles all remain the same: There no longer is an excuse for not writing unit tests.


Is Thought the Future of Mobile Input?

Sunday, June 22nd, 2014 at 10:30 am on 

The Brain-Computer Interface (BCI) is a mainstay of science fiction, but devices are appearing today to use our brainwaves as a computer input. Is it practical? How far away is it? What sort of input is possible and where is it being used?

We will look at the roots of the technologies that allow a view of the inner functions of the human mind, as well as the possibilities for direct input to, and augmentation of the mind, perception and thought processes. The process includes real-world examples and a demonstration with volunteers controlling software and hardware with only their thoughts and feelings. Gain an understanding of how this still evolving and largely unknown technology really works, how it can be used, and its longer-term implications.


Sharing Code and UI between iOS and Android

Saturday, June 21st, 2014 at 12:00 pm on 

You want to develop on Android and iOS, but rather not have to recreate your app or UI for each platform. This session shows you how to reuse up to 100% of your code and user interface to create native iOS and Android apps using Appmethod and C++. This isn’t your daddy’s C++ either; it has ARC, enhanced RTTI, visual designer, components and no pointer arithmetic (unless you are really into that).

Examples covering access to device sensors, local data storage and remote services. Also how to create a mobile app that extends the functionality of your desktop apps.


I plan on finding a good authentic Philly Cheesesteak Sandwich while I’m there too!

Philly Cheesesteak Sandwhich

Categories
Brain Computer Interface Conferences News

Meet Me in Chicago & D.C./Baltimore for a First Look at XE6

I’m joining Bob Swart and Cary Jensen for the U.S. cities of their annual Delphi Developer Days 2014 tour with the keynote and a free evening event. During my keynote and the evening session I’ll show off Google Glass development with XE6, as well as using an EEG Brain-Computer Interface to control a Mini-Cooper via Bluetooth.

I highly recommend you find time to attend the whole two days of training. I always learn a lot.

May 5-6, 2014: Washington DC/Baltimore
SpringHill Suites Arundel Mills BWI Airport
Register for Training in Washington DC/Baltimore
The free evening event starts at 6:30 PM on Monday the 5th with pizza and drinks. Same location. [Register for free event]

May 8-9, 2014: Chicago
Holiday Inn Express Hotel & Suites, Arlington Heights (O’Hare Airport)
Register for Training in Chicago
The free evening event starts at 6:30 PM on Wednesday the 8th with pizza and drinks. Same location. [Register for free event]

Delphi Developer Days are two-day live Delphi events that provide you with the latest information on Delphi as well as practical techniques to help you improve your Delphi development skills. Each event includes both joint sessions, presented by Bob and Cary together, as well as simultaneous tracks, where Cary and Bob break out into separate rooms to present individual sessions. There is also an Embarcadero Technologies Keynote by Jim McKeeth and guest speaker sessions with Nick Hodges (former Delphi product manager) of Veeva Systems in DC/Baltimore, and with Ray Konopka of Raize Software in Chicago.

A wide variety of topics are covered. Some topics, such as FireDAC and mobile development, apply to the latest versions of Delphi, but there are also many topics that apply across many versions of Delphi. See the detailed description and agenda.

All attendees receive:

  • An extensive course book (several hundred pages in length) written by Cary and Bob that includes the material covered in their sessions
  • Source code examples from their sessions
  • A chance to win valuable prizes from sponsors.
  • Lunch on both days

Space is limited to the first 42 people in each city. There is a discount for attendees of previous 2009-2013 tours, and group discounts are available when registering three or more people from the same company.Visit www.DelphiDeveloperDays.com for complete information.Platinum Sponsors: Embarcadero Technologies, Sybase, An SAP Company, and TMS software. Gold Sponsors: Devart, Dr.Explain, Gnostice Information Technologies, and Raize Software.

Categories
Conferences

CodeRage C++

Tomorrow is the start of CodeRage 8 C++, which is a lot like regular CodeRage, but with an emphasis on C++Builder. This time there is a lot of coverage on the new iOS support, as well as the new REST Components and FireDAC data access.

It all starts with JT’s opening keynote at 6:00 AM Pacific Time, which may also be of interest to Delphi developers who want to get some glimmers of future plans, roadmaps and announcements. Actually most of the sessions will have content of interest to Delphi developers, especially if you’ve missed some of the more recent CodeRage conferences. But if you are a C++ developers, then be sure to make time for all the sessions!

CodeRage C++ - February 25-26, 2014

Categories
Conferences News

Stops on My North America Tour

I just got back from Brazil and Costa Rica, which was great. Now I am headed out to different cities in North America (Yes, technical Costa Rica is in North America, but all these cities are north of Latin America). David I and Al Mannarino are also traveling across North America for a total of 27 cities. Here are my city stops:

Minneapolis – Meet and Eat
Wednesday, November 13, 2013 @ 12:00pm-2:00pm
Ruth’s Chris Steakhouse
920 2nd Avenue S #100, Minneapolis, MN
[Register]

St. Louis – Meet and Eat
Thursday, November 14, 2013 @ 12:00pm-2:00pm
Ruth’s Chris Steakhouse
315 Chestnut Street, St. Louis, MO
[Register]

Chicago – Hands on Workshop
Saturday, November 16, 2013 @ 9:30am-3:00pm
Hyatt Regency Woodfield – Schaumburg
1800 East Golf Road, Schaumburg, IL
[Register]

  • Wed, 20-Nov Vancouver, BC 12:00pm 2:00pm PST [Register]
  • Thu, 21-Nov Calgary, AB 12:00pm 2:00pm MST [Register]
  • Tue, 3-Dec Bellevue, WA 12:00pm 2:00pm PST [Register]
  • Tue, 3-Dec Bellevue (User Group), WA 6:00pm 8:00pm PST
  • Wed, 4-Dec Portland, OR 12:00pm 2:00pm PST [Register]
  • Wed, 4-Dec Portland, OR (User Group) 6:30pm 8:30pm PST
  • Thu, 5-Dec Boise, ID (User Group) 7:00pm to 9:00pm MST [Register]

I’m planning to bring my Google Glass and show off Delphi XE5 running on Google Glass too.

Categories
Conferences

Things I Learned from Delphi CodeRage 8

Mostly from CodeRage 8, but some is from my time working for Embarcadero. I believe I’ve presented at every CodeRage, but this is my first time on the other side. It is also the biggest CodeRage by a significant margin. I’m sure the two events are unrelated, but it is still exciting.

  • Delphi can do functional programming, and it is really cool.
  • Cary Jensen is really excited about FireDAC – and so is everyone else, because FireDAC is really cool. He’s so excited he might cut his hair off . . .
  • There are a lot of really smart and very nice people working for Embarcadero.
  • No matter how easy you find it to understand someone, there is somebody else who has a hard time with their accent, speed, or terminology.
  • There is still more that I don’t know about Delphi then I do. And I think that is a good thing.
  • You really shouldn’t use “with” in your code, especially during a presentation that occurred after Alister Christie‘s session on “anti-patterns.”
  • The Tag property is useful, but no one wants to admit it.
  • Delphi makes it easy to make nice UI and ugly UI. I like that it is flexible.
  • If you use something wrong it will be slow. If you test you can probably find a faster way.
  • Two people can present on the same thing and have different sessions while two other people can present on two different things and have surprising overlaps.
  • REST and JSON are great, but XML and SOAP are still around and in use.
  • If you want to scroll it, use a TListView. Otherwise use a TListBox.
  • When it comes to making custom controls, in any framework, Ray is still the guy.
  • It is a lot more work than I expected to run CodeRage, but also a lot more fun.
  • If you know what you are doing, it is pretty easy to access any iOS or Android API from Delphi.
  • You can use FireMonkey to make a pretty good mobile game, but it still isn’t recommended.
  • Encrypt your customer’s data, or you can get a huge fine.
  • Everyone always likes a good benchmark or comparison, but they don’t really tell you anything.
  • David I. really is as great of a guy as everyone says he is, but even 3 days of CodeRage will wear him out.
  • The Android Emulator is really slow and unresponsive, and no one seems to know why.
  • There usually is more than one way to do something. And just when I think I realized a smart way to do something, someone else will point out an easier way.
  • Replay videos are never online fast enough.
  • Making a good video to explain a technical topic is way more work than anyone realizes, even people who have done it a hundred times. And when you are done you are rarely satisfied with it.
  • GoToWebinar is a pain, but so far it seems to be the best option.
  • Even in a pre-recorded video, people will still help you find the typos in your code.
  • Questions can take longer than the session the questions are about.
  • Delphi developers really are amazing!

And some answers to frequently asked questions:

  • The code will usually be on the presenters blog.
  • Replays will be a couple weeks.
  • Turn on “Use Host GPU” in your Android emulator and don’t run your VM in an Emulator. Better yet, buy an Android device. The emulator is slow for everyone, which is why most Android developers don’t use it.

I learned a lot more, but those were the memorable bits that came to mind.

What did you learn?

Categories
Android Conferences iOS Mobile

Sending a URL to Another App on Android and iOS with Delphi XE5

Here is the source code for my Open and View URL library from my CodeRage 8 session “Beyond the App”. Here is a download of the example app. I’ll see about posting it to a SVN repository too so it can grow and evolve. Thanks to Al Mannarino for his code that started this!

Note the code is using TidURL.URLEncode on all URLs. I found it is only required on the maps for iOS (iOS doesn’t like spaces) but may be causing trouble with the geo:// on Android.

Some example protocols

  • http, tel, sms, fb, mailto, twitter, geo, etc.

Example URLs

  • – Common to both iOS & Android –
  • http://www.embarcadero.com/
  • tel://(415)834-3131
  • sms://1234
  • http://twitter.com/coderage (This opens with the Twitter client on Android)
  • mailto://jim.mckeeth@embarcadero.com
  • twitter://user?screen_name=coderage
  • fb://profile/34960937498 (get the UID from http://graph.facebook.com/embarcaderotech or for whatever page you are looking for)
  • – iOS Specific –
  • http://maps.apple.com?q=5617 Scotts Valley Drive, Scotts Valley, CA 95066 (this needs the URL encode – Apple has some additional APIs that are recommended.)
  • – Android Only –
  • content://contacts/people/
  • content://contacts/people/1
  • geo://0,0?q=5617 Scotts Valley Drive, Scotts Valley, CA 95066
  • geo://46.191200, -122.194400 (I think this one doesn’t like the URLEncode)
unit OpenViewUrl;

interface

// URLEncode is performed on the URL
// so you need to format it   protocol://path
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;

implementation

uses
  IdURI, SysUtils, Classes, FMX.Dialogs,
{$IFDEF ANDROID}
  Androidapi.Helpers,
  FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net, Androidapi.JNI.JavaTypes;
{$ELSE}
{$IFDEF IOS}
  Macapi.Helpers, iOSapi.Foundation, FMX.Helpers.iOS;
{$ENDIF IOS}
{$ENDIF ANDROID}

function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
{$IFDEF ANDROID}
var
  Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
    TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL))));
  try
    SharedActivity.startActivity(Intent);
    exit(true);
  except
    on e: Exception do
    begin
      if DisplayError then ShowMessage('Error: ' + e.Message);
      exit(false);
    end;
  end;
end;
{$ELSE}
{$IFDEF IOS}
var
  NSU: NSUrl;
begin
  // iOS doesn't like spaces, so URL encode is important.
  NSU := StrToNSUrl(TIdURI.URLEncode(URL));
  if SharedApplication.canOpenURL(NSU) then
    exit(SharedApplication.openUrl(NSU))
  else
  begin
    if DisplayError then
      ShowMessage('Error: Opening "' + URL + '" not supported.');
    exit(false);
  end;
end;
{$ELSE}
begin
  raise Exception.Create('Not supported!');
end;
{$ENDIF IOS}
{$ENDIF ANDROID}

end.