Your browser is very old. You might enjoy surfing the web more if you used something newer like:

Google Chrome

Even Firefox would be OK.

If you're being forced at gunpoint to use Internet Explorer, you should at least upgrade it. Version 8 is tolerable and 9 will be OK when it comes out.

Posts from April 2009

The PalmOS Browser War That Never Was

In 2001, I left my first post-college job at PinPoint Corporation to work for a start-up called ZFrame. A long-time colleague of mine was one of the co-founders and our somewhat ambitious goal was to write the next (you could almost argue, the first) major web browser for the PalmOS.

I loved this job.

First of all, the product was amazing. It was pretty cutting edge and nobody else had anything like it at the time. Second, we had a great team with some really sharp developers. Third of all, I got to work from home full-time for 2 years.

This was a pretty major undertaking considering the state of mobile computing in 2001, the pinnacle of which was the ubiquitous Omnisky modem for the Palm V.

Omnisky Modem

We struggled along for a couple of years trying to find our niche before finally running out of money and closing shop. ZFrame was my first failed start-up (although just barely since PinPoint went under a few months after I left) and I’ll always remember it fondly.

There were several levels to the architecture behind the browser. We had a proprietary program that turned regular web pages into a special, compressed image that contained all kinds of meta-information about the page. This program could be queried via a Classic ASP web service. The PalmOS program called out the web service to retrieve the compressed page data which it then manipulated and displayed in various ways. There was also a load-balancing component to the server-side so we could have a number of page compression programs running on multiple machines (mainly to handle the crushing user load that never materialized).

ZFrame Network Diagram

The PalmOS application was written in C using Metrowerks Codewarrior for PalmOS. Most of my CS classes in college used C but this was the first time I’d written production C code and writing for the PalmOS posed a number of interesting challenges, the main one being small memory space.

For better or worse, our strategy for dealing with memory was to allocate all of the memory we could possible use right when the application started. All of the rest of the code would then use chunks out of this pre-allocated block. This approach would have been tolerable if we’d written some common malloc/free-like functions to keep track of what parts of this giant block were in use. No such luck there though. We relied entirely on discussing, verbally, what range of the memory block someone should use. As you can imagine, this caused all kinds of fun bugs when one part of the program would start overwriting the memory used by another part (although we did manage to get those worked out before the app actually shipped).

There also problems with code segements getting too large so we were always having to move code around. Eventually the entire application got too large and we had to move part of the functionality into a second app that got launched transparently for some operations.

As far as using the browser went, you entered a url and the Palm device would initially display a high-level overview of a page which you could drag the pen over. The drag action would then pop up links and little snippets of text. (For a more complete feature overview, check out the UI demo).

Page Overview

You could also zoom in on different areas of the page to see the page in high resolution.

Zoomed Page

The above view was good for graphics-heavy areas of pages but not so good for large quantities of text. For that, we had a Text View mode.

Text ViewerText View with Links

The Text Viewer was my first assignment after I got hired to ZFrame and served as my introduction to PalmOS programming.

I wrote C module that was handed a big block of text containing a limited number of HTML tags. I had to parse the text and render it on the screen taking the HTML into account. The only tags I had to handle were <p>, <br>, <b>, <i>, <u>, and <a>. I also had to keep track of links so they could be clickable, including highlighting the links when the pen was dragged over them.

I spent about 3 weeks working on the Text Viewer and more than half of that was on making the text scrollable.

The biggest problem was the viewer was too slow if I tried to parse all of the text at once. In the end, I settled on parsing 2 screenfuls of text on the initial view. The viewer would the parse a few more screenfuls each time the user scrolled down a page. Each processed page was kept in memory so scrolling up and down after the initial parsing was pretty fast. I also ended up implementing a simple double-buffering scheme to prevent flicker when changing pages.

In addition to the Text Viewer, I also to got to implement all kinds of fun features like SSL support and:

Bookmarks
Bookmarks

Email
(This was handled via a special Classic ASP page that the Palm contacted the main ZFrame service)
EmailEmail Inbox

In all, working at ZFrame was a fantastic experience. I learned a ton about C programming and working in an environment with pretty restricted memory. It was also good from a personal standpoint because, since I was working from home, I had to make sure that I stayed focused and organized to hit all of my deadlines.

8 years today (and 14 years last March)

April 21st, 2009 marks 8 years of marriage (and just over 14 years since our first kiss). I think a lot about how much time has actually passed and it almost doesn’t seem real.

JARK

We met in the fall of 1994, freshman year at Lewis & Clark college. It was the middle of the night and I was stumbling around lower-campus after too many 40′s of OE when I came across a group of people sitting under the flag pole, on the terrace above the rose garden, engaged in a heated debate.

The topic?

The simple phrase “Fuck a duck in a truck with Chuck.”

So many questions inherit in this simple, whimsical statement.

Who does the duck belong to?

Who does the truck belong to?

Is Chuck the mastermind behind the whole scene?

And it was, at the time, one of the most fascinating things I’d ever heard. I took the only logical course of action. I cinched up my thrift-store German army jacket against the cold and ensconced myself in a nearby bush, the better to find out the resolution to this existential dilemma. After some time I got cold and tired and decided to pack up and head for home. Little did I know that the group had been aware of my presence the entire time. At least a couple of them were convinced that I was some crazed homeless person. Luckily Jane recognized me from around campus and uttered, as I got up to leave, the first words I ever heard from her sweet lips.

“Hey. What’s your name?”

“I’m Mark.”

“I’m Jane.”

“OK”

And I staggered home to bed.

I came back the next night and was welcomed into the circle. I came back the night after and the night after that. I don’t know many hours I spent talking with them before we actually met in daylight but, soon, I was eating almost every lunch and dinner in the cafeteria with the group. Jane was utterly fascinating to me from the beginning. Talking to her was so comfortable and it was impossible to be sad around her joyful smile and easy laugh. It wasn’t long before we were spending almost every moment together. I started spending the night in her dorm room but it was months before we even kissed (March 4, 1995).

From those strange beginnings came the most important and amazing relationship of my life, solidified in the Lewis & Clark chapel on April 21, 2001. We’ve covered a lot of ground together and I’m grateful for every day of it.

I’ve had a lot of people make comments about what a good couple we are and I always find it strange. That’s why we’re married. Because we like being together! Why would you settle for anything less than that?

I also see a lot of people looking for marriage cure-alls, like there’s some magic formula that you can follow to make your marriage great or fix a broken one.

I think that people forget that marriage is a choice. You’ve chosen someone above everyone else. But it doesn’t end there. You have to keep choosing that person again and again. You have to make the effort to keep yourselves close together, especially when it’s hard. There are times when you haven’t slept in days or you’re having money problems or work problems or you’re just having a shitty day. And it’s on those days that it’s most important to make that choice.

There are lots of ways to stay close, but everyone has to find their own things that are important and cultivate them.

Here are a few of mine

  • Say thank you. A lot. Especially for little things.
  • Enjoy touching, hugs, hands, pats.
  • Let things go. Most stuff isn’t worth making an issue of, so just let it go.

And, with that, I’ll leave you with the 5 tenents of marriage, as related to me by one of my two favorite priests on my wedding day.

Humor
Humility
Sex
Compassion
Understanding

8 great years and counting.

It’s not hard to avoid sounding like a moran moron

I don’t consider myself a grammar nazi. I am a far-from-perfect speeler, especially unassisted by technological aids. My knowledge of grammar and punctuation is decent but far from perfect.

But I am also constantly horrified by the inability of people to put together a coherent sentence that is relatively error free. And I see it everywhere! I see it on signs, billboards, ads on the sides of buses. People have paid actual money for things that have glaring mistakes in them! The number of major errors making it through the book publishing process is constantly rising.

And I think the worst thing to ever happen on Facebook was that application that let people write their own quizzes. I can’t even stand to take them because they’re so awful to read.

So let’s go through some basics that I see people bungle all the time to the point that my blood pressure starts to rise.

This is really fucking easy so pay attention.

Your vs. You’re

  • Your means your. As in, it belongs to YOU.
  • You’re means you are. As in, it’s describing something ABOUT you.

There vs. They’re vs. Their

  • There is a place. Like, “the dictionary is over there“.
  • They’re means they are.
  • Their means that it belongs to THEM.

For information on the subject of apostrophication, I don’t think anyone’s done it better than Bob the Angry Flower.

And last, but certainly not least:

Proofread your stuff

Here’s the process I try to go through when I’m writing something for public consumption.

  1. Write a bunch of stuff as quickly as possible.
  2. Go back and re-do parts of it until it sounds better.
  3. Do those first two things over and over and over until I have something that I can stand the thought of showing to other people.
  4. Once I have a draft that I don’t hate, start proof-reading.
  5. Do a pass for basic grammar, punctuation, and flow.
  6. Do another pass for purely for spelling. I try to do this one without actually understanding what I’m reading, just letting my eyes move over the words.
  7. Keep doing the previous two steps until I don’t find anything anymore. Go to sleep.
  8. The next day, give the whole thing another read. If it’s really important, let someone else look it over too.
  9. Publish it!

Even with all that, I still find mistakes that I missed and have to go back and fix. Absolute perfection is tough. You’re doing OK as long as every mistake you find causes you physical pain.

Learn the above well and you’ll be able to write Facebook quizzes that are more better than 90% of the existing ones. Maybe you’ll even end up writing one that keeps my rage levels low enough to actually take it.