| Andrei Freeman ( @ 2004-09-22 22:51:00 |
| Current mood: |
A whole new world
I should of course preface this with the following statement:
All comments in this journal are mine. They do not reflect the opinions, beliefs, support, endorsement, corroboration, attitude, or anything else someone can think of belonging to my bosses, managers, co-workers, company, fellow-code junkies, etc. These are my words and my world.
After nine long months of research, pain and anguish... I've finally gotten a major piece of corporate released software. (I consider "Launcher" to be a minor piece of corporate released software)
Today Earthlink released the newest version of its Total Access software for the Mac. Version 5.1. This is some really impressive stuff. For dialup folks it has the Accelerator technology which caches and reduces detail on graphics so pages load faster. For all users we also have an all new Scamblocker. It actually watches mail and the like in the event some spam tries to route you to one of those Fisher sites that tries to make you give up personal information and passwords.
And oh, yes. NewsAccess.
To give you a bit of history... I'd been working on iJournal. This was a Mac LJ client. It was an open source project under the guidance of
cryo. At the time I was developing disk utility software for Symantec.. so this was safe moonlighting. Even got an okay from the boss. iJournal hit a lull and some of the engineers on the project went to other things. I wound up writing an app launcher for Norton Utilities & Norton System Works. This was one of those apps that was about 5% code and 95% UI.
I'd shied away from UI because I didn't have a lot of experience in it. With Launcher I learned all I ever need to know about UI. And all I needed to know was, "Stay away from UI." It's not that UI is technically difficult (well, it is... I'd just learn that later), it is, however, organizationally difficult. While not everyone on the team might know the difference between a merge sort and a bubble sort... everyone AND I MEAN EVERYONE, thinks they know where a button should be and what it should do.
The UI for launcher would go thru 37 revisions. And have commentary from at least 45 people, some of which weren't even on the team involved with the product. It was a frustrating, humbling, and educational experience. While working on Launcher, I'd become friends with one of the other engineers on iJournal.
fraserspeirs
Fraser has decided to write his own LJ client from scratch. This time he was doing it solo. I wished I could help, because there was so much I wanted to add to the LJ journalling experience. Initially, I did some bug reporting and feature suggesting. When the project was looking for financial support I offered some. Since then, I have done debugging and optimization profiling on
xjournal. I think it's become the best Mac client for LJ without a doubt. Sadly however, during this time my tenure at SYMC would come to a quick and abrupt halt.
I found myself after a few months off at Earthlink. Not quite as BIG as SYMC, but a nice group of folk. I came in late on the cycle and discovered the joys of trying learn a very strange framework to force in some new functionality late in the cycle. I'd been playing with NetNewsWire and found that there were several features that I wanted in its 1.0 release that simply weren't there. I couldn't retrieve any livejournal posts that were filtered. I didn't see several of the tags I wanted to. And worst, if the feed was behind a login screen, there was no way to get to it.
I started to (in the similar manner of Fraser) spin my own.
I'd never written anything this complex. I had dozens upon dozens of unfinished code ideas from over the years. My little newsAgg was probably gonna be another one. After setting up a slew of data structures, I pinned them to a rough UI. Something that would let me grab the RSS files. Something that would batter it to parse the data. Something that would let me show it. One day in January a miracle happened. One of the senior P.M.s was raving about this new RSS technology. I was working on my early draft at that point. I showed him all the things I thought we could do with RSS. It turned out, Earthlink's server team had hacked together RSS feeds of our news streams. I commented about all the stuff that I hadn't seen other RSS apps do that I thought would be beneficial. He put a guy on the PC team to work on a news ticker. He asked if I could also put in a news ticker to my RSS work.
My work was blessed by management. Now I had to finish it. Another coworker did a mock up ticker with hard coded data. Getting a live ticker with user mutable data would turn out to be far more daunting than anything I'd ever done. For those of you who know the Cocoa Frameworks, there just isn't a lot of support on the non-existent NSOroborosScroller. My knowledge of the cocoa frameworks definitely went up a few sizes and I learned things about the NSView hierarchy I never wanted to know in the first place. (I still think I've got my blitting wrong to this day :)
This would be my first excursion into threading. This would allow the app to fetch multiple threads at once while only slowing down in extreme cases. I learned about the WebKit, which allows you to use the power of HTML rendering in a window. For the first time in about 10 years I found myself playing architect, lead developer, and managing bug reports. I got to the point where I was assigning bugs in the new app to the new programmer on the team so that we could split the work.
The adventure was not without some scary heartaches. A memory leak that took nearly 3 months to track down and kill got to the point that I was actually having nightmares. The reality of threaded apps is... don't write them. The more you thread, the less you will be able to find bugs. And XML APIs... Don't get me started. At least they will be supported in ... next year's OS... err. maybe. In the mean time I face the same thing every other corporate programmer has to face...
Oh, there is a crasher in the OS API? Find a workaround!
Whadya mean that function only works in this year's OS... You need to support the OS from 2 years ago!
And oh yes... Nah, trust this guy... he knows Macs. "Dude, okay... it needs a WinWizard!"
But that's part of the bargain.
So... Do we have all the features of the latest and greatest? Nah.
Do we have a copule of really cool features that no one else has? Sure.
Do we have easter eggs? Of course not. But maybe a few undocumented shortcuts.
Are we done? Nah, we're just getting started.
It's my first big one. I'm proud of it.
Yay team. Everyone did wonders to make this happen.
Thanks to MF, KK, HH, and BV on the dev team. Thanks to WH who played about 3 different managerial hats, J & R in docs, AS for some killer graphics and an awesome icon, Everybody in web docs. In QE: DK, TB, JN, MB and without a doubt AM who was probably the most tencious tester I've ever had. (Sorry Margarita and Chotima). CP for hiring me and giving me this chance to work on an awesome piece of software. But most importantly I have two special thanks. One to TH on the dev team. He was a recent hire who came on, ramped up very quickly, and killed off some nasty bugs. TH was an absolute pleasure to work with on this cycle and I can't wait to see what we do for the next release.
But the star of my team didn't write one line of code. It's the woman I fell in love with. The woman I married during the cycle. The woman who agreed to postpone our honeymoon so that I could build this labour of love. The woman who put up with multiple late nights at the office and even more than one all-nighter. Heather is, was, and will be a pillar of strength in my life. I could have done it without her. But having her there made it far more sweeter to endure and richer to share.
I hope you like it as much as I do...
-Andrei
So:
Configurable News ticker
Filtered RSS feeds
LJ shortcuts
Authenticated feeds
Bad feed verbose errors
Not bad for a first run ;)
In case you want more info:
You can check out the pages at Earthlink at:
http://www.earthlink.net/home/software/m
I've also put up
newsaccess
This lj community is by NO means official. It is not official policy or the like. Hell, it's not even tech support. But just a general stompoing place for people. It's software. I'd be crazy not to believe somebody will want to stomp a bit on it.
Maybe I'll even talk about some of those undocumented shortcuts.