Weathering Software Winter

3 years ago (100r.co)

> Our philosophy is that to make fast software, you need slow computers...

One of the reasons why our industry produces slow, bloated software is because the engineers building it often have the fastest computers with the most resources. It should be a requirement before shipping to have your whole team personally use the software for a week on 10 year old computers.

One of the reasons why my data management system (https://www.Didgets.com) is so fast is because I regularly ran it on an old Core-2 Duo machine with a slow hard drive and limited RAM. I didn't stop tweaking it until it ran fast on the old hardware.

  • Best example how bad this is, using Android Studio studio in computers that aren't gaming rigs, apparently Android team cannot be bothered to make it usable.

    Optimizing Android builds and decreasing Android Studio resource usage tends to be a common talk at Android related conferences.

    • My first internship involved compiling android about once a week on a dual core 20 Gb machine. It took HOURS to build almost anythining from scratch.

  • Running the software on an underpowered computer as a test is admirable. I go further. Where possible, I actually write the software on an underpowered computer, preferably the one it wil run on. Because in addition to wanting the software to run quickly, I also want to be able to edit the software and re-compile quickly.

    Sometimes it is not possible to compile the software on the target computer, e.g., an MCU, but we should still be able to compile and flash the MCU software using underpowered computers. We should not need a large, graphical operating system and graphical software to create software for tiny computers that do not support graphics. I continue to be baffled by the large, graphical Windows software people use to program MCUs. There are exceptions,1 but they seem rare.

    1. For example, https://github.com/PaulStoffregen/teensy_loader_cli

I loved seeing this talk in person and really enjoyed reading through it again now. I’m kind of fascinated by the longevity of software for simple systems - games like Another World or Monkey Island or even DOOM are well-loved decades later, whereas games like Black and White that don’t port well are largely forgotten.

I’m surprised to see commenters here who don’t see portability as important for preservation - or maybe just don’t really care about preservation at all.

  • Honestly I couldnt get black and white to even run. I tried for like 3 years. And that's with paying for it.

This whole thing strikes me as silly. Problems accessing services while alone in a boat in the middle of the sea is not anything like the general problem of preserving information and technology. We don't need to make knowledge individually accessible and maintainable because humans generally don't try to do that by themselves. And humans are actually really good at preserving the knowledge they care about. Kids in school read a poem first written down 2500 years ago about an event that occurred 500 years before that. The dead sea scrolls failed to overturn the world of biblical scholarship because it turned out the later copies of the texts were actually quite accurate. The fact that our devices don't just work without a supply chain and a steady source of power, or that there are 20 year old games almost nobody cares about which we can no longer play just doesn't signify that much. Nor does the fact that the BBC couldn't figure out how to preserve some chunk of data for 10 years.

  • “We don’t need to make knowledge individually accessible and maintainable”, followed _immediately_ by “humans are actually really good at preserving knowledge”. Who do you think does the preservation? How do you think preservation works?

Interesting and naive journey to find a suitable and minimal "permacomputing" environment for doing software development on a sailboat.

It always saddens to me when people only think of the extremes, while perfectly good options exist!

If your develop for highly locked device (iPhone) which requires the very latest version of huge dev environment -- maybe choose some other development target which does not evolve quite as much. Qt, Java, etc.. are not updated for years. And don't forget to make sure that your OS does not break without updates either.

Gimp is more clunky than Photoshop, but it will never fail because of lack of license server.

This part is especially annoying:

> At sea, without internet, if I wanted to look up how to fill a polygon, I couldn't do it, but if I had printed it?

.. or maybe you could have gotten some e-books? They take much less space that paper books (important on yacht!) and lasts forever. Postscript format, from 1985, is still readable by all modern systems. Plain text ASCII, from 1968, is still being written every day. Even HTML 1.0 is rendered by all modern browsers.

  • The thing with iOS and iPhone is that it's the market that pays best. A typical iPhone user is more conditioned and used to pay for apps, and is more ready to pay for the cool factor. So, switching the target market to Android devices may be harder than one thinks.

    > Qt, Java, etc.. are not updated for years.

    Hmm. Have you really been paying attention? They very much are, and in exciting ways. They don't make old versions unserviceable though, and that's great.

    • Yes, but "things that pay best" and "sustainable computing" are often in disagreement. Nothing wrong with chasing the money, but you should be honest: "Because I wanted to earn more money, I decided to use locked-down cloud-based devices. This means my computing is not really sustainable, and sometimes required putting smartphone up the mast, but I need to pay port fees and buy fuel for my boat"

      And yes, there are all sorts of exciting things in Qt and Java world, but you don't have to use them. We currently build some tools on Qt 5.9 (2017) and feel no pressure to upgrade at all. And my computer still has Qt 4.8 available (including dev headers) from 2011, which I assume still works. Which is great, I agree.

The author mentions power use being a factor. Last I did some research into this, smartphones are by far the most power-efficient general-purpose computers broadly available, using several times less power than something like a raspberry pi. I wonder if running an open-source OS on smartphones was considered for their sailboat permacomputing?

  • 100r also is experimenting in hardware that can survive being thrashed around at sea. Or that is a key constraint of theirs. And I think a lot of smartphones fail this criteria.

    Also when your powersource is solar powered batteries, the small differences probably don’t matter a whole lot.

    • Cell phones seem pretty well suited, might have to add a ziplock bag to be water proof. What failure modes do you think would be common?

> We grew up in Montreal, and many of our friends worked in AAA studios like Ubisoft, making free-to-play games, building projects that had a lifespan of three years. The projects that we made in the past on the Apple stack, Electron, or on Unity3D, also had a lifespan of three to four years, but games like Super Mario, as well as others produced in that era, are still playable today.

The games that don't work in some way or form 20 years after creation are in minority due to effort of community. I dunno what author is smoking.

> chains of emulators eventually break down

<citation needed>, arguably some emulation experience is better than original

> The download is at 7 gigs with three more hours left to download the update, it won't finish, and we will have spent all that data for nothing.

Resume download existed for better part of internet. Also torrents are great for that use case...

> There was a time when computers were super playful, but now they feel cold, and have been weaponized against people.

They still are, just gonna join the crowd of weird penguin people instead of buying another windows/macbook box, all the power and weird stuff you can do with computers is still there, using current software.

Maybe not in "I built everything from scratch way" but still

> The Commodore 64 emulator was extremely complex, more complex than I could grasp. It was the limit of what I think a single person could understand. It seemed like a simple system, it was just a box, but writing an emulator for it was more than a weekend project. I was looking for something that I could nail in a single weekend.

Huh, I kinda hit the same thing. Started writing Z80 emu (in Go, then Rust for funzies), got a good framework and some way in into implementing instruction set then realised "damn, now getting it cycle accurate and synchronized with peripherals is a lot of work. And peripherals are more work than CPU itself".

  •     The games that don't work in some way or form 20 years after creation 
        are in minority due to effort of community. I dunno what author is smoking.
    

    I would say what you're seeing is biased towards popular games - there is an immense amount of games out there and most have no community to try to preserve or emulate. It also really changes after a certain point in time & with specific platforms - old, popular (but still simple compared to modern PCs) systems like the PlayStation 2 or Game Boy Advance? Not a problem. DOS games? For the most part ok, especially popular ones like Doom/Quake/etc. But choose a random not-very-popular computer game from 1996 and there's a fair chance it won't be easy to make it work properly.

    An iPhone games from 2009 or a Facebook Flash game from 2010? Now there's a real chance you have no way of making it work unless the game is so popular that the developer/publisher have kept it alive and on the market all this time.

    • Original point was that author thinks game made now will be less long-lived than game made 20 years ago so that's all irrelevant really but...

      >An iPhone games from 2009 or a Facebook Flash game from 2010? Now there's a real chance you have no way of making it work unless the game is so popular that the developer/publisher have kept it alive and on the market all this time.

      Weirdly enough (not really) despise all the whining about loss of Flash games community people stepped up and wrote the emulators required for that. No idea how iphone side of that looks tho

      > But choose a random not-very-popular computer game from 1996 and there's a fair chance it won't be easy to make it work properly.

      In most cases it will probably be as easy as average game because it is average game and most emus carry for needs of average games of that time just fine.

      You'd have to look pretty hard to find unplayable ones, and most other... wouldn't be much harder than trying to make the DOS game work back in the DOS times with various special things you needed to do and set back then so the game worked.

      Sure, games nobody wanted to play in the first place when they were released will be neglected but that's not exactly that huge a loss. If game deems to be more important than it was back then someone will figure out how to run it, as long as data is preserved.

      The online-only ones are a big problem, sure they can be cracked just fine but the moment they are server based that's a whole shitton to reverse-engineer, and while some popular MMOs got that done (mostly so people can play without paying but still...) it's by far rarity to see.