> The adults in my life were largely not mad at me. They asked me to knock it off, but also made me a t-shirt. I don’t think I’d be doing what I do now without the encouragement that I received then.
Teena need a place to be moderately mischievous, with semi-real social outcomes, but also some boundaries and help to not take it too far.
And adults who aren’t authorities over them except insofar that they have cool talents the kids want to learn.
I did almost exactly the same thing at my school (brought down the system with a VB6 script that wrote infinite text files to networked storage). They sent my mum a letter accusing me of terrorism.
At the time I thought I was pretty ridiculous and unfair (lucky my mum agreed), but now looking back with adult eyes I also see it as an almost criminal level of disregard for the job of raising children. Just absolutely irredeemably small-minded, truly pathetic, it makes me so angry to think that there are still young people growing up in that environment and being taught by those people.
People are afraid of what they don't understand - Someone, at one point
The adults in that situation didn't understand the full (or rather, how small) scope of what happened, so for them it looks wildly different than to you or me. To them, computers are black boxes that are not to fuck with, and the ones who do, are only out after destruction and ruining things. That's why they react like they do.
Not to excuse the behavior, they should of course have talked with people who understand what happened before trying to address it, but lack of resources, knowledgeable people and understanding often leads to being able to.
Similarly, I at one point (before I'd consider myself a programmer) worked as a customer support agent contracted out to a popular fruit technology company, saw efficiencies in how things were done manually and hacked together a browser extension. At first just me and my colleague next to me was using it. Eventually, it spread and eventually management found out.
Instead of trying to elevate the processes and seeing that things could be better, they decided to eventually get rid of me, too risky they said.
I wasn't screwing around with the network in high school, but got called in to the principal's office to answer some uncomfortable questions because (and I swear on my life I am not making this up) I knew how to change the desktop background on my account. This apparently made them suspicious of me. Simpler times, I know.
It was an early lesson in the fact that there are a lot of people doing IT in schools who, frankly, suck at their job. Most of the good IT people are getting paid way more elsewhere. The crappy ones are working in an environment where easily 1 in 50 of the students know more than they do and some of them feel threatened and lash out when someone is outing them for being lousy at their job, intentionally or otherwise. Like you did (disk quotas much?). Like they suspected me of.
Fixing the structural problem would require paying IT people in schools a rate that more closely matches what they'd make in industry. Fixing the social problem would require hiring people who understand what you and the author figured out: that nurturing people and directing their impulses productively yields better long-term outcomes for everyone.
Yup, absolute insanity. My good friend was expelled because he used "net send" while our teacher was giving a presentation. Wasn't even anything vulgar.
Yes, I had a similar experience in high school. I ended up modifying a virus that infected a bunch of computers and causing problems, so I got kicked out the lab until the next year (but this was late September, so no biggie.)
The next year I mentioned to the teacher that I had something I wanted to play with, can I please get access to a PC (the lab computers were Acorns), and so he gave me after school access to the accounting classroom, more storage on the network drive (50MB when everyone else had 5!), and basically free reign if I didn't break things. So I didn't, and was running Tierra on piles of machines overnight, just to see it doing cool things, and getting in in the morning to save everything and reboot them. It certainly set me up well for the future.
And didn't break things, because I didn't want to kill the golden goose!
Back in 1999 while I was in high school, I played a goofy harmless prank on one of the school computers.
I created a 2-page slideshow presentation. Both of them had the same black background with grey text that appeared to be a DOS session indicating that Windows was deleted, except one had an underscore at the prompt. By telling the program to automatically advance the slides every second, and to loop the presentation, it gave the impression of a blinking cursor. It looked like a broken computer, but simply pressing Escape would get out of it.
Of course, it's worth mentioning that these were Macs, so they didn't even have DOS or Windows.
Anyways, a teacher saw it and thought I had hacked/broken the computer and sent me to the principal that didn't think it was funny and punished me by making me spend the second half of my lunch period with the school IT guy for the next 2 weeks so I could shadow him and see how much vandalism he has to deal with.
When I saw him the first time, he was like "Wait, what did you do?" and I recreated it. He thought it was funny as hell and thought it was ridiculous for them to act like I broke a computer.
We had a lot of fun hanging out. Even after my punishment was over, I still frequently went to his office to chat or walk around and fix computers.
Heh. I made a Visual Basic 6 program that showed a static screenshot of the desktop. I did this because I only got a few hours in the evening to use the family computer, but if i ever got up to use the bathroom my dad would "play one game of bejeweled real quick" that would sometimes end up taking the entire evening.
When I tried using it, he lost his fucking shit and went berserk.
I love that story, and that's actually such a fantastic punishment IMO (even if it was a bit unwarranted).
I did some similar harmless "hacking" in my high school that accidentally ended up crashing a major switch causing the whole schools network to die for the day. I told my programming class teacher right away, but unfortunately in my case the superintendent decided to press charges.
In the end all it taught me was to never never trust anyone, not exactly the best lesson for an already introverted teen to internalize...
Yeah, pretty sure I would have simply been suspended for pulling off the GP's prank. Maybe even expelled, but then parents would talk it down. Your event would definitely have me gone. Sorry your experience was like that.
Our high-school had an intro to programming class which taught folks how to use VB6 in a computer lab. It was exceptionally self-driven and gave me a lot of rope to do whatever I wanted.
The PCs in the lab were very slow, and a known prank (taught to everybody at some point by virtue of being a victim) was to hold Win+E, spawning hundreds of Explorer windows and bringing the PC to its knees. Sometimes you could wait it out, but a stealthy pranker could hold it so long a restart was required.
Well, I created a little VB6 programme named "DoraTheExplorer.exe" which would do exactly that when you clicked on it. I put that on the schools shared drive (where you could sometimes find portable executables of the original Halo game until the admin found and deleted it).
My prank was successful for a short while until, however, it became quickly evaded by folks just hitting Alt+F4 quickly and exiting the Dora Programme.
I then discovered you could get the programme to launch another instance of itself on exit, but this was also countered by spamming Alt+F4 rapidly.
Finally, I hit my magnum opus. A hydra. Everytime you'd close dora.exe, it'd open two more. It was an ICBM in the Explorer prank wars and defeat was declared.
The admin knew about this the whole time, and they were generally chill. They made it clear that if anyone lost work or if it caused harm, then I'd be held responsible. But that never happened because everyone knew what dora.exe did, I was too proud not to tell folks :P People only clicked on dora.exe for the dumb pleasure of crashing their PCs and trying to see if they could evade it.
Very grateful for that class and the generally chill environment I was in.
this is my favorite story from running the site, and possibly the best story I've ever been a part of. I'm not a big crier but I have cried so many times thinking and trying to write about it over the past 2 months. And of course, the process of discovery (and going from panic to excitement) was pretty crazy too.
One of my favorite things about this is that it validated one of the core beliefs I have when making these things - that you need constraints for the small group of people that are jerks, but that for the most part those constraints are fodder for the largely-good and very creative folks that play around on the internet.
Fantastic telling of it in both text and video form. Great to celebrate these people doing the kinds of things we learned so much from! Thanks for sharing.
Thanks for the great writeups, this one, the one about scaling, and your work in general. It's been very inspiring.
Also, you're absolutely right about largely good and creative people.
I built a OMCB clone because the concept possessed me; i threw it online, a day later, okay a couple of dicks, whatever. Holy shit someone put a huge Hokusai's The Great Wave in there! (My version uses a fixed width/height, a big scrollable canvas, so that was easy to spot)
* More than anything, I think it's good for things to end! I figured interest in the site would die off over time (and it started to), and I thought it was better to close things out providing a special experience for the people that used it than to keep it up to get a few more users
* Costs started adding up; donations stopped matching them. I coulda figured out how to lower my costs but I wasn't excited about it.
* While the site was up I felt an obligation to make sure someone hadn't found some trivial workaround to deface the thing and I didn't want to do that anymore.
I'm very pro ephemeral stuff! So I feel good about the decision. But it's a good question.
I enthusiastically agree - and really all that matters is that you feel good about it. As a software engineer who's built (and shut down) many projects, I have always been envious of art forms in which the artist gets to create a piece of work and then "finish" it. We are often at the mercy of perpetual maintenance.
My parents put it as “it’s best to quit while you’re having fun”. Took me years to appreciate it. I’ve passed it on to my kids. They’re finally starting to get it.
That resonates with playing call of duty demo or something like that, free game and only one multiplayer map it was abused for loopholes and bugs because of lots of jerks in a small place and you know every pixel of the game.
Thank you. I enjoyed the sense of play and this story more than anything I have read about the internet in a long time.
I am def burned out, and need to come up with something frivolous. I am reminded of Richard Feynman´s story of spending 10 years depressed after the war, and him finding joy of the physics in a spinning disk one day at lunch, so he could disregard what he had done before.
If you can believe it I found a hack in the early days of PayPal and I was able to buy anything for 1 penny when I was like 15. I just tested it in a couple of e-shops (that was the name back then) and it worked, but I cancelled the order just after checkout just to make sure I was not in the blame for anything coming home that was not expected by the family. Also I was scared of the FBI haha. The only thing I exploited this bug for was to buy all the computer e-books from one of the first publishers. I absolutely devoured the UNIX and x11 ones.
I had a massive "discussion" (argument) with a friend the other day, they were convinced that the internet is just a place full of trolling and nasty commentary and social media was the thing likely to ruin things for our children. My position was that if you spend your life looking at X, Facebook or whatever then, sure, it can seem a bit of a hellish landscape, but the Internet is and can be so much more than that.
This article is perhaps one of the finest examples of this and I applaud you massively for writing the site, looking at how people used it and then taking the time to share the experience.
It's made me really happy reading it and I'll be sharing it lots. A wonderful experiment, well played and much respect. :)
While you're right that the Internet contains a lot of wonder and exploration, the vast majority of people (and kids) will not interact much with that part of the Internet, if at all. Additionally, social media platforms have collapsed what would have been standalone, somewhat magical experiences into their own uniform platforms. I've heard someone say that kids today tend to think in terms of "apps" and not "websites", because rather than having everything scattered across a lot of small, independently maintained, websites, there are instead a few web apps that contain 99% of what you want to get at.
That means that if you really want to "surf" the web these days you have to dig deep and avoid getting sucked into a social media platform. And when you do dig deep there's not that much out there, because the people who would be maintaining their own web page now just have a facebook page for their business and a twitter account for their personal posts.
I was about to comment something similar but you said it so well - this is the internet at it's best, bringing people together to have fun in interesting ways. I remember when it was all like this, but you can still stumble across little moments like this
The Discord URL message that eieio found could be found without relying on 1000x1000, imagery. The other pictures did described in the article did, though.
As for your question, the answer is yes. Bear in mind that the question you're asking is essentially the same as "if you resize your browser window so you can see a specific number of checkboxes per row, are there any drawings you can see?". And people definitely did draw stuff in widths other than 1000! It was just at a vastly smaller scale and done manually.
That said, I do want to try analyzing any available data to see what I can find, for sure.
I never heard of OMCB before, but it's the kind of site that I would love for my teenage kids to find and play with the way those teens in the discord channel did--providing opportunity for creativity and engineering.
In my case, I kind of worked backwards from the way eieio found it. I was at the very bottom of the million checkboxes when I noticed there was a repeating pattern. And if you zoomed out enough, and sized your window large enough, it looked like this: https://matrix.theblob.org/omcb-repeating-pattern.png
It was obviously a bot, but it definitely wasn't random. It was a pattern that repeated every 208 checkboxes. At first I thought it was a barcode, but it wouldn't scan even when I turned it into a form that should scan. Then, I figured it could potentially be a binary code, so I tried treating the repeating pattern as binary, with the checked boxes as 1s and the unchecked boxes as 0s. That got me the URL that eieio talks about in the original article.
Once I was there, I discovered from the other members that I had taken a more arduous route than I needed to; it turns out that the site's API was such that it sent its initial state as a base64-encoded version of the full binary state of the board. Decoding the base64 and looking at the end of the data would also have gotten you the same URL, and as such many of the people in the server were bot developers who had done exactly that because they wanted to reverse-engineer it.
I really enjoyed this post, it brings me back to when I was in high school learning java and I made an app that took over your whole screen with a grid of “x” buttons where only one of them actually closed the window. When someone left their computer unlocked I would pop in a a floppy disk and run the program then leave.
We had an IT guy at our school who would always ask us what we were up to which we would answer honestly. He never got mad at us for figuring out how to get Halo CE or Starcraft or other games running over the network, but he did tell us to knock it off when we got too bold.
My friend memorized his SC CD key so he could reinstall it quickly. Good times
We had a network file share so no floppy necessary. Very easy to hack everyone's computers.
I wrote a script that would read the title of all your open windows and close free games.com or whatever the popular game site was at the time. Shouldn't be playing games in class right? I felt bad when it closed some 3d modelling program because of the save file name he chose. Oops.
if you're just playing on LAN, both 1234-56789-0123 or 3333-33333-3333 work as a cd-key for original StarCraft. installing Brood War on top doesn't even need a cd-key
Back when i was a teenager i was so excited when me and my friends found (technical) loopholes in stuff. It was a game in itself. Getting away with cheating, getting away with "hacking", etcetera. We did some things that may have cost someone some revenue, like writing down cd keys and other stuff, but we meant no harm. No real big damage was done.
Nowadays i have two teenagers myself. Whenever some/we suspect they are "up to no good" i will try and remember my own teenage years. Then i tell them something like that i think that was awesome and i'm proud, but don't get caught again. :)
The shared computers at our school (college equivalent?) were locked down in theory, that is, you had to get the IT guy to grant you internet access, otherwise you could only use things like Word and the like.
We found a workaround; if you opened up notepad, went to the open file dialog, then I forgot the next step but it would open up the file explorer, which turned into Internet Explorer if you entered a URL in the address bar.
Of course, we also had copies of Linux that booted off of CDs, but they were a bit too obvious.
I think there was something like this that allowed you to bypass the password on Win95 - you click help, then something, then it opens the file explorer
> He never got mad at us for figuring out how to get Halo CE or Starcraft or other games running over the network
I had found out that Quake 2 could be run without admin privileges, so I installed it on a bunch of computers throughout my school. Lots of people got into it, but I ended up getting in huge trouble including suspension and parents being called because I "ruined the Internet." The IT person insisted that networked games take up all of the bandwidth and that i had "hacked the computers" to gain admin permissions to install.
As an aside, I seem to have a story for lots of comments in this thread!
That's actually useful, but annoying it doesn't have a corresponding HTML attribute. And also.. it can be both checked and indeterminate, which is fun.
That was so fun to read! It's nice to see internet's creativity at best. Plus: one more data point proving that creativity flourishes when resources are limited
This is an awesome post and sounds like it was an awesome experience.
I’d be interested to see an alternate-history version of this, in a universe where it was built with a serverless architecture. My hunch is that a lot of the late-night hacking sessions wouldn’t have been necessary, but when it went down (due to resource caps) it would’ve been down down, not just slow.
You'd have a serverless Lamda hit Elasticache/Redis and then still run into scaling issues because the code you wrote wasn't optimized. Given enough Lamdas and no connection pooling, you'll still exhaust Elasticache and have to do something about it. You'll run into the question about how the bandwidth bill is going to look like in the morning and want to figure out a way to not bankrupt yourself before going to sleep. Worse, AWS is known to gouge for bandwidth, and Lamda doesn't give you the same absolute rate limit control as the author's setup did.
If you're just gonna give up if/when you hit eg Redis rate limits, that doesn't inspire confidence in serverless.
I was one of those hating on the bots. Thank you for this post, I needed it. I too got in trouble at school for programming things I shouldn’t have. But I’ll forever be grateful to the math teacher who said I was allowed to use programs on my TI-83+ calculator as long as I was the one who had written them and I didn’t share them with anyone else.
I don’t know. Reading this made me tear up a bit. I learned software engineering when I was in junior high school. I learned it because I sucked at math, and I want to write programs that solve my homework. Then I continue writing LAN chat, HTTP server, Anti Virus, and a lot more things just because it was fun to do.
It was fun, it was challenging, it was rewarding, it was amazing.
Now that I’m working, with the endless stream of new technologies, the debates of X considered harmful, J is better than K, and a barrage of never ending new things. It started to numb my mind.
Somehow, those joyful feeling of engineering no longer feels like the blue sky. I think its still blue, but for an eye washed in silvers, everything looks gray.
Reading this story somehow light up that childhood feeling of me learning software engineering. It can still be fun. I can still write things for the sake of me and not for the sake of exit nor a new shiny SaaS.
Thank your for writing this. It gave me a ray of hope that it can still be fun.
> Somehow, those joyful feeling of engineering no longer feels like the blue sky. I think its still blue, but for an eye washed in silvers, everything looks gray.
Beautifully said. I'm glad to hear that you feel hope for rekindling this feeling. It sounds like you've already figured this out, but I want to highlight that this a symptom of burnout, and that people who resonate with this should take it seriously.
I remember once I was helping someone at work who was learning Python. They were having trouble understanding how binary file types worked. When it clicked for them, they were so delighted.
I realized I hadn't felt that way in years. It wasn't long after that I realized I was too burned out to stay in my position, and needed to take some time to work on my mental health.
Let me disclaim that this is a work in progress and that I am not a doctor.
Part of it was that I had a breakdown. That was unpleasant. But ultimately it was part of the process. (Not to say this is necessarily true of everyone!) This forced me to quit my job. I have a one track mind, so I couldn't really do the work on myself I needed while I was working. I hope this isn't necessary for you or anyone else though.
When I was breaking down, I lashed out at the people in my life. I made things very hard for them. But they forgave me and supported me. Sometimes I have a mad instinct to smash everything and start over. But they didn't let me push them away.
Reading the Zhuangzi helped me to conceptualize why I allowed myself to be burned out and didn't do anything about it until I was a wreck. In particular, there's a refrain about people who are useful being ground down by being put to use. I realized that I invested my identity in being useful to others, and my team especially, because I didn't respect myself enough to be useless. I didn't value myself outside of being valuable to others. That attitude will inevitably burn you out.
Studying Zen and Taoism and meditating has helped a lot. Partly it's just a very different perspective from what I'm normally exposed to, so it broadens my horizons and helps me take things less seriously. The Zen notion of "practicing" with a problem is a perspective I find really valuable.
I started therapy and I started taking an antidepressant. This was a mixed bag, my therapist ended up moving away and I think I need to change my medication, but I think it was an important step. Something I struggled with was that I didn't understand the mechanism of action behind therapy and I didn't really see any benefit in any particular session. But I've also had to accept that I just don't understand what I need in my life, I think I do but I'm constantly proven wrong, so not being able to see why something is helping doesn't actually mean it isn't.
Similarly, my medication doesn't seem to do anything. But there have been a few times I've had a really hard day, and then when I'm taking my meds in the evening, I realize I had forgotten yesterday. I also think the lows haven't been as low.
About a year and a half after my breakdown, I had a profound spiritual experience I'm not entirely comfortable discussing, you might call it a breakthrough. None of these things caused it. But I think they were all preconditions. I'm not "fixed," and in the intervening time I've had depressive episodes and panic attacks on occasion. But I was "fixed" for ten glorious days, and it proved to me that, regardless of whether such a thing can be permanent, it is possible.
Thank you for taking your time to write this, it gives me a valuable insight. Wishing all the best for you, me, and others out there who're struggling.
Thanks for posting this. It's helpful to read about how others deal with burnout.
Your post reminded me this quote is from a book written in Turkish by a psychologist that had a profound impact on me related to this topic:
"Every rise and ascent to a higher level represents the death of our lower personality at the level we leave behind. Then, we can gently return to that level and whisper to the ear of the actor playing that role with love, understanding, and affection, 'Yes, you are me, but I am not just you!' This way, we can end the dominion of that role in our lives. We both free it from an existence it actually hates and offer ourselves an opportunity for growth! The biggest obstacle in abandoning the role, that is, the lower personality, is not knowing the existence of a higher level - the fear that if the role goes away, we will fall into a void."
I'm not sure it is burn out for me. I think part of it is it feels less special. Maybe that's selfish or delusional on my part. Basically, I used to feel like I was doing something at least somewhat unique. Now, via Youtube and Github, I see that everyone is doing the same thing and repeating the same stuff so I end up with a "why should I do it if it's already been done" feeling.
It's similar to blogs. I ran blog since 26 years ago. Before Facebook, posting and sharing on the net felt special. After Facebook, everyone was posting so blogging was no longer special.
I get that doing it for the fun of the doing itself is a thing. Cooking might be the perfect example. Yet I have a similar problem there. More often than not I learn that a recipe is too much work and it's just better for me to enjoy and appreciate that someone else is willing to make it professionally, and better. One motivation is dishes I can't find at local restaurants. But I still often come to the same conclusion. That it's too much work and I should just wait and really enjoy the dish the next time I'm in a place where it's possible to get it.
I've been burned by that "why should I do it if it's already been done" feeling. I'm still grappling that but the thing that helps me is a quote from Brian Eno where he basically says "f--- originality". Don't try to be original, just do the thing and it will be unique because it's you who did it.
I have similar feelings these days, but I don't think it's burnout for me. I still love programming and making cool stuff.
I think it's just natural cynicsm when you see what the industry does. Making you cross moral boundaries to keep a job, the realization that the best workers may not be guaranteed job security, that there so much cool tech but you may mostly be stuck with CRUD work for business, etc.
I'll still keep at it as I still have much to learn. But reality can be more disappointing than the dream.
I’m 62, and write code every day. For free, and I still regularly release apps. Most of my work (not all) is open-source.
I love it.
The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.
Being “frozen out” of the tech industry was painful, but it resulted in the first truly happy work I’ve ever done. I’m doing what I dreamed of doing, back then. Out of necessity, I have a much-reduced scope, but I still get a lot done.
However, all those decades of shipping software, on someone else’s dime, made it possible for me to do things the way that I do it now. It gave me the ability to pay the bills, and the Discipline and habit, to write (and ship) good software.
Yeah, the side of programming I love is when I write code for free, or contribute to open source projects.
> The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.
This is why I've never taken a coding job despite having played with code since I was a toddler (I'm 36 now). To me, coding is a creative endeavor and I just cannot do creative things for pay/on a deadline. It's the same reason I prefer not to write fiction for money.
At the time I was lost joy of coding too but I was able to found it again.
One key point was to ignore learning new tech if it was not absolutely necessary and focus just creating new things. I think it all started from Sebastian Lague's video which reminded how beautiful coding can be.
Same! It reminded me of a story about the latest Phrack issue called "Calling All Hackers" [1] and made me hopeful that indeed the hacker spirit is still present in the younger generation and will always be, as long as we older folks encourage it instead of trying to hammer it down. Makes me remember the times I was a teen and I was writing code because I wanted to, not because I needed to. Sometimes I used these skills for good, other times for stupid crap like hacking the "competition" and I'm ashamed of this, but all in all this experience made me who I am today and I'm grateful that I had it. And I'm happy the next generation is still finding joy in coding.
“I program like we programmed 15 years ago” told me once my friend and engineer which I consider one of the best graphics programmers around: his projects are fast, beautiful and innovative.
This is, I think, how I felt writing Go. Not necessarily 15 years ago as I was doing Java then, but an "older" but simpler and more straightforward style of programming.
Want to create a database connection? Write "database.connect(host, username, password"). Want to inject a dependency? Just set it in a struct in your main method. Want to create a production build? "go build *.go". Put it in a makefile if you want.
Versus the modern approach, writing YAML to instruct your cloud service to set up a database, docker images that get env vars from somewhere magic, XML or magic auto-injection or however backend works nowadays, typechecking and transpiling, etc.
Thank you. I wrote it as I was inspired by the Silverwash from Witch Hat Atelier, a disease that causes the eye to see grayscale. Its also because silver is a symbol of money, and as an adult; the responsibility to provide for our family, pay here and there, taxes, tuitions, mortgage, etc - can make life feels bleak.
Ah, nice. I initially interpreted silver as age (grey hair) but that made me intrigued: age can make you jaded but can also give perspective to appreciate the good.
I interpreted it to mean "many shiny new tools" so that any project just feels like "nothing special" any longer, queueing up with all the other shiny tools.
There is a similar quote from Bojack Horseman „You know, it's funny; when you look at someone through rose-colored glasses, all the red flags just look like flags.“
Not really relevant. But the quote reminded me of the show.
Sometimes it's good to just step away and do something random. Do Advent of Code but non-competitively, just make it work in a random language without following best practices. Pick up pico-8 and write a crappy game or script with two-lettered variables because you don't have the space or arsedness for longDescriptiveVariableNames. Play games like TIS-100 or Shenzen I/O, making sure to print out the manuals and put them in the oldest folder you can find, and / or spill coffee on it.
(while reading the article..) In the beginning I was like a slow "whoooooaaaah" (mouth 20% open). Then as I scrolled down more and more the 20% became 80%.
A m a z i n g !!!!
So we _can_ have good things! And (most) people _are_ nice and cool and fun!
That's because we can't grow. You want your easy-to-use distilled library? Too bad, here convoluted hallucinated framework and it's an industry and community standard. Or you can get nothing, ha-ha. Going off the "grid" returns you there in no time.
I've found a personal set of tech that is bearable and static and am building up the swiss army tool kit that is either easy to use, or at least I am familiar with and can steer. It's just for me, no link available. My personal garden of programming. The downside is I can't interact with the "industry" that much, which I considered harmful anyway.
From time to time I write code just for the heck of it. That endless debate on how you could've done this better with x instead of y don't happen in a personal project. Unless you're a jerk to yourself (like I sometimes am)
I feel like we have an entire generation of engineers lost in the SaaSification, over-abstraction, over-branding of everything.
I think we need to give junior engineers permission to not care about "whats becoming an industry standard" and "HN front page frameworks/vendors/tooling/etc". It's okay to stop caring about whether or not what you ship is perfectly engineered; the state of the art isn't close to perfect either when you get into the guts of it.
For ongoing skill development, spend more time reading books, manuals, and research papers. Spend less time following software thought leaders on YouTube and X, less time chasing the shiny new thing on the HN frontpage.
Just build. Roll up your sleeves. Find the flow. And just build.
(Note: this is really bad advice if your goal is to learn how to LARP as a senior engineer, land a comfy job at FAANG, go on the conference circuit, and build an audience on social)
I love this story but I wish I understood it better. How did people find their way to the URL if they didn't have DB access? Did they inspect the traffic with a proxy and see the db file going back and forth? I'm just trying to understand what one of these teens had to do to find their way onto that channel where they were hanging out. What steps did they have to figure out on their own?
When you loaded the page you got the state of each of the one million checkboxes. That's the data. People just wrote computer code to read that. You can also check a box to write, manually or with computer code. So you can read and write. Usually you talk to a database with a language like sql but in this case, checkboxes work too ;)
Once you have the data, folks just tried looking at it in different ways to see what was there.
I guess the question might be more along the lines of... Does JavaScript watch each checkbox and POST to some URL when the local user toggles one? Does it poll some URL to learn about changes from the server? Maybe web sockets?
The author has another post that describes how the website worked, including how it changed over the course of its existence. But briefly, yes, web sockets are used to stream updates from the server.
> The typical ways that folks - especially folks who don’t program - bump into bots are things like ticket scalping and restaurant reservation bots. Bots that feel selfish and unfair and antisocial.
This reminded me of how a ski resort, Palisades Tahoe, implemented free but scarce parking reservations for weekend parking last winter. Since it's one of the most popular ski destinations from the Bay Area, you can imagine that bots were written. Every time new spots would "drop" (become available for the following weekend) I think on Tuesdays and Fridays or something like that, they'd be gone in seconds. Clearly bots! So naturally I had no choice but to write one. It just alerted me (via Pushover) when cancelations would lead to open slots, it didn't actually reserve spots on its own, but that was good enough to get the job done for me and my crew.
Several Reddit threads had non-bot-writers discussing that bots must be slurping everything up. I felt so antisocial, but really had no choice.
I use a bot for booking overnight huts on the more popular hiking trails in my country. They become available for booking online at a fixed time each year and are all taken a few seconds later. Using a bot is the only reliable way to get one.
Amusingly there are news articles every year about whether or not people are using bots to book these huts and the operators always deny it vehemently. Whereas I know my bot is up against loads of other bots.
For mine, I just used a $1/mo VPS with a cron job running a bash script that used curl to poll the parking system and determine if its response was interesting. I used "copy as cURL" from browser dev tools to find something usable (which incorporated a slightly fragile, but very long lived, session token corresponding to my "cart") and I actually had to use curl-impersonate [0] for Cloudflare bot detection to stay out of my way. And then curl to alert me via Pushover.
We used to run into the same issue booking camping spots in Massachusetts, which open many months in advance. I don't know what the situation is nowadays but it used to be very competitive, with spots vanishing in seconds after opening.
Amusingly, one camper family we came across said they manually register at the stroke of midnight, but they all do it together from like 6 computers in their house.
It's a shame because the solution is very simple. You have a period of time where people can register interest which is long enough that everyone can do it at their leisure. After this window closes you draw lots. Whoever wins the lottery gets the opportunity to buy (eg by receiving an email with a magic link). If they don't, you draw another person and offer it to them.
Otherwise you have an "auction" where instead of giving the resource to the people willing to pay the most, you give it to the people with the best programming skills (who then turn around and flip it to the people willing to pay the most). Which is pretty unfair, since programming is a specialty, and since presumably we're in a context where giving it to the people who pay the most isn't considered acceptable (or we would just hold an auction).
I believe this is used in parts of the sneaker/fashion industry.
That's good if there's something to buy, but in my scenario it's free. The resort's goal isn't to charge for this parking, it's to ensure that the number of vehicles on the roads leading to their parking lot doesn't exceed the number of parking spaces. So if they have N parking spaces, they allow N reservations to be made, but people are cautiously greedy and make a reservation (when the opportunity begins on the prior Tuesday) before they even know that they're planning to ski that weekend, leading to near-immediate depletion. If the weather isn't looking great, they'll eventually cancel their reservation (lest they get on the resort's no-show shit-list, which ultimately leads to the resort refusing your business -- you must cancel or be found to have parked) and those cancellations are what the bot alerts on.
How would a lottery work for this situation? Everyone thinking of maybe skiing signs up on Monday, then on Tuesday an email is sent to N people saying "you won the parking lottery," then someone canceling last-minute (to avoid the no-show penalty) causes another "you won" email to go out randomly to the wait list? What if the person on the wait list doesn't see that they've won at the last minute, do they get a penalty for not having proactively removed themselves from the wait list upon deciding to ignore email the rest of the week? I guess this could work, but it's pretty dicey...
It works the same, the price is just $0. I'm sure I'm missing nuances since I don't know this resort's business, but here's what I'd propose.
You let people register interest by Monday (potentially weeks in advance). You draw N lots on Tuesday. People get an email, they have the option to reserve a space and 24 hours to exercise it. M people do so. On Wednesday you draw N - M lots. You keep going until either you've assigned all the spaces or you've run out of time.
People will still exercise a greedy strategy, and they might cancel their interest ahead of time, but if the lottery hasn't started that's a free operation. If they click the link and indicate they aren't interested any longer, we can offer the spot to someone else immediately. If they never click the link, then it gets bumped to Wednesday. Hopefully that's tolerable.
How far you may register in advance and how long you have to exercise your option are variables that you can tune. If you're getting overwhelmed and failing to assign spaces, you reduce one or the other.
Last minute cancellations or spots that people repeatedly failed to click the link for, need to be assigned ASAP to avoid a dead weight loss; for these, you can fail back to the old system. Maybe you email everyone who hadn't gotten a space, and the first to click the link wins. If that were the edge case instead of the norm, it probably wouldn't be a big deal to give it to the bot folk. At that point, they're playing an important role in making this market efficient, the sort of HFTs of the ski resort.
Alternatively, you can do just one round and then go to first-to-click. That gives the people who aren't botting room to breathe, at least.
(After typing this all out though, I do see that this is conceptually simple but complex to implement.)
> What if the person on the wait list doesn't see that they've won at the last minute, do they get a penalty for not having proactively removed themselves from the wait list upon deciding to ignore email the rest of the week?
No, when you get the "you won a spot" email, you have to click to confirm. Probably it should be set up to give you 12-24 hours to do so, and if you don't, it draws a new person and sends them an email.
I was surprised to read your initial post about it being hard to get spots. I went four times this past season... though I think maybe only once on a weekend (in January), and it was easy to get a parking reservation. Maybe that was early enough in the season that people hadn't written many bots yet. Bummed that it's going to be a pain next season.
The deadline to cancel without penalty is 9am day-of. In reality people will cancel at all different times, but for this exercise of designing out enough of the stampede conditions, let's say the first cancellation occurs at 8:55am day-of. So now it sends the "you won" email -- maybe the recipient even knew they were at the top of the waitlist so they can anticipate this. They've only got 5 minutes of cancellation window themselves! There is no way of giving another 12-24 hours RSVP time.
Now here's where it gets interesting: this means a rational no-bot human ought to ignore the whole system until 9am day-of, at which point the greedy "just in case" reservations have all been canceled, so all reservations are real people, and the ridiculousness of the system has led enough people to find alternative transportation that plenty of spots are available for easy taking, right? If no-show penalties are enforced properly.
I was out there in early March and this consumed me for a few weeks leading up to it, but it was fun.
Rental cars actually add an interesting aspect to all of this: if you use a disposable (not also used to buy your ski pass) email address and the license plate of your rental car for a reservation, the resort will have no way to penalize you for being a no-show! Any attempt at collecting a fine, prohibiting future business, etc. would be against a useless email address and plate number that you don't reuse the next time you visit.
Also, once you've managed to get a reservation, the system allows you to modify the plate number on your reservation, presumably to allow for renting after reserving.
You don't need to cancel a reservation in order to convert it from a bogus plate number to your actual plate number. Changing your plate number is already permitted by the reservation system.
yeah it only works if you have some kind of ungameable unique id for each participant
if it's parking, you could conceivably make people enter their license plate number when they enter, which would allow you to detect duplicate entries, and is reasonably hard to game if you have some enforcement mechanism on the actual parking side of things
It's so funny you mention this, I actually just launched something super similar today for the California DMV (as a Bay Area student). It checks for openings from cancellations and notifies people.
There's a special kind of magic that comes from meaningfully improving your life from software :)
The government services booking system has received this treatment in some parts of some southern european countries. Organised groups have monopolised the system and go on to sell appointments.
It's an open secret that you can either battle the bots to try to get an appointment slot in 6 to 12 weeks, or you can pay 50€ to the right person and have one in a few days.
I should write a bot for making a parking reservation at work too. At least if there's no-shows people get told off for it (I wonder if they get barred from the parking reservation if they really take the piss after that though).
During Covid I was forced to write a bot just to sign up for swim lane reservations at our local pool. Spots opened up at midnight two calendar days before. Most folks looking to regularly swim at 7am don’t make it a habit of starting up to midnight, and all spots were always booked up by the time I would wake up at 6am. So I wrote myself a bot, which was surprisingly fun and effective!
I had to do similar during the first summer of COVID to get my boat onto Lake Tahoe. Lake Tahoe (and most lakes in CA) requires boat inspections immediately prior to getting onto the water (mostly to prevent Quagga contamination). Those inspections had to be scheduled online during COVID, and there was similar supply & demand to what you describe for parking, so I wrote a bot that notified me (also via Pushover) when a slot became available.
Once I got the reservation I had to tow the boat 9 hours, praying the whole time I didn't have a drop of water on the boat, for which most inspectors will immediately fail you and send you away. The inspection crew there turned out to be pretty awesome though, and they actually washed my whole boat down with hot water which apparently kills any (baby? egg? idk) Quagga muscles.
229 comments
[ 3.8 ms ] story [ 257 ms ] thread> The adults in my life were largely not mad at me. They asked me to knock it off, but also made me a t-shirt. I don’t think I’d be doing what I do now without the encouragement that I received then.
Teena need a place to be moderately mischievous, with semi-real social outcomes, but also some boundaries and help to not take it too far.
And adults who aren’t authorities over them except insofar that they have cool talents the kids want to learn.
At the time I thought I was pretty ridiculous and unfair (lucky my mum agreed), but now looking back with adult eyes I also see it as an almost criminal level of disregard for the job of raising children. Just absolutely irredeemably small-minded, truly pathetic, it makes me so angry to think that there are still young people growing up in that environment and being taught by those people.
The adults in that situation didn't understand the full (or rather, how small) scope of what happened, so for them it looks wildly different than to you or me. To them, computers are black boxes that are not to fuck with, and the ones who do, are only out after destruction and ruining things. That's why they react like they do.
Not to excuse the behavior, they should of course have talked with people who understand what happened before trying to address it, but lack of resources, knowledgeable people and understanding often leads to being able to.
Similarly, I at one point (before I'd consider myself a programmer) worked as a customer support agent contracted out to a popular fruit technology company, saw efficiencies in how things were done manually and hacked together a browser extension. At first just me and my colleague next to me was using it. Eventually, it spread and eventually management found out.
Instead of trying to elevate the processes and seeing that things could be better, they decided to eventually get rid of me, too risky they said.
It was an early lesson in the fact that there are a lot of people doing IT in schools who, frankly, suck at their job. Most of the good IT people are getting paid way more elsewhere. The crappy ones are working in an environment where easily 1 in 50 of the students know more than they do and some of them feel threatened and lash out when someone is outing them for being lousy at their job, intentionally or otherwise. Like you did (disk quotas much?). Like they suspected me of.
Fixing the structural problem would require paying IT people in schools a rate that more closely matches what they'd make in industry. Fixing the social problem would require hiring people who understand what you and the author figured out: that nurturing people and directing their impulses productively yields better long-term outcomes for everyone.
The next year I mentioned to the teacher that I had something I wanted to play with, can I please get access to a PC (the lab computers were Acorns), and so he gave me after school access to the accounting classroom, more storage on the network drive (50MB when everyone else had 5!), and basically free reign if I didn't break things. So I didn't, and was running Tierra on piles of machines overnight, just to see it doing cool things, and getting in in the morning to save everything and reboot them. It certainly set me up well for the future.
And didn't break things, because I didn't want to kill the golden goose!
I created a 2-page slideshow presentation. Both of them had the same black background with grey text that appeared to be a DOS session indicating that Windows was deleted, except one had an underscore at the prompt. By telling the program to automatically advance the slides every second, and to loop the presentation, it gave the impression of a blinking cursor. It looked like a broken computer, but simply pressing Escape would get out of it.
Of course, it's worth mentioning that these were Macs, so they didn't even have DOS or Windows.
Anyways, a teacher saw it and thought I had hacked/broken the computer and sent me to the principal that didn't think it was funny and punished me by making me spend the second half of my lunch period with the school IT guy for the next 2 weeks so I could shadow him and see how much vandalism he has to deal with.
When I saw him the first time, he was like "Wait, what did you do?" and I recreated it. He thought it was funny as hell and thought it was ridiculous for them to act like I broke a computer.
We had a lot of fun hanging out. Even after my punishment was over, I still frequently went to his office to chat or walk around and fix computers.
When I tried using it, he lost his fucking shit and went berserk.
At least it taught me how to be a better parent
I did some similar harmless "hacking" in my high school that accidentally ended up crashing a major switch causing the whole schools network to die for the day. I told my programming class teacher right away, but unfortunately in my case the superintendent decided to press charges.
In the end all it taught me was to never never trust anyone, not exactly the best lesson for an already introverted teen to internalize...
Remember kids. It will be your turn to free a young soul one day, and you should give same as you once received.
And having already a turn or two myself, I can report it feels great!
The PCs in the lab were very slow, and a known prank (taught to everybody at some point by virtue of being a victim) was to hold Win+E, spawning hundreds of Explorer windows and bringing the PC to its knees. Sometimes you could wait it out, but a stealthy pranker could hold it so long a restart was required.
Well, I created a little VB6 programme named "DoraTheExplorer.exe" which would do exactly that when you clicked on it. I put that on the schools shared drive (where you could sometimes find portable executables of the original Halo game until the admin found and deleted it).
My prank was successful for a short while until, however, it became quickly evaded by folks just hitting Alt+F4 quickly and exiting the Dora Programme.
I then discovered you could get the programme to launch another instance of itself on exit, but this was also countered by spamming Alt+F4 rapidly.
Finally, I hit my magnum opus. A hydra. Everytime you'd close dora.exe, it'd open two more. It was an ICBM in the Explorer prank wars and defeat was declared.
The admin knew about this the whole time, and they were generally chill. They made it clear that if anyone lost work or if it caused harm, then I'd be held responsible. But that never happened because everyone knew what dora.exe did, I was too proud not to tell folks :P People only clicked on dora.exe for the dumb pleasure of crashing their PCs and trying to see if they could evade it.
Very grateful for that class and the generally chill environment I was in.
this is my favorite story from running the site, and possibly the best story I've ever been a part of. I'm not a big crier but I have cried so many times thinking and trying to write about it over the past 2 months. And of course, the process of discovery (and going from panic to excitement) was pretty crazy too.
One of my favorite things about this is that it validated one of the core beliefs I have when making these things - that you need constraints for the small group of people that are jerks, but that for the most part those constraints are fodder for the largely-good and very creative folks that play around on the internet.
Happy to answer any questions folks have!
Thank you for both the site and the articles.
Also, you're absolutely right about largely good and creative people.
I built a OMCB clone because the concept possessed me; i threw it online, a day later, okay a couple of dicks, whatever. Holy shit someone put a huge Hokusai's The Great Wave in there! (My version uses a fixed width/height, a big scrollable canvas, so that was easy to spot)
Seeing that felt so good, so joyful :)
Well done and nice execution.
You know who else said this (in spirit)? Bill Watterson, author of Calvin and Hobbes.
There are few other people I'd be proud to be in the company of :-).
Thanks for the writeup!
I am def burned out, and need to come up with something frivolous. I am reminded of Richard Feynman´s story of spending 10 years depressed after the war, and him finding joy of the physics in a spinning disk one day at lunch, so he could disregard what he had done before.
Best of luck to you.
It's always nice to hear that internet is still fun for ppl
This article is perhaps one of the finest examples of this and I applaud you massively for writing the site, looking at how people used it and then taking the time to share the experience.
It's made me really happy reading it and I'll be sharing it lots. A wonderful experiment, well played and much respect. :)
That means that if you really want to "surf" the web these days you have to dig deep and avoid getting sucked into a social media platform. And when you do dig deep there's not that much out there, because the people who would be maintaining their own web page now just have a facebook page for their business and a twitter account for their personal posts.
I'm spending too much time here.
I guess next time you pick a prime (or a semiprime) if you want to make it harder (or easier) for people to guess a good shape!
As for your question, the answer is yes. Bear in mind that the question you're asking is essentially the same as "if you resize your browser window so you can see a specific number of checkboxes per row, are there any drawings you can see?". And people definitely did draw stuff in widths other than 1000! It was just at a vastly smaller scale and done manually.
That said, I do want to try analyzing any available data to see what I can find, for sure.
How did you find the link? Please share... Really interested to find out.
It was obviously a bot, but it definitely wasn't random. It was a pattern that repeated every 208 checkboxes. At first I thought it was a barcode, but it wouldn't scan even when I turned it into a form that should scan. Then, I figured it could potentially be a binary code, so I tried treating the repeating pattern as binary, with the checked boxes as 1s and the unchecked boxes as 0s. That got me the URL that eieio talks about in the original article.
Once I was there, I discovered from the other members that I had taken a more arduous route than I needed to; it turns out that the site's API was such that it sent its initial state as a base64-encoded version of the full binary state of the board. Decoding the base64 and looking at the end of the data would also have gotten you the same URL, and as such many of the people in the server were bot developers who had done exactly that because they wanted to reverse-engineer it.
We had an IT guy at our school who would always ask us what we were up to which we would answer honestly. He never got mad at us for figuring out how to get Halo CE or Starcraft or other games running over the network, but he did tell us to knock it off when we got too bold.
We had a network file share so no floppy necessary. Very easy to hack everyone's computers.
I wrote a script that would read the title of all your open windows and close free games.com or whatever the popular game site was at the time. Shouldn't be playing games in class right? I felt bad when it closed some 3d modelling program because of the save file name he chose. Oops.
Nowadays i have two teenagers myself. Whenever some/we suspect they are "up to no good" i will try and remember my own teenage years. Then i tell them something like that i think that was awesome and i'm proud, but don't get caught again. :)
We found a workaround; if you opened up notepad, went to the open file dialog, then I forgot the next step but it would open up the file explorer, which turned into Internet Explorer if you entered a URL in the address bar.
Of course, we also had copies of Linux that booted off of CDs, but they were a bit too obvious.
I had found out that Quake 2 could be run without admin privileges, so I installed it on a bunch of computers throughout my school. Lots of people got into it, but I ended up getting in huge trouble including suspension and parents being called because I "ruined the Internet." The IT person insisted that networked games take up all of the bandwidth and that i had "hacked the computers" to gain admin permissions to install.
As an aside, I seem to have a story for lots of comments in this thread!
Ah, i see someone has been burned by true, false and null before!
I’d be interested to see an alternate-history version of this, in a universe where it was built with a serverless architecture. My hunch is that a lot of the late-night hacking sessions wouldn’t have been necessary, but when it went down (due to resource caps) it would’ve been down down, not just slow.
If you're just gonna give up if/when you hit eg Redis rate limits, that doesn't inspire confidence in serverless.
It was fun, it was challenging, it was rewarding, it was amazing.
Now that I’m working, with the endless stream of new technologies, the debates of X considered harmful, J is better than K, and a barrage of never ending new things. It started to numb my mind.
Somehow, those joyful feeling of engineering no longer feels like the blue sky. I think its still blue, but for an eye washed in silvers, everything looks gray.
Reading this story somehow light up that childhood feeling of me learning software engineering. It can still be fun. I can still write things for the sake of me and not for the sake of exit nor a new shiny SaaS.
Thank your for writing this. It gave me a ray of hope that it can still be fun.
Beautifully said. I'm glad to hear that you feel hope for rekindling this feeling. It sounds like you've already figured this out, but I want to highlight that this a symptom of burnout, and that people who resonate with this should take it seriously.
I remember once I was helping someone at work who was learning Python. They were having trouble understanding how binary file types worked. When it clicked for them, they were so delighted.
I realized I hadn't felt that way in years. It wasn't long after that I realized I was too burned out to stay in my position, and needed to take some time to work on my mental health.
If you don't mind sharing, what did you do to improve your mental health?
Part of it was that I had a breakdown. That was unpleasant. But ultimately it was part of the process. (Not to say this is necessarily true of everyone!) This forced me to quit my job. I have a one track mind, so I couldn't really do the work on myself I needed while I was working. I hope this isn't necessary for you or anyone else though.
When I was breaking down, I lashed out at the people in my life. I made things very hard for them. But they forgave me and supported me. Sometimes I have a mad instinct to smash everything and start over. But they didn't let me push them away.
Reading the Zhuangzi helped me to conceptualize why I allowed myself to be burned out and didn't do anything about it until I was a wreck. In particular, there's a refrain about people who are useful being ground down by being put to use. I realized that I invested my identity in being useful to others, and my team especially, because I didn't respect myself enough to be useless. I didn't value myself outside of being valuable to others. That attitude will inevitably burn you out.
Studying Zen and Taoism and meditating has helped a lot. Partly it's just a very different perspective from what I'm normally exposed to, so it broadens my horizons and helps me take things less seriously. The Zen notion of "practicing" with a problem is a perspective I find really valuable.
I started therapy and I started taking an antidepressant. This was a mixed bag, my therapist ended up moving away and I think I need to change my medication, but I think it was an important step. Something I struggled with was that I didn't understand the mechanism of action behind therapy and I didn't really see any benefit in any particular session. But I've also had to accept that I just don't understand what I need in my life, I think I do but I'm constantly proven wrong, so not being able to see why something is helping doesn't actually mean it isn't.
Similarly, my medication doesn't seem to do anything. But there have been a few times I've had a really hard day, and then when I'm taking my meds in the evening, I realize I had forgotten yesterday. I also think the lows haven't been as low.
About a year and a half after my breakdown, I had a profound spiritual experience I'm not entirely comfortable discussing, you might call it a breakthrough. None of these things caused it. But I think they were all preconditions. I'm not "fixed," and in the intervening time I've had depressive episodes and panic attacks on occasion. But I was "fixed" for ten glorious days, and it proved to me that, regardless of whether such a thing can be permanent, it is possible.
Your post reminded me this quote is from a book written in Turkish by a psychologist that had a profound impact on me related to this topic:
"Every rise and ascent to a higher level represents the death of our lower personality at the level we leave behind. Then, we can gently return to that level and whisper to the ear of the actor playing that role with love, understanding, and affection, 'Yes, you are me, but I am not just you!' This way, we can end the dominion of that role in our lives. We both free it from an existence it actually hates and offer ourselves an opportunity for growth! The biggest obstacle in abandoning the role, that is, the lower personality, is not knowing the existence of a higher level - the fear that if the role goes away, we will fall into a void."
It's similar to blogs. I ran blog since 26 years ago. Before Facebook, posting and sharing on the net felt special. After Facebook, everyone was posting so blogging was no longer special.
I get that doing it for the fun of the doing itself is a thing. Cooking might be the perfect example. Yet I have a similar problem there. More often than not I learn that a recipe is too much work and it's just better for me to enjoy and appreciate that someone else is willing to make it professionally, and better. One motivation is dishes I can't find at local restaurants. But I still often come to the same conclusion. That it's too much work and I should just wait and really enjoy the dish the next time I'm in a place where it's possible to get it.
I think it's just natural cynicsm when you see what the industry does. Making you cross moral boundaries to keep a job, the realization that the best workers may not be guaranteed job security, that there so much cool tech but you may mostly be stuck with CRUD work for business, etc.
I'll still keep at it as I still have much to learn. But reality can be more disappointing than the dream.
I love it.
The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.
Being “frozen out” of the tech industry was painful, but it resulted in the first truly happy work I’ve ever done. I’m doing what I dreamed of doing, back then. Out of necessity, I have a much-reduced scope, but I still get a lot done.
However, all those decades of shipping software, on someone else’s dime, made it possible for me to do things the way that I do it now. It gave me the ability to pay the bills, and the Discipline and habit, to write (and ship) good software.
> The secret is that I no longer work for people that destroy my work, treat me badly, or force me to do it in a way that destroys creativity, Quality, and velocity.
You are right.
One key point was to ignore learning new tech if it was not absolutely necessary and focus just creating new things. I think it all started from Sebastian Lague's video which reminded how beautiful coding can be.
[https://youtu.be/X-iSQQgOd1A?si=aqriiWmcqqphOiuI]
>It was fun, it was challenging, it was rewarding, it was amazing.
This cannot be overstated
[1] https://news.ycombinator.com/item?id=41306128
Want to create a database connection? Write "database.connect(host, username, password"). Want to inject a dependency? Just set it in a struct in your main method. Want to create a production build? "go build *.go". Put it in a makefile if you want.
Versus the modern approach, writing YAML to instruct your cloud service to set up a database, docker images that get env vars from somewhere magic, XML or magic auto-injection or however backend works nowadays, typechecking and transpiling, etc.
This is a lovely phrase. Is it an idiom or your own creation?
It works on different levels, I guess. =)
Not really relevant. But the quote reminded me of the show.
I would have done everything in Perl for maximum creativeness but didn't have the time to bring myself up to date with the current version.
A m a z i n g !!!!
So we _can_ have good things! And (most) people _are_ nice and cool and fun!
I've found a personal set of tech that is bearable and static and am building up the swiss army tool kit that is either easy to use, or at least I am familiar with and can steer. It's just for me, no link available. My personal garden of programming. The downside is I can't interact with the "industry" that much, which I considered harmful anyway.
I think we need to give junior engineers permission to not care about "whats becoming an industry standard" and "HN front page frameworks/vendors/tooling/etc". It's okay to stop caring about whether or not what you ship is perfectly engineered; the state of the art isn't close to perfect either when you get into the guts of it.
For ongoing skill development, spend more time reading books, manuals, and research papers. Spend less time following software thought leaders on YouTube and X, less time chasing the shiny new thing on the HN frontpage.
Just build. Roll up your sleeves. Find the flow. And just build.
(Note: this is really bad advice if your goal is to learn how to LARP as a senior engineer, land a comfy job at FAANG, go on the conference circuit, and build an audience on social)
Once you have the data, folks just tried looking at it in different ways to see what was there.
http://eieio.games/essays/scaling-one-million-checkboxes/
This reminded me of how a ski resort, Palisades Tahoe, implemented free but scarce parking reservations for weekend parking last winter. Since it's one of the most popular ski destinations from the Bay Area, you can imagine that bots were written. Every time new spots would "drop" (become available for the following weekend) I think on Tuesdays and Fridays or something like that, they'd be gone in seconds. Clearly bots! So naturally I had no choice but to write one. It just alerted me (via Pushover) when cancelations would lead to open slots, it didn't actually reserve spots on its own, but that was good enough to get the job done for me and my crew.
Several Reddit threads had non-bot-writers discussing that bots must be slurping everything up. I felt so antisocial, but really had no choice.
Amusingly there are news articles every year about whether or not people are using bots to book these huts and the operators always deny it vehemently. Whereas I know my bot is up against loads of other bots.
[0] https://github.com/lwthiker/curl-impersonate
Amusingly, one camper family we came across said they manually register at the stroke of midnight, but they all do it together from like 6 computers in their house.
I assume they deny knowing about bots. Nobody knows you're a dog, as the saying goes.
Otherwise you have an "auction" where instead of giving the resource to the people willing to pay the most, you give it to the people with the best programming skills (who then turn around and flip it to the people willing to pay the most). Which is pretty unfair, since programming is a specialty, and since presumably we're in a context where giving it to the people who pay the most isn't considered acceptable (or we would just hold an auction).
I believe this is used in parts of the sneaker/fashion industry.
How would a lottery work for this situation? Everyone thinking of maybe skiing signs up on Monday, then on Tuesday an email is sent to N people saying "you won the parking lottery," then someone canceling last-minute (to avoid the no-show penalty) causes another "you won" email to go out randomly to the wait list? What if the person on the wait list doesn't see that they've won at the last minute, do they get a penalty for not having proactively removed themselves from the wait list upon deciding to ignore email the rest of the week? I guess this could work, but it's pretty dicey...
You let people register interest by Monday (potentially weeks in advance). You draw N lots on Tuesday. People get an email, they have the option to reserve a space and 24 hours to exercise it. M people do so. On Wednesday you draw N - M lots. You keep going until either you've assigned all the spaces or you've run out of time.
People will still exercise a greedy strategy, and they might cancel their interest ahead of time, but if the lottery hasn't started that's a free operation. If they click the link and indicate they aren't interested any longer, we can offer the spot to someone else immediately. If they never click the link, then it gets bumped to Wednesday. Hopefully that's tolerable.
How far you may register in advance and how long you have to exercise your option are variables that you can tune. If you're getting overwhelmed and failing to assign spaces, you reduce one or the other.
Last minute cancellations or spots that people repeatedly failed to click the link for, need to be assigned ASAP to avoid a dead weight loss; for these, you can fail back to the old system. Maybe you email everyone who hadn't gotten a space, and the first to click the link wins. If that were the edge case instead of the norm, it probably wouldn't be a big deal to give it to the bot folk. At that point, they're playing an important role in making this market efficient, the sort of HFTs of the ski resort.
Alternatively, you can do just one round and then go to first-to-click. That gives the people who aren't botting room to breathe, at least.
(After typing this all out though, I do see that this is conceptually simple but complex to implement.)
No, when you get the "you won a spot" email, you have to click to confirm. Probably it should be set up to give you 12-24 hours to do so, and if you don't, it draws a new person and sends them an email.
I was surprised to read your initial post about it being hard to get spots. I went four times this past season... though I think maybe only once on a weekend (in January), and it was easy to get a parking reservation. Maybe that was early enough in the season that people hadn't written many bots yet. Bummed that it's going to be a pain next season.
Now here's where it gets interesting: this means a rational no-bot human ought to ignore the whole system until 9am day-of, at which point the greedy "just in case" reservations have all been canceled, so all reservations are real people, and the ridiculousness of the system has led enough people to find alternative transportation that plenty of spots are available for easy taking, right? If no-show penalties are enforced properly.
I was out there in early March and this consumed me for a few weeks leading up to it, but it was fun.
Couldn't someone use a bot to register interest a million times so they have a much higher chance of winning the lot drawing?
Also, once you've managed to get a reservation, the system allows you to modify the plate number on your reservation, presumably to allow for renting after reserving.
if it's parking, you could conceivably make people enter their license plate number when they enter, which would allow you to detect duplicate entries, and is reasonably hard to game if you have some enforcement mechanism on the actual parking side of things
There's a special kind of magic that comes from meaningfully improving your life from software :)
(the project is https://dmvfilter.com if you want to check it out!)
It's an open secret that you can either battle the bots to try to get an appointment slot in 6 to 12 weeks, or you can pay 50€ to the right person and have one in a few days.
Once I got the reservation I had to tow the boat 9 hours, praying the whole time I didn't have a drop of water on the boat, for which most inspectors will immediately fail you and send you away. The inspection crew there turned out to be pretty awesome though, and they actually washed my whole boat down with hot water which apparently kills any (baby? egg? idk) Quagga muscles.