Two of my favourite authors, Uncle Bob Martin and Steve McConnell, at CodeRage

November 3rd, 2017 Posted by Embarcadero No Comment yet

I’ve read lots of technical books over the years. Often I read them to get the immediate information I need then eventually get rid of them, as many technical books don’t age gracefully.

However, over the decades a few books have earned a permanent spot on my bookshelf. Books like Analysis Patterns by Martin Fowler, Domain Driven Design by Eric Evans and a few dozen others are the kind of books that keep teaching me things every time I re-read them. It’s as if each time I pick them up I’ve learned a little more since last time, and so I’m ready to understand more of the wisdom they contain.

I had a look through my shelf this morning and only two authors appear more than once: the aforementioned Martin Fowler and also Steve McConnell. McConnell’s books Rapid Development, Software Estimation and Code Complete are full of pragmatic, immediately useful information that is as relevant today as much as it was when it was published. His Software Estimation book especially is an absolute cracker, taking an important but potentially mind-bogglingly dull topic and writing a book that I think I’ve read at least 3 or 4 times.

Uncle Bob Martin might only appear on my shelf once, but he makes up for it by the value I’ve taken from that one book. When I first read Clean Code, I thought half of it was good and the other half was completely and utterly wrong. That was fine though, the good half was staggeringly good, so I could forgive him the rest. Interestingly, over the years I find myself gradually coming around to agree with more of the “completely wrong” part, to the point now where it’s probably only 10% that I think is wrong (and I suspect that give me another year or two and that’ll be approaching zero).

What does all this have to do with CodeRage next week? Well, both Steve McConnell and Uncle Bob are presenting. Steve on Managing Technical Debt and Uncle Bob in a session called The Clean Coder. I’ve never seen Steve present, but I was fortunate to see Uncle Bob at the Yow Conference last year and he didn’t disappoint.

Neither of these sessions will be in the CodeRage replays, so you’ll need to watch them live to see them at all. Brew the coffee and/or set your alarm, but don’t miss them.

More details and registration available here.

Jenkins World 2017 – Day 2

September 1st, 2017 Posted by Cloudbees No Comment yet

Tim, Graham and I are back with our wrap up of Day 2 of Jenkins World 2017. We’ve all had a lot more sleep than yesterday’s so hopefully it’s not as rambling…although Graham does have a moment in there ūüėČ

This was the final day of Jenkins World and at the closing keynote they confirmed that the recordings of all the sessions will be available soon. We’ll post a link as soon as they go up.

Oh, and I totally forgot to mention the awesome session on DevOptics Deliver that Karan Malhi, the DevOptics Deliver PM gave. Definitely worth watching on the replays, as he goes deeper into what problems they are trying to solve, gives a longer demo and also gives some insight into how it is implemented.

Jenkins World 2017 – Day 1 Wrap-up

August 31st, 2017 Posted by Cloudbees No Comment yet

A few of the team and I have travelled to the San Francisco for Jenkins World and after a long day 1 of the conference, we recorded a quick wrap-up of some of our highlights.

We’re seriously suffering from jetlag and too much coffee, but if you weren’t able to make it to Jenkins World this year, hopefully this will give you a taste of some of the announcements and sessions.

I believe the sessions are being recorded, so at some stage they should come online.

Check back tomorrow for a Day 2 Wrap-up.

TNotifyEvent debouncing in Delphi

August 24th, 2017 Posted by Embarcadero No Comment yet

Every developer who works with UI handles a lot of user input. And it’s not a rare situation that we don’t need to handle every incoming event because there might be just too many of them.

Consider this example, a user fills an email field on “Sign up” form in some application which works with a REST API. We want to validate entered email before a user actually will click “Submit” button. To do it, we make a call to hypothetical “/email/validate” REST endpoint and display validation status on the UI, which enables a user to adjust his input until he finishes working with the form.

Some people type really fast, so we don’t want to make a REST call for every entered character. Lots of APIs have request limits and in order not to exceed them it’s necessary to “throttle” events emitted by fast user typing.

(more…)

Parallel (mis)Adventures

August 18th, 2017 Posted by Embarcadero 4 comments

In one of our customer projects, we had an Android app that was receiving broadcasts on a background thread (I’ll call this the Receiver thread). On receipt of a message, the Receiver thread¬†needed to do some processing on that message and then update the main thread (the UI thread).

The initial solution to this was pretty simple, call TThread.Synchronize from the Receiver thread, passing in an anonymous method that updates the UI Thread.

Testing this on Windows worked fine, however running it on Android revealed a problem. (more…)

Changing your RAD Studio Serial without Reinstalling

August 11th, 2017 Posted by Embarcadero No Comment yet

It was only today that I got around to updating the VM I use for demos to RAD Studio 10.2.1. Unlike the VM’s I use for customer projects, this one¬†is using my MVP License. I installed 10.2.1 no problems, but upon running I got the following error message:

An Update Subscription for Embarcadero Delphi 10.2 is required which has expired prior to this release

 

After a moment of confusion, I realised I might have used my old Berlin MVP license during the install, so the error message is probably correct.

This is easy enough to fix, but I’ve had a few customers ask me about this so I thought I’d grab some screenshots and write up how to replace serials in a RAD Studio install.

(more…)

RAD Studio 10.2.1 Released

August 9th, 2017 Posted by Embarcadero, News No Comment yet

Embarcadero have released an update to 10.2 Tokyo today. The official details are here, but it includes:

  • Linux performance improvements
  • Windows 10 Creator support in both Delphi and C++Builder
  • Support for the latest iOS and XCode
  • FireDAC Driver database support updates for MS SQL, Interbase and others
  • Further Android architectural improvements
  • Plus more than 140 customer-reported bug fixes.

There is a full list of new features and fixes here.

Links for the ISO download are here, and the Web Installer is here. Note that with the recent changes to how the Web Installer works, I actually find it a faster total install. Remember to retain your component settings when uninstalling 10.2, or use the Settings Migration Tool to export them and import them into 10.2.1

Personally,¬†I’ve been using 10.2.1 for the Android changes over the last few days and I can tell you the experience is much improved, both for Android and in general. Definitely worth the install.

Embarcadero Enterprise Connector for Salesforce : First Impressions

August 1st, 2017 Posted by Embarcadero 1 comment

You might have seen the recent Beta announcement from Embarcadero for the Enterprise Connectors. I’ve been doing some work with a few of them lately, so wanted to give you an overview of my experiences, starting with the Salesforce driver.

If you’re not aware, the Enterprise Conenctors are a whole bunch of FireDAC drivers that allow you to interact with a wide range of backend systems as if they were relational databases. There are more than 80 systems supported, including Salesforce, Xero, QuickBooks, Magento, ServiceNow amongst others. The theory is¬†that given most RAD Studio developers are very comfortable interacting with a database, ¬†if you can make something look like a database, it should be easier to use.

Nice theory, but I was keen to see how well it worked. I’ve done a fair bit of development¬†with Salesforce, including using the API, so I figured I’d try that driver out first.

A few things to note:

  • The Enterprise Connectors work with 10.2 Tokyo.
  • The beta versions of all the drivers are available in GetIt, so you can try them out really easily.
  • They are FireDAC drivers, but they work happily with FireDAC in Professional (despite the Enterprise Connectors name)

First up, connecting to salesforce is very easy. You have a bunch of options for how you connect (see the documentation here) but I went with the simple username, password and Security Token option. These are all available as parameters in the FireDAC Connection wizard, as well as properties in the component. (more…)

System diagram

Enterprise Jenkins on Azure, Part 2

July 20th, 2017 Posted by Cloudbees, DevOps No Comment yet

In this post¬†I deploy¬†the Jenkins distributed builds model: a Jenkins client master will delegate build jobs to one or more Jenkins agents. ¬†In addition, I deploy a Jenkins Operations Center to manage all client¬†masters in one place. (more…)

Enterprise Jenkins on Azure, Part 1

July 14th, 2017 Posted by Cloudbees, DevOps No Comment yet

I’ve been trying out Enterprise Jenkins on Azure. The inspiration was a¬†webinar,¬†Achieving Continuous Delivery on Microsoft Azure,¬†about the¬†‚Äúfour quadrants of DevOps maturity‚ÄĚ, and how¬†to address the needs of different teams in the delivery pipeline using¬†tools from Azure and Enterprise Jenkins. The¬†webinar includes a demo of a cloud-based Jenkins Pipeline job, and the¬†source code is freely available.

I tried out the demo and got it working with minor changes and a few workarounds. This post is part 1 of a series.

(more…)