Posts from March 2006.

The Marco Bambini Blog: Too perfectionist? / CaseDetective 1.1 Sneak Peek #1

Marco Bambini has just posted a

little update on where he is with SQLiteManager 2.0.

Marco’s included a couple of screenshots, one of the about box that shows off the new icon he’s commissioned and the other of the main window.

The new icon is great, looks very slick and professional. I liked the current icon for it’s simplicity and style, but now that I’ve seen the new one the old one looks kind of drab in comparrison. I think he’s made a good decision in getting a new icon created.

The screenshot of the new look interface shows a huge improvement over the current release, it looks much more user friendly and accessible, and I’m very glad the tabs have been replaced by a toolbar. There’re no details in his post on what’s new functionality wise, but a few of the toolbar icons hint at some new features, Analyze, Verify, Optimize etc.

Marco’s worried that he shouldn’t have invested so much time and money into the new look and upgraded functionality, it’s taken longer than he hoped and he’s still not finished yet. Obviously not having got my hands on the new version yet I can’t say for sure whether he’s done the right thing by doing so much and making his current and potential users wait a little longer, but from just those screen shots I expect he’ll not suffer for it.

I’m in a similar position with the next version of CaseDetective for FogBugz, although I’ll admit I run the risk of having even less to show for my efforts than Marco.

The next version of CaseDetective has taken longer than I hoped, but there’s good reason for it. The next release of CaseDetective, while retaining all the extract functionality of the previous version has changed a huge amount “under the hood” to make it more scalable and able to cope with FogBugz databases with large volumes of cases.

And, funnily enough, a lot of the functionality that has enabled me to make this version of CaseDetective more scalable comes from Marco’s original work on the SQLite plugin for REALbasic that was bought by REAL Software and integrated into REALbasic 2005 and later (I’m currently using REALbasic 2006r1).

I hadn’t planned on taking so long with CaseDetective 1.1, I expected it to be a small update with a few features that had been asked for, the most important of which being support for MS Access databases. But once I had that feature pretty much in place I found it too irresistible to extend the mechanics of the solution towards some longer term feature ideas and scalability requirements.

CaseDetective 1.1 will now cache all the case, event, attachment and reference data from the FogBugz server’s database on your desktop machine in a REAL SQL Database (SQLite3). Once the first full sync is complete only data from changed cases and the reference data will be synchronized when asked for.


There are huge benefits in doing this:

  1. Network and server load is greatly reduced. CaseDetective used to hit the network and database server pretty hard if the filter pulled back a lot of cases, now it’s a local lookup to a very fast database with no network traffic. After the initial sync, only reference data and data from cases that have changed since the last sync are retrieved.
  2. Switching from one filter to another takes a fraction of the time in certain cases. Because there’s only local querying of a local database where CaseDetective controls the indexes needed, those queries can be much faster to execute and the data is available with very little latency.
  3. CaseDetective 1.1 can now support FogBugz servers using Microsoft Access databases as their back end. This is only possible because the queries to sync the data are pretty simple in comparison with the complex filter queries which MS Access couldn’t support in an ANSI SQL standard compliant way.
  4. Abstracting the FogBugz database opens up previously difficult to implement future features. And no, I’m not telling what they might be just yet! :-)

After achieving the MS Access compatibility goal, my next biggest goal in this area is support of large FogBugz databases. My ultimate goal is to get to the point where CaseDetective works well with Fog Creek’s own FogBugz database, which at last count had over 250,000 cases in it, and by now surely is exceeding 300,000. This is going to take some work, file sizes for the cache are going to get rather large with that many cases and associated event and attachment records, I can see file size limits being exceeded unless some partitioning of the data happens. But that’s a future goal, I doubt there are many installations anywhere near that size just now, so I’ll address that in a future release.

The observant among you will have noticed the funny little “Switch View” button in the toolbar of the above screenshot, I’ll explain all about it in a later “Sneak Peek”.

For now, that’s enough details on what’s in the pipe line for CaseDetective, I’d better go get on with finishing it, there’s still some way to go just yet.

Don McAllister going solo with ScreenCastsOnline.

If you’re at all interested in Macs, you’ll know of ScreenCastsOnline, the insanely great video blog where Don McAllister shows off some of the great applications available on the Mac and gives tutorials on how to get the best out of them.

Well, Don has decided to make the jump and do ScreenCastsOnline full time, giving up his current full time job to pursue his dreams.

To do so and continue to support his family he’ll need an income, so he’s introducing a subscription model where you get a number extras over and above the free feed for a very reasonable price.

I’ve signed up, if you enjoy ScreenCastsOnline I urge you to help support this great resource by signing up too.

Good luck Don, hope you enjoy going solo as much as so many of us have already.

Not in Texas anymore!

We had a pretty heavy snow fall last night, and it doesn’t look as though it’s going to let up all day either. Glad I’m not having to drive anywhere tomorrow, +1 for being an MicroISV!



Notes from the States – Day 8 & 9: It's good to be home

Yesterday I made it home to bonnie (cold) Scotland. It’s good to be home, I had a great time in Austin but it’s great to see Mandy again.

The trip back on Friday was super smooth, but still a little nerve wracking as between my flight from Austin and Houston I had 40 mins scheduled between arrival and departure, and in Newark I had only 35 mins between arrival and departure for Edinburgh.

Arrived in Houston a few minutes early at a gate only a little way from my next departure gate, waited about ten minutes before we started to board. Things were looking good, I thought we’d be off on time. However, what I didn’t factor in was that nearly everyone on the plane decided to take on board a huge bag, so that there was absolute chaos as it was impossible to get all the bags on the plane, some had no chance of fitting overhead, even if there was no-one else on board! Why do people show so little common sense and consideration for others in this way?

This of course meant that we took off a good hour late, leaving me a little concerned about getting my next flight. But I shouldn’t have worried, we got in only a few minutes late, and when I arrived at the gate I sailed straight on as my row number had already been called.

And so I arrived back in Edinburgh (at about 8am) in a lot shorter time than it took to get to Austin, not having 12 hours of waiting between flights will do that for you.

Not long after getting home I had a great sleep, even though it was early morning, I slept for about 5 hours before Mandy made me get up or else I wouldn’t sleep at night. No problem with that though, even though I did have an hour or so early morning where I woke up and couldn’t get to sleep, once I did I didn’t get up until midday. I guess I was a little tired after my trip!

And so ends my trip to REAL World 2006. I had a great time in Austin, Texas. I met some great people while there, and learnt a lot of cool stuff and experienced many new things. Sure, it cost me (my company rather) a lot, but I feel it was more than worth it.

Thanks to everyone at REAL Software that worked so hard to make the event happen, with any luck my business will take off this year and I’ll be able to afford to go again next year.

Notes from the States – Day 7: Even more history

Today was a nice easy day, just as I planned it to be, a day to wind down after REAL World before flying home the day after.

Got up quite late, watched some TV (the movie Dodgeball) and then wandered up to the “Story Of Texas” museum. Had some lunch there (”Marbled Rueben”, another fine sandwich we don’t get back home) and then spent a good three hours or more going around the exhibits.

Pretty good, if you’re ever in Austin and want to get a good history lesson of how Texas was founded and all the troubles the Lone Star state has been through with lots of easy to read stuff and movies etc, it’s well worth the $5.50 it costs (and I got $1 off with a leaflet I’d picked up from the visitor’s centre. They also have an IMAX theatre, but I didn’t have a chance to watch anything as I spent too long in the exhibits.

It was a very nice day in Austin, completely clear blue sky with the sun beating down, not what I’d call a winter’s day at all! So the walk up to 18th street from 8th to the museum and back was very pleasant, nice to feel the sun on my face before I go back to chilly Scotland. :-)

Later on had a really tasty meal in the hotel’s restaurant (Omni Downtown), a Flat Iron Steak “Chuto Roso”. This consisted of a really nice cut of beef, done just as I like it (medium, a little pink) with a “smoked nopales vino rossa butter, corn pudding and fried spinach”. Very good, never had a “corn pudding” before, nice, it all went very well together.

Finished off my relaxed day with a beer in the atrium bar watching some basketball. Basketball is mesmerising, wish we got more of it in the UK. After that packed most of my stuff and then watched Hostage with Bruce Willis on the TV, not too bad a movie for a standard “troubled cop / action movie”, enjoyed it.

And that was me, my last full day in Austin Texas, tomorrow it’s a day of traveling as I make my way home to Dunfermline Scotland, and as I’m going eastward my day will end in the morning of the following day back in the UK, so you’ll probably not get a wrap up post for a day or two.

I’m so looking forward to seeing Mandy, wish she had been here to enjoy this little bit of Texas, maybe next year!

Notes from the States – Day 6: REAL World Last Day

Before I tell you about the last day of REAL World, I think I better clear up some miss-understandings from yesterday’s post.

Apparently some people have got the impression that we were out until 4am, that’s wrong, we were all back in our rooms by 2am at the latest, it probably was earlier, can’t remember. I was checking my mail, forums and then writing the post up until 4am, not out on the town.

Also, I didn’t have anywhere near as much to drink as on the Saturday night, and I don’t think anyone else was chucking it back either, but I could be wrong. I for one didn’t want to feel ill for the last day of the conference as there were sessions I really wanted to get the most out of, and I don’t think anyone else would risk wrecking their last day either. Sorry for any confusion on that one.

However, something went a little wrong with that, I must have eaten or drunk something that didn’t agree with me, as I had a really dodgy stomach in the morning. Didn’t feel bad otherwise, just a nasty stomach.

My first session of the day was “Accessibility and You!” by Aaron Ballman, with special guest Dr Scott Steinman. This was a superb presentation describing how disabilities can make using your application almost impossible to use unless you develop with them in mind, some ways of testing for and improving accessibility and how these changes will make a positive impact for disabled or non-dissabled users alike were discussed. It was only marred by the fact that it was being shoe-horned into an hour when it really needed at least an hour and a half. I felt really sorry for Scott, his very interesting explanation of how colour blindness (or rather “weakness”) physically happens and what the results are had to be zipped through as Aaron’s part went on too long. Well, it didn’t go on too long really, in fact it should have been longer, but us attendees had too many questions during Aaron’s part that we lengthened it too much. Still, it was an excellent session, a good way to start the day.

My second session of the day was “RBScript 201″ by Thomas Tempelmann. I’m not sure whether this was a good session for me to attend or not. Having only just got my head around RBScript the day before, Thomas’s explanation of a couple of pretty advanced concepts was a little too much for me. Maybe if I’d had a little experience with RBScript I’d have appreciated it more, although I understood the concepts and problems he addressed it was a little over my head for just now.

The very last session I attended at REAL World 2006 was Aaron’s “Windows User Interface Design” presentation. Again, this excellent session needed to be at least an hour and a half as it covered so much, and prompted a lot of discussion among the group on Windows, Mac and Linux user interface design and accessibility. Aaron really knows this stuff, I learnt a lot, and made many notes on how I could improve CaseDetective for Windows and Mac to make it more compliant with their respective user interface guidelines and also improve accessibility.

There were a few sessions after lunch, but I wasn’t feeling well enough to sit through a 2 hour session with my dodgy stomach and all. A bit of a shame as I fancied seeing Joe Strout’s session on creating 3D games with REALbasic.

So I did some email and caught up with some feeds from the REAL World Internet Cafe, which had a great connection at the time, much better than it had been on the previous two days. I also tried to call my wife through Skype once I was back in my room, but that didn’t work so well, and AIM, instant messenger and even email all ended up being pretty useless. The wireless internet connection in my room has been terrible throughout my stay, and it’s been the same for many others too. Maybe that’s why there was a letter in my room to say that from 5pm until midnight the in-room wireless internet would be down as they were to change supplier.

Right at the end of the REAL World schedule there was a feedback session, where everyone could pipe-up and say what they liked or disliked about the conference, any ideas for improving it and generally chat about it. This was great, most people were very happy with the venue and new single venue format, lots of good feedback on what worked or didn’t work with the sessions and session schedule, and other general comments about the conference. I won’t bore you with the details, mainly because I didn’t take notes, but also I don’t think it’s appropriate, it’s something between the attendees and REAL Software and hopefully we’ll just see the fruits of the discussion next year. Although I will mention that I asked that they considder a european conference now that they are going to have a European office. Even a mini conference would help, maybe just a two day event with two or three distinct tracks for newbies, intermediates and experts. Fingers crossed on that one, I’d love to be able to attend a conference with say three or four of the engineers in attendance, and then some speakers from the community. Obviously there’s a lot of issues around language and venue to be considered.

Once it was all done and dusted it was decided that we’d all go get some Texas BBQ, as there was quite a few people staying for the evening.

As we waited for the arranged time for us all to wander down to “Stubbs”, I had a chance to chat with Mars about his excellent debugging session and then with Geof about the REAL SQL Server (which I’m very interested in). How often do you get a chance to bend the ear of the CEO of a company who’s product you rely on, and have a very frank discussion about the future of it’s technologies. This kind of access to people like Geoff and all the engineers working on REALbasic and other REAL Software products is absolutely priceless, and when Will Lesher joined in on the conversation about REAL SQL Server he explained a couple of details about the REAL SQL Server implementation that make it a very attractive proposition in deed. I am worried about the licensing model for it, it’s got to be attractive to enable developers to bundle it with their applications, but nothing’s been decided yet so I’m keeping my fingers crossed that it’s going to be simple and affordable.

The BBQ at Stubbs was very nice, I really enjoyed my Beef Brisket, fries and onion rings, and Pepsi. I decided that I’d not tempt fate and have a beer with my meal, and I think this was a very good decision. My stomach felt much better after a good sized feeding of BBQ, and what’s more Geoff picked up the tab for everyone there! What a nice guy, can developer relations get any better?! :-)

After the meal I and a few others headed back to the hotel, while some stayed a little longer at Stubbs, and I guess they’ll probably have gone onto somewhere else. Maybe someone will blog about that in due course or leave a comment here.

I ended the night chatting with Tom Dixon and Peter ??? (sorry, never caught his last name over all the time I’ve spent with him this week, shame on me) over a beer. By this time I was really starting to feel the lack of slumber from the night before, so although I could of happily chatted with them for another hour or two I decided to call it a night after just one beer. My mind had basically crashed, I think it was a SleepDeprivationException which I had failed to trap, so I said my goodbyes to them, and then to Geoff, Will, Steven, Lisa and others that I bumped into in the lobby, and made my way up to my room.

The only way to combat a SleepDeprivationException is to quit all threads of input, and close your windows on the World!

Notes from the States – Day 5: REAL World Second Day (Will won't stop until we drop)

Damn, woke up early again! And neighbour did the same 06:00 alarm and two phone calls thing. Ah well, plenty of time to check email and stuff before heading down for first session at 09:00.

A bit panicked before first session though, couldn’t find my note pad from previous day, definitely wasn’t in my room or bag, so figured I’d left it in my last session the day before (had already left my pad in previous sessions during day, normally I’m pretty good at looking after my stuff but obviously Austin has some strange aurora going on), but of course the room had been cleaned ready for for the next day’s sessions. After a quick look around the room, asked reception whether my note pad had been found, they checked with house-keeping and then Lost And Found but there was no luck. What a pain, I hadn’t only lost my notes from the day before (including Jon’s declares stuff that I found so useful), but the pad has a CD stuck in the back with all the other REAL World sessions and example projects on it! A little depressed and dejected, I decided to double check the last room I’d been in the day before, went right up to the seat I had sat at and guess what I found? Yes, my pad, neatly placed on the chair I’d been sitting at, some kind person had saved my notes, what a relief! I guess I owe house keeping a nice fat tip before I leave.

First session of the day was Will Lesher’s Database 201 presentation where he talked about REALSQLDatabase and how easy it is to use, and the kind of funky stuff you can use it for, e.g. as a fast searchable dictionary replacement. Learnt some important stuff about REALSQL’s time handling, glad I found out about that.
Then Will moved onto REAL SQL Server, which most people were really there to find out about. Looks good, all the benefits of SQLite wrapped up with a multi-user server, with a neat little admin app that allows you to create users and groups, assign users to the groups and give the groups permissions on the server and it’s database’s objects. It’s great, really simple to add databases whether existing (drag and drop) or new, and modify the schema with minimal fuss. Passwords for connecting to the database are sent with a secure encryption scheme, and you can even set all communication to be encrypted.

Second session of the day was Steven Tallent’s XML 101 (if you have a blog or website Steven, let me know, couldn’t find it). I nearly left it because at the beginning of the session he stressed how simple the session was going to be. But I stayed and was very glad I did (actually I did leave, vacating my very comfortable second row seat, but then came back in and sat at the back). Steven’s description of XML and how the DOM (document object model) is handled by RB was very good, I learnt a lot of very seemingly insignificant facts that really are very important (e.g. absolutely everything in XML is a “node”) and a lot more besides. Well worth attending, I may know a thing or two about XML but Steven’s session really solidified some very important stuff for me and gave me some very useful info on how to manage it in RB. Steven, you sell this session much shorter than you should, please do it again next year and don’t put off so many people by describing it as being so simple. This session is a perfect grounding in XML and how it can be used within RB, stop selling it short!

My last session before lunch was Aaron’s Design Patterns session. Again, I’ve already learnt a lot from Aaron’s blog about design patterns, but when it’s discussed and questions asked by other attendees you learn so much more. Aaron’s a great presenter, I’m looking forward to his “Accessibility and You!” talk, but I wish he’d had a chat with Charles Yeoman about his RBDeveloper article about the “Messenger Centre” (proper spelling) pattern, as I think a lot of people would have clicked once they’d had that described. I personally use a variation and much extended version of the Messenger Pattern (threaded) as described by Charles’s article in CaseDetective, and have found it to be extremely flexible and powerful.

Second half of lunch was a presentation by Tylor from Apple. Very fortuitous timing as apparently Apple released a couple of items today. :-)
It was a very good session, he also described a number of ways that Apple can help promote indipendent software vendor’s products and also some other vendors that could help (e.g. SoftwareToGo). I won’t give out his email address, but Tylor also gave himself up as very good point of contact when needing help to get noticed for various initiatives within Apple. But to be honest, you really needed to be at the session to get an idea of how he could help promote you product. What, you didn’t pay over £1500 to go to REAL World but still want to know how to get in contact with Tylor? O.K, try and ask me, go on, I dare you!

After lunch I attended the Debugging Principles and Techniques session by Mars Saxman. Although with negative vanity I would consider myself rather comfortable with the debugger, I was very happy that I attended this session as Mars described a lot of very good ways of making debugging much less painless and explained some ways he hoped the debugger would improve (assuming we furnished the appropriate feature requests, you know what you’ve got to do!!!).

The sixth session of the day I attended was Steven Tallent’s XML 201 presentation. This session was primarily an explanation of XPath, and for this I am eternally grateful. I now have a good understanding of just how powerful XPath really is, and how XPath can be used to access any specific part of an XML document. Steven has presented both his sessions while nursing a broken arm from a skate-boarding accident, and apparently is an expert on dumper trucks.

My last session of the day was “RBScript 101″ presented by Dave Grogono. This presentation proved to be a very good grounding in RBScript, although I did get a feeling that many of the attendees didn’t quite appreciate just how powerful the concept of RBscript is ( no one raised there hands when asked who had experience with RBScript, and I seemed to be the only one asking many questions at the end of the session). With RBscript you can open up parts of your application to your users by allowing them to use RBScript to create equations on instructions that interact directly with your application. When you start to think about the possible applications of RBScript, imagination is the only limitation!

Once the sessions finished I dropped by the REAL World Internet Cafe to get a better internet connection for dealing with my email etc, and to post my last post. Then I got cleaned up and came back downstairs for dinner.

Did you know that this year REAL Software will celebrate their 10th anniversary in May? Pretty cool, although it is just 8 years since REALbasic was first released.

Geof had a few words to say, and I had a great time picking both Jon’s and Will’s minds on various subjects related to REALbasic and REAL SQL Server / SQLite respectively during the dinner with free bar (hooraah for Merlot). In particular I learnt a lot from Will about REAL SQL Server, as well about how not to dance (somehow we ended up back at “Bourbon Rocks” on Sixth Street, and Will showed just how much of a dancing machine he really is). Seeing as it’s nearly 4am and I want to attend Aaron’s session on Accessibility in less that five hours, I guess I should probably sign off now.

Goodnight my friends, sleep tight!

Notes from the States – Day 4: REAL World First Day Proper

So yesterday was the first day of the whole reason I’m here, REAL World 2006 Users Conference.

As usual my body clock still thinks that 04:30 is actually 10:30, so I woke up and couldn’t get back to sleep as much as I tried. Didn’t help when the room next door’s (there’s a locked adjoining door) alarm clock went off at 06:00, and then had two phone calls. So much for the early night and sleep through to 07:30. By the end of the week I might just be adjusted to this time-zone as I leave for home!

Knocked off a couple of support requests and stuff before heading down to registration. Saw Aaron Ballman in the restaurant getting grilled by a small group, so joined in! Learnt a few juicy things about input handling and the things they have to go through to ensure REALbasic works on the many different keyboards out there. Also confirmed some stuff I wanted to know about the IDE’s code editor, there’s functionality there that may one day be relevant to CaseDetective.

At registration got my t-shirt and badge like everybody else and then got stuck in to the pastries and coffee that was available, glad I didn’t order breakfast before, those pastries were yummy, I love that French custardy stuff who’s name I always forget (confectionary custard?). Briefly chatted to Brad Rhine, and saw many faces that I recognize from their blogs or from RBDeveloper profiles.

The keynote for me was all about one announcement, soon there will be the ability to save our projects out to multiple flat text files, so we can use any version control we fancy and get proper diffing and individual modifications tracking! Woohoo! There were a lot of cheers for that one.

But there were plenty of other things in the keynote:

* New regional REAL Software offices, e.g. European and Chinese offices.
* Over 100,000 customers so far, aiming much higher for the future.
* Stuff coming in RB2006r2 and later:
> Localization of IDE
> MySQL plugin supporting latest versions
> Support for Oracle Instant Client
> Improved ODBC
> Even better VB compatibility (e.g. With statement, Currency datatype, improved VB conversion)
> SSL Socket with proxy support (tracking OpenSSL)
> Plugin API for datatypes
* Definitely after RB2006r2:
> Mac Intel (Universal Binary)
> Compile to Cocoa, which means using standard edit field and therefore enabling in-built auto-complete, spelling and full contextual menu etc, core graphics and proper composite windows with optimized clipping and refresh and so on, all standard controls will use Cocoa base where possible but retain current RB functionality
* RB apps already work fine with Windows Vista (theme savvy)
* Swordfish … still working on it
* REAL SQL Sever
> One database engine, one source of support for your customers
> Easy to install and use (just drag binaries onto computer and run, has monitor app, backup etc)
> RB plugin, C and PHP clients (with more to come)
> it’s fast, across suite of tests was 2x faster than PostgreSQL, 4x faster than MySQL

My notes aren’t complete, there was plenty of other market information and other nuggets of information. I should warn that as my notes aren’t complete I may have got things wrong too, so take everything above as pure rumour and not fact.

Lunch was nice, met some great people and had some good discussions about many things, which is a theme that has repeated throughout my time here. Meeting people that I know from the NUG or forums or people I’ve never heard of before has been extremely valuable, the things you learn from just a 2 minute conversation can be very very enlightening.

After lunch I attended Aaron’s “A Deep Look At Threads” session. Great session, even though I’ve read the stuff on his blog and bought the two threading articles from I still learnt a couple of things, or rather had a couple of ideas verified by his talk and questions posed by other attendees. I really know the difference between preemptive and cooperative threading now, and why we’re really lucky to have cooperative.

Then I attended Jon’s “Mastering Declares” session, which for me was the best of the day. He succinctly explained how to construct declares and his examples were great. It was particularly useful when he showed how to use the new structures functionality with declares, and when he showed how easy it was to use an array in a structure I was over the moon! I just need to make sure I get the example code he wrote off him, I’ll have to chase him down for that stuff.

The final (2 hour) session I attended was the Cocoa one, where Jon showed off the Cocoa functionality that he’s been working on for almost a year now. Really good stuff, not particularly applicable to what I’m doing just now but very interesting all the same.

My mind was too frazzled to attend the coding contest, so I just did a bit of email and started to write this post before going down for dinner and drinks.

As mentioned earlier, these social situations are where attending these conferences really shows it’s worth. During the evening I got to chat, have a beer with and play pool with people that I never imagined I’d ever meet, people who’s products I use and were more than happy to discuss features, how they achieved them and many other technical and plain interesting things. It wasn’t all techy, it’s nice to just chat about life too.

It was a great evening that finished just past midnight for me, falling very quickly into deep and very needed sleep.