It's been a while

| | Comments (13)

It's been a long time since I've had this much fun working on something for REALbasic. Don't get me wrong, I've always enjoyed my job. But you know how it goes -- some tasks are simply more fun than others.

The last time I truly had a blast with a feature set was a number of years ago when I was working on the networking functionality. It started out as a challenge since I didn't know much of anything about it. So my first task was to learn everything I could about networking and see how I could apply it towards REALbasic. Once I had a better understanding of how networking worked and many of the things involved with it, I started working on our Open Transport implementation for Mac Classic. It was a huge challenge, but when everything was said and done, our networking on that platform rocked. I remember running my benchmark on 4.0 vs 4.5 on Classic and the amazing results I had. Something like 400k/sec max in 4.0, and the same code in 4.5 was like 6 MB/sec. So then I started to tackle other problems like consolidating our networking code into one implementation that was bridged across several platforms (since OS X, Window and Linux all use BSD sockets in some form or another). Then ServerSockets. And UDPSockets. And so on. It was this gigantic area of the product that I was able to dominate and add tons of awesome functionality and really useful, cool features to. Very exciting stuff!

Since then, I've had some really fun projects (the new IDE, UI, serial stuff, etc) and some projects I didn't enjoy so much too. But nothing really captured my attention where I felt like I could work specifically on that one concept for a long time. By that I mean, I never thought "oh man, I could work on this for the next year and not run out of awesome stuff to add."

Well, I've been working on nothing but the debugger for the last month or so, and I can honestly say that I could keep working on the debugger for the next six months and not even make a dent in the awesome stuff I know I could do if given an infinite amount of time. There are already tons of new features and goodies that I've implemented (a frickin storm of cool stuff, if you ask me). Hopefully everyone enjoys using them as much as I've enjoyed implementing them.

I've been playing around with various personal project using the "new" debugger, and it's a world of difference from the "old" one. Very exciting!

13 Comments

Sounds awesome.
The debugger getting a lot of attention will be immensely useful.
I'm looking forward to the next release with all the fixes I've been getting notified about and the tidbits you've mentioned.

Even without many of the new features that I haven't tried, I still think that RB is one of the easiest things to debug in. Visual C++ was ok, but nothing compared to RB. Debugging in GCC was just a pain.

I'm definitely glad that you're working on it as well. I just had to do some hard-core debugging yesterday, and while it was pleasant compared to C++/C#/etc., there's always room for improvement.

Looking forward to the new release!

P.S. This probably isn't as fun as all the new functionality, but how about performance improvements? I've always thought the debugger would be even cooler if I could step through each line instantaneously.

You're torturing us with these little previews. :-)

I saw a bug reported as fixed in a2, so I'm hopeful that means you're about ready to share a1 with us soon.

@All -- I've only been hinting at the big things. But what I consider big and what other people consider big are two different things. ;-) There have been a ton of improvements. When I peeked at the preliminary a1 release notes, there were 26 pertaining to the debugger.

@Adam -- regarding optimizations, there has been some legwork done for that as well. The only performance issue I was able to find and reproduce had to do with gigantic string contents being fetched every time you stepped (and that issue has been alleviated nicely, if I do say so myself). But if you know of other cases that don't involve strings which have a measurable performance problem, I'd be very interested to hear about them.

I appreciate that your improving the debugger.

I'd *really* appreciate it if I didn't rely on the debugger much at all due to a convenient built-in UnitTesting framework.

RAD's been won. More Pragmatic, more Agile.
Code is a liability.

Oops, guess I shouldn't be mentioning the Ax stuff here. Sooory...

I'm just talking about stepping through the debugger. It takes a noticeable amount of time to step one line, compared to virtually no time for other IDEs I've used (Xcode, VS.NET).

It would be nice if the debugger didn't have to completely rebuild itself every time you step just one line in the current method.

Huh. I've been hearing people say that about the debugger since we first shipped it, but I still don't understand what they're talking about. It steps as fast as I can react... what more need for speed is there? I think that other people must use the debugger differently than I do, but I haven't yet figured out what they're doing that I'm not, or vice versa.

I'm very happy you are so into working on the debugger and can't wait to see the results. I hope you can work on it for as long as you need to.

@Adam -- so what sort of locals do you have in your methods? I agree with Mars -- the debugger steps as fast as I can click. And I don't have a souped-up Mac either (it's pretty much the baseline machine).

There's quite clearly a quarter- to half-second delay for every step on my machine, a dual-processor PowerMac G5. This occurs even with the simplest of methods. Sure, it's not a really big deal; I can handle it. But when I'm stepping through a big method, it's a pain to wait for each step to proceed.

Leave a comment

Disclaimer

I'm currently an employee of REAL Software. My blog is mine. The opinions represented in this blog are mine as well and may not represent my employer's opinions. All original material is copyrighted and property of the author.

REALbasic® is a registered trademark of REAL Software, Inc. REAL SQL Server™ and Lingua™ are pending trademarks of REAL Software, Inc. All rights reserved.