April 25th, 2009 by bored
On or around March 30, Marketcircle shipped the latest version of its flagship business information management tool, Daylite. The new version, 3.9, includes a re-write of the back-end to work on a completely different database system (postgreSQL), a new dedicated server and server administrator application, and support for our new iPhone companion app, Daylite Touch. Since then, we’ve been working out issues with, ah, unique network set-ups and general fault-tolerance and recovery. We were very happy with the launch, and will be even more satisfied when we ship the next point release (hopefully this week).
Now we’re in the strange state between major projects—at least, some of us are. A few of the engineers have already started another project. I’m not completely sure what I’m working on next. I still have a few bugs to fix and there was one feature that isn’t quite finished… I’m sure I’ll be knee-deep in something new and cool soon enough. Now I’m just finally trying to catch my breath. I had a bonus vacation week a couple of weeks ago, but it was so soon after launch that I was really just working shorter hours from home, at least for the first few days. I’m not really a workaholic, but it’s not easy to completely let go, either, especially when “work” is something you’ve helped build from scratch.
Six weeks from now, Apple’s WWDC is happening again in San Francisco. The entire Marketcircle engineering team is going, which is pretty amazing. I haven’t been since 2004, when I went—for the second time—on a student scholarship. Nowadays it’s overrun with iPhone developers, which is cool, I guess, but I expect I’ll be sticking to obscure stuff of significance to servers, networking, data storage and programming languages. Maybe I’ll find room for one or two iPhone sessions and one or two user interaction sessions. I always like the Mac OS X and Cocoa State of the Union presentations, where they summarize the road maps and new technologies. Bertrand Serlet always does a great show.
Posted in Programming | No Comments »
April 28th, 2007 by bored
There’s a very serious risk of me disappearing into my work, if I’m not careful. After a seven year wait (longer, if you count the suppressed yearnings going back to ‘93), I’m finally doing what I want to do. And it’s amazing. But there’s always the danger of it taking over my life.
I don’t even think I can bring myself to openly describe the sensation of sinking into that part of my mind that designs and writes software. It is not the same as the part that writes English, although they share some support mechanics of structuring and process. Code is more visceral. The data exists and can be described directly. It would be as if English words were themselves real and yet indestructible in their meaning, rather than just representations of other things, fleeting things. Code is crystalline, especially when it’s good.
Programming is a blend of natural language and mathematical notation. Mathematics is all structure; timeless and enduring. Nothing in the world of mathematics changes; all is eternal. The appearance of change is an illusion brought about by the change of viewpoint of the observer, the mathematician. Mathematics is a language of relationships; once they are formed, they are unbreakable. Code is not like that; the relationships mutate and change, although the components are fixed, at least moment to moment. Time is essential in computer programming. Static data is worthless data. It’s the transformation that matters.
A large part of that transformation is the initial capturing of knowledge and raw data from the world, and this is done, respectively, by programmers and input devices (themselves designed by engineers). We must first notice what is important before we can interpret it, capture it and model it in the computer. (This is true of any theoretical system of analysis, regardless of whether it’s computerized, although they are virtually all computerized by now.)
Where the computer makes the difference over purely mental theoretical systems is the power to interpret and immediately (or at least quickly) respond to user intentions for how to transform the data and ultimately present it in a new form. Computers are not simply containers, and they cannot offer us any real insight into how to go about interpreting data. They can, however, perform the intersection between source data and our desires to rearrange the data to a new, more useful form. They convert our input into commands which control the basic operations: which ones are performed and in what order. By not only automating the task of interpreting data, but giving us handles on the elements of the processes, they give us control to change how things are changed. This leads to a state where process is data, and can itself be processed, in a recursive cycle which knows no bounds.
Two weeks on the job is not what taught me this. But finally being able to work on software first, instead of a distant second (or third), means that I can now be free to think about these things intimately, as I put them into practise every day.
Posted in Programming | No Comments »
April 24th, 2007 by bored
In case you haven’t heard it through the grapevine, I have a new job as a programmer (although I prefer “software developer”; in the industry they often call it “software engineer”, but I think that’s pretentious) at Market Circle. I cannot talk about what I’m doing exactly, but I can say that at the moment I’m working on a part of their flagship product, Daylite.
I’m still extremely excited about it; I don’t see any reason for that to change, either. Daylite is an excellent product, and there are lots of areas it can be extended and enhanced.
Programming all day (which does not, in fact, mean writing code all day) is quite different from technical services and support, which I had been doing for the last two years. Now I have time to work on things. The problems are much more difficult to define, and they can be solved in countless varieties of ways. Trying to determine best practise is more challenging, but I can do research and planning and testing as required.
In parallel to working on my little section of functionality, I am studying their existing code base, which is large. Unfortunately I can’t really discuss that. I can say that I will want to learn more about OpenBase, and refresh and increase my SQL knowledge, although it’s unlikely I will be working on database-specific tasks anytime soon. In the short term, I’m sticking with Apple’s Cocoa technologies, although on my own time I’ll probably go back to playing with 3D graphics and OpenGL.
Posted in Programming | No Comments »