Hey, look at me!

I’m posting from my iPhone!

Uncategorized

Comments (0)

Permalink

previous lives

This is a scattered post. I apologize.

In the job I had before this one, I was doing .NET programming.

Now, don’t cringe immediately. I did it for several reasons; my mortgage being a big one, of course. I did it because I wanted to see what it was all about. I was curious about the state of the art for Windows programming tools, and also because I wanted to see what Microsoft had done with C#, since I had never really had the reason or inclination to look at it.

My conclusion? C# is a lot like Java, but it is very much like a Microsoft-designed Java. There was a reason for everything they did, and I think a lot of it actually does improve on the Java stuff, but much of it was just different. One of the things that I used in C# that was new to me was Properties — variables that call the right methods for getting and setting values.

My initial reaction to Properties was that I didn’t like the hidden code. It wasn’t always clear to me that doing an assignment was actually calling code — which is one of my complaints with C++ ad operator overloading in general — it is, at times, hard to see from just looking at the code what is being called.

That being said, and at the risk of repeating myself, I find myself falling in love with Objective-C (ObjC). ObjC cannot be described as a clean language, its basic nature is that it exists as a hybrid language. In addition, the 2.0 version of ObjC includes the same Properties that I have issues with in C#. Yet they don’t annoy me as much as they did in C#, mainly because in the most common case, they are used to make instance variables behave in a safer fashion.

Tech Digression: The most common use of Properties within ObjC is to make your instance variables thread-safe and memory-management friendly. Most of the time you are going to declare your property and let the system write the code for you. My issue with C# was that much of the time, interesting code with side effects was being shoved into the getters and setters. In the vast majority of the cases in ObjC, a property is used to just safely access an instance variable. Yeah, there could be some complex stuff going on, but it is usually centered around access serialization, and making sure that the right thing is done memory-management-wise.

ObjC can be intimidating, with all of the #import, @implementation, [object method], and other stuff that doesn’t look like C… It’s definitely something built by a mad computer scientist.

But I’m falling deeply in love with it. I’m not sure why.

development
general

Comments (0)

Permalink

better late than never

So, if you check out the Ars Technica page about their joint party with Gizmodo, you’ll notice a big guy with his mouth open pretty much dominating the foreground in the first picture (the crowd picture).

That’s me.

Yeah, I wish my mouth wasn’t open, and I wish I was another 40 pounds lighter, but damn, I’m in Ars.

apple
general
life
tech

Comments (0)

Permalink

Compare and Contrast part II

I thought I should clarify some things.

Programs and operating systems that run on small mobile devices do have differing requirements from the same sorts of things on a desktop or server class machine. This is certainly true.

Mobile devices require a UI that deals with smaller screens. Since many of these mobile devices are communication devices, there is a need for more real-time code to handle the traffic.

My main point is that as mobile devices become more powerful, they become able to build on a base that didn’t necessarily have to originate on a mobile device. With OSX, Apple is able to adapt the UI classes to be appropriate for a mobile device, and as far as I can tell, most of the tweaky real-time stuff is being done in a segregated part of the device (every time I’ve updated the software, it’s been in two stages — first the OS, and then “baseband,” I assume (caveat reader) that the baseband stuff is the radio firmware, where the real tweaky-ass stuff needs to be).

I’ve come to this conclusion because of my time spent developing on the iPhone, as well as time I’ve spent developing for other devices. On the iPhone, most of your program is written just like pretty much any mac application program. On other devices, there’s a whole different structure that has to be learned, because maybe the network works differently, or they’ve invented a different way to do the event loop, etc.

It’s safe to make the bet that mobile devices five years or so from now will have the same computational and storage capabilities of todays average desktop machine. The danger is that if you don’t make that bet, you will be passed over by those that do make that bet. If I’ve learned anything in the past 25 years or so, it’s that technology always amazes me. My personal hope is that I am wrong, and that mobile devices 5 years hence will kick the ass of today’s average desktop machine.

general
iphone
tech

Comments (0)

Permalink

In case you didn’t notice…

…yeah, I turned off the posting of my twitter traffic to my blog.

You may all commence rejoicing, the noise has quieted down.

general

Comments (0)

Permalink

Compare and Contrast.

So Nokia buys Symbian.

Compare and Contrast:

Windows Mobile, and the other flavors of Windows that run on mobile phones, descends from Windows CE, an operating system designed for PDAs and palm top devices.

Symbian, used by Nokia for there smart phones and other devices, descends from the OS used in Psion devices, which were PDAs and palm top devices.

When Apple chose an operating system to run on their iPhone, they chose OS X, an operating system designed for general computers.

Look at the differences in approach. Look at the hardware out there today — Gruber did a quick comparison and came to the conclusion that the hardware in an iPhone is roughly equivalent to the hardware in a circa 2000 PowerBook, which ran — wait for it — OS X.

So why not choose a software basis that gives you a headstart? Sure, you have to do some things differently, but it’s not like we’re back to the early ’80’s, counting instruction cycles to make sure we’re going to be fast enough to fit our code into the vertical blanking interrupt. Small system programming, these days, is roughly equivalent to big system programming, circa 2000.

I know which approach I like better.

apple
development
general
tech

Comments (0)

Permalink

WWDC08

If you follow my twitter stream at all, you know I went to WWDC this year.

I’ve been wanting to go for years. I find it hard to control the enthusiasm I had for the experience.

It was a good challenge to get through. I was around very smart people. I was at a technical conference that actually gave me more interesting technical information than I could take in. I swear, stuff was bouncing off of my brain during the Friday sessions. I knew the stuff was important, I knew the whys and the hows, but the what’s just ricocheted right off of my grey matter.

One of the things that I really want to write about is that how I feel like I’m finally coming back home to Smalltalk. One by one the things I miss are being incorporated into Objective-C. ObjC 2.0 was cool, [redacted] is going to be better. It is unfortunate that the details that make me happy about [redacted] are covered by NDA.

Grand Central Dispatch and OpenCL are mentioned on Apple’s public pages, so I can actually mention them. Grand Central Dispatch is tied directly to the technology I tried to allude to in the previous paragraph, so perhaps soon someone else will mention it and I can stop being annoyingly coy about it.

I still use languages like Python and Ruby, but I’m finding myself drawn more to coding directly in ObjC and Cocoa, or perhaps Nu. I’m in a period of my programming life that I want a language that can go really high level and really low level, sometimes in the space of the same method.

The best thing about WWDC08? It brought me back into a technical area that is new and vibrant, one that inspires real excitement for me. It’s almost like I’ve had to spend years trying to downplay the fact that deep down inside, I just prefer the way that Apple does things, and I have for a very long time.

It feels very good to come home.

development
general
iphone
life

Comments (0)

Permalink

Agent Craig

It’s been a while coming, but it’s here. The company that I went to work for has shipped a product that I think has great potential.

We call it Agent Craig, and we’ve put it on sale prior to WWDC.

Agent Craig is what we call a “Search Aggregator.” It scours th web, looking in places that people like to advertise things, and looks for items you are interested in. Right now it searches Craig’s List (hence the name), and eBay. We made it extendable, so it’s easy to add plugins to search other places, and we’re busy adding Freecycle and the ability to search patents.

I am excited to be associated with this product. Give it a look.

development
work

Comments (0)

Permalink

I absolutely adore SQLite

Going through college, I hated databases. I had this (stupid) belief in college that business was bad, and databases, to me, were about business. I thought I was a Scientist, and I was going to stick to the strict computing side of things. I wanted to work on Operating Systems.

I got over it.

I now find databases fascinating. I love being able to slice and dice large swaths of data with simple commands. The leverage of a database can be spectacular when applied to the right sorts of problems.

However, up until I turned my mind towards SQLite, relational databases always seemed to be too heavyweight. It was much easier to throw something into a text or xml file, and do small bits of slicing and dicing with python or ruby or [insert favorite scripting language here].

With SQLite, I can create a new database quickly, and import data easily. For example, I found myself looking at a list of albums that some magazine thinks are the best of all time. I was curious about a few things, so I did a “view source,” cut the relevant part into a TextMate document, used some regular expressions to clean up the data, and then created a SQLite db and sucked the data in. Now I could ask a bunch of SQL questions and get my answers.

Yeah, SQLite isn’t a complete implementation of SQL, it plays fast and loose with types, and won’t scale like MySQL or other major databases, but it is really good enough.

It doesn’t need a server running in the background. You can back up your data by just copying the file somewhere safe. The looseness in typing is an advantage, in that you don’t have to clean the data up completely to do useful things with it.

The bottom line is that I don’t really have to think before I just suck data into a database.

I absolutely adore SQLite.

database

Comments (0)

Permalink

Things current attracting my attention.

WWDC08. I’m going, finally. Woohoo!

rsync. I’m trying to get close to a terabyte of assorted data under control.

Nickel Creek. It started small — I heard “The Smoothie Song” on the radio and bought their Greatest Hits album. I have now succumbed to the inevitable and purchased all three of their regular releases. Oh, and the iTunes exclusive session.

Tempest. I’m still obsessing about it — perhaps I will finally bring the machine into work.

MAME. The Multiple Arcade Machine Emulator is something that I keep coming back to, over and over. I won’t tell you where I got the ROMs, though.

Mac Development in general. Yeah, still in love.

Git. Of the new source control systems out there, I seem to like it the best.

Bakery Nouveau. I didn’t think I cared if the croissants were flaky and delicate, but now I do. You heard it here first, the best cinnamon rolls in the world can be found in this little bakery in the West Seattle junction.

30 Rock. While I watched data fly across my network as I tried to get things back to normal, I watched all of season 2 of 30 Rock on Hulu. I already have a crush on Tina Fey, this just made it worse. 30 Rock manages to be incredibly funny, and yet not mean. I didn’t need more television to watch, dammit.

How I Met Your Mother. I love pretty much everyone in this show.

Back to work now.

life

Comments (0)

Permalink