About

My name is Sean Kelly. I’m 40ish and I have been programming professionally (as in drawing a paycheck) since I was 16.

In highschool I worked for Construction Management Software back when it was just a few guys in a garage. Although I learned to program on an Apple//e, my main machine at home was an Amiga 1000. In community college I did various side jobs programming mostly for private parties, but occasionally I had a big client like Allenbach Industries, where I designed weak bit copy protection for the then brand new Apple//gs.

After community college, I transfered to UCSD and settled into my first full time programming job at SalePoint programming cash register point of sale systems. I remember that Egghead Software (back when they actually had stores) and Universal Studio’s Florida where our big clients. From there I stepped over to PriceClub doing the same thing in their IT department programming cash registers and various EDP (I can’t remember what that stands for) applications for their warehouses. Though I loved SalePoint, PriceClub had benefits and I was planning to get married by then.

After graduating from UCSD with a bachelors in Math/Computer Science and getting married (yes, I waited until I graduated), I took a government job at the Imperial Irrigation District in the Water Department. It was at this point that I bought my first IBM PC compatible and started to learn C++ and Windows programming.

Shortly after that, we moved back to San Deigo to work for Intuit writing TurboTax for Windows. I still have good friends that work there. Here I had a chance to hone my skills as a Windows developer. I remember one of my big accomplishments was re-architecting the display sub-system so that one common rendering class could render forms on DOS, Windows, & MAC displays as well as printers.

Finally in May of 1994, I came to work for Microsoft. Initially, I worked on the AFX team doing MFC. I helped ship Visual Studio 2.0 and Visual Studio 4.0 (there was no 3.0 because a shift was cheaper than an add, we were such geeks back then) As the Visual Studio team began to grow, they split into three teams. Enterprise, Pro and Student. I went with the Student team with the hopes of building a version of Visual Studio that would meet the needs of students and hobbyists. In 1997, Bill Gates turned the company on the internet. The Student Edition team, along with the Fortran and Cobol teams were “freed” to form what became the Visual J++ team. I jumped ship and went back to the Visual Studio Pro team to work on making VBScript the macro language for the IDE.

After Visual Studio 5.0 shipped I moved over to do development tools for WindowsCE. This was where I met Jim Cash (J$) and learned what it took to be a professional Visual Basic programmer while we worked together on what became VBCE. Most people with a computer science degree don’t think that you can be a professional Visual Basic programmer (“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.” – E. Dijkstra). Here I help ship Visual Basic for Windows CE 1.0, 2.0 & 3.0 as well as portions of other tools for Windows CE.

After that I moved over the the Windows Printing & Imaging team to do UI. My work mostly focused on the adding TIFF annotations to the Image Preview applet. After shipping WindowsXP out the door, I set to work redesigning the scripting library for WIA. From my experience doing VBCE I knew what a VB programmer expected in a well designed COM Automation library and put together what came to be known as WIAAut. Because of WIAAut, everyone forgot I was a UI programmer when the team exploded. Most of my team-mates were sent packing to go work on the Picture It team, but because everyone thought of me as an API programmer, I was put with an incubation project to develop the next portable device connectivity solution.

The incubation project was a success and our little team was absorbed by the Windows Media Player team to create what would become the Windows Portable Device API. Because of my API experience I was put in charge of the managed interface for WPD. This was during Longhorn when Windows was aspiring to make all APIs in Windows have a managed counter-part. When Longhorn died, we no longer needed a managed API and so I became “available” to help port a managed program (Windows Media Connect) into a full blown unmanaged service. We delivered this on time for Windows Vista as the Windows Media Network Sharing Service.

From here I joined the Windows Live Digital Media Experience (DMX) team. This team had its roots in the Picture It team and so I was re-united with several old friends from the Printing & Imaging team. Here I got to apply my API design skills again building the Windows Live PhotoGallery Publishing Plug-in Platform API for Wave 3 and Wave 4. For Wave 5, we built an entirely new Photo experience for Windows 8 in Javascript. I worked on the low-level database backend, specifically focusing on synchronizing the database with the local Pictures Library as well as generating and storing all Thumbnails used in our database for quick retrieval. Back then we understood we had to compete with iPad and they could display thumbnails fast, like more than 200 per second fast. By our calculation that meant we needed to display ours in under 4ms per thumbnail. Of that IE needed 2ms just to decode and display the data. So our database code had to share retrieval with the Javascript code that handled layout. We figured that meant we had less than 1ms to find the thumbnail in the database and get it back to the Javascript code making the request. Nailed It!

By the time Windows 8.1 came around you could author Windows Store Apps in C++/Cx making use of the PPL library. That, together with the work we did in Windows 8 to make iterating the file system fast from WinRT meant we could ditch our database/Javascript app altogether and write a native C++ app. For a brief 3 month period I was able to write apps the way people outside Microsoft got to write apps. It was glorious! You see, building Windows is hard. The source code for Windows is gigantic so its not like you can open a Visual Studio project. Sure some people try but then its not like you can press F5 and just start debugging. Pretty soon our app needed to be part of Windows to support certain features and we became part of the build system and lost the ability to develop in Visual Studio. For Windows 8.1 I continued to focus on loading Thumbnails, this time from the Indexer across multiple asynchronous call chains. I also did some features like the slideshow and zooming.

As Windows 8.1 was wrapping up the first wave of re-orgs came that would eventually create One Microsoft. We got a new VP from the Phone team and he immediately asked for 250 developers to go over to the phone team temporarily to help complete their last milestone and ship a great Windows Phone 8.1 experience. I was one of the developers who was voluntold to go help out. I joined the foundation team that was responsible for backend data on the phone, specifically email messages, calendar items, appointment info and chat messages. I worked on adding a third party API to the chat database so that Facebook and other apps could become your default SMS messaging app on the phone. As we shipped Windows Phone 8.1, this team got re-orged to become the AppModel – Public User Data APIs and Data team. I decided to stay with that team and am working on shipping Windows 10 now.