Hi there, Iâm Andrew. I challenge the assumption that you can only be good at one thing, approach something from one point of view, or be one kind of person. Here is a selection of creative and technical projects, both professional and personal, that Iâve worked on over the years.
Of the thousands of rĂ©sumĂ©s that have passed across my desk, the ones that stood out showed the candidateâs creativity using color and formatting to tell a story. My rĂ©sumĂ© uses venn diagrams to show, rather than tell, that Iâm a multi-disciplinary person. It has a timeline inspired by the Facebook feed to illustrate the journey of my career.
At Stanford I majored in Symbolic Systems, an interdisciplinary program that brings together computer science, philosophy, linguistics and psychology. People from diverse backgrounds come together to study the overlaps between these fields, and my concentration was in human computer interaction. One lasting effect was my approach to asking similar questions when comparing the diversity of computer languages and human languages.
Throughout my career, my most successful projects have been grounded in the type of systemic thinking that I learned in this program. I always try to ask questions like: What are we building? What is its reason for being? What is its nature? What are its principles? If you get these things right at the beginning of a project, it sets you up for success down the road.
I use my website to document my life experiences. I like to make lists of all the places Iâve been, and the places I want to go. These are grouped into categories like cities, countries, geography, nature, buildings, infrastructure and trains. Looking back and looking forward, I feel like things are in balance when those lists are about the same length. My website is a manifesto on simplicity, and consists of just HTML and emoji, with almost no images or scripts.
A lot of travel pages on my website have flag emoji that indicate where the things Iâve visted (or want to visit) are. I wrote a program in Swift to read the HTML pages on my website, count the number of flags of each country on each page, and show the totals in an HTML table. About 90% of the program was written using ChatGPT prompts, saving me time and letting me focus on the parts of the program where I was adding the most value.
Wouldnât it be great to have a summary of all the things Iâve visited in each country? Building upon the Flags project, I wrote a program to parse all the pages on my website and create HTML pages with everything in each country.
Iâve tried to port my interview question solutions to thirteen programming languages. Even while maintaining a reasonable degree of fluency in all of them, it can be hard to remember the subtle differences, so I made a giant cheat sheet of things I do most often in all the languages. I even built a mileage chart style graph that shows the precent similarity between different languages, giving me some fascinating insights into how theyâre related.
I speak English, Russian, French and Dutch. Sometimes for fun when Iâm listening to pop music, I like to translate the song into Dutch in my head in realtime to see if I can keep up. I made a web page that translated the titles of some of my favorite songs to Dutch, and a total of nine languages while I was at it. I used the same algorithm for comparing computer lanugages to make a milage chart of human languages, empirically demonstrating the similarity of Germanic, Romance and Slavic languages.
I started KavaSoft in 2002, with the dream of writing applications for the brand new Mac OS X operating system. I started by porting one of my favorite games from the original Macintosh, which became iConquer. Over the next nine years I released a suite of apps for organizing your photos by content, sharing your favorite music, downloaded images from websites, sorting your movie collection, translating text in apps and much more. This was a decade before the app store, so I had to work out distribution, payments and software updates in order to make KavaSoft into a profitable enterprise.
The original game of world conquest for Mac OS X! iConquer is based on a version of Risk that was one of my favorite games for the original Macintosh. It features stunning high-resolution maps based on satellite photography, and a variety of computer player personalities based on artificial intelligence algorithms. A community of developers contributed maps, player algorithms and language translations.
Making iConquer maps was a graphic design project of its own. Whether mapping countries in the world or neighborhoods in a city, I started by compositing satellite imagery at what was at the time insanely high resolution (using 4K about a decade before it was cool). I created an Xcode plugin that allowed third-party developers to contribute maps to the iConquer ecosystem, and was surprised by their creativity: everything from the solar system to a âboss modeâ that let you keep playing on an Excel spreadsheet.
Shoebox lets you organize your photos by content, and find the photo you want instantly. Itâs like a knowledge base for your photo library, with hierarchical categories that let you define the times, people, places and things that define your world. For example, if you tagged a photo of the Eiffel Tower, you could find it when searching for Paris or France. You could import photos from your camera, back up to DVD, and even create searchable websites.
KavaTunes creates interactive websites that look and work just like iTunes on your computer. Visitors can browse through your music and playlists, and even play music by streaming it from your computer. The home page and artist pages feature personalized top ten lists like most played albums and songs. You can even browse music just as if you were holding an iPod! KavaTunes can also search the internet to add cover artwork to your music.
KavaMovies lets you organize the movies youâve seen, the movies you want to see, and the movies in your collection. It connects to IMDB and downloads tons of information about each of your movies in realtime. Movies are linked together by actor, director, genre, keyword, and more; making it easy to surf through all the movies you care about.
There are millions of images on the web, but how do you find and download them without clicking on them one at a time? HyperImage is an industrial-strength tool for searching the web and downloading entire websites worth of pictures. Just enter an address or keyword, and watch as thousands of pictures stream down to your computer. HyperImage knows about the structure of popular websites, can easily download entire blogs, and is also a full-featured Tumblr client.
KavaServices can add commands to the Services menu that let you translate text, search websites, encode special characters, calculate mathematical expressions, process text in numerous ways, and even run terminal commands! These commands replace the selected text in any Mac application, just like magic. You donât need to switch to a different program, or even copy and paste.
Itâs hard to believe now, but there was no App Store in 2002. When I started KavaSoft, I had to build out the entire infrastructure for the KavaSoft Store to help customers discover, download, purchase and update their apps. The system integrated with APIs from payment processors like PayPal and Kagi. I even wrote a Mac license manager app for monitoring sales and assisting with customer service.
NDS was the world leader in television set-top box middleware, the operating systems that run on cable and satellite boxes. As part of the New Initiatives team, I helped develop proof-of-concept systems to maintain thought leadership in the television space. When NDS was acquired by Cisco, I engaged with the developer community to build excitement about advanced technologies in telepresence, indoor navigation and smart cities.
The world of cable and satellite set-top boxes is completely separate from the world of consumer devices. What if we could build a platform to let developers write apps to a single standard that would make them compatible with television platforms around the world? The NDS Service Delivery Platform offers APIs to get schedule information, see whatâs playing, act as a remote control, schedule recordings and play back recorded content.
I was responsible for developing an ecosystem of client apps to demonstrate the potential of the platform. I worked with marketing to engage with both television providers and app developers to sell the dream and turn it into reality.
The film Home by Yann Arthus-Bertrand features stunning aerial photography from around the world. This second screen app for iPad shows satellite maps of the locations featured in the movie, zooming from one location to another as scenes change. The location menu lets you jump between scenes, for a non-linear viewing experience that transforms the way in which you consume content.
If all your friends like a TV show, you probably will enjoy it too. Combining the power of the SDP and Facebook APIs, Social Zapper reinvents the traditional schedule grid by showing which of your friends like each show thatâs on right now, even allowing you to reorder the channels based on the popularity. It can also recommend shows that you might want to binge based on the overall popularity in your social network. This prototype was later incorporated as a feature of Bento, our cloud-based STB interface.
This app demonstrated the potential of SDP for rich syncrhonization of time-based metadata between a set-top box and an iPad second screen. As you watched the âstar in a reasonably-priced carâ segment in an episode of Top Gear on your TV, you could use your iPad to follow their progress around the race track. Playback state was syncrhonized in both directions, so you could hit fast forward on your remote control or in the app to make the car go faster⊠or even drag the red dot along the track to scrub back and forth on the TV. The seamless link between the screens was magical.
Imagine if video screens could be as large as you wanted, the size of an entire wall or table? Surfaces was a project that explored the possibilities of creating scalable displays, pushing the relevant content to a number of tiled screens. I created clients that would allow widgets to span adjacent iPads. You could literally drag a widget from one iPad to another, even if one was running a browser and the other a native client written in Swift.
Flare is a concept ecosystem that combines indoor location technologies, wearable devices and an object-oriented data model to help people explore interior spaces and interact with objects in their environment. I implemented the backend in Node, the API layer, and frameworks and demo applications for web, Mac, iOS, Apple Watch, Android, Android Watch and Python. I released an SDK and developer documentation on Cisoâs DevNet developer portal, and hosted hackathons in which external developers used the SDK to develop projects. I presented the platform at the National Retail Federation trade show in New York, giving demos to the engineering leadership of a hundred major retail companies.
I did a hacakthon project in which I replaced the entire SDP context and control architecture with one based on the Twitter platform. Your set-top box had its own account and would tweet what you were watching, along with the title card and a description of the episode. Then you could DM your STB with messages like âwatch @topgearâ, and it would find that show in the grid and change channels for you. Got it up and running in four hours.
When watching an Apple keynote, there are parts that are more exciting than others. I tried making a highlight reel of the iPad 3 launch, which took hours of my time. What if we could do this automatically by measuring the volume of tweets on a particular hashtag like #ipad during an event? I wrote an algorithm to do exactly that, and made an auto-generated highlight reel. The money shot? When they announced the pricing. Turns out the reel based on hashtag buzz was pretty much the same as the manually curated one. Proved a point in about half a day of work.
I gave a presentation on privacy considerations in the context of building a personalized television platform. In a world where many people want to share everything about what theyâre doing, would we consider your television viewing history to be sensitive personally identifiable information? Everyone knows that the Queen watches television, but can you imagine if the shows she watched turned up in the tabloids? The talk covered the important points of what privacy is, why itâs important, how to protect it, and specific learnings applicable to our current projects.
I designed a poster for the 2013 NDS developer conference in Bangkok on the theme of âthe power of an object oriented system lies not in the objects themselves, but in the connections between them.â
Compass is the #1 real estate brokerage in the United States, and also a tech company that creates software to make its real estate agents successful. I joined when engineering had 60 people and over five years watched it go through a period of hypergrowth to 1200 engineers. It was also my chance to move into engineering management and build several awesome, high-performing teams.
Beautiful marketing materials are a core part of the Compass brand image, but with the massive growth of the brokerage it became untenable for designers to make them by hand. My team and I worked with marketing to essentially distill the brain of a designer into an app called Marketing Center, so agents could make high-quality materials using a self-service tool. It gave them enough flexibility to differentiate themselves while at the same time keeping everything on-brand.
Marketing Center lets Compass agents create a variety of kinds of print marketing materials, including the listing cards that are displayed in office windows. I worked with the marketing team to create these layouts and implemented them as templates in Marketing Center. So when you walk by a Compass office and see listings in the window, I made that happen.
When youâre developing software, you tend to run a program over and over in test mode. But the experience is totally different when youâre using it for real. One day I used Marketing Center to make a brochure for my own farmhouse in the south of France, and had it professionally printed. I put a lot of love into that brochure, which gave me an entirely new perspective on the software product that my team had created.
The Compass Marketing Center app made it easy for agents to make any kind of marketing materials, assuming they knew what they wanted to make. But it was still a challenge to remember what materials for what listings they needed to make when, and to decide which collateral types and templates would be most effective. I led the Marketing Automation team in building a system to coordinate an agentâs overall marketing strategy, using AI to give every agent the experience of having a dedicated marketing coach.
As Compass scaled organically, agent information was spread across twenty different systems. The first team that I managed built a user adminstration tool called Agent at a Glance (A3G), which let our agent support team get the full picture without having to sign in to multiple systems. We took full advantage of a microservices-based architecture, with each service storing or retrieving a single type of data.
Identifying the same people in different databases can be a tricky problem. In an ideal world, people would all have a unique identifier that we could use to join records across databases. However, when this is not available, it may be necessary to try to use peopleâs names for matching. As it turns out, peopleâs names can be messy, and are less suitable for use as unique identifiers than you might hope. I wrote a blog post about fuzzy name matching, and you can look at the source code.
Marketing Center lets users design print-ready marketing materials such as flyers, brochures, postcards and notecards. It outputs web content, which needs to be converted to a PDF that it can be sent to a print fulfillment vendor. I wrote a blog post about writing a Go service to convert web pages to PDF using headless Chrome.
When I was at Compass I developed a set of coding interview questions that candidates were unlikely to have encountered before. I tried to make questiosn that were fun and interesting, and related to the real world in some meaningful way. I also wrote up solutions to the questions in thirteen different programming languages, to try to force myself to approach each problem from many different different perspectives.
When I was young a friend presented me with the four fours problem: using just the number four exactly four times, can you write a mathematical expression that evaluates to every number from 1 to 100? I wrote an interactive explorer in React that helps candidates visualize the question. Itâs an exercise in finding the simplicity in what seems like a complex problem, working forwards from what you do know instead of trying to work backwards from what you want to find out. See the solutions in several languages, including an elegant one-liner in Clojure.
This problem asks you to write a program to calculate the time that it would take to commute to the Compass office using the New York City Subway. You can walk to a station, take a train to another station, and from there walk to the office. As an extension, you can add the ability to transfer between trains. I made an interactive subway map that helps people visualize the algorithm. Itâs a fun interview question because it gets candidates thinking about coming to Compass!
Hereâs a fun party trick. Go to any English language Wikipedia page, and click on the first link in the body of the article. Keep doing that, and youâll go from concrete to increasingly abstract subjects, most likely eventually arriving at the articles on Existence or Awareness. Given a list of recently featured articles and the artciles they link to, the task is to construct an outline. The challenge is that there are no root nodes, as you typically get into a loop of articles that link to each other. Iâve heard candidates remark, âwow, youâve changed the way I think about existence and awareness!â
Pontifex is an encryption algorithm featured in the book Cryptonomicon by Neal Stephenson. It allows two people to exchange encrypted messages, as long as each of them has a deck of cards. Encrypting and decrypting the message uses a process called shuffling as described in the algorithm. In porting my solution to different languages I wound up writing some JavaScript that looked remarkably like Clojure, the closest Iâve seen to âhaving an accentâ in a programming language.
Train schedules contain a lot of data and can be hard to read. In 1885, EJ Marey invented the graphical train schedule, which represents the entire schedule as a graph of the position over time of each train on the line. For this project I made an animated graph of the New York Subwayâs 7 Train, including a display of the train arrival countdown board. You can even simulate the effect of delays, try setting it to âtotal chaosâ.
At Compass I noticed that some people had first names that were the same as other peopleâs last names. I made a directed graph that showed how everyoneâs names were connected, and kept it up to date as the company grew over the years. I made a magic names interview question that asked candidates to build a graph structure, count the number of clusters of each size, and find how many people were in the âbig cloudâ. Seeing how the results changed if they added themself to the graph gave candidates a sense of belonging!
Cryptocurrencies are designed around proof of work algorithms, which essentially prove that a computer burned a certain number of pointless processor cycles. They do this by calculating checksums of a large number of values until they find one that by chance ends with a specific number of zeroes. Hashcash is a protocol that uses a similar approach for avoiding spam: if email senders have to waste even a small amount of processor cycles, itâs the digital equivalent of buying a stamp.
Functional Objective-C is a category that adds functional programming methods to Objective-C. Going beyond foreach, filter, map and reduce, it adds around 60 methods and was inspired by the Clojure cheatsheet. I even used it to convert my Four Fours implementation into a one-liner, as inspired by the Clojure version! The whole project is tongue-in-cheek, a work of art that is beautiful and useless at the same time.
When I was young I was fascinated by the original Macintosh, and knew I would work for Apple one day. I was ironically still considered âthe Apple guyâ even when I was working at Apple. It was an incredible time to work there, as the results of Steve Jobsâ transformation bore fruit: Mac OS X, the iPod, the iTunes Store, and retail stores. Oh yeah, and my email address was andrew@apple.com.
I was part of team of three software engineers that developed Apple Sales Web, an app that resellers around the world used to connect with the company. It was implemented in WebObjects, a technology that Apple got from NeXT for creating object oriented web apps connected to relational databases using the same foundation that Mac and iOS apps use today.
My team adapted Apple Sales Web to support the companyâs own stores, helping communicate with retail employees and ensure consistency between stores, especially when rolling out design updates and new products. Everyone at Apple is entirely responsible for some small aspect of the business; I wrote the code that got the shopping bags from the warehouses to the stores. Every time I saw someone walking out of a store with their purchase in a bag I felt a little bit proud.
I developed an internal admin application to help our admin team provide support to our users. One of the great things about building internal tools is that you can observe people using them, and make small improvements that save them a huge amount of time. At Apple even the internal tools are elegant and beautiful, and I made a library of widgets that let our WebObjects apps look just like the recently released Mac OS X operating system and its Aqua interface.
My first job was selling and fixing Macs at a small shop called MacUpgrades. I was particularly good at sales because I was very knowledgable about the products and believed in what I was saying. Back then, memory came in modules that snapped into the logic board, which was easier to do in some models than others. Computers broke all the time and you needed to have them fixed. I dyed my hair bondi blue for the launch of the original iMac.
I had a pretty extensive collection of Apple computers and related materials, and donated most of it to the Computer Museum of the University of Amsterdam. So you can go visit their Zamler-Carhart wing of Apple technology. Two of the models Iâve kept are a Macintosh Plus (1986) and Macintosh SE (1987), which I spray painted red and purple, respectively.
In 2002 I gave a presentation at Apple on an early version of iConquer to the Bay Area NeXT Group (BANG). It focused on things Iâd learned as a developer writing an application for the relatively new Mac OS X operating system.
KavaFoto was my brand as a photographer. The KavaFoto website was powered by Shoebox, letting visitors browse all my photos by category. The home page has a high degree of randomness, pulling random photos from random categories to suprise you every time.
For three years I was the de facto photographer of the composition department at the Royal Conservatoire in the The Hague. I documented over a hundred concerts, using my Shoebox program to organize photos and present them on the KavaFoto website indexed by event, venue, composer, performer and instrument.
I made microsites for some of my composer friends that pulled content dynamically from my own site. Whenever I took a picture of them or one of their compositions, it would automatically add fresh content to their microsites without any additional work on my part.
Considering Iâm more likely to take pictures of rocks than people, it was ironic that I had a fifteen minute career as a fashion photographer. I shot a fashion show at De Haagse Hogeschool and worked with a number of models in The Hague.
Kick the Can was a protest against the intrusion of commercialism in the Dutch academic music scene. To make the point, two friends and I physically kicked a can 22 kilometers from Rotterdam to The Hague. I designed a poster series to promote the event (patterned on âYes We Canâ), and documented the protest concert. One professor remarked, âwe havenât had this kind of spirit around here since the sixties.â
Here are some books that I made of my photo portfolio in 2005-2006.
In 2001 we sent photo albums to all of our family members, each with a card in the format of a National Geographic cover that highlighted the selection of photos. We must have done something right because one of my aunts didnât get the joke and thought it was a legit magazine cover.
When I was in the French countryside during the first wave of covid, I adapted that hobby to exploring every trail around our house. I recorded every walk with my Apple Watch, imported the route into a program called IphigĂ©nie, overlaid the paths on topographic and satellite maps, and printed posters that I could hang on my wall. I even made walking patterns in the fields, like spirals, fans, zigzags and figure eights. When I lived in Dakar for three months during the second wave, I adapted the same approach to an urban environment, walking the perimter and all the major streets of the city, and making some fun âstreet artâ designs.
The Shake Shack project is designed for teaching students who are new to programming how to build a full-stack web app. It can store the menu in a MongoDB database, load the data in a backend service and serve it up with a REST API, and connect to the API to load a dynamic web page. It's everything you need and nothing you donât!
I wrote a Wordle solver in Swift that basically plays the game for you. Each time you guess a word, you enter in the response that indicates which letters are in the right place, wrong place or not in the word. It will then provide a list of the best words for you to play next. From my point of view, Iâm not cheating: I just took my own strategy and taught the computer to do it for me.
I significantly improved my Dutch comprehension by reading the book De Ontdekking van de Hemel by Harry Mulisch, considered to be the master work of twentieth century Dutch literature. I wrote a program in Objective-C to process the text of the book, break apart compound and conjugated words, translate them to English, and create a dictionary of Dutch as used in the book. The dictionary is in the form of a tag cloud, with more frequently used words in larger text, and words with common prefixes grouped together.
I did a wine and painting team building event one time in which I painted a photo I took of a vintage tram in Lisbon. My phone kept going to sleep and I had paint all over my hands, so I wound up kind of painting it from memory rather than looking at the original while I was working. It turned out a bit abstract, but not bad considering that I was in a rush to finish in 45 minutes. I had the original photo printed on canvas so the two could be displayed side by side.
I like to stay in touch with my high school teachers at St. Albans. While I mostly think of myself as a techie, I think that my European history teacher Ted Eagles had the biggest effect on shaping my world view. On a visit in 2010, I wrote Ted a twenty page paper on the Evolution of European Empire Building, constrasting the European Union with the Soviet Union. As one does, just for old times sake.
The author John Irving refers to a number of recurring themes in his novels. I made a table, based on data from Wikipedia, on which themes occur in which books. With his most recent book The Last Chairlift, heâs obviously trolling his fans because it contains all the themes.