slideout menu

Welcome!

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:

Putting on the Blue Apron

In our house, we’ve divided up what might be called the food duties. I’m the savory cook and Donna the pastry chef. It’s not like we sat down early on in our relationship and threw the dice, I’m just not interested baking cakes, making cookies, rolling out pastry for a fruit pie, whereas Donna is. She on the other hand would way prefer someone else do the meats, the veg, the salads.

This week's recipes

This week's recipes

Of course, over the months and years, I’ve got into a rut. Every now and then, I’ll read up on a recipe or see something in a cookery show and ring the changes as it were, but usually I select from a rotation of “recipes” (and I use the word loosely) to cook for our evening meal.

A few months back one of Donna’s friends was talking about a new service she and her her husband were trying out: Blue Apron. This is a home cooking service: they design the recipes with some interesting (and perhaps unknown) ingredients that take about 30-40 minutes to prepare and cook, provide you with the ingredients, pre-measured and counted, and deliver them in a big old box once a week. For a couple like us, it costs $60 a week for three meals, so about $20 a meal, which is roughly what I would spend anyway for us both.

We thought about it, and then after a week of particularly unimaginative meals, I pulled the trigger and ordered it.

The next Friday, the box arrived. Oh man, what a treasure trove! When they say they provide all the ingredients, pre-measured, they really mean it. There were little bags with just the right amount of grated Parmesan cheese, little tubs with (4 tablespoons of) butter and (2 tablespoons of) tomato paste, cute little plastic bottles of red wine vinegar. The meat and the fish were in vacuum packed bags, the vegetables and salads loose in the box. And there at the bottom of the box these two big ice packs (between which the meat and fish were sandwiched). The whole lot was in this silvery, bubble-pack bag, which was itself in the box. Considering this had been travelling two days (they use 2-day delivery from California), the ice packs were still rock solid and the whole box ice cold inside. The only things they expect you to do is provide is salt and pepper and olive oil, and of course put everything in the fridge as soon as possible.

The recipes are printed in full color on card stock (and by being so, basically encouraging you to file them ready for the next time you want to revisit a particular meal). On the first side is a picture of the final dish with a bit of blurb (“[the steaks] pair effortlessly with beautiful purple potatoes and piquant scallions” goes one description), together with a list of the ingredients. On the other side is a six-panel description of the recipe and how to make the dish.

The first step in each recipe is basically the same instruction: prepare the ingredients. Me? Prepare the ingredients before starting to cook? What? I’m a toss it in the pan kind of cook and if I need something I prepare it then and there just before adding it to the pan. Nope, time to grow up and have everything ready in advance in little dishes. (And, yes, after a month of these recipes, I’ve started to do this on those evenings I don’t have a Blue Apron dish to cook.) Similarly, the last panel is all about how to Finish and plate your dish. “Plate” as a verb? OK, I’ll roll with it.

We’re now on our fifth box, so it’s time to ask, was it (is it?) worth it? Overall, I’d have to say, yes. We’ve had some enjoyable tasty meals from Blue Apron, meals that we’d have again (and that I’d be willing to buy the ingredients for and prepare from scratch). There have been a few chef-induced disasters along the way – thankfully not many – of which my Chicken Milanese will go down as the ultimate WTF. (It’s breaded chicken breasts, but after the required cooking time, it was overdone on the outside and still pink in the middle. So I sliced them in two horizontally to cook them some more but the breading went soggy and Donna was very sympathetic when I sobbed during the plating of the resulting gooey mess.) There have been a couple of recipes admittedly that we just didn’t like particularly, but that’s fine too: at least we’re trying new things. The afore-mentioned purple potatoes? Lovely. My rice/beef stuffed poblano peppers? To die for. The squid-ink linguine was tasty, but I felt there was too much of it. And so on.

So, if you’re thinking about trying it, go for it. You can cancel at any time with a week’s notice (ditto, if you’re going away on vacation just let them know a week in advance to skip the delivery while you’re away). I think it’s well worth it for a couple: it gets you to cook and try something different and sometimes that’s all the encouragement you need.

This week's Blue Apron recipes

Album cover for EuropaNow playing:
Johnson, Holly - Dancing With No Fear
(from Europa)


The Auto Warranty sleaze

A month ago, we purchased my wife’s Acura off the lease. She’d done less than 30,000 miles in the three years she’d had it, there was nothing wrong with it, and there wasn’t anything available for the models she liked, in the colors and with the luxury level she was keen on. So rather than worry too much about that elusive new car, we just bought the current one off the lease. Maybe in a couple of years there’ll be something she likes and we’ll consider what to do then.

Anyway, this is not about that. This is about what happens next. Not sure how they find out, but the sleazy third-party auto warranty companies start mailing me.

SleazeWarranty1

Bucknall Mark?

In fact, a couple of days ago, I had five of these in my mail. Today’s letter prompted me to scan them and write this post.

SleazeWarranty2

Acura. Or maybe Audi?
BMW? One of those,
for sure.

As you read through them, you start to appreciate the utter garbage data they make up to put on paper. Some programmer somewhere wrote this really nifty random “Customer ID” generator using, like, numbers and letters in different combinations, and they’ve been using it ever since.

SleazeWarranty3

Why the quotes around the
additional features?

But they all have that wonderful typographical bold FINAL NOTICE, and the sheer urgency with which they entreat you to call their number, and yet they just don’t have the imagination to veer too far from the “industry standard” bogus text and tables.

SleazeWarranty4

This covers my platinum and powertrain

Postcards as well, of course. Goes without saying. None of them have any recognizable company name. In fact, you have to search the fine print to find any; the same fine print that sometimes states “not affiliated with any manufacturer or dealer”. But only sometimes: c'mon don’t judge, but it’s really hard to fit it all on the paper when you have tables and highlighting and words in all-caps and stuff.

SleazeWarranty5

Neither of these had a
company name

But that last scan takes the biscuit: two postcards in the same red, with the same exhortation to **Please Respond Within 5 Business Days**, with the same bogus information more or less. Different phone numbers on the back though. I do appreciate the attention to detail in printing a picture of an Acura with the first though, it almost swayed me. NOT.

Talking of phone numbers, do not under any circumstances call these phone numbers: 1-888-395-8636, 1-888-242-1777, 1-800-267-9566, 1-877-223-5210, 1-877-308-5832, or 1-800-293-5048. Well, unless you want to set up some extremely sketchy auto warranties with companies you’ve never heard of, that regularly get F from the BBB, that may or may not pay up if you have something to repair that should be covered by said warranty. I’ve helped you make the decision to not phone these numbers by linking each to the their Google results. The first link on each set of results is usually enough to persuade you to leave well alone.

Sleazy warranty offer

 

Album cover for FormatNow playing:
Pet Shop Boys - We're All Criminals Now
(from Format)

Windows 10 upgrade: the Microsoft Money mess

OK, I get it: I’m behind the times. I still use Microsoft Money, the “sunset” edition. Yes, it’s been six years since it was retired, but I prefer it way, WAY more than Quicken. And, to be honest, thus far – I’ve now been using it for 20 years, believe it or not (first entry: July 3, 1995) – it’s been just fine. However, yesterday, I was suddenly brought up short with a jolt, or to be more accurate with an error message about Internet Explorer 6.

Statue Expressing Horror

It wants IE6???

So what was special about yesterday? Well, it was the day I upgraded my main laptop – the one that has so many peripherals plugged into it that I don’t use it as a laptop anymore – from Windows 7 to Windows 10. Generally the upgrade went well. No real issues, until I ran Microsoft Money.

You can imagine the horror when I saw this:

Money needs IE6 on Windows 10

Money needs IE6 to work

“Internet Explorer 6”? I haven’t run that in years, so why should it be required now?

Well, it turns out that the error dialog lies. What happened is that there’s some verification code in Microsoft Money that expects/assumes the version number of Internet Explorer on the machine to be fifteen characters or less. (The app uses IE internally to show web pages, not that I use that part of the app at all, but anyway.) The current version of IE on Windows 10? 11.0.10240.16384. Sixteen characters. Boom!

It turns out that the fix, or maybe I should call it hack, is to alter the value in the registry it’s checking. For completeness, on a 64-bit machine (which mine is) it’s the Version registry value in the HKEY_LOCAL_MACHINE\​SOFTWARE\​Wow6432Node\​Microsoft\​Internet Explorer key. Alter the value by deleting a character off the end (the final “4”) to make it 15 characters. After that, Microsoft Money will start up and run just fine.

…Until you download your first or second set of transactions from your bank and import it into Money. Money will just crash. Worse, it’ll just crash every time you restart it. This was getting scary.

It turns out that this particular bug manifested itself first on Windows 8. Since I never ran Money on Windows 8, I was never bitten by it, but there is a “well-known” hack to solve it. The hack requires you to hex-edit one of the Money DLLs (altering just four bytes) and the hack was devised and published by Raymond Chen, a notable, at least in Windows development circles, developer on the Microsoft Windows team. I made a copy of my original mnyob99.dll file (risk-averse, moi?), made the changes, and hey presto, Money ran again and has kept on running.

I’d have to say that this particular app was the first really horrible experience I’ve had with Windows 10. Normally, a Windows app is a Windows app and it’ll just run on the new OS. Frankly that has been the case so far with all the various apps I use on a daily basis, so it was somewhat terrifying when the one app I really rely on for personal finances crashed, not once, but for two different reasons.

What of the future? Well, that’s the big question. Thinking of Windows 10 especially, how soon will it be before Microsoft remove IE from the OS completely in favor of Microsoft Edge, the new browser? I don’t know, but you can easily make the case that, in say a couple of years, Edge will have been polished enough that IE can just be taken out into the alley and dumped. No IE, no Money: that’s point 1. Another angle is would Microsoft open source Money at any stage? After all, they’re open sourcing a whole bunch of things right, left and center. That’s possibly a more difficult question to answer: I have no idea what proprietary code is inside Money (the whole file handling/encrypting stuff might be an issue for a start) or even how such a decision would impact their relationship with Intuit. Point 2 then is low probability, at least from where I’m sitting. Another possibility is that Microsoft release an export facility that exports the data you have in Money (and I have 20 years’ worth as I said) into, say, Excel. This third point, I’d have to say, will be very unlikely – the obvious riposte is, if this were possible they’d have done something like it ages ago. Ditto fixing Money to not require IE any more: seems like something they could have done a while ago.

No, I’m afraid the answer for me is going to be a VM. Create a VM with a basic Windows 7 install, put on Microsoft Money Sunset, and use that until something better comes along. A side-benefit would be it’ll be a little more secure; but the big disadvantage is having to boot the VM every time you want to check your accounts and finances (and in these days of a new hack of some retailer’s system every week, I do that every couple of days anyway).

Or, horror, check out Quicken again…

StatueExpressingHorror

Album cover for Brothers in ArmsNow playing:
Dire Straits - Money for Nothing
(from Brothers in Arms)


WOFF files and Azure: the 404 conundrum

More than anything, this is going to be a discussion about testing, but the headline is all. 

LazyFinial

Lazy tester

This afternoon, in trying to keep cool inside on this hot day, I thought I’d remove the Google Ads on this site. Frankly they were a pain in the neck to design for: they used to be a sidepanel on the right and trying to get the code to make them disappear when the browser window was too small width-wise was just annoying. Plus the ads were being loaded anyway even if they weren’t being displayed, meaning more code would have to be written to deal with that scenario, etc, etc. Since one of the better presentations I’ve given in the past was all about making your website or application faster to load, it behooved me to chuck ’em. Plus they only brought in on average $5 every month or so … but that wasn’t the real reason, right? Right? (Coughs and moves on.)

So, having done this, I thought the best way to test (in a verification sense) I’d properly removed them was to run the site in the developer tools for the browser and check the GET requests being made across the wire. I’m old school and still use FireBug, but I did also start up Chrome and its developer tools to cross-check. Either way, the ads were gone. Furthermore, the site now loads in under 2 seconds, even with no cache, which is remarkable. (Maybe GoDaddy has also put me on another, faster web server, I don’t know.)

Let’s just check my new homepage under the developer tools, I thought to myself. Let’s see the difference in load times! Less than a second. YESSSSS! But … wait! What is that 404? The CSS is trying to load a couple of WOFF files (Web Open Font Format files) and they’re both being returned as Not Found (404). Here’s the font definition for one of the fonts:

@font-face {
  font-family: 'Gentleman500';
  src: url('./../fonts/Gentleman-500-Book.eot'); /* IE9 Compat Modes */
  src: url('./../fonts/Gentleman-500-Book.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
       url('./../fonts/Gentleman-500-Book.woff') format('woff'), /* Modern Browsers */
       url('./../fonts/Gentleman-500-Book.ttf') format('truetype'), /* Safari, Android, iOS */
       url('./../fonts/Gentleman-500-Book.svg#Gentleman500-Book') format('svg'); /* Legacy iOS */
  font-style: normal;
  font-weight: normal;
  text-rendering: optimizeLegibility;
}

On a 404 for a WOFF file, the browser then falls back to loading the TTF file instead.

Oops! This page has been up for three weeks now and I’ve only just discovered I’d forgotten to upload the proper font files? Talk about a testing failure. Except … the fonts had been uploaded, to the right folder, and were even named correctly (the next things I checked). So why was the web server – in this case, Azure – lying about the presence of the font file? 404 means “Not Found”, and not “It’s there but I’m going to pretend it isn’t”.

A quick bit of googling later, I came across this post on CodePal: WOFF files return 404 (Not Found) in Azure Web Sites. Even though the site is static, I have to have a web.config file that has at least this declaration in it:

<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="woff" mimeType="application/font-woff" />
        </staticContent>
    </system.webServer>
</configuration> 

…so that the web server “knows” about the WOFF MIME type.

(Note: there are posts on StackOverflow that say the mimeType attribute should be x-font-woff instead, others that say you should also have a remove element [example]. This minimal web.config works fine for me though.)

After that minimal change, Azure serves up the WOFF font files just fine.

So, as I said in the beginning, although this post was ostensibly about WOFF files and Azure, in reality it’s all about the need for testing and verifying. In creating this new web page, I should have checked that everything rendered and worked correctly (which I did, going through several iterations of the CSS, tweaking away), but also that the loading and caching at the browser were working as expected. This latter part was even more important since I certainly didn’t write that @font-face declaration and hence had only the vaguest notion if or how it worked.

In short: do not assume anything. Test, test, and test again.

Lazy Finial

Now playing:
Vegas - Walk into the wind
(from Vegas)
Aside: this is a brilliant album from 1992 by Dave Stewart and Terry Hall. No longer available, but it is on YouTube. For now...


My new homepage

There’s a TV program on the BBC at the moment that we’re watching called Celebrity Masterchef . In it a bunch of celebrities (90% of which are completely unknown to me) tackle preparing and cooking dishes, competing against each other for the best one, well presented. There’s a couple of jokey judges (who I again have never heard of) to shake their heads in wonderment at the inability of the “celebrity in the street” to actually cook something appetizing. After watching a few of these, we’re getting...

Read more »

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...

Read more »

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...

Read more »

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 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...

Read 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...

Read more »

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 »

Extras

Search

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.

DevExpress

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.

Validation

Validate markup as HTML5 (beta)     Validate CSS

Bottom swirl