January 26th 2006
Ask the Dev Answers
Up front, let me say how fun it was to write answers to these questions last night. I took a little bit of time before lunch to post them, as I got too tired to finish formatting them last night. If you have any more, feel free to ask!
When will iyeyhwuk be fixed?
![]()
Done. It’s easy to fix things that aren’t bugs in our code
What color underwear are you wearing right now?
This is one of those details that is better left to the imagination of my readers.
Who’s your favorite user and why?
Actually, there’s too many to name. There’s so many contributors to the community that are invaluable, and it’s always great to see what everyone comes up with.
How did you end up at REAL Software and in Austin?
I was very persistent. My older brother offered me a chance to live with him for free for the summer between my senior year and my first year at college. Since in small-town Kansas minimum wage jobs pay … minimum wage, and in Austin a job at McDonald’s would net you $8.75 an hour, it was a great opportunity. I honestly was hoping for a job at some place like Starbucks.
However, I was online at what remained of the REALbasic Cafe, and Paul Scandariato (Intelli Innovations, Inc.) suggested that I try to get a job at REAL Software. Since I had been using REALbasic for about 5 years at that time, I thought that would be a cool place to work.
So, I kept emailing Geoff and Dave until they finally invited me in for an interview, and I began interning the next day.
A year later, a full time job opened up. I took it, and have enjoyed it ever since.
What did you study at Kansas State University?
I started out as a double major in Piano Performance and Computer Science. While I loved playing the piano, and I learned a lot in my classes, I didn’t have the dedication to practice several hours each day, so I dropped that major for the second semester. During my second semester, I began realizing that I was paying a lot of money to study something I was already making a living with — I was paying for college by programming, which is what I was getting a degree in.
I wasn’t a role-model student. I skipped all of my computer classes that didn’t have tests that day, waited until a couple hours before the assignment was due before starting the programming assignments, and in general slacked off and still received A’s.
Getting a computer science degree isn’t important to me. I learn faster by studying on my own, and programming on my own. I’m not saying college isn’t worthwhile — on the contrary, it is very helpful to many people.
What’s your dream feature for REALbasic?
ESP module! Err, realistic feature? The problem is, I have too many features I want to see. A few features that come to mind are:
- Data modelling for designing your data structures visually, and having it automatically generate code for talking to binary files, XML, and databases in a cross-platform manner.
- Code analysis tools built it, such as profiling, ‘warnings’, and tips. I’m not an advocate for ‘warnings’ showing up every time you build, because you tend to ignore them. However, if you could run an analysis tool that would tell you deprecated functions, where you might have an error with implicit conversions, etc., I think it would be a very valuable tool. Also, class diagrams.
- More code editing features- I want to be able to annotate my code with links, pictures, movies, sounds. I want comments to automatically wrap. I want parameters of methods to autocomplete. I want to be able to disclose blocks to hide code I don’t care about at the moment.
- Classes inside of modules, including support for fully-qualified types. This would help encapsulation so that you could have private “support” classes that no one else can see, but that your special package can use. Fully qualified types would allow you to have Module1.FooClass and Module2.FooClass, and nothing would ever get confused.
- A system like VB’s Delegates, where you can implement events of one class in another class. A common example would be instead of creating a subclass of Timer, you could just implement the action event of your timer instance inside of your other class.
- A full optimization layer for REALbasic code. Enough said — there’s no reason REALbasic code can’t be as fast (or even faster in some cases) than C/C++ code, and I want to eventually break the speed barrier using plain REALbasic.
I think that’s enough for now
What object-oriented features would you like to see added to REALbasic?
Good question. One is mentioned in the above question — a delegate-like system for REALbasic. A few others that come to mind are:
- Introspection: Useful for something such as a generic serialization framework.
- Template-style classes: Useful for many things.
- Weak References: This is one missing link in our reference counted world. While you can work around their non-existence, it would make life much easier when solving circular references if we had weak references.
What annoys you most about REALbasic?
There are three things that I see as slighly annoying:
- It’s sometimes easier to do something repetitive in TextWrangler with RegEx than it is to do it in the IDE — such as define a lot of really small classes.
- I want a separate tab for laying out a window and editing the code of a window. I find myself looking for a tab to switch to when I want to see my layout, and I can’t find it.
- It’s not easy to search the current method — it is easiest done with the mouse once the find dialog pops up. Which leads me to my next point — it shouldn’t be a dialog.
Overall, however, I prefer REALbasic over any other environment, and I much prefer 2006 to 5.5 and prior.
What types of programming projects do you enjoy working on the most?
Recently, I’ve been more interested in compiler features more than anything. While Mars does incredibly awesome work for the time he has, he is only one man and we can only get so many things out of him at one time. He’s tackled the big things, and I’ve pitched in with some small-ish things, such as shared properties and methods, the new for-loop syntax, continue statement, single-line #if statement, insert unnanounced feature that will be revealed at the Cocoa talk at REAL World, and more that I know I’m forgetting.
However, what interests me most are things that are new to me, or different than I usually work on. Working for REAL Software fits me great because not only do I get to work on the things that I love, I get to work on a large variety of things, which keeps me interested in what I’m doing.
How do you seperate computer use for work, and private? Meaning, how do you get your self to even get in front of a computer in your spare time after a grueling day at work? Or do you do something completely different in your spare time, like don’t touch the computer?
Well, for me programming has always been a hobby. Ever since HyperCard was first set in front of me when I was in first grade, I always enjoyed spending time in front of the computer, exploring new territory. The only difference is that now I get paid to program.
There are plenty of times that I get home and don’t touch my computer at all. However, I often have a good 15-20 different projects that I want to work on. Between Thanksgiving and Christmas, my schedule was along the lines of:
7:00- Get up, eat breakfast while reading email
7:15- Begin working on Cocoa
8:15-8:30- Reach a good stopping place, finish getting around, drive to work.
9:15- Work more on Cocoa
6:30-7:00- Get hungry, leave work to head home and eat
7:45- Work more on Cocoa
10:30- Go to sleep
I did that for four weeks straight, and why could I do that? Because I was so excited about it, and was having fun doing the work. Now, if it had been a project that wasn’t that interesting to me, it’d stay at work.
The other obvious motivator for other projects can often be money. I’m currently finishing up a product that I’m going to begin marketing in the next couple months that has a lot of potential. It has me excited not because I necessarily am having the most wonderful time writing the software, but I’m having fun starting a business, fitting all the pieces together, and dreaming of becoming rich
However, even with all the excitement of a project, there are indeed some days that I’m just braindead when I get home, and all I do is watch some TV, play a game or two, and play the piano. Having a hobby such as playing the piano is great. Being able to take a 15 minute break every hour to go and relax away from the computer is a necessity.
What is the work environment like? What’s a typical day at RS like?
It’s very laid back, and perfect for me. The thing I love about REAL Software the most is the people. Even when I was only an intern, it was great to come to work with everyone each day.
My typical day begins at 8:30 when I start my drive into work. I currently live in North Austin, while the office is in South Austin. It generally takes me 25 minutes in the morning for my commute. I do plan on moving much closer in July, when I get married and my lease expires.
I log into my computer when I get to work, plug in my FireWire drive, and read emails from the lists, check the Feedback System for new items assigned to me, and begin working either from that list or the projects I was working on the day before.
A group of us usually go out to lunch together, alternating between favorites and new places every-so-often. Lunch is about an hour long, sometimes longer (for places like Hula Hut), sometimes less (for places like Taco Bell). Continue working after lunch until about 6:00, where I start my drive home.
I have my own office currently, although that isn’t going to stay that way forever. I kick my shoes off in the morning, play some classical music throughout the day, and keep the lights off in my office (the sunlight from the windows is enough light for me to be comfortable).
There are practical jokes played once-in-a-while, and often they are quite elaborate. If you want to hear some good stories, get some good ideas, or share some good ideas, I’ll share them much more easily over a lunch conversation at REAL World than I will on my public blog
All-in-all the work environment is basically exactly what I’ve always hoped for in a job.
Do you think that you can write as good software in real basic as you can do in Cocoa? Then I am talking about like Delicious Library, iPhoto, sandvox and yojimbo (bare bones) ? And if you say yes, then why don’t we see such software written by RB?
Yes. There’s nothing special about those applications you mention. Things will be easier once REALbasic builds Cocoa to utilize some features that they take advantage of, but it’s not impossible to build such programs using REALbasic. Here are a few applications that I think are great examples of what REALbasic can look like on the Mac:
- REALbasic 2006: Sorry to pimp our own product out, but I think that the new REALbasic feels like a peer on OS X more than any other version of REALbasic.
- Intelli Innovations products, such as IntelliScanner Media Collector: This product actually came out before Delicious Library, and while it doesn’t have a bookshelf (which can easily be written as a custom canvas), it still looks and feels like a Mac OS X application. All of their products have sensible designs, IMHO.
- Studiometry: This cross platform application looks great on Mac OS X. Definitely something to check out.
- ProSelect: This app, while not using a standard UI, is cross-platform and an excellent example of a well designed application.
- Shared Space: A visual organizer. While not currently being developed, you should download it and check it out. It’s a great program that looks great as well.
What’s funny is that the question mentioned Cocoa apps, such as “iPhoto.” iPhoto actually began as a Carbon application (it was available for Mac OS 9). However, they did rewrite it in Cocoa.
The other interesting part is that the applications you mention have largely custom interfaces. There’s nothing stopping you from writing a custom interface in REALbasic either.
