Software quickly gets outdated and re-written all the time. Sometimes the whole product is shutdown. I was just curious about products/modules that you had coded that has stood the test of time!
There's an entire community of video game hackers (smwcentral.net) using a cross-assembler I wrote in 2001 named xkas. I added a few minor patches and by early 2004 I had released the final version, v06.
I never really intended for anyone to use it seriously. I made it for myself, but went ahead and posted it online anyway. It is a 1500-line single-file, nearly-commentless, nearly-spaceless abomination of code with no documentation, and an endless list of critical bugs that every user keeps encountering. They have elaborate workarounds for many of these bugs.
It became a negative feedback loop: "Why do we use xkas? Because everything else is written in xkas", and so now even more code was created and written in xkas. And so even though I've since written a proper assembler that's dozens of times nicer, no one can/will use it.
Lately, people have been writing their own versions (in addition to countless forks) that try to offer backward compatibility with all the crazy parsing errors and (mis)features of xkas, like left-to-right evaluation of math expressions, and the most convoluted macro evaluation system you've ever seen (one user proved it was Turing complete and wrote a Brainfuck parser in it.)
It's surreal. I feel terrible that so many people are stuck with this mess, but even I can't stop it anymore :/
> ...and by early 2004 I had released the finalversion, v06.
I wish more software had "final version", where possible [0] as opposed to endless churn and inevitable "is this project dead" question after a couple of weeks/months of inactivity. [1]
[0] Obviously some projects can't do this. E.g. there is no way youtube-dl would ever have a final version, etc..
Then download the above boredom.asm. And now run the following on the command-line:
touch boredom.sfc
xkas boredom.asm boredom.sfc
Note again that this is a cross-assembler to produce code for the Super Nintendo. Yet you will be greeted by a fully-playable game of Snake in the terminal window. No, I am not kidding. (The black hats here can probably guess what's going on.) For those who won't/can't try it out: http://i.imgur.com/LTSAHw1.png
They're abusing filetype ambiguity. One file can simultaneously be valid HTML, ZIP and PDF, opening correctly in readers for each file format. Mostly it is because of lax requirements on file headers and structuring of the data inside.
I guess they found a way to make it produce something your terminal can process.
He exploits the parser to corrupt the stack frame, and executes raw x86 instructions embedded in that file.
How exactly it converts that pile of gibberish into a valid x86 program is beyond even my comprehension.
Alcaro's always been a wizard at stuff like this. Here's an example of an SNES ROM image he crafted to execute native x86 code from inside ZSNES: https://www.youtube.com/watch?v=Q3SOYneC7mU (Yes, you can potentially get a real PC virus from loading up an SNES ROM in ZSNES. Or a specially crafted source code file in xkas v06.)
"Newer versions have been released, however contain poor documentation, and removal of features that can be found in v0.06. Version 0.06 is still considered the best version available by most ROM hackers until the author addresses the shortcomings of subsequent versions."
There is full documentation of every possible command, the code is readable by human beings (eg variables are named words instead of single letter abbreviations, C++ is used for more than just the class keyword, there's more than one source code file, I learned how to use the spacebar key in my code, etc), it has a real recursive descent parser that builds a proper abstract syntax tree for evaluations, it has a macro system that supports recursion and conditional evaluation, supports multiple architectures instead of just one, allows the user to dynamically add/change the actual opcode mnemonics used by the assembler (useful as the SNES has games using several strange coprocessors), has no known bugs (as opposed to xkas' that allow native code execution), etc. xkas was written when I had about a years' worth of real programming experience, bass was after over a decade's worth of experience; including experience using assemblers to create code.
If you want to know why RHDN users threw a fit about it; it's because I used // as a comment delimiter instead of ; and decided to add a closing marker to defines so you could say "lda {macro}_b", which was impossible with the old "lda !macro_b" because it'd look for "macro_b" instead of "macro".
That's really it. That's the whole of why many people there say they'll never use it. The syntax is 99% compatible otherwise. I could link you to posts saying as much, but I really don't feel like browsing their site any more than I have to.
SMWC's case is very different: they're all hacking the same game, so they require 100% backward-compatibility with a decade's worth of game patches; and they only make the problem worse as time goes on. This constraint would not apply to new games started on from scratch.
Certainly, backward compatibility is critical and has always been a weakness of mine. I've always been an idealist there.
But in xkas' case, this was code from before I really learned how to program; let alone design a proper parser. This would be like asking for strict compatibility between Linux 0.01 and Linux 3.0.
I understand how SMWC became trapped in a cycle of using xkas v06, but any new projects really have no sane reason to be using it anymore. And I'm not even saying, "use bass instead!", there's dozens of cross-assemblers that work much better than it ever did (it would seem that writing an assembler is a rite of passage for ROM hackers.)
I wasn't trying to comment directly on the specifics of xkas - I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all. I think this lesson is really valuable in a wider context than xkas.
Since you mention Linux, this is why Linus has the "no regressions" policy - if something works on kernel N then it should also work on kernel N+1, so that people can upgrade their kernel and not worry about something breaking in userspace. (I think there is actually a very good chance that an a.out binary compiled for Linux 0.01 would still work today.)
> I just think this is a perfect illustration of how backwards-incompatibilities that means users can't just upgrade and keep working introduce friction against upgrading, and once you get too much friction significant portions of your userbase will stop upgrading at all.
I definitely understand and respect your point.
In fact, I've lost about 80% of my userbase (about 80,000 users) to older versions (and forks galore) of my emulation software. And that's mostly due to lacking backward-compatibility with older game ROM formats.
I've since made efforts to accommodate using older media types, but the damage is done, so to speak.
> I think there is actually a very good chance that an a.out binary compiled for Linux 0.01 would still work today.
... seriously?? Jesus.
I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs.
You should see how amazingly better my GUI abstraction library (think wxWidgets but more like Qt with reference counting memory management and C++11 features) has gotten since the first version. I couldn't imagine being stuck with that first version in the name of backward compatibility. I'd rather be the only user of it than have that first version be it, and be as popular as wxWidgets is today.
I mean, I'm very much ashamed of xkas v06, and wish my name wasn't attached to it.
I don't even see how it's possible to produce good software that way. We don't know what we really want until we iterate over the design a few times. At least, that's the way it is with me. My first drafts have never been anything close to my ultimate designs.
After you've been burned a few times, you start to get a feel for building interfaces that can be maintained while the entire design behind them is switched out. If you do need to change the entire interface, sometimes you end up supporting old interfaces with a shim layer that translates them into calls to the new interfaces.
For example, the a.out binary format supported by the original versions of Linux has long since been superseded by the ELF format, because the deficiencies in the old format became too much to bear - but that doesn't stop the latest kernels from being able to support that old format still.
You can't just leave old code alone and the features remain. Any time you go to restructure some code, or support some other mode, or do some other kind of action, it ends up affecting this old code and you have to go and make changes to it as well. Then that old code breaks on a new version of the compiler, so you have more fixes to make. And it increases compilation times, binary sizes, and lines of code. It's another vector for malicious attacks. It's more to keep mentally in your head all at once.
I suppose it's one thing if you have a steward willing to take over, say, the a.out branch of the binary loader. But it's quite another in my case where I'm the sole developer of my software, and no one shows any interest in maintaining the legacy UI, or versions of the emulation core that focus more on performance at the expense of compatibility, so I have to drop that stuff. (Yet it is a bit disappointing when people are willing to fork the entire codebase instead to achieve the same goals, but I digress.)
Again, I agree with what you're saying, and I'd say Linux or Mozilla Firefox or Qt certainly has the manpower for this sort of thing. But as a solo developer, I can see why people would sacrifice this backward-compatibility from time to time.
I'm not sure on your point about getting a feel for interfaces. Certainly, it seems that every year or two, I feel like I've made great strides and am finally on the cusp of stable interfaces. Yet invariably, a year or two later, I look back and think the same thing again. I've come to the conclusion that we never stop evolving and that thinking we've reached perfection is always self-delusion. But, maybe I'll get there in the future. I certainly hope so.
Certainly, but it's the kind of cost that comes with having a lot of users, so it falls into the "nice problem to have" basket. If you've got no users, you have a lot more freedom to throw things away.
I understand where you're coming from, because I also do mostly-sole-maintenance on a large codebase with all the issues that come with a 20 year legacy. One strategy that can work in such a situation where you can't maintain perfect backwards-compatibility forever is to boil the frogs slowly - gradually deprecate and remove features over a longish time frame, because a single changed or missing feature is easier to adapt to for the userbase than a whole slew at once (many people probably don't even use the feature and won't notice).
I am the original author of LatexMk[1], a Perl script that runs Latex the correct number of times to ensure all cross-references and such were resolved. It can also run continuously with a previewer and several other goodies.
I wrote it around 1993 to scratch my own itch, adapting it from a little script called “Go” by David J. Musliner. At the time I was using a literate programming tool that generated Latex from C code. When I moved on from that job a couple of years later, I released a final version two, which documented that I was no longer planning to maintain it. Since then John Collins took up the cause and been doing a wonderful job from what I can tell from occasional ego searches through google and stackexchange.
Two amusing things: 1) It is the only piece of Perl code I have written, ever, and 2) I had reason to use Latex a few years later, and decided I really dislike the sheer complexity of it all. Despite that, it is surely the most enduring and widely used piece of code that I can claim credit to having a hand in.
I signed up for an account on this site just to thank you for Latexmk. I cannot tell you how useful I've found it for writing all of my honours work. The nonstop mode especially is fantastic.
/* TODO: get rid of this by adding fixed-point support to SampleFormat.
* For now, we allocate temporary float buffers to convert the fixed
* point samples into something we can feed to the WaveTrack. Allocating
* big blocks of data like this isn't a great idea, but it's temporary.
*/
A great example of why we tell people to forget using a substandard approach and language for "quick and dirty code that will probably get thrown away." A lot of long-lasting code started out exactly that way. ;)
You neglect something I think is very important: You do not normally know up front what code will live and not.
If you carefully (over-)engineer everything you will perhaps not get time to write all those short-lived failures that preceded that long-lasting success.
Of course I wish that piece of code that I hacked 3 years ago and never got around to refactor was better done the first time! But that kind of thinking ignores the fact that if my mentality had been "perfect up front" then what I would have spent all my time perfecting was the previous piece of code, the one I have long since deleted. I never would have gotten around to writing the hacky code I kept.
"You neglect something I think is very important: You do not normally know up front what code will live and not."
It's actually mentioned in my post and the whole point.
"If you carefully (over-)engineer everything you will perhaps not get time"
This is true. You can spend vast amounts of over-engineering instead of hacking something together that's "perfect up front." This is a false dilemma, though, as simply taking a little more time to think about or improve some code can work wonders. Better instead of perfect. You will still output less code but you'll have more useful and correct code.
I was answering to "using a substandard approach and language" -- if that is an option that's on the table I am assuming the time savings would be substantial (order of 50%). I do of course agree that one should often "Taking a little more time to think about or improve some code".
It seems like you almost say that it is better to be good at coding than bad at coding. Which I think nobody will ever disagree with. What I was talking about was assuming senior coders, knowing what they are doing, who think about actively choosing a shortcut.
I don't think it's a strict dichotomy, but I think there is a scale. For every project you can choose how well to do the job, and compare it to the importance the task seem to have and the budget it ought to have in developer time spent on it; then find relevant short-cut which does not dig you too much deeper in the hole. I usually try to figure out "how would I refactor this later to clean it up", make sure it can be done without too much pain, then if I can see the path clearly it's OK to take the shortcut if needed.
my way to approach this, be it for my hobby or corporate projects, is to always associate a TODO with a ticket/issue number (in github/redmine/jira/whatever) so that I can remember them, and/or include them in a sprint (in my company I always try to include one or two "fix todo" issues in our sprints)
It also helps teammate who find themselves with 1 hours idleing to have a little thing to do.
I have the horrific horror (honour?) of knowing that a lot of my code is still live.
The oldest is the internal system for a record label written in 1997 and I still occasionally get emails asking how such and such works (and I have little idea, it was in PERL).
Through to code that processes video and audio snippets for most of the UK Football League premium content sites. Authored in 2000 (mostly VBScripts that slice, encode, and distribute media files and the metadata).
Parts of btinternet.com still appear to use my horrible CMS... written in 1999... though gladly it's now very few parts and I suspect these are just cached outputs rather than the CMS still being in production.
Most worryingly would be the UK Home Office, and most UK banks and some heavy manufacturing companies that I wrote project management reporting software for over a decade ago, and as they manage 20 year projects I believe that stuff has at least another decade in production. At least all of these systems are not internet connected (then again, they'll never be updated either).
My code isn't terrible clever or pretty, those requirements got dropped a long time ago. But I have learned to make code that is simple to read, easy to maintain and tweak, and that can sprintf debug with the best of them (debug tools of choice have come and gone in the time my code has been live).
I wrote a hacky bash script back in 2000 to manage HalfLife dedicated servers (start, stop, edit basic config stuff) for a friend. This script (I initially called "hl.sh") is later renamed into "hl-monster.sh", and finally to "hl-monster-extended.sh" with ~15000 LOC, supporting 120+ different Games and is running on ~2000 really big servers around the world. This script is the core of a big international company now. I joined this company 3 years ago and since then, we try to replace this script, but it is so deeply merged into all systems.
We had a guy who wrote the other 14900 loc in a similar situation and made the whole thing really crappy. He used to say we cannot blame him because he inherited the crappy 100 loc in the first place.
I wrote a data recovery POSIX compliant command line app in C in 2003 that runs under OS X, Windows, and linux. It's still selling well, and has been all these years. Over time it's generated millions in revenue as it's been used by several different competing apps, and I have only recompiled it about twice in the last 15 years, each time only making a (very) minor change. It went a good decade without a recompile and continued selling well and being widely used.
The reason I'm happy to say this publicly is because
a) it took years to write, full time. Data recovery is a hell of a lot more complex then I'd ever imagined.
b) data recovery is no longer possible on SSD's (if they have TRIM enabled, as they do in all major OS's) so it's a declining market. Anyone would be nuts to be trying to enter it at this point.
I did retain all the rights, but other companies published it under their branding. I ended up getting somewhere between 20-30% all up. I'm not rich, I still have to work for a living. They burnt through all the revenue. The main company that was publishing it moved to San Francisco, hired offices and staff, and burnt through all the capital almost instantly. I just banked mine and used it for travel (for a decade).
oh, and I dont really have any idea how quickly the revenue will decline. I'm surprised it's still making some money now actually. The market may take another decade to completely dry up though. The data recovery stuff does work on digital cameras / SD cards, external hard disks, USB sticks, etc. I'm not sure what people currently buy it for generally.
Cool stuff. You are the same person that built a OS X file access filtering app but didn't publish it, right? I think you were considering open sourcing it, any news on that?
I did publish it, but it didn't sell well, because our marketing sucked. I'd give you the source code if you asked for it I think. I don't think it's really worth open sourcing at this point, I doubt there's much interest in it.
I have tried open sourcing other stuff, and it's been completely overlooked. I guess you have to promote it somehow. But I've tried putting stuff on GitHub, and I don't think anyone ever looked at it. If it were to have an audience I'd do it.
I designed some of the electronics and wrote some firmware code for the Bell AH-1S Cobra in 1978 1979. The system is still flying as I see the external parts of the system in news clips. Does that count? Beat that!
Late 70's. I wrote the operating system for the Control Pak EM system sold as the Barber Colman Network Supervisor building automation system. Thousands of systems were installed and many are still in use. By cracky. Er, what was the question again?
I left the company in '87 and lost contact with them years ago. The system was 8085 based, ran a preemptive RTOS written in PL/M and assembler derived from RMX-86. The network was optically isolated RS-485 9600 baud. It was configured using Template Block programming, where the blocks acted like little HP RPN calculators that were linked together to build a control sequence. Its primary distinction was its ability to do user generated "direct digital control logic". The OS fit in 32k.
Barber Colman OEM'd the main logic board from Control Pak and put them in their own box.
Barber Colman's QC engineers were hard core SOB's and they put that system through the wringer, trying to break it in a million ways. They had a special smile when they had found another bug or a screw terminal they could zap with a spark generator and lock the system up. They were unhappy when they could not break it anymore. That's why there are still some Supervisors running today. They are tough as nails. I owe those guys a lot.
I do software consulting in building automation and control systems, but mostly I build a mouth operated game controller for quadriplegics called the quadstick. That has been the most fun thing I've ever done.
In 1999, I created the r_waterripple variable in Quakeforge which has propagated to most subsequent Quake ports. The implementation may or may not vary, but all projects seem to have carried the variable name. I also contributed pk3 unpacking and resurrected the Solaris port, either of which may have code circulating.
Also between 1999 and 2001, I was involved in the LiViD project where I worked on a port to PowerPC. I don't recall any patches actually landing into LiViD because it turned out that the bug was in GCC itself, a bug I was told must have existed since the mid-eighties. I didn't directly write the GCC patch, but did debug the compiler error and worked with the GCC team on the fix. This directly resulted in a port of Xine to PowerPC. (LiViD and Xine are early projects for multimedia and DVD playback on Linux) Xine exists today, but it's unlikely any of my code is in it. While the GCC fix is not my code, the fix itself still endures and exists because of my interaction with the project.
It's a newer example, but code I wrote simply as a demo for the Cairo graphics project back in 2004 became integrated into Tuxpaint and is still used today for rasterizing SVG graphics into stamps.
When I left my former employer in 2014, they were still attempting to get their invoices off a FileMaker database and into Quicken or something of the sort. That particular database was in service when I started 10 years prior, running in FileMaker 3 on a Mac clone. It's been upgraded over the years, and was running in a Windows VM when I left - but it's likely still there.
The smaller the userbase, the more likely the code is to remain in service forever. The oldest code I've written is http://www3.amherst.edu/~scrutiny/about.php, which has gotten a facelift since I wrote it in 2004, but otherwise seems to have the same functionality and code backing it.
Pretty much everything professional is gone...hell, the only employer of mine that is still in business is Google. When I left them in 2014, about 3% of the code I'd written for them was still in production, and following the rule above, it's silly stuff that nobody ever sees, like https://www.google.com/search?q=deubogpiegpj&tbs=qdr:h (that's the no-results page when a tool is selected).
The Google link? It's a nonsense query that I figured would have no results (better read it quick, before Google indexes this page ;-)), which is the only way (outside Google) to show off the no-results page.
Holy Smokes! I Loved ToneLoc. I use to leave it running for days at a time hidden in my closet. I can still hear the clicks from the modem, as it cycled thru numbers hours after hours.
I stopped using it after realizing all the misconfigured PBX's in my area were usually car dealerships.
P.s. I just bought a modem not too long ago. I use it to read CallerID and try to determine if a call if friendly, or a robocall. It doesn't click tho. :( I miss the click.
I posit if you want to make sure your code survives you, write video game code.
Nevertheless, my own examples are all non-games. In the early nineties I wrote a program in Turbo Pascal to manage grades and print report cards, I heard one elementary school in my home town was using this until 2012.
On one of my first web programming jobs, I made a cold fusion-like template interpreter and ecommerce engine in C, that was about 1998. One completely online-based company that we launched with this software kept on running on it until it was sold two years ago.
In the early 2000s, my startup produced a web content management system that I wrote most of the code for, and sometimes I still get usage questions about it even today (to be honest, knowing that code is still used in production is not a good feeling).
Oh, I just remembered: around that time I wrote some microcontroller code that went into a certain brand of PA systems for TV studios, I'm pretty sure that's still in use...
My oldest personal project is a chat place where RPG players can meet up and roll dice, I think that launched around 2003 in some incarnation and though it's getting updates and extensions from time to time, the core code is almost unchanged: https://rolz.org
> I posit if you want to make sure your code survives you, write video game code.
I dunno, firmware seems like a pretty safe bet too. I wrote seek algorithm firmware for Quantum's Atlas series of SCSI disk drives in the late 1990s, I suspect there are still a few of those spinning out there somewhere.
Our lead servo engineer (and a lot of people in the industry) were strongly influenced by Franklin, Powell, and Workman's book "Digital Control of Dynamic Systems," and IIRC there's a chapter devoted to disk drive control systems in it.
I worked a bit on the seek algorithms, but I also worked on the repeatable-runout cancellation system, which was actually a lot cooler to work on but less interesting to most people. It basically did Fourier Transforms to compute "predictable" errors staying over the track caused by things like disk shift or "potato chipping" of the disks. That error could then be injected back into the voice-coil motor to help keep the heads in the right place.
It was all written in a very low level assembly language on a custom ASIC we designed in-house with no floating point arithmetic. :) That was almost 20 years ago at the very beginning of my career and it's still some of the coolest code I've ever written. :-/
In 1990, during a summer internship at GE, I wrote a program that scheduled electric motor production at like 7 factories around the country. You would download the next weeks worth of orders from their timeshare system, which seemed ancient then. Someone had done a time-motion study of each motor model and determined how much time each motor needed in different stations. They wanted each day's schedule to use roughly the same amount of time in each station.
This was after my first year of college and I really knew nothing about algorithms. I wrote a horrific program in BASIC on a PC that did what I know now is a greedy bin packing solution. It created a least squares metric and tried moving and swapping orders until nothing improved the metric.
I was shocked to hear that 20 years later they were still using that same program.
No, not a BBS door, but an actual door, written in Second Life's LSL (Linden Scripting Language). You'd think making a door should be pretty simple, but as the engine had no 3D primitive (prim) that had an axis on one of its edges, doors were often pretty awkward workarounds, either involving linking the door to a cylinder or worse, rotating and then moving when the door was opened or closed.
This script when dropped into a basic cube prim shapes it into a door, applies a texture and most importantly, cuts the prim in half so that the Z-axis ends up on the side and it can rotate around and act like a door in only one prim (the prim allowance was limited, so this mattered).
The script also has several workarounds for engine funkyness, including one where it automatically moves back into position after every cycle to counteract "drift" - otherwise, due to accumulated floating point error, the doors would slowly drift out of position when opened and closed many times.
I know it is still in use, because Second Life still forwards messages to my account to email, so occasionally I get gems such as this:
> [16:04] distresseddamsel: hi there, i just purchased your wooden slave kennels and i can't get into it. I tried to follow your istructions on how to change the group, but when i edit the door, the option for group is greyed out.
Apparently my doors have been used in all sorts of items...
People still play the Warcraft III map I made in 2006, mostly in Russia. It relied heavily on an extension of the scripting language called vJass created by a genius eastern european hacker named Vexorian and was one of the most advanced of its type for a while.
It was also ported to the DotA 2 engine, where it has millions (!) of subscribers.
If we're talking maps as code, then I have a few Quake2 maps out there bundled into some map packs, those are probably still getting some playtime somewhere...
Oddly, one of the maps ended up being used by some guys for a academic paper they wrote on latency in multiplayer games:
I also did some gfx stuff for Quake2 & 3 , but got a cease and desist letter from iD Software, so had to take them down - didn't stop it all ending up in many mods and pak files out there anyway.
Finally, I wrote a MUD Server for Windows, complete with a GUI based world building toolset, which got placed onto a CD-ROM, without my consent, that shipped with a 'How to write multiplayer games' type reference book (and had a section of the book dedicated to it) - I never did manage to get any recompense for that...
Now if only I'd bothered to finish coding and release all those great ideas I've had over the past 25 years...
Hmm, my understanding was that he was from Eastern Europe, but I could be wrong about that. I want to say it was in his location line on the wc3c forums for a while.
Occasionally, users of a piece of $10 shareware I haven't updated since 2005 email me demanding a refund because this software they bought 10+ years ago has stopped working on El Capitan. I refund their money because it's not even worth my time to argue with them.
I get you, and agree on general principle, but I also have to consider what my time is worth. I once calculated that even a single customer service interaction cost me far more than ten dollars at my standard billing rate. If I want to argue with implacable assholes, I'll go pitch a VC or something.
Instead of abandoning your program, why not open-source it? No money, no nagging customers. If someone wants to make it work, then they can. You can then deny responsibility for maintaining it.
In 2001, I wrote a tag balancer (for HTML input, it also did some rudimentary XSS filtering) in PHP and then translated it to Cold Fusion (I was applying for a CF job and figured it might be useful to actually learn it).
I believe that both variations are still running, the CF version on Metafilter, and the PHP version was used in B2, which became WordPress. A few years ago, I was asked by the WP team to relicense the code from GPLv2 to GPLv2+ and sure enough, it lives on with relatively few modifications in WordPress: https://github.com/WordPress/WordPress/blob/b1804afeaf07eb97...
Perhaps most notable, is that I wrote it w/o having taken a compilers class or having much (any) understanding of stack-based parsing, but it still lives on, so I guess it was good enough to get the job done.
> Perhaps most notable, is that I wrote it w/o having taken a compilers class or having much (any) understanding of stack-based parsing, but it still lives on, so I guess it was good enough to get the job done.
I have the luck of having written GPU code on the base pixel shader on a title (Halo 4) that sold on the order of 10 million copies, first game I ever worked on. A back of the envelope calculation for how many times this code has been executed since 2012:
A section of macro assembler written in 1983/84 that I wrote that validated the MICR encoding on the bottom of a cheque ran as far as I know every day without error until at least 2007 processing 30-40% of the daily cheques in a European country It may still be running but all the guys I knew are gone! I'm the reason banks have technical debt. They'd track me down every 10 years or so when a major change was required. I also have a C++ system I architected and built in 1992 still running round the world. The codebase has been refactored to some extent as it was originally designed for Investment Banking but it now runs on line gambling, who'd have thought it?
In 2008 I wrote some VBA scripts and built an Access database as part of a dashboard used by suits at an insurance company to track sales stats. Pretty sure it's still in use.
The suits also made a decision to open a third call center based on some staffing and cost analysis done by me and my boss. We used two totally different models (and argued a lot about which model was right). The director said, "The conclusions you guys came to were within 1% of each other, so it must be right. We're going to move ahead with the new center." That center is still up and running.
The thing that gave me chills was that no one told me the analysis would be used to make a $25M decision. I thought it was just skylarking and hacked it out with some formulas in a 3-page Excel spreadsheet in about three hours.
That's intriguing... Some obvious questions are: if you had known, would you have spent more time or just been "more serious?" Would you have had better answers after more time? Did the other person do the same level of rough estimate, but with a different model?
I wouldn't have spent more time, and I was serious. I had done a lot of similar work for a different call center in the late 90s so I knew my model worked. I did it in Excel because I remembered the calculations but I'd forgotten how to code in whatever it was we used back then. (Now I can't even remember what it was we used. I think it was Lotus 1-2-3, maybe. I'm getting old.)
The other person's model used a different approach to the problem, using variables that I completely ignored. Turns out he had been sweating over this problem for a couple of weeks, googling for methods and models and massaging some complicated VBA program he'd built. (He loved VBA, go figure.)
When he got to his answer, I said, "OK, now add 10%." He exploded, "That's what drives me nuts about this! Every paper takes you through all this complicated math and detailed calculations, then at the end they say, 'Add 10%'! What the hell!?"
From 1994-2001 I worked (in a small team) on a C++/Paradox school administration system; it's still in use today in hundreds of public schools in South Australia. I think they've tried to replace it via tender at least once, but haven't found an affordable / suitable replacement.
It was quite amusing to get invoices from my daughter's (born in 1996) school produced by this program on a format I had laid out.
There's still, AFAIK, an easter egg that displays the name of the people that worked on it back in the day, one just needs to open the right form and double-click in the right place.....
I'd be curious to know how many of these programs/scripts/etc. have easter eggs hidden in them. It seems like you're the only one to mention it so far.
I was a teenager and around 1998 I wrote a Delphi program as a mother's day gift for my mother that works as accountant in a big public institution. The program automated counting banknotes (they still have some people that want to receive their monthly salary in cash, and they have to count the total amount and the number of each banknote kinds separately to catch errors). It was just a loop with modal dialogboxes for entering each person's salary in 2 ways. The program also generated a text-file report and allowed to print it.
I was a noob, and the code is horrible, I even used floating points (doubles) for money :/ so there's accuracy bug that happens for big enough numbers. They apparently still use that program (at least a few years ago they did), and they divide the numbers before they become big enough as a workaround for the bug (but then the reports have to be fixed by hand).
Just perusing all my projects big and small over the past 20 years going back to college and they're all gone up until less than 2 years ago. Every single one. I always say you need to treat these projects like a Tibetan sand painting. Once it's done and perfect, just wipe the slate clean and start over. It's the journey, not the destination.
Yeap, I didn't have access to "normal game computers" like Yamaha MSX, Spectrum, Atari, etc but I had access to IBM PC/XT(well also to IBM System/360:). There were no toys in those days, so we(my friend and I) wrote a lot of clones of tetrises, snakes, arkanoids, space invaders using a text mode. The 8086 assembler was pretty easy and fun. Any program at this age it was like a new adventure. All this was much more interesting than any of the games.
This reminds me of the Monty Python competitive nostalgia sketch "Four Yorkshiremen", except re-done for coding:
"Compiler, we used to dream of having a compiler"
"I did me coding on punched cards w'a big rubber band around 'em"
"Punched cards, you don't know y'er born, all we 'ad when I were a lad were an abacus".
"And it were a 5-channel Baudot abacus an all."
Some municipalities in São Paulo state in Brazil are controlling their budget using a Dataflex 2 application I helped write in 1990 and 1991. I realized that the application still runs because of a presentation about the ongoing effort to migrate it to Python.
Sadly, the educational applications for Apple IIs I wrote in the mid 80's are no longer in use.
The web UI for the Transmission bittorrent client, around 2006-ish. I wrote it in prototype.js and then discovered jQuery, and ended up rewriting the whole thing.
...with OpenACS probably being among the first, web frameworks. So, that's a legacy that goes back to one of the first, high-traffic sites in existence.
"Extremely high performance and scalable database backed websites. The technology behind OpenACS powers some of the world's busiest web sites, such as AOL.com, Mapquest.com, Netscape.com, and Moviefone.com."
I wrote an in-MUD game for a Wheel of Time-themed MUD around 2005; I stopped in last year to see how things were going and was pleasantly surprised to see that not only were my game and helpfile still in the MUD, but that there was an ongoing game as I logged in. Satisfying to know that something I made over ten years ago is still being enjoyed.
It was an adaptation of the Mafia/Werewolf game called The Darkfriend Hunt. You'd have a Darkfriend, Aes Sedai, Warder, and I think a few other jobs; the goal was for the players to find the Darkfriend(s) before the Darkfriends killed everyone.
I started a Mac app in 1988; the same code base (with tons of people touching it since I last saw it in 1994) is still a real product for sale today. No idea why.
I wrote a fax->email gateway in 2002 that's still in very active use.. wouldn't be that remarkable, except most of the servers are still running original equipment with original hard drives!
Anyone have servers running 24x7 with hard drives older that that?
I know of a case at a company which had important servers running for so long that they were very careful doing the final migration off of them, because they were certain that once they brought them down, they'd have unrecoverable disk crashes if they tried to spin them up again.
A system information app I originally wrote for Windows 98, but subsequently added support for NT-class Windows client, still runs and works almost perfectly today (with graceful feature degredation) on Windows 10. I do a tiny amount of work for every new Windows that's released, to support it. Sometimes no work at all. The codebase was originally written in 1998.
Nobody uses it now apart from me, but I still maintain it.
SA-FileUp, one of the first ASP components, originally written by me in 1997 to receive web based uploads. Still sells enough licenses every year to put my kids through college.
And a big thank you for writing this! Used this on many different projects, including a ASP/VB6 app from 2006 that I'm still supporting in my spare time.
I wrote an expansion to the original SharePoint Team Services (STS) back in 2002. I was told recently by a student that their former employer (small mom-and-pop biz) still used STS and my software was why.
It was called the SharePoint PowerPak; it added a few features that "inspired" built-in functionally in later versions. Was primarily written by hacking apart the insides of STS and sending a few emails to some MS folks to get clarification on some undocumented thing that I was interfacing with. Color-coded calendars, categorized content in document libraries, tasks with an "email assignee" workflow, a Windows XP theme for STS, and a few other features. Was actually really proud of that one!
I then worked with another dev on a search add-in for STS called SharePoint PowerSearch. It was clever in that it used the little-known "_search" target for <a> elements that, basically, opened the link into a sidebar frame that IE had back in the day. The mom-and-pop business had that installed too.
Those tools, along with a community site I ran, blossomed into the SharePoint training and consulting company I own today.
So that's two 14-year old products still in use at a small business in the Philadelphia area. Made me smile to hear about it.
My "personal" website that I made when I was a kid at 2001. I think that I uploaded it to the Geocities free hosting and soon forgot about it. Then a few years back when I googled my name I stumbled upon it haha It is still up after more than 15 years on god know which free hosting and server, it was so funny. And of course it is used as a joke now by my friends :) And of course I have forgot my credentials long long ago (even if I knew where to login in the first place).
Heyo, fellow Serbian friend! Started the same as you, with free websites, back in 2009. It was on Zymic IIRC, I was 9 years old at the time... http://i.imgur.com/8w46hut.jpg Unfortunately, my first ever website, megatelevizija.vndv.com, wasn't archive anywhere and the server that used to serve the website is gone. However, I've been more lucky with Freehostia, who still serve my website: http://sve-i-svasta.freehostia.com/ After 6 years since it's inception :) And it's not yet been hacked, which amazes me lol. I still remember all my login credentials, they're still fresh in my mind, it's not been that long.
From 1997 thru 1999 I worked on a data management system that is still used in the nuclear industry. Initially VB5 (maybe even VB4, I think) and then moved into VB6. About 150,000 lines of VB code over 2.5 years with two developers working on it - myself and a project manager. One of the first applications that I wrote as part of this system was a 2D, steam generator tube sheet mapping application. Link to the system is here:
Screen shots of the tube sheet mapping application are in that PDF. The system was eventually featured in Visual Basic Programmer's Journal in September of 1999. I was 24 at the time and I felt like I had really accomplished something!
A few things that I wrote as far back as 2000 and 2001 are still in use. Just checked one right now and the login screen is still the same - no doubt passwords have changed, and it says it's running on php 5.5.9 on ubuntu - they've done some upgrades, and I can't imagine the backend is 100% the same. however, the url structure was built to do something funky, and that is still in place, meaning they very likely didn't throw it all out and start over (and the login screen is the same too).
Had another call from someone last year saying "x is broke" and... piecing stuff together, I realized they were still using something built in 2002, and using it 13 years later (now 14 years). Trawling through old code was weird - a mix of pride - much of it was pretty readable and understandable - and regret - many 'cut corners' I wish'd I'd not cut now, as it made the fixes take longer.
That said, I think there's something very useful about having to deal with your own code 5-10 years after the fact. You'll have a greater appreciation for why 'the right way' is what it is, and ime, I've found that code tends to be more maintainable and understandable by others when it's been written by someone who's had to maintain old code themselves (usually their own).
Doesn't mean newer/younger folks can't write good maintainable code, but it's a skill that seems to come with age more than anything else.
In one case, the entire thing was far more self-contained than anything that would be written today. This was PHP, and there wasn't much of a standardized ecosystem - not sure that PEAR was even a thing in 2000 when this was started.
I bet I have most people beat here, especially with web software.
I released the first content management system for websites back in about 1995. It was a fully database driven system with different post types, much like WordPress in design, and editable page content.
About 15 years ago, I wrote an entire web-based system for managing an online grocery delivery company. The whole site runs off of version 2 of that content management system, which had lots of the version 1 code in it, which is now 21 years old.
And yes, they are still running their whole business off of that unmodified system today! I should have put them onto a monthly maintenance plan. ;-)
Sadly, I hear that they will be finally replacing it soon, putting an end to that legacy code.
The sad part for me, is that I wanted to be the one replacing it. I had a vision for that company that I had been thinking about for years, and pitched it, but he wanted to keep his company a lifestyle business that just gets by. The idea of growing and making real money scared him off. The new developer got paid $5K over the last 2+ years to create it. Curious to see it when it comes out.
Apparently people are (or at least were) using this perceptual hasher[0] I wrote in PHP a few years ago. I'm embarassed by it because I know I will never update it, and it's probably badly written. Luckily there are lots of forks.
I also have a lot of old javascript hacks that are running on various Adobe Business Catalyst sites for people. Sometimes I get reacquainted with code I wrote months ago and forgot about entirely. I have actually asked myself "who wrote this" only to realize... it was me.
I'm still using a couple of Lisp macros I wrote in 1980 [0]. I think a few other people are using them too. I've improved them a little since then, but the basic concept is unchanged.
AutoCAD has had a LISP interpreter built into it for ages; I imagine there are various engineering design firms that have been using in-house macros for years and years.
I'm not actually sure it's still in use, I hope not. I wrote a small Python script for synchronizing student address for a student organisation at the local university.
The students would forget to tell the student organisation when they moved or got a new phone number, but they'd always remembered to inform the university.
Importing data meant getting an email, containing a CSV file, parse the data and lookup the students in our own database and update their information. Because I'd just setup the qmail mail server, and learning about .qmail files and mail queues in general, I just hooked the script into the .qmail file. I figured it would save me the type of dealing with the IMAP server.
I think it was six years later, maybe a little more, when I got a call from someone that the student organisation, asking if I could explain how the student address information was kept up to date. They knew that the data came from the university administration, but it just sort of disappeared into the belly of the mail server.
Back in 2000 I went to work for a company named Voice Data Solutions in Raleigh NC. We got on the e-payments bandwagon and created a site called ccpaymentservice.com that allowed you to pay things like water bills, utility inspection fees, etc. online (a lot of our existing customers were municipal governments and the like). I've been gone a long time, but looking at the site, not much seems to have changed, and I suspect that at least a few lines of code that I wrote between 2000-2004 are still in use there.
One bit that I hope is gone is the ONC RPC stuff I wrote for talking to the credit card processing engine we were using back then. That was pretty ugly. It was my first programming job, I'd never done RPC before, and I hacked up something pretty kludgy to make it all work. Not my proudest moment. :-(
2000. VB6. Manufacturing workflow / management system, BOM..... I did some consulting work at the same company a year ago and that system was still chugging along. They had pretty much rewritten / replaced everything else around the place but apparently didn't see a need to change my module. I was amused to have a couple of guys come and ask me questions/advice, and all I could do was sympathize.
Last I checked the nmap autoconf script still had code that I wrote back in 1996 when I ported what Fyodor wrote up in Phrack to Solaris, NetBSD, Digital Unix, SunOS and possibly HP-UX and/or IRIX. It probably still has support for doing "RST" scanning (and i think determining if the port is open backed on the windows size in the packet that comes back, which worked on several TCP stacks back then...).
on rereading this today, i remembered it was the ACK/th_win portscanning method that I added to nmap (after independently re-discovering it), not the RST scanning method which I think was already in the Phrack article... lotta brain cells got a little foggy in the past 20 years...
I wrote a bash script for generating manuals for GNU software in different formats a decade and a half back. The script made it's way into GNU texinfo, and has undergone several revisions since. It is still used in order to generate manuals for different software on https://www.gnu.org/software/
1995. Pinball game code for Williams Electronics "Jack*Bot".
I also don't count it as code, but the Pinball Expo 1994 website I put together before that (in Notepad, natch) is apparently still up and running at Linköping University in Sweden:
The FORTRAN code that I wrote in 1996-1997 for Distributed process control systems is still in operation controlling several multi-billion dollar manufacturing facilities.
For a second I thought that was Formula Graphics language or system. It was one of Flash's competitors back in the day. I toyed with it a bit. Nope. Just Lotus scripting language. Never messed with that one.
Formula Graphics seems to have really disappeared as it doesn't even have a Wikipedia page. There's a CNET download that might be it. Not trying it, though.
I feel like I have stockholm syndrome after using Notes from several years. I hated notes, but I really miss the 'Copy to New' function from creating new emails from already sent items.
Anyone know of a client that supports this other than Notes? (sorry for the hijack)
Not quite. I have to edit the subject, then add recipients, then edit the body...
Copy to New just gave the identical email, recipients and all, in a new email window. For sending things like monthly reports to a list of people, this was fantastic. 'copy to new, delete attachment, drag+drop new attachment, send'
A Microsoft Access 97 database (written in 1997) is still the "system of record" for all instrument wiring diagrams within the biotech plant. I was recently asked to review it (19 years after I wrote it) and to develop a step-by-step for how to add reports to it. To put this in perspective, this biotech is the largest in the SF Bay Area, and the plant represents roughly 1/2 of the world manufacturing capacity of this type. And its single source of truth for how things are put together is a Microsoft Access 97 database.
Not sure, but a reasonable guess is at least 1998, the "gentoo" GTK+ file manager.
I still have the conversation (from 2000) with Daniel Robbins, founder of the Gentoo Linux distribution, where we discussed the name collision. There was no issue, we just both agreed to peacefully co-exist. :)
Very cool, since I learned that he, like me, came from an Amiga background. Although he out-cooled me by a laaarge margin, having worked at semi-legendary game company Psygnosis.
I was at a company from 2000-2003, and wrote a lot of its software. That company is still around, and they also licensed their software to a spinoff. I was brought in for some consulting to the spinoff and was equal parts pleased and horrified to see that some of my software was still in use and pretty much untouched. Horrified because back in 2002 I was already agitating that it was time for a rewrite for one part of it.
Almost forgot: I left in 2003 to join a startup which was then acquired by a very large company. Not only is that software still around, but the changes I was agitating for in 2009, when I left, have been implemented! I'm much happier about this one.
A website demo using XML and XForms before they were standardized scripted into HTML that's still running at a site per an old friend. Well, at least a few years ago. It was one of about 30 examples in a set. What they couldn't figure out is my site was blank on every browser despite everything organized by a INDEX.HTML file they loaded. The trick: one of the letters in either the file's name or name a preprocessor gives it isn't the English letter it appears to be. ;)
And apparently they didn't delete the shit because (a) they're lazy and (b) people just skip over it assuming it's a browser error instead of typing "INDEX" in their address bar. So, they left it in there as a successful example in a demo set. I got a glowing recommendation, too, since I showed the original ("bleeding-edge, web tech!") to the person in charge who also thought the demo glitched. Funny all around lol.
Note: This was a bullshit project rather than paid or important work. Not what I'd do if someone paid me for quality work haha.
Roughly a decade. The VB6 program that I wrote to test a prototype of a measurement instrument, is still used in the factory, supporting manufacturing of the released product.
It's a couple thousand lines, and nobody wants to touch it with a ten foot pole, but it also has no known bugs, and will live for the remaining lifetime of the product.
I don't think I have ever heard that phrase. Every non-trivial piece of software I have ever worked on has a collection of bugs that just get carried forward indefinitely ie hard to fix, only affects a small number of people and there is an easy work around so just ignore it. The idea of having zero open bugs is... foreign.
This is an extremely self contained program, doing a particular set of things over and over in an isolated environment, with about four or five users, and "bugs" are generously defined as "bugs reported to me."
I wrote a set of Windows device drivers in the 1998-1999 time frame for machinery control software that has been in continuous use since around 2002 (when the product was released). There has been a grand total of one bug reported. And that one required a hardware fault before it would be visible.
Many of these examples are older than me, but I wrote a userscript which writes a bash script which rips lossless audio from a music streaming service which is no longer with us when I was 14. It tags the files appropriately, and makes a release suitable for upload to a well known private music tracker.
I released it to a private group of people, it has been kept a secret within that group mostly and has since been extended to include support for many different services and integrated into complex automated systems which automatically rip, package and release new music as it is released and also old music as it is added to the request feature of the site. I released a much better pure bash version when I was 15ish I think, but many people still use the abomination of a userscript which writes a bash script as far as I am aware.
Oldest surviving code dates back to 2006. It's a simple PHP script, that generates an Excel file(without the help of any libraries. I was really into not-invented-here then) containing information about banners shown for a week. If it works, don't touch it, right?
Second one dates back to 2008. It's a webapp written in Django for real estate agents. Full of bugs, requiring careful input of data in order not to mess up the listing. I went on a 3 day hackaton somewhere back in 2011 to fix all the bugs for free and got some very angry calls, because things weren't working like they used to before. Turns out people were aware of these bugs and made their own workarounds. I was forced to roll back all my changes and backport just a single change - the ability to reorder images by using drag and drop.
Fortran is still being actively used in academia -- the example I know of is running mathematically precise seismic simulations on supercomputing clusters. Some programs have likely been handed down by multiple generations of grad students.
The core of MessageLabs (now Symantec's) cloud anti-spam system. 2001. Still processing around a billion emails a day. That Perl code stood up amazingly well.
Back in the late nineties I was working for a small ISV and was a dev lead on a project to develop a C++-based visual programming environment and runtime for monitoring SCADAs and PLCs. It got used by a few customers, but ultimately wasn't successful and was discontinued when the company did what we'd now call a pivot.
I moved on to a company in the financial sector and my employer acquired the rights to use this software (a decision I had nothing to do with). We ended-up using it as a way to embed customer-specific customisation scripts into a cloud-based product - something that it had never been designed to do, but which ultimately worked quite well.
A couple of weeks ago I finally replaced it with a much smaller and more focussed body of C# code, 16+ years after it was initially developed.
I haven't dug around in the Miranda IM code in years, but I hope there is some of my code left, even if it's just 1 line, would have been written in 2000.
I do know there are plugins I wrote for ACDSee as a coop student in 2000. I can still see some of the icons I drew.
Wrote a music library organizer and MP3 player in 2003 because none of the existing options worked the way I wanted. The initial implementation was in VB6, later ported to VB.NET. I don't use it anymore, but at least one of my family members still does. It's really fast on modern hardware and Windows 10.
Unimaginatively named "Music Player", it remains the only music library organizer that I've used so far that completely ignores all the ID3 tags and respects the way I manually organized the files into folders (artists) and subfolders (albums). That's supposed to be a feature, not a limitation. Back then I had a lot of pirated MP3s with horribly inconsistent ID3 tags ;)
I have 6809 code running under FLEX09, in my 6809 emulator, running under my XP VM, on my OS X machine. Games, diary software, editor I use to read my (really) old snail-mail records. Still works fine. This stuff is circa the late 1970's, early 1980s. I have paper tape and punch cards carrying my software from previous systems, but it's not actually in use, so... :) Lots of people are using my Flex/6809 emulator, REFLEX, which was first released in 1985 (for the Amiga) and later ported to Windows. It's still getting downloads today, and it still works fine.
I doubt this will impress, so much as amuse. But I'm pretty sure the oldest thing I've written that's still in use is a series of popular scripts used in various Warcraft 3 maps and mods. Written circa 2003 if memory serves. Mostly they focused on adding RPG-like elements to gameplay: camera lock on individual PC units, unit swaps to "upgrade" character classes, and so forth.
At the time, JASS (Blizzard's scripting syntax) was largely procedural, so this was some brute-force work that was a real bear to make usable across different mods.
In a mostly proprietary environment that's really hard to say. In the world I live in (Germany software business world) few things get really deleted once they made it into the daily life of a company. Nearly all companies have code that was written like 5 years before their foundation by one of the glorious first 3 guys and that is still used in most of their major software products. The tricky part is getting even awesome software into these daily routines.
Hell, I'm quite sure that some of the first software I wrote is still used in SAP despite me never having worked for them.
I wrote most of the code for that (in MacroMind Director) in 1995 (I remember that because we needed to change the way we did a bunch of Audio when Windows 95 came out in about September that year - in Win3.3 we could do multi channel audio - but in Win95 we on;y had the two stereo channels so we had to mix a bunch of multi channel sound - we came so close to blowing the size of a CD ROM after that!)
Umix, a program for adjusting soundcard volumes and other features in soundcard mixers. Wrote during 2000 - 2003.
Surprised to see it's still being downloaded actively, supposedly by Linux distributions that include it still for some reason.
Was tired of Aumix back then being buggy, so I wrote my own replacement. I think my biggest wtf moment was this being included in the FreeBSD project (at least 4.0), and many Linux distributions also, so it's now out there forever.
This is hardly old (because I am not that old yet) and not a big deal, but it's an interesting story of how your code can be re-used when you least expect it.
Back in 2005 I was starting my Masters degree in Biomedical Engineering. I was working on a project where we did processing on the raw RF data from a diagnostic ultrasound system. The system manufacturer had just created an "RF module" that gave us access to this data in a raw, proprietary format. We were their beta testers and they provided no SDK. Since most of our research started with analysis in Matlab, I reverse-engineered their proprietary format and wrote some Matlab functions to load the RF data into Matlab data structures. I assumed this whole time that these scripts would only ever be used by me. Before I finished up my Masters, I made sure I documented all of the code that left behind. None of this code was "online" (these were pre-Github days) and it was only stored locally on my machine, available to my lab members. Well, about a year ago (2015), I heard back from a former labmate who is now faculty at another institution. She mentioned in passing that that those scripts are still used today by anyone who interfaces with that system! I had to do a double-take before I believed what she said. I guess the scripts got e-mailed around and have found some use beyond my own. I was both proud and alarmed to hear it!
I still sell about two copies/month of PostMe, a (german) desktop email client. The core is 16-bit code written in VB3 that dates back to 1996. It runs fine under WinXP and Win7/32.
Around 1989 I wrote a PC program that replaced an Epson HX20 storing injection molding machine programs on small cassettes. 2000 I got a call the molding machines had been sold and the old IBM PS/2 ditched. The new owner asked me if I still had the program. I re-mounted my old QIC streamer sleeping in a box, installed Borland Turbo Pascal in a DOS box in OS/2 and could recompile it from source. Got the same price as I originally sold it for again ;-). Still in use. The Epson HX20 is gone though...
FFT library for .NET written in 2001, still seems to be fairly popular (and it got included in quite a few other larger scope libraries as well): http://www.exocortex.org/dsp/
I wrote the netcode, among other things, for Army of Two: 40th day. I suppose so long as the matchmaking servers are up then the code is available to be run. Last I checked for active games was well over five years ago, but there were several thousand players at the time.
All of the code I wrote earlier has long since been abandoned, I hope. There is the CBT application I worked on for BP that was for safety training operations for oil extraction in the Gulf of Mexico; and I -really- hope that it's no longer in use.
In 1996 I started work on a 2D rendering engine in ARM assembler which did alpha-blending and vector antialiasing. Substantial parts of it were later rewritten in C, but the core pixel-blitting loops are still there in ARM as far as I know. It shipped hundreds of millions of units and was at one point present on the majority of mobile phones manufactured in Japan, Korea and Taiwan in the mid 2000s. It is still going, and some software products are still being shipped today which contain that code.
Geoff Streeter, one of the developers at dyalog.com says:
"I suspect that the oldest untouched code (of mine) in the interpreter is the code for balancing a symbol table. This is going to be early 1982 and is untouched since it was written. It implements a technique from Colin Day and published in the Computer Journal in 1976."
Dyalog's APL interpreter is still profitable and actively developed. Many of the source files begin with:
In 2009-ish I wrote a Java-based templating system for Autosys' Job Information Language. If you don't know it, Autosys is a horrible, horrible, job management and scheduling system. You define these little files (.jil extension) that specify not only the job definition (command, user, cron-like schedule, etc.), but also its dependencies (which job must run before this one, what runs after...). Nothing wrong with that approach, per se, but there's essentially no way to validate the correctness of a job and its dependencies until it's running live in production. Often jobs would fail to run when you expected, or become quietly orphaned by some change to another upstream job.
So I wrote a disgusting (yet fluent!) enum-based monster called JILT (Job Information Language Template), that required that every existing .jil file be rewritten as a statically-typed java enum which could then be used to spit out the entire tree of validated .jil files. The nice thing was that your job dependencies were now enforced by the compiler and could be included in CI. But the actual inner workings were a hot mess. And of course, now the support teams have two systems to maintain and ensure they remain in sync.
This was at Goldman Sachs and I hear it's still under active development by the support teams...
Ahaha damn I hate autosys .jil files! We are still using them even though we replaced Autosys years ago :(
We have an old Oracle PL/SQL system which wrote out these .jil files which were to be picked up by Autosys, built in around 1998. When Autosys was replaced we didn't touch the old PL/SQL code, .jil file parser was written so the jobs could be scheduled through Quartz instead.
Would have been easier to replace the whole job creation and scheduling system instead of just the Autosys part.
I was the author of a 2002 quality assurance software written to receive images from a microscopic camera attached to a robotic arm and turn them into 3D models as part of a friend's doctorate thesis that was later sold to mercedes as a prototype.
One German engineer later noticed that it contained my copyright, located my address and subsidized me every time the system was commercially sold up until 2008. Not sure if it is still in use, but I am thankful for his sense of justice.
I guess my horrible JavaScript for my Geocities page is probably still living on an archive.org server somewhere. Most of that was cut-and-pasted, though, so probably wouldn't really count regardless.
I've got at least one major project I know is still in use that's pretty close to ten years old now. I have reason to believe that an Access application I wrote in 1997 is still in use (though I hope for the sake of its users its been long since retired!) I've got bits and pieces of code I'd be willing to bet a beer are still in use, but nothing I'd call a major project.
Back in 2006 when JSON was new and there was no native support of JSON to convert MySQL resulset to JSON, I wrote this class which won 3rd prize. I see people still download and use it.
I've got some code in part of a corporate-scale backup system that I wrote in 2008 (right out of college). The product is being put into kind of a permanent maintenance mode, so I imagine that the same code will be there for as long as anyone's using the product.
I had a hand-coded Geocities page (actually, 2 of them) in about 1995 and 1996. Should still be accessible in the Archive, or something.
The oldest code that I wrote that I suspect is still in use is RoboGen, an editor for robots.txt files, that I wrote in Visual C++ 6 with MFC. I remember working on it while not paying enough attention in my high school physics class. We were allowed to have laptops in class at the time. You can see it at https://rietta.com/robogen/.
The oldest code that I distributed - it was written by a friend of mine - is Whois Web Professional which was a whois client written in VB6. I know it's still in use because I have to maintain the version file on my website and even keep my server running Apache because its update checking was written by a 12 year old in WinSock and doesn't handle the protocol very well. If I change anything, the VB6 program crashes on startup and I get emails about it. You can see it at https://rietta.com/whoisweb/.
The French epidemic surveillance system I worked on as an intern in 2006.
We basically rewrote the whole system is PHP+MySQL (front end and back office). It was my first time writing PHP professionally and it still seems to be working :)
I haven't stayed at a job for longer than 3 years, and all of them have been internal projects with no external visibility, so I can't really know for sure. I do have a 21-line python script that I still use which I initially committed to github in 2008, so that's certainly a contender (first internship started in fall 2004).
And of course, reading that, I see my script is hugely overkill since all it does is alter the default port and allow you to pass one in -- something the one-liner can apparently do. Oh well.
MailSend ... a command-line SMTP mailer I sold starting in 1997 (with the same name as some other command-line mailers ) is still in use by some of my oldest customers. It doesn't directly support SSL/TLS, but a handful are still able to use it.
I made the AWK ( compiled AWK ) source available a few years ago:
My lightweight open source command-line MP3 player for Windows that I wrote in 2009 is still being actively downloaded and used. I've seen that a couple of people are bundling it with their home-brewed games to play music and sound-effects.
I wrote a school system using ruby on rails 2 due to the upgrade on rails 3 syntax change. It was not able to migrate database and change code since I was 1 man team on the company. I asked the company for another to help me out with the migration or change because there are parts of the system that is memory hog. It was my first project and don't know much about memory consumption of the app. Until, we are consuming more cloud resource cause I don't know the bottle neck is.
All the employees are more on PHP than ruby. It was sold to 3 school and 6 years after. It's still in use. I'm out of the company and suggested to move it to PHP for the developers to easily manipulate and maintain the app.
I went out of the company due to increase in task/ duties that I can't handle them all (customer service/ programming/ server maintenance/ explaining to my boss that I need another ruby programmer to help me out)
My first fulltime job as a developer was back in 1997 for a state university. The wheels of change are slow at that kind of place so it's possible some of my code is still running.
The oldest that I know is still in use is code for an ecommerce outsourcing company I worked for in 2003-2005. ASP/Javascript. Pre-jQuery Javascript too. Fun times.
The oldest that I'm still supporting is VB6/ASP code written in 2006, though the entire software is older than that. It's for "contingent workforce management" (temp labor) and handles the 3-way relationship between client, the supplier, and the worker. In it's heyday we were processing over $2B in payroll annually. It's now down to one client using it. The relationship is very weird too: it's me->hosting company->business company->end client. But I only have to do 1-2 days of support a month and have a pretty good contract for it.
When doing a school project, in 2009 or so, we had to record a lot of sounds, each linked to an image. The usual process of recording, cutting the ends of the sounds and saving with proprer file name was too cumbersome (we had multiple languages and some variants to record, bringing the total sounds to over 100).
Instead, I coded a small utility hidden within the program to show the image, and allow to record with a single keypress. It is precise enough that you don't have to cut it afterwards, and it auto-saves to the right file name.
To this day, I didn't find a better way to record lots of small sounds, and since it was written in C# and XNA (which has been killed since then), I keep a Windows computer around just to run it, when I need it, about one or two times a year.
There is little incentive to rewrite it until it stops working altogether, since the use is so infrequent, but each time it saves me several hours of boring work.
I wrote the code for http://lab.mrl.ucsb.edu/ circa 2011-2012 during for a work-study job. It's used for scheduling facility equipment. The original site was written in PHP4, and I scrapped it using PHP5, MySQL and jQuery. I had 0 experience at the time, AFAIK the code lives on unchanged.
Earlier than that, I wrote an Access database to manage claims for a small insurance company circa 2009. Except I wrote it in Access 98 and the last time I saw it the file was corrupted. I offered to help fix it but I was kicked out of the building for flirting with the claims department manager (actually a close friend of mine). This one may actually no longer be in use because I never split the UI and DB and it's not supposed to handle multiple users at the same time if you don't, IIRC.
Hmmm... back in around 1997 I rewrote the Synaptics TouchPad driver for Windows NT, and most of that code is still in the drivers today...
So I bet I win the number of copies still being used by nearly 20 year old code among the comments here... probably something between a quarter to half a billion of those laptops still in use...
I designed and wrote a lot of BFD in 1989-1991, and then the binutils that use it like nm, objdump (which was actually written as a way to debug BFD, but turned out to valuable in it own way), strip etc as well as some changes to the crt0 emitted by gcc. I started working on BFD before we hired anyone at Cygnus.
I kept a copy of Abramowitz and Stegun open on the desk for months... I don't think REDUCE is all that widely used nowadays, but it does still work, very well in some respects. It was closed-source at the time and was open sourced relatively recently.
I'll echo the sentiment that most of the commercial stuff I've worked on has either died or never launched at all.
Wrote an accounting package in 1986-90 mix of C and dbase and Clipper. It is still in use, went through y2k, no problem. I tried to let it die. But could not. The thing is still alive and I am porting it to C. Wasted a lot of time looking at other languages but C is still the best for me.
Worked for a telecom company right out of school in 2004-2006 on a small team doing PHP fronted sites for backend Java web services. We launched 7 sites in that 2 years and if I recall, the customer VoIP site and a site that mapped installation records from about 6 different databases into something usable by support and installers are still in use today.
The VoIP site I'm particularly proud of because it was a cross-browser fully AJAX'd (Single Page App for the kids) site built before we'd ever heard of jQuery or Prototype...and it's continued working without a single update for 12 years. PHP 4, WSDL Java services and hand written Javascript that worked in IE6, Safari and Firefox (Chrome didn't exist yet but it works there too).
1994. VB6/SQL, although it started as FoxPro and VB6/SQL was introduced in 1995 or 1996. WRAP accounting software for a financial company that was sold around 2003. Not much in use now, but I hear they still have a few clients and a small 2-3 person support team.
80s software written in Turbo Pascal largely by me for which I wrote a library in Delphi in the 90s which would run the software without changes in a Windows window while looking modern and not like a terminal. It is still used a sold in and to a lot of Dutch schools.
IRC bot in Ruby 1.6. I wrote a complete "framework" that supported plugins and hot-patching.
Some functionality: inter-channel-communication, inter-server-channel communication, offline messaging, reading RSS, working as ChanServ by commands (you can send him priv msg or message on a channel to promote you or someone else, kick or ban someone). Collecting messages are creating graphs about activity, per hour, per user or channel (so could easily see who abuses the most after 3AM), per day of week... I stopped writing in Ruby for a few years, when I get back it was Ruby1.9 and a lot of syntax changed. I know one person is still using it.
It was also my first ever application (other than scripts from tutorials), I wrote it when I was 15.
A quick'n'dirty OpenGL texture mapped font drawing class that loads gylphs though the Win32 GDI, I wrote some 17 or 18 years ago. There are much better OpenGL text renderers, that produce better quality output, use far less texture memory and can do Unicode. Yet because I submitted that thing to FlipCode on occasion still ends up in production code.
But I wouldn't even mind that if I wouldn't consider the code quality of that thing to be horrible. When I wrote that I had enough programming knowledge to tackle big projects but I still lacked the years in which I experienced how and where (my) legacy code will end up. I also didn't put too much care into things like keeping the namespace clean.
2006 for me. It is a SaaS service. The front-end has been re-done a couple of times since then but some of the original back-end code is still in place. I cringe every time I have to look at it but it works well so there hasn't been a need to re-write it.
My text editor (Assembler, then C), 1982.
Some F18 Hornet software (C, ground station support), also 1982.
Humphrey Utrasound Biometer (updates, Z-80 assembler), 1992.
Kodak Spark-based picture kiosk (Solaris 8 upgrade, Solaris patches for FAT, USB, PCMCIA), 1999.
Another commenter answered that, at least in regards to medical equipment (similarly, embedded systems code for an ultrasound machine, in 1989) -- once code is FDA-approved, people won't touch it. I imagine if the F18 software met some milspec requirement, a similar rule would apply.
In the mid 90s I wrote some A* path finding code for a game and in the process wrote a programming tutorial about it. The page got a lot of traffic and requests for code, so around 98 I wrote a version of it using a simple api but spent a lot of time making it solid and fast. It was used by several major game companies including Activision and Relic Entertainment as well as indie games and student projects.
A few times I've started a game programming job and found my code there already.
Recently someone ported it to C# where it can live on in Unity games.
In 2007, I wrote some code to make Apache Nutch capable of crawling web pages protected with NTLM, Diget or Basic authentication schemes as well as crawling web pages via a proxy server that requires NTLM, Digest or Basic authentication ( https://issues.apache.org/jira/browse/NUTCH-559 ).
This became first available with Apache Nutch 1.0. Although it was my second contribution to an existing open source project, it was my first contribution that added a new feature. As far as I know, this feature is still in use for crawling intranet web pages.
Many bank payment and loan systems are written in COBOL. Banks are so afraid to change them that there are often not even plans to upgrade them. When a change absolutely has to be made, they need to call the developers back from retirement...
As crazy as it would be to learn COBOL today, I've heard you can pretty much name your price for these sorts of jobs. They're definitely out there, too -- I saw one job listing in 2014 for a postal worker credit union that was looking for someone to pick up rudimentary COBOL from a pending retiree so they could still support their system.
I'm not so sure - I ran into quite a few COBOL developers during my travels around India. Funny thing was that in every case the programmer was younger than the codebase.
Indeed. A friend once told me that while he was studying Spring (years and years ago) his friend decided to steer toward something else: COBOL. Years later this guy is still dealing with such a "tool" - only difference: object oriented cobol - lol!
Not my oldest code but probably my currently most used code is this patch on Android Cyanogenmod (http://review.cyanogenmod.org/#/c/26167/) to download automatically MMS without switching the mobile data on. I made it to ICS, ported to 2.3 and it has been ported at least to Jellybean.
I had to do it because my mobile operator used to send unsolicited mms that kept my old android phone (ZTE Blade) in a wake lock, draining battery. I still don't have mobile data connection to this day!
Back in '97 (I was 13 then) I wrote a small BASIC program to generate a part list and assembly "manual" for industrial garage doors. It was actually developed in a TDD way (comparing their regular output files to my generated files). Actually handed over the source files which they actually maintained throughout the years.
It has been running in various incarnations on salvaged old machines and for the past 3 years in DOSBox untill january this year.
Still proud of that one.
Although I made "only" 1000 guilders (that's about $750 in 2016 dollars) on that, it seemed like a huge amount of money back then. :')
I got my wisdom teeth taken out when I was in high school, and coded this in a weekend while eating Percocet and tapioca pudding. I had no idea it was even still for download. It actually works very well for what it is (an interactive sheet of paper for use with a book)...still in use? Probably not, but I am amazed that it is still there.
The core user interface code in a point of sale system. I got a contract in 1994 at NCR to write an interface between the flagship grocery point of sale system and a new UI device called DynaKey. I was told not to polish it too much because they needed to get it out the door, and they'd go back and clean it up later. By 1995 I was writing the second version, which made the UI configurable. In 2008 I was back writing the third version, still in production today, but still built around the code I wrote in 1994.
I did a trivia game for a Mattel subsidiary in 1998 that was still running in 2008 on the website. It's not there any longer but I don't know when it was taken down. A lot of the games we developed were in shockwave/lingo and flash, so I imagine most of those came down with the arrival of the iPhone. The trivia game was just a Perl/CGI/MySQL thing so who knows how long it would have run. Was probably a security risk after a few years though, as it was my first RDBMS app.
(Apologies,) I have nothing to contribute, but I'm amazed to read the comments from so many awesome people here! It can happen only on HN where you find such a group.
I've thrown up several quick sites for friends and family using very simple markup over the years.
Both my brother's site (1999) and an ex-gf's art portfolio (2002?) are for the most part unchanged in all this time.
They don't look amazing but they're still...decent.
Some sites I made for a school I went to are still up since 1997, but I don't think they're directly linkable from the main page anymore, just hosted and indexed by google...
I still have an excel sheet that I wrote to perform mortgage calculations. The timestamp on the file is 10 March 1994. The latest version of excel can still open it and it works.
Although it exists, it's not in use.
I suspect all the stuff I wrote back in the late 80's and early 90's has long been switched off at some point, which is kinda sad. It would be hard to run today: EBCDIC mainframe stuff and 16 bit PC stuff.
A simple and straighforward UI to use synergy on Linux for the most common use cases.
I haven't properly updated it in years (made some small changes last year though) but I know it's still in use e.g. my wife was surprised to learn it's quite popular at her company.
When I started to learn PHP in 2007 I've written a little accounting program for the guys at the company I was working for. I know they are still using it because I get a call every year: I need to manually switch the current year. They don't want me to implement this feature for some reason but they still keep calling me once a year. At least there are no other bugs I know of!
I built a communication layer for a bank in 2000 :P It ran on Solaris (server side), and as an ActiveX dll on win32 :)
A year ago the server side was just ported to 64bit architecture Linux, though basically the protocol remained unchanged, only stronger encryption keys are used
Now they plan to change it to a more modern "online" version (some REST thing instead of the connect-sync-disconnect approach)
Transdate [1], a Python library for handling Korean lunisolar calendar, is probably the oldest (released on 2005-03) code I have ever written that is still in use.
Got into mudding back in 92. After playing the game for a while, 'ascended' to becoming a coder on the backend. I created realms, and did some of the conversion work when the mud went through its first huge shift from a base LP Mud. The mud is amazingly still running: https://www.bat.org
From around 1992, a 16 bit Windows Borland (Turbo) Pascal GUI database for my parents' business. This was the 2rd rewrite of some DOS and then Amstrad CP/M software I wrote in Modula-2! It still runs (in a Windows 32 bit VM) and I do change minor features.
I have a Python/PyQt replacement, but it requires some more testing and development.
Linear mathematics calculator doing pivot tables for solving systems if linear equations 1999. I have only vague rumors of it still being used in class but it's still available http://www.nku.edu/~mat111/offline.htm
A friend told me they decommisioned yesterday their last netcool server.
Inside there was still the code that updated priorities and removed old alarms every 293, and 3607 seconds (why 293 and 3607? - because they're primes and very close to 5 minutes and 1 hour).
It has been running 16 years. Not bad for a midnight-fix during an incident ;-)
I am not sure if they are still running, but some time ago I wrote a large number of Oracle PL/SQL procedures activated by cron jobs. The source database schema did not change very much ( JIRA ) and those procedures ran for at least four years without needing any attention or maintenance.
My first "big" application I wrote and got paid for was a MS Access SQL VB hack I wrote for a company I worked for.
I fully expected the thing to crash in a few weeks after I left and they would move on to something else, but no 8 years later and I'm told it is still running strong.
I wrote a Microsoft Excel macro (yes, it's VBA) when I started my current Job at 2008. It only converts badly formatted txt output of mainframe to an Excel file. Just does it only, but does it well.
I'm very amused that even today people use my macro and thank me for writing it.
2002. Intranet for a major auto maker. Still going strong. Large percentage of the original management and accounting code intact. Still in development.
1999. DynamicIP tracking script from the dial-up days. Tiny but it's been telling me where my home internet is for 17 years.
Back in 1997-1998 I wrote a compressor for DOS 16-bit executables called aPACK (and a library, aPLib, with the compression code). I still occasionally get an email from someone trying to get them to work, so they must still be in use :-).
I knew an old man who is now retired who wrote something in COBOL For a bank, it is still running cause it calls itself and nobody understand ita eval tricks. It is still working and everybody is afraid of removing it. True story.
I've only been programming for 5 years and some of the original code I first wrote 5+ years ago has survived and somehow is still running. I'm tempted to go back and refactor it to make it more performant though.
A flash-based CAD floorplan viewer I wrote in 2005 is still being used. There's been talk for the past half decade of porting it to javascript, but as long as browsers keep supporting flash I doubt it will happen.
I worked at a local paper in `00 and wrote a classic asp over access "news desk" for them. I just ran into one of my coworkers and he mentioned certain key parts of the app is STILL in use.
I got my wisdom teeth taken out when I was in high school, and coded this in a weekend while eating Percocet and tapioca pudding. I had no idea it was even still for download! It doesn't matter now, because I believe the Magnamund books are being re-released in a more modern, integrated package...but there it is!
I wrote a distributor/manufacturing system in 1988 that is still in use in 2 companies; domain model still valid 28 years later, though the programming language used is way out of style now
My 1991 conversion of Life & Death released for Commodore Amiga and Atari ST - I occasionally notice that some people are still playing it on emulators, etc.
I recently got a call from the CEO of a company that I worked for from 2000-2003, asking if I could help upgrade some code I wrote that was still in production.
I have a number of compliance reports that have been running without fail since 2005. I have a task management system that has been in constant use since 2006.
Several VB6 based tools from 1999 are still in use. They still work just fine in Win 7 64-bit. (VB6 was the best RAD tool from Microsoft, great integration with Windows and was part of the "information at your fingertip" vision. Then Java happend and Microsoft frantically tried to create something similar. 15 lost years, nowadays compiled languages and on the otherside dynamic languages like Javascript succeeded. And also the web succeeded over AOL, Microsoft Network and other pay-to-use-closed-attempts. And now with Win10 the whole platform is on a crossroad, the trust is gone with all spying, tracking and as-a-service idea - "users aren't slaves" and want to decide for themself after all)
Having spent a long time with VB6 as my go-to language, I get a little upset when people criticize it. It was designed as you say, as a RAD language so that the masses could easily knock up front-ends for almost anything, and as machines got faster it's main weakness (it's execution speed) became irrelevant. Yes, the lack of enforced typing, native multi-threading, and OOP finally killed it, but for it's time it was a very useful programming platform.
On the upside, if you want a VB6 app to run on Windows now, all you need is MSVBVM60.DLL* in the same folder and it will run, unlike the massive clutch of files that .NET needs...
(*This holds true for 16bit VB5 and VB4 as well, on 32 bit systems)
A few months ago I recompiled a VB5 app for the first time since it was last built in 1998, it has been used daily. I didn't build this, just inherited it over 7 years ago and have never needed to look at it.
Every once in a while it would miss some files in its directory listings. Took me forever to figure out that it only occurred when the new SAN was under heavy load and took longer than half a second to return a directory listing.
SYMPTOMS:
When you are using the intrinsic Visual Basic file system controls (for example, DriveListBox, DirListBox, FileListBox), some or all of your files are not listed. This usually occurs when you are trying to access files on a network server, but can occur locally under some circumstances.
CAUSE:
... These controls are old technology. They were not designed for, nor tested with, some of the new operating and network system software. ...
I just made it sleep for a second and then refresh its directory listings, sigh.. not gonna rewrite this thing now..
I never really intended for anyone to use it seriously. I made it for myself, but went ahead and posted it online anyway. It is a 1500-line single-file, nearly-commentless, nearly-spaceless abomination of code with no documentation, and an endless list of critical bugs that every user keeps encountering. They have elaborate workarounds for many of these bugs.
It became a negative feedback loop: "Why do we use xkas? Because everything else is written in xkas", and so now even more code was created and written in xkas. And so even though I've since written a proper assembler that's dozens of times nicer, no one can/will use it.
Lately, people have been writing their own versions (in addition to countless forks) that try to offer backward compatibility with all the crazy parsing errors and (mis)features of xkas, like left-to-right evaluation of math expressions, and the most convoluted macro evaluation system you've ever seen (one user proved it was Turing complete and wrote a Brainfuck parser in it.)
It's surreal. I feel terrible that so many people are stuck with this mess, but even I can't stop it anymore :/