slideout menu


Julian's photo Hi there! I'm Julian M Bucknall, a programmer by trade, an actor by ambition, and an algorithms guy by osmosis. I chat here about pretty much everything but those occupations. Unless you're really lucky...

Most recently this is what I've come up with:

Open sourcing EZDSL on GitHub

Finally, and I mean FINALLY, I’ve uploaded my old Data Structures Library for Delphi (EZDSL) to GitHub. I’ve been meaning to do it for a while, and now it’s there and you can download it, issue pull requests, the whole nine yards. I also updated it for the Delphi XE series (the last time I ‘officially’ updated it was for Delphi 2009). It includes linked lists (single and double), queues, deques, priority queues, binary trees, binary sort trees, a mildly-broken red-black tree, hash tables, skip lists, and a binary array. The type of data objects you can store are limited only by your imagination, but be warned, they’re just pointers in the interface and you’ll have to be adept at casting back and forth.

Rusty padlock

The padlock to EZDSL

Having said that, I’m warning you that it is way old. Most of the original code is 22 years old, and the class wrappers are 20 years old or so. If you’ve used it in the past, more power to you, have at it. If you haven’t and are looking to use it in, say Delphi XE8, well, my advice is don’t. For a start, there’s no generics, not that they couldn’t be added to wrap the container classes that are there. No 64-bit – there’s a lot of assembly code in there too (these days I just shake my head at my propensity to do that in the past). No interfaces. What you have to go through to use long or Unicode strings would make anyone blanch. And all that 8.3 file naming is so passé.

But, hey, I’ve made a first pass at converting the documentation to Markdown!

Nevertheless, despite all those negatives, it’s now on GitHub in my repository at jmBucknall/EZDSL.

Album cover for ElectrifiedNow playing:
Boris Blank - Future Past
(from Electrified)

CST-01: the world’s thinnest watch

OK, this is a weird one. Well over two years ago now, there was a Kickstarter for a watch. Not just any old watch, or even a smart watch, just the thinnest one in the world. It’s 0.8mm thin, or, for you non-metric types, 0.00315 inches. All it does is tell the time. So, I plonked down my $99 as one of the original backers and pretty much forgot about it, as I do with anything I back on Kickstarter.

For those not in the know, Kickstarter is a site that helps people gather money (that is, backers) and kickstart some project they want to do. Now obviously for them to get backers, the people devising the project have to work out how much they want, record a video to entice others to back them, and hope that over the course of a month, they get enough backers to reach their goal. Kickstarter do all the logistics of registering backers and collecting the money they want to invest. If the project reaches its goal, Kickstarter take their cut, and the rest of the money goes to the project owners. At that point they go ahead and complete the project and hand over to the backers whatever rewards they’d promised as part of the investment. Of course, if the monetary goal is not met, no one gets anything and the backers don’t pay out.

The big thing to understand is that Kickstarter is not an online store: you aren’t buying the product. You are backing the project to make the product, and, as a reward, if it succeeds, you get a copy of the product. If it fails then tough. You curse perhaps, and move on.

CST-01 watch

The CST-01 watch

Over the years, more so in the past than these days, I’ve backed a few technology projects, things like Snappgrip, Brydge, and so on, at the level where I’d receive one of the items as my “reward”. I’ve even backed books and the like. In my opinion, most of the technology items turned out to be meh, to be honest. As an example, Snappgrip (a snap-on camera controller for iPhones) turned out to be too cumbersome and flaky: it was easier to just use the iPhone camera as normal. But the CST-01, the thin watch, seemed to be better than those and usable to boot, so I backed it. In fact, it was so popular there were 7,658 backers pledging $1,026,292 (the original goal being $200K).

One of the things I learned about the technology kickstarters is that producing the final object, whatever it may be, takes way longer than the project owners originally thought. So, as I said, I forgot about it after backing it. In the early days of the project, we backers would get fairly regular project updates by email and published on the Kickstarter site, and I’d peruse them and move on.

Until the updates dried up. We heard nothing more.

Finally, two years after backing it, I got a box in the mail in February, this year. Inside was my CST-01 watch. Nice! They’d pulled though. I plugged it into the charger for a few hours, and then put it on. It’s a bit weird at first since it’s essentially a wide bracelet, but after a while you forget it’s on. There’s enough flex in the materials so slip it on and take it off, and it gently grips your wrist. The time display is an e-ink display, like on Kindle e-readers, with a special designed-for-the-watch numeric font.

Unfortunately, after just over an hour, the watch stopped. I recharged it again, thinking I hadn’t given it enough time. Again, after an hour unplugged from the charger, the watch stopped. Perfect time plugged in, worked for an hour unplugged.

I politely emailed the project owners stating that I had a defective copy, that perhaps the battery inside (and think about how thin that battery has to be) was faulty. They asked me to send it back and they’d replace it.

Except that was when the whole project seemed to fall apart. They’d only managed to build a couple of hundred copies of the watch and, essentially, had run out of cash. The manufacturing quality was such that around one out of every two watches was coming out faulty. In essence, rather than costing roughly $100 per watch, it was nearer $300. The project folded. The Kickstarter comment thread for the watch then exploded. Personally, I just wrote it off; after all it was now over two years ago that I’d paid out $99 and it wasn’t like I needed it back. Shrug, oh well.

The Consumerist published an article on the whole kerfuffle (Watch Company Collects $1 Million On Kickstarter, Spends It All, Then Hides), as did the New York Observer (Did the Creators of a $1M Kickstarter Botch Production or Blow the Cash on Mojitos?).

Then last week, while I was away in The Hague in the Netherlands, a box arrived at home. I unpacked it on Sunday when I got back and it was a replacement CST-01. The one in the photo. I put it on to charge overnight and it has been keeping perfect time ever since. I even noticed that it flashes when it’s the top of the hour. It fits nicely, although it feels a little too tight now – maybe I put on weight since I first measured my wrist to decide which size to order as a reward.

I don’t know why I got one (well, OK, two) when so many have not. I’m nonplussed at it all, but I’m guessing that I now have an extremely rare timepiece, one of just a couple of hundred.

Album cover for Aladdin SaneNow playing:
Bowie, David - Time
(from Aladdin Sane)

How to search a web page in Safari with iPhone/iPad (iOS7+)

OK: here’s the scenario. You’ve just loaded a long  text-heavy web page on your iPhone or iPad and want to search through it for a particular word or phrase. How do you do it?

The problem is that the user interface no longer has a Search box on the screen in iOS7, unlike earlier versions of Safari. Similarly, there’s nothing in the browser’s underlying menu or options.

How to search web page?

How can I search
this text?

The solution, believe it or not, is to use the address box. No, really, bear with me. If you type in the word you are searching for in the page, Safari will first display some hits for the word on the web (perhaps including, as here, a suggested website), plus perhaps some items from your surfing history or in your bookmarks.

The keyboard blocks the results

Nice list, but the
keyboard blocks it

With the keyboard visible, it’s hard to see that the list is longer and might show more items that are hidden from view:

Here's the actual full list

The full list

Scroll the list up, the keyboard goes away, and there it is: a subheading of “On This Page” and an item that allows you to locate the matches on the web page you have loaded. Touch that and the page is shown in a way that the text matches are highlighted and you have arrows to touch that’ll skip through the results back and forth.

Yep, a quick post, but it came up yesterday and it took a bit of sleuthing to find the answer (a lot of results are for versions earlier than iOS7, which did have a Search box in Safari).

Album cover for I Don't Know What You Want But I Can't Give It Any MoreNow playing:
Pet Shop Boys - I Don't Know What You Want But I Can't Give It Any More [the Morales Remix]
(from I Don't Know What You Want But I Can't Give It Any More)

Hello Dell XPS 13

Once I’d resolved the Surface Pro 3 had to go, I had to decide what to replace it with. I’ve had a Dell XPS 12 for two years now and love it, apart from one drawback. It’s heavier than a “normal” touch ultrabook because of the swivel screen (it needs a sturdy frame). My wife has been using one of the original XPS 13s for three years and it’s wonderfully light, and I bought her one of the new ones with the “Infinity display” earlier this year to replace it. I’d have to say it’s a beautiful machine: the display is crisp and clear and extends to the edge of the screen. Bloody marvelous.

So – my reasoning went – if she can have one, why not me?

Dell XPS 13 (2015)

Dell XPS 13 (2015 edition)

Hence the proceeds from the sale of the Surface were ploughed right back into a Dell XPS 13. Infinity display at 3200×1800 with touch, 8GB RAM, 512GB SSD. I went for a refurbished one rather than a new one and saved nearly $600 on the deal so I’m well pleased. (In the interests of full disclosure, there’s a half-inch scratch on the lid, but other than that it’s as new. I might cover the scratch with a DevExpress laptop sticker.)

And how is it? To quote myself, bloody marvelous.


1. It’s light and thin.

2. It’s fast – an i7-5500U powers it.

3. The screen is gorgeous and crisp. Color rendition was excellent as far as I could tell with these ancient eyes. I’ll probably calibrate it when I’ve finished with my travels to Build, etc – I have a Datacolor Spyder Pro for exactly that.

4. Excellent battery life. I was finishing off the installs and updates (you can’t imagine how many updates Office 365 Home needs) today, and I did it all on battery power. No issue. After some four hours of this, there was still 20% battery left.

5. No driver issues – I was using a USB Ethernet connection via a USB 3.0 hub with no issues. Even connected an external DVD drive.

6. The trackpad is very responsive, however I still use an external Arc mouse.


1. Because of the resolution of the screen, I’m running it at a larger text size than standard. Windows 8.1 doesn’t actually tell you what it is, but I’m guessing 150% (In fact I can’t read it at 100%.) Bloody hell but we developers have to get it together with non-traditional DPIs. It makes a strong case for browsers and web apps, that’s what it does.

2. There’s no pen digitizer, hence no pen. Can’t say, I miss that from the Surface, but then again, I’m no artist.

All in all, then, a much better machine for my peculiarities and travels. I’ve got it in an Acme Made Macbook Air 13 sleeve to protect it from any further scratches…

Album cover for Radio RetaliationNow playing:
Thievery Corporation - The Numbers Game
(from Radio Retaliation)

Bye-bye Surface Pro 3

In February, I decided to buy and try out a Surface Pro 3. I’d read reviews such as Hanselman’s where he recounted using one for a couple of months and liking it, and it seemed to me that it was possibly a good replacement to my nearly two-year-old Dell XPS 12 . The one primary reason for upgrading was DevExpress’ release of their grid for Xamarin.Forms : I’d bought a MacBook Air 11 for demoing that on travels, and I needed a lighter ultrabook to demo everything else we do. (And before someone pipes...

Read more »

Now we are nine

Yesterday was an anniversary in the Bucknall household. It marked nine years since I joined DevExpress as their CTO. It was on the Ides of March, 2006 that I started this life of a remote employee – I live in Colorado, DevExpress was in Vegas and is now in Glendale, CA – and I must admit it’s been fairly successful, at least on my side. What can I say about the last nine years from that personal viewpoint? Working at home Yeah, brilliant. Well, sometimes. Close, but no cigar For the first 8 years...

Read more »

Generating permutations with Heap’s algorithm

This evening I wanted to solve a particular problem, and it required me – or so I thought – to permute an array of items. Back in the day I wrote an article for PCPlus on the subject and mentioned in there Heap’s algorithm . I hasten to add here that “Heap” here is not the traditional computer science heap, or even the application memory heap, but B.R. Heap, who first formulated and published this algorithm in 1963 (pdf). Permutation 1: we're out Wikipedia has a...

Read more »

Issues using MathJax 2.5 with Chrome

So yesterday I wrote an article about the conditional support of MathJax in my posts here on the blog. The post required MathJax since I deliberately put an equation in it. Today I noticed that viewing that post in Chrome led to the equation being rendered three times across the page: Chrome displays three equations. Whut? Even refreshing the page didn’t solve the issue. A mild bit of panic later – Does it work in FireFox? Yes. In Internet Explorer? Yes. In Safari on the Mac? Yes. On an iPad? Yes...

Read more »

Conditionally loading MathJax with GraffitiCMS

A couple of years ago I did a series of posts about TVM, the Time Value of Money ( 1 , 2 , 3 ). Because they were mathematical in nature, I had to write a few math expressions and equations. Way back when I’d have written them out in the Equation Editor in Word, and taken screenshots, but this time I decided to go for a browser-based solution: MathJax . In essence, I’d write the expressions in LaTeX format, such as x = \frac {-b \pm \sqrt{b^2 - 4ac}} {2a} , and have it rendered as: \[ x = \frac ...

Read more »

Slide menu

You may have noticed. Or quite possibly, not. I won’t hold it against you; it is a bit nerdy. The thing is, I’ve revamped my blog so that the “ancillary” stuff is now hidden behind a “hamburger menu” over there on the left. Click the icon (it’s known in the trade as a “hamburger”) – or, if you are on a tablet or phone, touch it – and the extra stuff about me, the site, and other information slides in, pushing the normal blog content over to the right. This is my first tentative step to being “ responsive...

Read more »



About Me

I'm Julian M Bucknall, an ex-pat Brit living in Colorado, an atheist, a microbrew enthusiast, a Volvo 1800S owner, a Pet Shop Boys fanboy, a slide rule and HP calculator collector, an amateur photographer, a Altoids muncher.


I'm Chief Technology Officer at Developer Express, a software company that writes some great controls and tools for .NET and Delphi. I'm responsible for the technology oversight and vision of the company.


Validate markup as HTML5 (beta)     Validate CSS

Bottom swirl