8 ms·
A Love Letter to Tinkerable Software
- trilinearnz 3y agoAgree with this. For me, being able to tweak Quake (when it came out) was massive. You could poke around in QuakeC, make a funny model / map etc. The fact that customisability extended to it's two sequels was even better. To a lesser extent, even being able to modify pretty much any game mechanic via the pull-down Console was amazing too. A great entryway to programming for the young enthusiast! Always was a wonderful advantage to owning a PC over a console. That, and the accompanying utilities you could combine with the game, to create new graphics, sounds etc.
- bitwize 3y agoGame modding is going to go away almost entirely soon. The vanguard here is Capcom. They have gotten a bit uncomfortable with modders who do things like put Chun Li and Cammy in bikinis, not to mention the possibility for cheat mods. Accordingly, they now consider modding to be the equivalent of piracy and have implemented mod-preventing DRM in their back catalog of PC games. Other companies will soon follow. There's too much risk to a company's bottom line and reputation to allow or encourage modding. Mods compete with official DLC packs, and if someone streams with, say, a mod that puts a swastika on the main character or something, that harms the publisher's reputation. I would say hang on to your old copies of Doom and Quake... but Doom and Quake are Microsoft products now, and Microsoft doubtless has ways to make the asset packs unavailable except to official ports which require a Microsoft account to play.
- vitiral 3y agolet's start over. You might like civboot.org
- MikeTheGreat 3y agoIn case anyone's curious: I didn't recognize the .org domain but I felt lucky, punk, and followed it. civboot.org redirected me to https://github.com/civboot/civboot https://github.com/civboot/civboot which I totally would feel comfortable visiting :)
- vitiral 3y agoYa, I'll have a website eventually... What do you have against .org websites?
- Arrath 3y agoI cut my teeth tweaking unit settings and then adding new units and buildings to Command & Conquer games with easy .ini tweaks. I've long applauded the efforts of the JA2 1.13 devs and their drive to externalize basically every game parameter into xmls that can be edited rather than hardcoded inside the game's executable. Tweakable software is the best!
- RodgerTheGreat 3y agoAs a young child with only the scarcest grasp of programming, I spent endless hours using ResEdit to crack open and customize every application on my mac. Every game and utility was filled with its own surprises; graphics I could edit, tables of strings to pore over, dialogs to rearrange, menus to customize, and so much more. I never had a manual, but everything was so straightforward and clear I learned everything I needed by experimenting. The entire experience was intensely empowering and gave me a wonderful sense of ownership and instrumentality over my computer. The project that currently occupies most of my time, Decker[0], is a rapid development platform that can produce standalone single-file HTML "applications". The detail I'm most proud of is that every such app still contains the entire suite of editing tools: anything made with Decker is ready to be customized and extended by end-users. [0]https://beyondloom.com/decker/ https://beyondloom.com/decker/
- virtue3 3y agoI did the same thing moding a game I loved back then on my mac via ResEdit. So damn handy. And set me off on the path of programming for sure.
- xyzzy_plugh 3y agoSince you're here: I love Decker, it's exactly the sort of thing I want to get my kids playing around with. It's clearly a labor of love, keep up the good work!! But how in the hell do you read that source code. I've seen some gnarly C in my time but man what even is that. How are you able to maintain this? It's beyond me. Please explain!
- RodgerTheGreat 3y agoIt's just dense. I use a handful of macros to abstract out repetitive patterns (EACH is a for-loop that iterates over all the elements of a lil list/dict), very short names for the most frequently-used utility functions (lin: lil-is-number? lil: lil-is-list? lmn: lil-make-number, lml: lil-make-list, etc), and typically aim for one idea/process per line, rather than one statement. I find most C code dreadfully verbose, repetitive, and sparse. This style makes much better use of screen real estate and allows me to look at even fairly complex routines all at once, without having to scroll or jump around. Many APL-family languages use similar conventions in their implementations, though often relying much more heavily upon macros and abbreviations than I do.
- hrmmm 3y agoPlaying with browser developer tools and always seeing obfuscated JavaScript makes me sad. I'm not a web developer, but I suspect the security gained is low enough to fall within the author's "unnecessary constraints." On the other hand, there are projects like https://github.com/rxi/lite https://github.com/rxi/lite Its scope and layout makes it extremely tinkerable.
- steve_adams_86 3y agoI think a lot of obfuscation seen these days isn’t about security, but is a side effect of minifying code (which usually is worthwhile).
- mhitza 3y agoWhile there is a slight difference that can add up (if text assets bandwith factor well into your traffic), I prefer to push out brotli compressed unminified js/css nowadays. Makes it easier to understand JS issues on prod as well.
- steve_adams_86 3y agoYou might be aware already but you can set up monitoring services which host your source maps (you can deploy versioned source maps to the service when your deploy your code), so you can get errors in the monitoring app which are pinned to the correct parts of your source code. It's a bit of legwork and complexity, but useful if you already use something like sentry. If you don't, what you're doing is likely a better solution.
- jauntywundrkind 3y agoLetting people into software as a soft thing, something shape-able, invites in the best human spirit! It's not just another appliance, not another gadget, it's something deeper & that you can geek with, imprint yourself & your behaviors or style on! I love it. There is a notable e-collective dedicated to soft/changeable systems, the Malleable Systems collective, https://malleable.systems https://malleable.systems
- captn3m0 3y agoI remember writing a tool to “tweak” Google Chrome when it was launched back in 2008(?) to mass edit the resources inside DLL files to change icons within the browser chrome. There was no theme support back then, and it was cool. Long before that, I’d spend hours editing random INI files in windows games in hopes of finding something.
- julianeon 3y agoThe biggest incentive to lock down wasn't listed. It's economic. If you can guide, or shoehorn, people into using your service, and it's 'good enough,' you can make a lot more money than if you're doing custom one-offs for everyone, or writing a bunch of potentially buggy code for different variations, or having your team troubleshoot integrations. An important point too is that, if one person sees another person using the app, and it's a standard unified experience, that helps its spread too. "It is difficult to get a man to understand something when his salary depends upon his not understanding it." - Upton Sinclair. I personally would vote for not locking products down, but that's what we're up against.
- mtnygard 3y agoI've long believed this to be the reason that component-oriented software never went anywhere back in the 90's. You could make _some_ money selling components. But you could make _tons_ of money selling a walled-off set of pre-integrated components as an office suite.
- rkagerer 3y agoThis really resonates. The neat think about software that doesn't actively resist tinkering is you can make it do things nobody expected or thought possible.
- teucris 3y agoI think there’s a bit of survivorship bias in the tech industry. Many of us got into tech because we were able to explore computers with few limitations. But I’m not convinced it was mostly due to the tech of the 90s being more open. We are the ones who did that kind of stuff, so we’re a filtered audience posting on HN about tinkerable software. We likely tinkered for a lot of reasons that didn’t have much to do what tech was like - we had unfettered access to tech in some form, for instance, or we were encouraged to do so by our parents or society or our peers. Making our tech more accessible is a fine goal, but that’s likely not the biggest blocker for the next generation of technologists. Rather, I'm starting to think that, given recent advancements in UI, social media, etc. our belief of what makes a great engineer is totally off base for what we’ll actually need in the next decade.
- maxbond 3y agoCould you give an example of a different avenue we could pursue? Your thesis seems plausible to me but I don't understand what we would do differently in light of it.
- teucris 3y ago- make more kid-accessible low-code app development environments - train hackable LLMs on a corpus targeted for younger audiences - offer built in “escape codes” to the lower levels of gaming systems like the playdate - offer social networking sites meant to be customized/hacked on (eg myspace) /edit These are ideas for how to bring tinker-ability to where kids are. But I don’t think I can say with confidence what is going to make a great explorative environment for the next generation. Bringing as much useful tech into the right places in kids’ lives, wherever they are and whatever background they have, is going to be the right start though.
- maxbond 3y agoHmm, I'm confused. Those are all good ideas, but they all seem to be tinkerable? Extrapolating it seems like what you're suggesting is making spaces where people can tinker socially rather than making tinkerability ubiquitous and trusting nerds like us to figure it out for themselves? Thus opening up the space to people we might not traditionally imagine as becoming software engineers?
- etaioinshrdlu 3y agoThere is almost certainly more tinker-able software out there today than ever before - and the accessibility has never been higher. Not everything is accessible, but it never used to be either.
- ilrwbwrkhv 3y agoI started out programming by hacking games to do what i wanted and sometimes tinkering with hex codes. This article is very true, we have indeed lost the ability to do "naughty" things because everything has been made "safe" (illusion) but my gripe is even not that. My gripe, the one I keep ranting about, is that the users themselves have become tamer. They have believed that the way "Google" tells you to do things is the "right" way and you should always do only what the application suggests you to do. Whereas I grew up in the early 2000s with a purely hacking and fun ideology for computing. Make bizarre graphics because something extra was deleted, talk to people who were into this and just have countless hours or fun tinkering.
- nanolith 3y agoOne of the reasons why I love open source software is that I can maintain personal patches. I'll upstream changes when it makes sense to do so, but mostly, I keep local branches. Some of these tweaks are simple. Others are significant rewrites. But, the point is that I can approach computing on my own terms, and that's pretty neat.
- bpye 3y agoI really appreciate how easy Nix makes this. It’s relatively straightforward to overlay a package in your configuration to add a patch - meaning I get to apply my own patches and also get updates from upstream - at least until my patch doesn’t apply cleanly.
- lloydatkinson 3y agoThat sounds interesting, do you have an example somewhere? I hadn't really considered this nix specific - does it make it easier than git normally allows (by keeping your patch in a branch?)
- Smaug123 3y agoIf you keep a patch in a branch, then you have to keep merging the upstream and your commit hashes become different from what everyone else sees, for example.
- dvrp 3y agowhat a long way of saying “back in my days”
- barefootjoey 3y agoMy Dearest TI-85 Calculator Games, (I shall name a few by names) In lines of code and pixels fair, Within your realm, I find solace rare. A love that's forged in binary strings, A tapestry of malleable digital things. Oh, how you captivate my heart, With your C-programming art. Your 8001 pixels dance upon my screen, Creating worlds, both vivid & serene. Through endless loops and if-else's rhyme, We tinker in space, one byte at a time. Together, we unravel mysteries profound, In a realm where love, math & logic are bound. Oh, Tetris, with your falling blocks of delight, You bring joy that illuminates the night. With each line cleared, my heartbeat soars, Our Soviet connection strengthens forevermore. And Snake, dear Snake, slithering through the maze, A dance of patterns, a captivating craze. As I guide you, pixel by pixel, with care, Our bond grows deeper, beyond compare. And let us not forget the classic Pong, A symphony of paddles, back and forth, strong. In this simple game, our tinkering takes flight, A testament to the power of endless night. Oh, TI-85 Calculator Games, you're my muse, With you, my heart forever chooses. In lines of C, our love shall persist, Forever entwined in digital bliss. To the best code goes the trophy, Yours truly, BarefootJoey & my AI homie
- fuzztester 3y agoYou are one of the best. Your words show your zest for the games you hold so dear. We can see they bring you cheer, You even told us the names of some of your best-loved games. Now lets all give a cheer, and toast your hobby with beer.
- kevindamm 3y agoAh, I wrote some TI-85 games in HS.. DopeWars I had to recreate from scratch after I moved, and I implemented some classic arcade games. The interesting thing was that the simpler games were much more popular than the complex games, even if there was no slowdown on the complex game. I think my entire school shared Whack-a-Mole but my pac man and asteroids barely made it out of my calculus class. But, as I recall, it was TI-BASIC, not C, as the programming language. Was that the AI's mistake?
- firecall 3y agoI 100% agree with the spirit of the article! As an X-Gen, I remember as a kid the first computer I ever saw was a ZX-80! You could do 'stuff' with those early computers, and Basic was great and all, but the early days of the Web really opened up exploration for me. As a solo developer it suddenly provided opportunities to work commercially without having to have a computer science background and be a very serious C++ developer. These days I see my kids exploring programming through Minecraft Java Edition. They also create and make 3D printed toys and objects in software I could never have dreamed of. They also create and edit their own YouTube movies, again things I never dreamed of being able to do. So whilst early tech opened up possibilities to explore creativity, the options were limited in many ways. Now the entire world of creative exploration no longer has gatekeepers. The explosion of the App Store genuinely opened up opportunities through tools like xCode and globally distribution that individuals never had before. Similarly, you can be a movie maker, photographer, App Developer, 3D artist, and producer of 3D Printed Widgets, and you don't need to ask anyone's permission. It's not a perfect world, but it's still good for creators. Just that maybe it doesn't all seem as exotic as it once did in the 80s and 90s! Edit: One thing missing today is the easy ability to play with commercial software without a license. Back in the day you just needed the file and a serial number. Many schools provide licenses to Adobe software and more, so that's good. And I suppose lots of software has a free Cloud version, or a limited trial. So its not all bad these days. But I can recall preparing for interviews by finding a copy of some software and then playing with it on my own computer. That's riskier these days as you may end up turning your computer into a Crypto Mining device LOL
- kickingvegas 3y agoSince it hasn't been mentioned here yet, Emacs is deeply tinkerable. With Emacs, you are given an embarrassing amount of leeway to customize or even replace existing behavior to make it do what you want.
- rochak 3y agoAlso applies to Vim. Rekindled the joy of exploration in me.
- 0xpgm 3y agoI'm currently playing with Pharo Smalltalk and everything is very accessible. I wonder why Smalltalk Environments did not catch on as operating systems, let alone just as languages, where everything can be tinkered with and modified on the fly. Apple sounds like the kind of company that would successfully build a smalltalk device, yet they go the opposite way of locking down their devices hard.
- jfoutz 3y agoVersion control. Small talk is amazing, but dumping the binary to distribute is so scary. Did I unload my email client? Are my credentials in there? Gah. Scary.
- whartung 3y agoThe Pharo hackers write Pharo to enable them to make Pharo better. They are a shining manifestation of eating their own dog food. Outcomes of this effort are powerful version control and package management. I don’t know, but it seems quite clear to me that Pharo folks start with base images, load their package dependencies on top of it, then hack away on their own code. Inevitably they create a new package with a list of dependencies for others to use. What they don’t appear to be doing is “living” in their images. Rather they create application specific instances from source code. Emacs users tend to “live” more within it than the SmallTalk/Pharo people do. In the end they distribute images assembled much like a Docker image is today, made from a deterministic set of sources and then snapshot.
- ElevenLathe 3y agoYeah, I'm somewhat of a Pharo hacker and the workflow is pretty similar to any other software: Start with a base image, create a package, add code to the package, use git (via Iceberg) to save diffs for a particular package off for distribution. It's analogous to hacking on an operating system image in a container: keep your code and the system separate (via the "packages" abstraction in a Pharo image, or via the filesystem in an OCI container image) and you will be fine. The "Baseline" concept is a bit opaque (and weirdly named IMO, but a lot of the Pharo community is European, and especially French, so presumably it makes more sense in that context) but is a form of dependency management that works OK, though it would be nice to have a more Linux-distro type experience for installing packages.
- appplication 3y agoThis is totally off topic, but this made me think of it for some reason... Remember when computers had turbo buttons? What a fun concept. I wish my MacBook Pro had a physical button on there to knock it into ass-kicking mode. I think the world would be a more perfect place if everything had turbo buttons. Internet too slow? Hit the turbo link button to 10x your download speeds for 30 seconds. ChatGPT prompt sucks and just isn’t getting it? Turbo that sucker and watch it prompt you instead. Food is taking too long at the restaurant? That’s right, turbo. JVM takes too long to spin up? Probably no turbo there, that’s never gonna get solved.
- TheNewAndy 3y agoI believe the intention of those was that it was actually a "slow down" button just with enhanced marketing. But when you played an old game which was designed with no frame limit cap, you could slow the game down to a playable speed with the button. Unfortunately, I had no such button on the family computer, so many games were unplayable because of our speedy 486SX33
- ChicagoDave 3y agoThe interactive fiction software world is still loaded with tinkering. It’s been a common thread of its communities for 30 years.
- saint11 3y agoI've learned pixel art by messing with Sim City 2000 files! I found out that I could just change the sprites, so I started modding the game, and learning how tiles and palette animation works. Now, on every game I make or work on, I try to keep atlas and files exposed and unencrypted, so people can play around with it.
- zubairq 3y agoThinking about tinkerable software, this is one of the promises that crypto offers in my opinion, as it decouples the front end from the back end in a very clean way. This gives the ability for anyone to add a different front end to any pure crypto back end.
- half-kh-hacker 3y agomy favorite thing about modern landscape of desktop apps is that… Electron apps are tinkerable! you go to the app's resources folder, extract an asar with one command, and then you can edit the node.js-side files. then, you can just change what the BrowserWindow instance is loading to resources you control, and you have end-to-end control over the entire application
- DeathArrow 3y agoYou can still tinker with software as you please. Things got a lot more complex these days. When I was a kid I was able to hold in my mind how DOS works, how x86 works and was able to learn a bit of C and assembler to do about anything. Hack software, build my own, have fun. Doing small games was pretty easy if you knew some graphic modes and had some undocumented source codes for drivers for various 2D graphics cards. Trying now to learn modern DirectX, Vulkan, shaders and graphics stacks is more complex. Nobody can now hold in their heads all the important details of how operating systems work, how networks work, how graphics woks, how web apps work, how mobile apps work, how backend works, how desktop apps work, how ML and AI works. You have to specialize in something. Get an Arduino and learn how to flip a led. Right click a popular website, paste the source code in Notepad and try to modify it. It's not less fun tinkering, but it's going to be specialized fun if you ever want to learn something and get good at it.
- smokel 3y agoI remember playing with Deluxe Paint II on PC when I was a kid. Somehow it was not the same version that I saw people use on the Commodore Amiga. I also read somewhere in a magazine that there was Deluxe Paint Animation, but I did not have that on my computer. So I set out to write a TSR (Terminate & Stay Resident) program that would pop up extra functionality in Deluxe Paint. Using some keyboard shortcuts I could add a rectangle to the screen, and select a grid of images. The separate images would then animate on another part of the screen. Needless to say that the integration with the rest of Deluxe Paint was somewhat limited, but it was good enough for me.
- Chris82 3y agoA love letter to tinkerable hardware as well... If you think about how many people entered electronics via "the Arduinos of this world". How many kids learned that you can actually build physical "stuff" that is nice & blinks. How many artists created "stuff" due to tinkerable hardware. Shoutout to https://www.geekmomprojects.com/ https://www.geekmomprojects.com/ and the others. Thank you for tinkering. Makes our world better.
- mgd 3y agoI'm trying to inspire my children with the same ideas. I spent my youth tinkering with an Amstrad CPC 464. Looking for what could inspire them to tinker in the same way without always wanting a YouTube video or book to follow. How would you create a love of experimenting and trying without fear of failing or doing something wrong?
- wscourge 3y agoI wish I was raised in the tinkering culture. Instead I had to get there much later in life mostly on my own.
- anthk 3y agoFrontpage was anything but discoverable. Ditto with the MS Office suite. I found Unix' (and by extension, GNU) philosophy much better to discover how did computers work. The Linux Gazzete taught you about HTML code, editors, system administration, networking without tons of hideous GUI's and Microsoft corpojargon to hide anything behind a lexicon wall having nothing to do with actual IT.
- a1o 3y agoTinkerable software is alive in open source software of today. I would recommend playing with simpler stuff and building it yourself from source and playing with adding things to it. It doesn't have to be useful things, try making all the menu text silly for the hell of it or whatever. It's still fun.
- xrd 3y ago"Tinkering neutral" is a terrific phrase. I feel like the world of software can probably be divided into the same moral classes as D&D, with M$ as Chaotic Evil (sorry M$!), Google as Chaotic Good (or would it be Lawful Evil? Probably lawful evil) and GNU as Lawful Good. All have their merits, flaws and compromises. But, tinkering neutral is a great addition to that framework.
- bitwize 3y agoI'm fond of software I like to call "pervasively programmable", Emacs and the various Smalltalk environments being ur-examples. Every bit of them can be examined, inspected at run time, and changed in the running system as you work. It's the next step beyond open source. (If you compiled Emacs yourself, Emacs will remember where its C source lives and will happily bring that up if you M-. on one of its C primitives.) And I think we should celebrate and encourage software like that.
- flobosg 3y agoPlaying around with video game ROMs using a hex editor to edit strings and sprites was one of my first forays into programming.