
Ask HN: What interesting software did you work on in the past? - jacquesm
This comment https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12037548 by lisper about his time writing a patch for the software running on an instrument on the Galileo spacecraft makes me wonder how many other interesting stories HN members have.<p>So, What interesting software did you work on in the past?<p>I don&#x27;t care if it is famous or if it made a billion $, just interesting.
======
mikelevins
Well, let's see.

Beasties was a pond-life simulation on the Mac, circa 1989. It was a Common
Lisp program loosely based on a BASIC and assembly-language program I had
written earlier that ran Conway's Life with 4 slightly-different sets of rules
in the same world. Each ruleset had a different color for its live cells.

Panels was a simple experimental window system, in Lisp again. There's a theme
here. Once I learned Common Lisp a lot of my own projects ended up being
written in Lisp, and so did some of the things I did in my day jobs. Panels
was built around constraints satisfaction and continuous event recording. I
started with this vague desire to be able at any time to ask, "What was I
doing at exactly X o'clock?" and have the UI system be able to give me an
understandable answer. Another idiosyncratic feature it had was a rule that
whenever the user started doing something, you should try to figure out
something sensible to do with the input, regardless of what was on the screen
--even if it was nothing. That idea went with the continuous event recording.
The general idea was that if you really couldn't figure out anything
reasonable to do, at least you would have a log of all the recent events, so
that if the user's actions started to make some sort of sense you could maybe
fit the logged events into it somehow.

Yeah, I know how bizarre this sounds now, but it did some kind of cool things.
Like, for example, if you just started dragging the mouse around with nothing
on the screen, it would go, "oh, mouse-dragging. Well, let's just capture that
in a vector and plop a window around it. If nothing else maybe it'll be a
drawing." Or, "oh, keystrokes. I know, let's shove them in a buffer and render
them as text in a window."

The whole thing was sort of organized around that kind of ad hoc thinking.

GATE, the Generalized Automated Test Environment was a big honking Lisp
program written originally by Matt Maclaurin, with later contributions by
Chuck Lins and me. It was a big knowledge-based system written in a frame
language called MacFrames (invented by Ruben Kleiman; MacFrames later evolved
into SK8). MacFrames was of course written in Macintosh Common Lisp. GATE
stored a bunch of descriptions of application software in terms of frames
called "features". Each feature was something a user could activate in the
application in order to cause some particular effect to happen. GATE would
traverse the description of an application and use the feature descriptions to
transmit synthesized events to a remote program called the Mole which ran as a
system extension on a fleet of Macs of various models. Basically, the GATE
machine would pretend to be a user who was exhaustively exercising every
window, menu item, and dialog box in a whole raft of applications and spying
on the remote Mac's screen, recording very time it saw something it didn't
expect.

We used GATE to find and report legions of application compatibility bugs in
Mac system releases. Later the event-recording code from panels came back to
life in a utility called ShowMe that was supposed to make it easier to create
the app descriptions in the knowledgebase.

I worked on Bauhaus. Matt Maclaurin was on that, too. It was the second OS
written in Lisp for the Apple Newton. We wrote it after John Sculley ordered
the Newton group to scrap the first Lisp OS and do a new one in C++. Larry
Tesler told a small group of us to see if we could do anything useful or
interesting with Lisp on Newton and we took him at his word. Actually, we
probably took it too far. But we wrote an OS for a handheld mobile computer in
Lisp in 1992. I regret nothing.

I worked on SK8, Apple ATG's "HyperCard on steroids", also written in Lisp. I
didn't create it; that was Ruben Kleiman and Dave Vronay, and later Brian
Roddy and Sidney Markowitz and Hernan Epelman and Adam Chipkin and Dave Yost
and more folks I am not remembering. I came in late and worked on the object
system and SK8Script, the first working version of AppleScript (I didn't
create that, either, I just worked on maintaining and extending it).

I worked on Reactivity's crazy network security appliance that sat on a
network and spied on all the application-layer traffic looking for violations
of network policy. Cisco bought it and turned it into the Cisco ACE line of
products. It was an example of a product that was all software but that was
sold as a hardware box. It was a crazy ambitious product. I worked on various
parts of it--a rules engine, auth interface, message-queue support, other
stuff I forget, and then when it started to get close to being an actual
product I built the whole documentation suite and the toolchain that delivered
it. I remember once Franz asked me if I thought we could use their XML parser
and I explained that we already had five XML parsers on the box running in
parallel, one of them implemented in hardware.

I worked on a diff tool for C++ and Java that diffed AST nodes instead of
text. I knocked that out in a few weeks and cleared a tidy sum for it. I did
it so quickly and sold it off so thoroughly that I don't have any of the code
anymore and don't really remember how it worked.

I built almost all of an embedded control system for a forensic fingerprint
livescanner, including its built-in GUI UI, all in about a month. Then I
rebuilt it in about another month. It wasn't all me, but Mercurial claimed I
wrote 85% of it. I really liked that job. It was in Lisp again. Lisp makes me
happy and productive.

I wrote a 2D game framework built on Cocos2D and then used it to write the
first three titles in the LearningTouch FirstWords series of products on iOS.
LearningTouch was founded by Clozure Associates, the people who maintain
Clozure Common Lisp. They're about the best people I know on several different
axes.

I worked for a while on the CRASH-SAFE part of the CLEAN-SLATE computing
initiative, Peter Neumann's galactic plan to reinvent computing to actually be
somewhat reliable and secure. That was super interesting. I maintained and
extended Breeze, an interpreter for a programming language with extremely
aggressive security and integrity proofs built into it. It was written in
Haskell. I like working in Haskell almost as much as working in Lisp.

I wrote another games framework for iOS that was used to develop a set of
proof-of-concept games for a DARPA-funded STEM project meant to create games
to educate the general public about what various federal agencies do for a
living. I wrote most of that in Objective-C, but the rules engine and game-
data compiler were written in Bard, a Lisp that I designed.

I wrote a multiplayer networked game called the Fabric, based on my own
science fiction stories and written in Scheme, using the Kawa compiler and the
JMonkeyEngine game engine. Per Bothner, Kawa's author, presented a paper about
that work at the 2015 JavaOne conference.

Right now I'm working on a social network with some novel features invented by
a Xerox PARC researcher. It's written in Lisp again.

~~~
mikelevins
I occurs to me that I reported the things that were most interesting for me to
work on, not necessarily most interesting in any other way. Maybe people would
think it's interesting that I wrote the first version of the code in MacOS 9
that gave the QuickTime MoviePlayer the brushed metal look. That was during
the period that I above described as a bunch of stuff that wasn't very
interesting to me, but the brushed metal thing might be interesting to people
who have used QuickTime.

I happened to be in the QuickTime group just then, and my boss said, "Steve
has said Let there be brushed metal. Make it happen."

So I scratched my head and remembered that I had had a NeXT machine for
several years and there was some piece of NeXT UI that had a brushed metal
looking thing in it. Surely Steve must approve of the NeXT brushed metal? So I
rummaged around and captured an image of that thing (I don't remember what it
was; something to do with WebObjects, maybe?) and looked at the image in
Photoshop or Studio 8 or something. I copied out a likely looking chunk of
that image of brushed metal and fiddled with it in the graphic editor,
changing the size and tweaking individual pixels until I got it to tile
without obvious visual repetition.

Then I wrote a little piece of code that blitted that pattern into arbitrary
areas and checked it in to the MoviePlayer sources and then MoviePlayer
windows had brushed metal. Tom Dowdy made it faster. That was his job. He was
QuickTime's make-the-C-code-even-faster guy. He was the nicest guy in the
universe, but I can be so unintentionally irritating sometimes that I once
provoked him to yell at me. Sorry, Tom.

After that, all of Apple's stuff had brushed metal. I suspect that the Apple
brushed metal that you see everywhere now may not be my code. I was working on
MoviePlayer for MacOS 9, and the code for Mac OS X was mostly separate.

~~~
bbcbasic
> Steve has said Let there be brushed metal. Make it happen

Wow sounds like the Genesis.

------
jmorrison
In the late 80s I worked on (to the best of my knowledge) the first
multiplayer/networked AI-based NPC system for DARPA SIMNET
[https://en.wikipedia.org/wiki/SIMNET](https://en.wikipedia.org/wiki/SIMNET).
So M-A-N-Y stories!

My most personal one was when we were first installing the system on-site at
Fort Knox, in a massive building which housed about 90 4-person M1 tank
simulators - all networked. 320 soldiers all participating simultaneously. (I
also wrote the networking implementation for the simulators, and also helped
integrate the custom image generators, which notably contained the first
hardware-based texture mapping). The NPC system had Symbolics Lisp machine
front-ends hooked up to a multiprocessor system running up to 256 separate
CPUs on lightweight OS.

So we installed and booted up the system in the raised-floor machine room
(remember them?), which took a long damned time. We were of course concerned
about race conditions and memory leaks (the Butterfly was no less tricky to
program than any other shared memory box with lots of CPUS). So we dropped
down a company of Ivans (Russian tanks), and figured we'd let it run and go
get fed (since we were tired and hungry - we might have been there all night -
I cannot recall). When we came back into the building after lunch, lots of
soldiers were running around, very pissed off, asking "who shot my tank?" and
"will you please reset it?" So, I reset the tanks with the magic keyboard
sequence, and retreated to the safety of the magnetic swipe-card-protected
machine room to check on the Beast.

And lo and behold, there on the digital map display was the Russian tank
company, surrounded by the digital corpses of many manned tank simulators.

The Beast was ALIVE. (I had, arguably mistakenly, initialized Ivan to be
weapons-free when emplaced. I had also not known the soldiers would joyride
through the vast terrain database during lunch break every day, shooting up
everything around - none of which would have shot back before the Beast was
delivered.)

It was a very Dr. Frankenstein moment.

~~~
varjag
Figure you are John Morrison mentioned on that page then?

It's impressive how far ahead of mainstream computing the system appeared to
be in 1980s. Wonder if there's any technology gap of that magnitude anywhere
now: things seem to have levelled out.

~~~
jmorrison
I must confess to having a more cynical view than that. I dimly recall some
quotation (I cannot recall enough of it to Google it successfully) about
somebody being naked, covered in dirt, surrounded by flies, and thinking it's
normal. I concur that it describes our current state of computing, and that
opinion is based upon the contrast between the non-mainstream technology I've
been privileged to use and mainstream technology that circumstances have (more
or less) forced me to use.

It's 15 years beyond 2001 - where is my HAL-9000? There are thousands of times
more computing power in my kids' cell phones [insert obligatory reference to
cat pictures here] than the computer I shared with 20 other geeks at MIT. The
hardware guys have done their jobs - we software guys (for reasons that are
probably worth discussing) have not.

My hobby stuff ("it's a hobby until you get paid") is done in Common Lisp
wherever possible.

~~~
varjag
Oddly so is mine, although I only caught the tail end of CL popularity in the
90s.

Being underwhelmed by software is quite common in the trade. Sometimes at the
day job I contemplate why my embedded Linux system is able to run at 32 megs
of memory and in 8Mb of flash footprint, while the "off the shelf" Linux
server box to the side of it eats 600Mb RAM just to idle in one console. It
almost feels as we are forced for the lack of depth in systems development to
push into the width just to keep the machines busy.

------
cesarbs
I worked for ~3 years at a startup that built chemistry and geology software.
We were all computer graphics and image processing folks, so we approached
problems from those angles. We had three main products:

\- A hardware/software solution for thin-layer chromatography. This was the
product that actually got the company started. Basically we built a chamber
with a camera and UV lamp that people could put their TLC plates in and have
the software take pictures with and without UV an analyze the results.

\- A point-cloud visualization application for LIDAR data, used by geologists
to scan large rock outcrops and study them. By far the most challenging of our
projects, since LIDAR data consists of gigabytes of 3D point data and we had
to figure out how to enable quick interactive manipulation of the data
(rotating, zooming, etc.) without requiring hundreds of gigs of memory to hold
it all at once.

\- An image processing application for enhancing electron micrographs of
ostracod fossils. It required only a few "hints" (in the form of clicks) from
the user to know about important areas in the image, then cropped unimportant
parts, enhanced contrast, and whatnot. It also had some tools for layering
annotations on top of the enhanced image, taking measurements, plus a few
other things.

By far the coolest job I've ever had. Sadly, the company failed. It was
founded in a rather business-hostile country in South America, where taxes are
absurd and one can't hope to start a company that isn't in an already
established market where money can be made right away. I'm fairly positive it
would have succeeded had it been in the US.

------
wslh
Work:

\- In 1996 a government agency wanted to compress their file transfers because
X.25 was very slow and it connected hundreds of branches. The critical part
was running the compression program in an IBM mainframe because they didn't
have a budget for that (e.g. buying THE C compiler or specific hardware). We
first tried implementing it with Rexx but finally ended up implementing a file
compression program in Cobol! If I remember well the use of Cobol improved the
use of resources vs Rexx.

Just for fun:

\- With a friend, in the late 80s, we removed a keyboard from a Commodore 64C
and added it to the Commodore Amiga 500, then implemented a program where two
people were able to use the Amiga at the same time in different Windows.

\- After the QNX Floppy Disk Demo [2] we ported Squeak from X to SVGAlib to
run it from a 1.44 floppy disk [3].

\- 8 years ago I implemented Cookiepie in Firefox [1] where the use can
simultaneously-cookie-sandboxed accounts in different tabs. To my knowledge it
was the first implementation of this concept and it was "impossible" to
achieve in Firefox because there was no API to link a tab with an HTTP
connection. I solved this issue trying to find indirect relationships
navigating between the object graph.

[1] [https://www.youtube.com/watch?v=1EBkB-Yp-
zM](https://www.youtube.com/watch?v=1EBkB-Yp-zM) and
[https://www.youtube.com/watch?v=2Pfg-
kJ4nAw](https://www.youtube.com/watch?v=2Pfg-kJ4nAw)

[2]
[http://toastytech.com/guis/qnxdemo.html](http://toastytech.com/guis/qnxdemo.html)

[3]
[http://swain.webframe.org/squeak/floppy/](http://swain.webframe.org/squeak/floppy/)

------
ddorian43
Analyzing email account to try and predict/find signs of brain disease.

~adsense clone, crawl page, find top keywords, and for each advertiser (which
has a catalog of up to 5M products) find best product and display as ad in a
widget.

~smart ~ai in a complex game of pong (powerups, multiple balls with different
speeds, dynamic net size, special abilites). it was a very complex if-else-if
tree, but I was in 7th grade learning by myself with no home internet-
connection

~~~
cesarbs
Did you have any success with the first one? Sounds like a fascinating
problem.

~~~
ddorian43
Nah. The team that hired me kinda gave up too early(it was a side project to
them and ~me).

------
wingerlang
Not sure if others find it interesting, but I have done lots of iOS
modifications (software for jailbroken iOS device) which is quite a niche
thing.

Some examples:

\- Re-implemented Apples "Assistive Touch"

\- Made an app launcher

\- Screenshot cropper-keep on top (Hard to explain in a word but see:
[http://cydia.online/package/com.jontelang.snapper2](http://cydia.online/package/com.jontelang.snapper2))

Anyway I find this extremely interesting since I can shape iOS to my exact
wants and needs.

------
psyklic
Some of my most unique projects:

\- One of the original programming department heads of 0 A.D., one of the
leading open-source RTS engines. I led the switch to a 3D engine.

\- 2D library for the VESA Video BIOS Extensions (paged "hi-res" graphics),
written in X86 assembly straight from the lengthy VBE spec.

\- Haptic simulator software. Simulated the bending forces applied to a carbon
nanotube attached to the tip of an Atomic Force Microscope. You could
literally feel these forces using a special input device
([http://www.geomagic.com/en/products/phantom-
premium-6dof/ove...](http://www.geomagic.com/en/products/phantom-
premium-6dof/overview/)).

\- Made a working physical eReader. Was similar to the Kindle but with a
power-hungry LED display and USB drive support (team-based senior project). We
asked eInk for a free sample, but they wanted us to buy one for hundreds of
dollars.

\- FPGA-based graphics accelerator (in VHDL) that rendered 2D and some 3D
primitives (team-based for school).

------
PT_2014
Been very lucky to work with great teams on a bunch of stuff as dev and prod
manager including: \- distributed simulation platforms -3D/VR authoring tools
used by likes of Boeing and Airbus(amongst others) \- Search engine for non-
proprietary(ie generic) drugs used by intergovernmental, governmental, NGO and
pharma companies \- 3D Minimal invasive surgical training platform (used to
train 10,000+ surgeons todate) \- Road Traffic simulations \- Real time
autonomous mobile robots \- VR data gloves and a variety of sensors for all
sorts of things. A lot of fun stuff.

------
pmiller2
I worked on calibration and test software for fiber optic switches with large
(100+) numbers of ports. It certainly didn't make a billion dollars, but it
made many millions of dollars for sure. :)

------
danny_taco
For a brief time I worked on a DARPA program to develop platforms for the DoD
to plan to conduct and assess cyber warfare in a manner similar to kinetic
warfare. It was a really interesting project with very difficult problems to
solve.

