The next RTTI bottleneck

A few years back, when I posted an analysis of how TValue is very slow, it prompted a lot of response from the community.  Various people ran their own benchmarks, and started working on building or optimizing their own meta-value types.  Some people are even still working on that today.  But one of the most interesting things was Robert Love’s response.  He looked at the TValue code and found a way that it could be optimized for the common case to speed things up. Continue reading ‘The next RTTI bottleneck’ »

Heading to Australia

A while back, the Australian Delphi Users’ Group put out a call for papers for a conference they were planning to hold in March of 2013.  I sent in a submission and it ended up getting accepted, so in about a month I’m going to be going to Australia! 😀

Continue reading ‘Heading to Australia’ »

Does Apple owe Jim McKeeth money?

Jim McKeeth, the RemObjects evangelist who runs delphi.org, was a coworker of mine before he left for RO.  Another coworker just pointed me to a couple articles that mention his name.

Slide to unlock is not Apple’s patent

Smartphone Wars: Micron’s Slide-to-Unlock Patent

Apparently the patent office essentially just ruled that the infamous “slide to unlock” patent that Apple has been beating Samsung and other companies that make Android devices over the head with is actually invalid, because another company, Micron PC, invented it several years before Apple did.  And the name associated with Micron’s patent is Jim McKeeth.

Of course, when something like this happens, you wonder if it’s the same guy or not.  Sometimes people have the same name, you know.  But I did some checking, and it appears that he did used to work at Micron.

So, does Apple owe Jim McKeeth money for this bogus “innovation” that they’ve been extorting money from all sorts of smartphone companies over?  It would be deliciously ironic if they did.

Jim, if you’re reading this, would you mind leaving a comment on the subject?

Fun with voice control

It was my brother’s birthday a few days ago.  The family got together and we took him out to dinner at a restaurant nearby.  I’d just gotten a new car a few weeks back, and he hadn’t seen it yet, so I told him to hop in and I’d drive him over.

The car’s a new model and it has a bunch of cool electronics, and they’re all controllable by a touchscreen on the dash, or by voice control.  There’s a little toggle on the steering wheel, and when you hit it, it makes a tone and a voice says  “please say a command,” and then it listens for something it recognizes.  It works about as well as you’d expect from modern voice control systems, and there’s a lot of room for improvement, but it’s still pretty cool.

Anyway, when I turned it on, the radio was running.  My taste in music and his differ pretty significantly, and I decided to prank him a little.  It was dark already, and I surreptitiously hit the toggle button, while at the same time saying “Computer!” in a very clear, slightly raised voice.

*ding* “Please say a command!”

“Radio off.”

*ding* The radio turned off.

My brother looked at me and he’s all, “Woah.  It’s like on Star Trek!”

“Yeah, I know. Isn’t it cool?”

I never did tell him about the toggle switch.  He’ll find out eventually…

Delayed Action, revisited

A few days ago, I posted a simple “delayed action” unit that allows you to post a simple action to the Windows Message Queue, to be executed on the main thread after all currently pending messages.  It worked by storing your proc in its own threadsafe queue, then posting a message which, when read, caused the proc to be popped back off the queue and executed. Continue reading ‘Delayed Action, revisited’ »

How not to write a parser

So if you’ve got two JSON objects, one that’s serialized as

{"Value": []}

and the other as

{
  "Value": [
  ]
}

is there any difference between them? Continue reading ‘How not to write a parser’ »

The language engineer’s triangle

Interesting new post by Andreas Hausladen this morning.  It seems that there’s new copy protection in XE3 that scans all DLLs in the same folder as BDS.exe to ensure that they’re signed, apparently to keep crackers from pwning BDS with a poisoned library.  And according to Andreas, it really slows down the IDE’s startup time. Continue reading ‘The language engineer’s triangle’ »

Delayed action

When you work with UIs, order of operations can be very important.  Windows’s UI works based on an event queue and a message pump that reads events from the queue and dispatches them.  And since the UI is single-threaded, this means that at any time, there could be pending events about to execute while you’re handling some UI code.

Sometimes you’ll get into a situation where you need to execute something, but not right away; you need it to happen after all of the pending events have processed.  Now, obviously, the best way to make something happen after everything in the queue has processed is to put something else onto the queue directly behind everything that’s currently in there.  But the tricky part is what happens when it comes back out. Continue reading ‘Delayed action’ »

Thoughts on Embarcadero’s business model

Like a lot of you, I got my SA subscriber’s notification that XE3 has been released last night.  (I decided not to cancel after Embarcadero reconsidered the changes to their licensing policy.)  I’ve been too busy today trying to track down a tricky bug in a personal project I’m working on to download and install it, so I don’t have too much to say about the product yet.  I’ll post a first-look review sometime soon.  But that’s not what I wanted to say here right now.  Since my previous article, I’ve been talking a fair amount with David Intersimone, and it’s been quite the enlightening experience.  A lot of it was private, of course, but there’s one thing that I’d like to talk about. Continue reading ‘Thoughts on Embarcadero’s business model’ »

Embarcadero’s indefensible licensing change

If you haven’t seen it yet, there’s a very disturbing post by Jolyon Smith about a leaked NDA document covering a licensing change in Delphi XE3. The upshot is that new licensees will no longer be able to use Delphi Professional for database development unless it’s a local database only, even if they use a third-party library.

And it gets worse.  This issue is exploding on the Delphi forum, and partway down there’s a post from David Intersimone, in his usual damage-control/spin control style, stating that:

All Delphi customers up to and including XE2 are covered – even if you upgrade to XE3. The EULA only affects new customers from XE3 and forward.

In other words, this isn’t just a fake document cooked up to rile people up; we now have official confirmation from an official Embarcadero spokesman that it’s true–but don’t you worry your pretty little head, it doesn’t affect *you* if you’re already using Delphi.  It’s just for new users.

Continue reading ‘Embarcadero’s indefensible licensing change’ »