Why I prefer making useless stuff
web.eecs.utk.edu
web.eecs.utk.edu
I ended up pivoting to discuss some comparatively banal professional project migrating a mid-sized financial product to a new tech-stack, which managed to captivate their attention. I found this experience extremely disheartening, however important a lesson it was to learn. I don't think it's changed my outlook in any way though, admittedly. I still work on the same kinds of projects, and I still think the best developers are the ones who do work on toy projects for their own enjoyment.
If GP is looking for a job then for the love of god, please email gianni at my-hn-user-name dot co dot uk :)
A very common topic about programming is how useless are most whiteboard job interviews, as they challenge the interviewees on something they will never use in the job.
Few things are farther away from day-to-day programming that a white-board problem, but kernel development might just be one of them.
In regards to the GP story, I'm also saddened that the interviewers didn't show interest for those projects. Kernel development indicates a high aptitude for many kinds of unrelated programming jobs, but not for most of them. Especially "enterprise" jobs. For the purposes of the interview the "banal professional project" is likely the relevant one.
If anything, having the senior developers show no interest is a good thing, and indicates that even if the candidate gets the job he probably won't enjoy his time at the company.
Keeping with the example of creating an OS kernel, foundational programming skills translate across everything. So kernel development shouldn't be a negative signal in regards to programming ability.
In regards to kernel development itself, I think it's probably very valuable experience not because of the programming but because of the perspective the person has gained. I have no experience with kernel development, but I would hazard that you need a very different mindset and approach compared to application development.
I think the perspective you gain from being forced to adopt a different mindset and approach is massively undervalued by most people because it's not immediately obvious how that experience is useful or directly applicable.
I'd go as far as saying people who've never done this level of hobby work don't understand the amount and breadth of experience and knowledge one gains this way.
A OS kernel or an assembler for a niche architecture aren't something you just do like another work task. It's not something you half-ass under deadline pressure by gluing together some third party libraries, StackOverflow tips and hastly skimmed documentation. Your boss would never agree to pay you for the amount of time and care that's involved in hobby projects like these. A month of such a project will teach you more about computing than a year on the job[0].
Unfortunately, this kind of experience is hard to keep track of and neatly summarize on your CV. If you tried, you'd end up with a page or three extra, and people would think you're just keyword stuffing, and doing it badly - referencing niche, unmarketable technologies, seemingly related to nothing[1]. These skills are important and very useful, but they don't look like it until you need them[1], and you're unlikely to pick them up on the job, unless there's already someone who had them before joining the company, and is now teaching others. There just isn't time. Taking care, or spending time sharpening the saw[2], is considered time not spent delivering business value.
Since most software companies aren't really training their workforce much, it's kind of dumb to ignore off-work experience - after all, if your company isn't giving people time to skill up, why assume previous companies on a candidate's CV were different?
--
[0] - It might not teach you how to work in a team setting, though. That's what jobs are good at. That, and teaching you what "good enough" is.
[1] - Like, I wouldn't put "Event Tracing for Windows" as a qualification on my resume, even though me being familiar with it saved the company a lot of money they'd otherwise spend on people continuing to fruitlessly chase a heisenbug.
[2] - Or, God forbid, writing tools for yourself.
For example, an actor applying for a role in a commercial might cite their side role in doing a theatrical production of hamlet for their community, but the interviewers (an advertising production agency) might only want to care how much professional experience they have shooting commercials.
Sure, these experiences in "unrelated" work might show qualities that could be applied to this job. But you aint paid for your broad and wide interests in the topic - you are paid on being able to implement some work/feature that somebody else told you to do. And in fact, if you require intrinsic motivation to actually perform well, you might end up being a liability to the team, rather than an asset - after all, if the work is boring, and you lack intrinsic motivation for it, you might slack off, or over-engineer it to make the work more interesting to you. Or you might end up being a difficult person to work with for other team members because you sit so far above them intellectually.
How about we hold those people accountable to the same standards? Hell, most of your politicians are that way.
You have dentists commenting on how pandemic response should be.
For the last 4 years a failed business man con artist destroyed pretty much all he could get his hands on and he's still hailed as some sort of mythical creature.
> Imagine in any other industry, where the candidate mentions irrelevant job experience, and expect that to be the criteria for acceptance into the job.
Are you f'in kidding me? Either we hold the other useless part of society to the same standards we hold ourselves accountable to or we give each other a break.
EDIT: and for all the ignorant folks thinking Trumps schoolyard bully rhetoric did anything but empower the CCP keep in mind that Chinas nickname for Trump is "Chuan Jian Guo". Trump the nation builder(guess who's nation they are talking about). And as much as I disliked Obama and his TPP, it was the answer to the new silk road. Trump basically handed China the entirety of Asias future on a silver platter, and in return the US got what? 10 billion in trade deficit balances? Completely laughable. Or the new Blue Dot(completely fitting name by the way)?
https://asiatimes.com/2019/11/a-blue-dot-barely-visible-from...
Blue Dot is described, officially, as promoting global, multi-stakeholder “sustainable infrastructure development in the Indo-Pacific region and around the world.”
It is a joint project of the US Overseas Private Investment Corporation, in partnership with Australia’s Department of Foreign Affairs and Trade and the Japan Bank for International Cooperation.
Now compare it with what just happened this same week at the inauguration of the China International Import Expo in Shanghai.
As Xi stressed: “To date, China has signed 197 documents on Belt and Road cooperation with 137 countries and 30 international organizations.”
Even if they don't consider community theater roles to be relevant experience, a casting director/interviewer shouldn't be caught off guard by them.
Does it work like this? I guess it depends on the point in actor's career. If they're 10+ years into commercial acting, then community theare might not be relevant, but at the start of one's career, it seems to me to be highly relevant. At the very least, it demonstrates the person knows the basics of acting, can follow the script, and has experience dealing with the support structure (director, sound/lighting technicians, etc.). This isn't fundamentally different from what they'll face when shooting a commercial.
Also: at least over here in Poland, most film actors come from classical theatre background, they study in theatrical schools. Any kind of theatrical background is highly relevant.
If an interviewee has a pet operating system they've developed they can probably figure out your CRUD app.
Kernel development involves reading vague documentation (that might be wrong) and figuring out how to make things work with not always useful or immediate feedback. And reading other people's similar code to check for clues.
If that's not relevant to day to day development, I've been working at the wrong places. Yes, you don't do a whole lot of page tables day to day; but ocassionally you might need to make something work better or faster, and having deep knowledge of how you might put something like that together will help a lot as you dive into the murky depths of whatever actual OS you work with. Or you could open a support ticket with your vendor, I dunno, people always say that's an option, but I've never seen it happen, and it takes longer to make a clean example program to share outside the company than it does to dig in and fix the problem.
At previous companies I've worked at (small statups) where I had a high influence on hiring: yes absolutely unless someone more qualified with the same excitement came around (aka Rob Pike walks in).
At Google interviewing is complicated. There is a lot on the Google careers site about this if you're interested. If you brought this up while doing team matching it will make people's eyes light up. My TL liked that I was doing game dev, R&D, and OS dev for fun and I think it's a large part of why I was chosen for my team.
This is true. I'd counter that though by saying that I don't think there's any other project that's taught me more about the nature of what we do as programmers than Operating-System development, even just the little I've done. In order to build even the most basic, non-functional toy kernels you need to gather a comprehensive, holistic view of how compilers, operating systems, and computer hardware interact.
Nobody's complaining about whiteboard coding challenges because people who ace them suck at writing code. It's because a far greater number of perfectly competent programmers will fail any given challenge of that type above trivial complexity.
Is there such a high correlation? I used to do a lot of hackerrank-style problems for fun, a few years ago. If I had to evaluate my ability to write code back then: pretty crappy.
I was good at writing functions, I was bad at writing programs.
--
[0] - There are plenty of better options, but they tend to not scale - so they cost more, and companies avoid them.
a) your understanding of the basics is solid;
b) let's face it, these brain teasers are often proxies for intelligence testing.
If they have a glut of candidates for every position, whiteboarding data structures and algorithms makes for a decent filter.
1. MIPS, eh? Say, does your assembler automatically fill branch delay slots, or is that manual? Does it just fill them with noops, or does it move instructions from the branch target?
2. Do you have all the pseudo-ops, so that a move doesn't have to be expressed as add dest, src, 0 type of thing?
3. Is your assembler syntax compatible with other assemblers? Is the object format?
4. Is there a regression test suite?
Edit: grammar.
If genuine enthusiasm really is lethal, it sounds like a toxic work environment.
I use fun side projects to really level up my software design skills because I can take on bigger tasks and have total freedom to experiment with different designs. I don't think I'd be the programmer I am today without all the side projects I've done over the last 20 years. On the other hand, work has taught me how to work on a team, how to communicate well, how to make political trade-offs, and more.
I also experienced the same interviewing experience you had, many times: my “talk about something interesting you made” answer used to be “I made a twitter bot that makes poetry with ML and I spent months training it” - it always got radically different reactions, from blank stares to “why didn’t you use those to mine bitcoin?”
A lot changes between times, too. Decades ago, those of us who did computer "stuff" in places like the Bay Area were typically nerdy science/math lovers who were an unfashionable segment of society with hobbies like ham radio, astronomy, homemade electronics, science fiction, math competitions, etc.
Meetups like the West Coast Computer Faire, little shops like Weird Stuff, amateur radio "hamfests", astronomy clubs, and so on were everywhere. Programmers knew how to use soldering irons and slide rules. Tech companies were rounding errors compared to, say, car companies.
But the intellectual fashion enforcers with wealth and power that tech companies are now, with tools to make society submit to their will are not the culture we were. Like Wall Street before them, they have bigger plans than ordinary, little people with their quaint hobbies. So even though we pocket protector and slide rule types still exist and can form a quorum online, the in-person meetings mostly (not entirely but mostly) vanished back in the dot-com mania.
It's the tyranny of the internet, the bigger a group of people the harder it is to keep everyone happy and in agreeance, and not tread on any toes. Disagreement isn't the end of the world though.
Dammit. So this is not something I merely suspected but is really true. I grew up around the year 2000 and programming was all I could think about, I read about people/meetups you describe and was eager to be a part of them.
By the time I grew up, attended university and started a job, things seemed very different. The stuff that got me excited about programming are now considered "boring" or "legacy".
Makes you wonder if you should give up on what you like doing and do what is considered amazing now (AI etc) even though you don't find it fun :/
Absolutely not. All these things people are talking about in this thread are still out there, you just have to keep looking. Posts show up on HN occasionally that hint at it, but one of my favorite places to go browse when I need a hit of that passion project ecosystem is hackaday.com.
There are so many people out there doing cool stuff just to do it, especially given the fact that everything is literally orders of magnitude more accessible than it was even 10 years ago when you consider resources like YouTube, and the race to the bottom on cost of things like Arduinos, 3D printing, etc.
If this does circle back to finding a job, then that's a matter of finding the right fits. I got my first job out of college writing iOS apps for motorcoach bus schedules by showing the company a game I released on the app store, and my most recent position for a Senior iOS dev (which has translated to a firmware position), I spent most of my interview talking about my homebrew synth project: https://imgur.com/a/FZ6GFsI
There are people out there who will be interested, and they also happen to be people who hire people! I show my coworkers my side projects all the time, sometimes they're somewhat relevant to what we do, sometimes they don't relate at all.
My guess is that this is because of different motivations people had to learn computer programming. Did you learn programming because making simple programs in Basic was irresistibly fascinating? Or did you learn programming because people told you that this was how you could make a lot of money? Of course the former type of software developer is more likely to play with "useless" (i.e. not immediately profitable) stuff than the latter.
When I was a kid, personal computers existed, but they were mere toys. It was not obvious that something like today's IT industry will exist one day. Therefore, only nerds played with personal computers. And the first IT companies were full of nerds, because those were the only people who knew how to write code.
When it became obvious that IT jobs are well paid and the demand for programmers is large, people motivated mostly by money started studying computer science, too. These days they probably are a majority at most workplaces.
Nerds had their moment in the spotlight, now they are being displaced by normies. Being fascinated by tech for tech's sake is uncool again. It is cool to be fascinated by tech for money's sake, though.
By firing James Damore, even Google made it official that people on the autistic spectrum are no longer welcome.
Those things are exciting to me. But I notice my work colleagues, especially the ones from newer generations and those working more on high level stuffs, are rarely interested in these computational/communication device hobby thingies at the fundamental levels. They are more interested in what to make out of them rather than what are they made of.
No, no! It was about how interested you were, not how skilled.
These things are exciting to me
And there you go: you're the real McCoy. When I say, "programmers knew how to use soldering irons and slide rules," I mean that you, a programmer among other things, would get together with friends at an astronomy club meeting, and somebody would know how to estimate a rough comet orbit from some observations with pencil and slide rule, and everyone else would say, "ooh, show me how!", even though the Naval Observatory was going to do it for you and do it better. Yes, but how can I do this magic myself? Most programmers were the kind of people who wanted these other skills but didn't necessarily have them.
I'd go to a hamfest barely knowing how to spell "ohm", discover someone building his own computer, and he'd show me how to solder a joint that didn't look like a little silver snowman, and I'd teach him that, no, surprisingly, there is more than one algorithm for sorting, and we'd both hear that someone had just picked up a communications satellite overhead on his HeathKit shoebox receiver, and we'd run off to see it. Was there money in it? More likely to cost money than make money. Couldn't NASA do this? [puzzled look:] Sure, but look at this! We're picking up a signal from SPACE!
It's very much, "look I get that we've done it, but I want to know how to do it", how else am I going to learn?
I never really got into ham, I should see if there's anything locally...
All the eccentrics and wizards seem to be gone. It's all just crass transactional factory workers. Last contract I was surrounded by people who talked about the entire line of Audi and BMW sedans, but had zero interest in any ideas.
Always keep this in mind at the back of your mind when interviewing - your answers have to relate to the job you're interviewing for in some shape or form, hopefully in a good way. I'm guessing the interview wasn't at a kernel, embedded devices or compiler companies - those would have dug into GP's projects in detail, with enthusiasm. GP would still be cog there, obviously.
This is the core disagreement though: to 'ajxs, me, and many other commenters here, these aren't unrelated hobbies. Software engineering can't be neatly demarked along the lines of programming languages or frameworks. These are just the tip of an iceberg (and most of them are just flavors of the same thing, solving the same underlying problems).
You don't just write a OS kernel and become experienced in kernel development. These kinds of projects, done on the side, with no deadline pressure forcing you to do a half-assed, minimum-effort job, allow you to gain more generalized, holistic understanding, that's very much transferable into just about any kind of programming job you could do.
> your answers have to relate to the job you're interviewing for in some shape or form, hopefully in a good way
That's a very good point. Myself, when talking about my seemingly unrelated side projects, I consider it my responsibility to show how they connect to their domain and skills they look for.
Regarding gauging my suitability for "cog" work: Without wanting to sound arrogant, I don't think it's really that remarkable a feat to memorise the semantics of modern enterprise tools (maybe only a great feat of patience). I can't imagine why anyone would want to hear about all the ORMs I've used, or what Java/Python/Node/<insert tech here> libraries I've used over the years. That stuff is already in my resume. I think it's probably a better wager to risk boring the person looking to hear all about which new Java features you've used, rather than to risk boring the interviewer looking for genuinely interesting passion projects.
That is not arrogant at all. However, I think there is room for pride in enterprise projects beyond memorizing specific libs. You can be proud of turning out a solution under pressure, or solving a seemingly-intractable problem creatively, or even a technically simple solution that improved your/user's lives. One of the most high-impact things I've done in my career was to implement a CSV export feature in an afternoon, without being prompted, saving my colleagues many hours of work per week - they were delighted and I'm yet to tip that.
Interviewers are not always looking to be dazzled by technical brilliance (which is a plus), but you can show many other attributes: grit, patience, creativity, curiosity. I think your side-projects exhibit all 4 attributes, but interviewers are fallible, and it's your role to figure out which attributes are desirable for the role and weave them into your answers.
"Senior Developers" doesn't mean that they will relate to everything related to software development. Either, they stick to the domain they work on or, to the ones that makes money.
Personally, I've always been fascinated with systems programming, thought I'm not much proficient or put in much effort. Whether something is going to make money or not, like many personal stuff we do (art for example), isn't eventually going to make us money, rather it gives us a sense of satisfaction.
Keep doing what you do!
I've learned as well that not everyone enjoys working on code in their spare time, or if they think they might enjoy it, they just don't have the motivation to begin. On the flip side, when I do bring up a project I'm working on and see someone's face light up and they describe something they're working on, I feel an instant connection.
[0] https://andersource.dev/2020/10/10/procedural-butterfly.html
How was it made?
First I'm generating the general geometry of the wings - the most basic shape is a "teardrop" / half of the infinity symbol (see this[0]). Then they are scaled and rotated randomly (within a range to match the other parts of the wings), and further perturbed to make the shape more random. Then I'm drawing lines from the "tip" of the teardrop to the edges and using them to color the segments. The final result is rendered with Three.js[1].
Obviously this is a very succinct explanation, it took me quite some work. You're welcome to look at the code[2], though it's quite messy :)
[0] https://en.wikipedia.org/wiki/Lemniscate_of_Gerono
[2] https://github.com/andersource/andersource.github.io/blob/ma...
That resonates very strongly with me.
> I enjoyed doing it. People don't seem to think that's good enough.
Yeah, I've found that a lot of times when you want to show something you've made to someone, they'll automatically expect it to be useful and judge it from that perspective. Perhaps that would be different if we could frame it in a way that from the beginning helps align expectations?
It might, but I just want to put it out there sometimes. I don't want to have to explain it, or limit its appreciation to whatever I say it is. I like to leave it open for people to interpret. Sure, when you go to a gallery, sometimes there's a little card that "explains" the art work. But sometimes not. I guess I like the freedom of just creating things and letting people interpret them. I don't want to do that all the time, explain it, but I do it sometimes. So I suppose I'm pushing the task onto the consumers of the work to work out what it means for them, rather than me to explain it. And seeing well are people going to be open to that or not. Whatever their reaction, it's okay either way. I just want the freedom myself to explain it when I want and not when I want, but on a basic level both are equally valid.
I do DFIR though and from time to time I help with interviewing potential security analysts. If someone has the skillset needed for the job and on top of that they are so passionate about technology that they work on even tangentially related projects outside of work its largely regarded as an excellent indicator that they'll be a good hire. Obviously that's not the only type of good hire but its one of them.
If I was the person you responded to afterwards I would have come to the conclusion that the interviewers were genuinely stupid people. Even if you don't know anything about OS development you should understand as a person that works with computers or a recruiter that hires for the industry that its a non-trivial project.
I can understand not wanting to do it, it takes a fair bit of time and energy that only comes with a fair bit of passion on the part of the creator, but not understanding why people would just want to make things? That's fairly alien to me =)...
I'd echo seanwilson and ask that you look at flocking, but also more general boid behaviours[0], small herds of these butterflies flying together in a space would look very cool =)...
I guess some people don't see (at least immediately) the artistic value in such things, and then it seems rather pointless.
I currently have two hobby projects "in development". An bot trader (it broke even over 6 months with pretend money).
And a logic analyser using a Raspberry Pi Pico board and the excellent sigrok software - this project took a baby step to being non hobby when another dev found it and raised some issues.
Don't stop with the hobby projects
Well, statistically speaking, neither will the commercial project, no matter how useful.
It's too bad interesting but ultimately useless projects hold so little weight in interviews. But I don't know if it's clear cut that they will be less profitable than commercial projects, which fail more often than not. Expanding your skillset may be more profitable in the end.
I've been thinking of pivoting to useless myself. With projects of some commercial potential I have to have a novelty budget, usually ending up with Node.js and React because as boring as the stack is you can always Google a problem and have the solution handed to you on a platter. But so far none of them have made me any money. They have given me some business experience, though, but I get even more pushback from highlighting or trying to apply that in my day job. They want a good little worker bee, not someone who will be gunning for any business development positions.
Ironically, tinkering for fun can lead to innovation. Many cases of this in maths, science and engineering.
"Yes, by motivating you to hire me"
Seriously, did they expect new hires to be working on their startup on the side?
Wow, they are seriously missing a beat. If someone is making useless stuff, it shows they are passionate, which is hugely valuable because people will work hard and make great code because they enjoy themselves.
Maybe I've just got lucky but here in the UK whenever my passion has bled through in an interview it's been recognised and I've got an offer.
People of this type are displaying the rarest part of the 20,000 hours of practice that's most essential to achieving greatness -- they're pushing themselves to exceed their limits to explore the unknown -- to get better and see farther. And they're willing to try and fail. They're the inventors, the disruptors, the source of all creative change in the world.
I suspect most employers won't welcome that attitude. Like most people, they're happy to wear blinders to disruption in their routine (AKA new ideas / better ways). So let them hire programmers who were accountants in a former life.
If that kind of person is not you, then you're in luck. True to form, in choosing to discuss your passions, you interviewed differently. In doing that you discovered something very useful -- this is a place where you do NOT want to work. Epiphany revealed; the search continues.
The answer should be: yes, because you are hiring me now for the skills I learned doing this.
Face it. You are just not that hot. Another X Compiler for Y. Great. Probably doesn't really work. Senior devs probably care more about that you can finish boring project or stack. Spend hours on some tiny thing and make it work.
It probably also depends on how you present those hobby projects. Instead of saying "Look, I am so cool!", you can say you use this as a means to become a better programmer.
Hope you found something more fitting for your personality.
A hobby OS kernel sounds effing amazing and super cool. I've also written an assembler and interpreter (8051 variant), which was mind-bending in a great way. Thanks for posting!
I don't know what it is. Maybe because I grew up relatively poor?
I also love programming but mostly when it solves an issue for a business. There is nothing better in the world as far as careers go. When I can make $150 an hour and create so much value for a business that they will gladly give me their money, its special.
In general I have hard time just relaxing, I prefer to do and build things around the house.
I would expect that to be followed by, "Just kidding! I have side projects of my own, and that's what my wife says, haha! Don't you hate that?"
Since then, I built a lot more useless stuff. I'm the only user. I can hardcode things, introduce breaking changes, manually migrate data and so on. I can cut corners, or over-engineer everything. Other people can use it, but I don't care about what they think of my variable names, or which features they want.
The turning point for me was the concept of apps as home-cooked meals [0]. If a gardener can grow flowers only he will see, I can write code only I will run.
I only ask as if you’ve discovered a way to produce an income from coding something your own way while still having no-one else to answer to then I too would like to reach Valhalla and you must show me the way.
Before that, I worked programming contracts, and 3-4 months of those per year would also suffice.
Given our profession, many of us could also work less and live on half their income.
But it might be even better than in-house software. I don't have to collaborate with anyone. I can observe "best practices" or not. I don't have to care about rough edges like bad error messages - I'm the programmer and user, so I know what the message means.
I'm calling it my return to hacker roots. Unix was written for hackers who cobbled together quick solutions to personal problems. I no longer feel pressure to share my creations - sometimes I think people get minimal benefit from what I share, but it's more work for me than it's usually worth. Sometimes I feel bad about "not giving back" but many people "giving back" have their own self-driven reasons, such as building their portfolio of work. I have a day job so these reasons don't exist for me.
My most useful software is my meal planning and grocery list system. I've been using it over ten years now. Occasionally I'm asked to share it but it's a very nasty personal creation. I have no desire to share it. I do need to overhaul it though.
Linus Torvalds says he uses some hacked-up abomination of a text editor because it works for him and he knows it. That's the hacker spirit.
Ex: I’ve taken to creating my own CRUD programs for iOS or likewise for shell-based Python scripts on a desktop for things from lists & reminders, tallies, to some minuscule gym data tracking, and a few memory logs. I grow weary of bloated apps and programs built for a remarkably simple purpose but lacking just basic malleable parameters - and yet swelling in size, latency, cost. Or hell, advertisements and “social” shit haranguing me at every menu bar. What the fuck? Hell, music applications are lousy with them - as with YouTube Music or Apple Music.
So yeah, I’m all for it. My life is too short to acquiesce & tolerate the specter of proprietary watered-down stacks without reservation where I consider it desirable & plausible to do otherwise.
I really was looking forward to reading a deeply philosophical introspective considering the poverty of creation that can result from incessant pursuits of relentlessly necessary and important objectives that you have no part in deciding on in any way regardless of the obviousness of futility or impossibility. Impossible tasks multiply most flourishingly in your nearest non tech founded startup, if you need a refresh. Meanwhile the best of us regularly encounter projects that we cannot apply any benefits of our skills and experience to help or even avert failing. To a certain degree this is commonplace, I mean, not the default mode experience of experienced professionals in tech. We definitely can relate nonetheless.
I find pointless work refreshing and it revitalises me in every way. I tend to choose painting for my pointless occupational diversions, but isn't it a definition of art to need no purpose to exist?
my reason for asking is because the most common concern raised when someone's saying that they can't understand a statement or comment uses the phrase "I can't understand" in reference to a particular area of confusion or incomprehension. In this case, I would prefer to clarify the point of your concern in a postscript instead of editing the original text, since that's much better for the integrity of the discussion.
However, because omission of all mention of what's desired to be understood, in this form of inquiry so particularly diminishes the likelihood of success for your (rhetorical, implied) inquiry, or else is a omission possibly due to inattention or haste, and I have observed almost identical responses to a increasing sample of comments other than to my own from where I have been able to discern additional semantic information about the question posed, and this has been a reliable negative indicator of sincerity and a consistent indicator of positive derogatory intent on the part of the non understanding declaration, I consequently do not wish to fall into a conversational trap set up only to insult or deride anything that I have said. Indeed, since you have stated that you don't understand what I'm saying, and this can be taken to mean total incomprehension on your part, obviously simply rewriting my comment alone is not any guarantee of my being able to help you at all. Since this is something that I feel strongly about personally, I am entirely happy to completely structure my original comment anew and break it down into the constructive components and argumentative logic to convey my meaning with the maximum possible clarity.
in absolutely no way am I meaning to condescend to you or criticise your motivation or personal character in this response - absolutely the opposite : the difficulty this presents is that if eg English language comprehension is involved in a fundamental part of your reaction, then I will need to consider this and compose any renewed comment accordingly. For example this reply itself is complicated grammatically and I will restate myself in accordance with your response if any. The only reason why I write this way initially is because I want to convey the nuances of my predicament as clearly as possible to the audience in general and also for the consideration of the moderators if by any chance this is interpreted in a negative light that I haven't been able to anticipate and prevent from affecting the most broad perception of my writing which is by virtue of being a public forum necessarily and preferably my primary concern. In different circumstances but in cases of apparently identical correspondence with the same comment on my language, when I failed to appreciate the pejorative intended meaning and absence of goodwill in the statement that I replied to, it happened that the negative overtones superimposed and obscured all beyond the cursory impression of a snarky exchange and it was thought that I was engaging with a troll deliberately in order to start a cryptic flame war in the guise of semantics. I wasn't and I am not now attempting anything of the sort. But as is clear from my defensive language already, I've been caused to infer something potentially negative which effect I'm entirely certain could have been averted had you made your comment more understand, as well.
(I've worked on concurrent channel linguistic analysis since the early nineties following a successful project processing telephone sales transcripts for outcome prediction. English is far more wealthy and rich in structure than even linguists sometimes realise. Purcell's Lewd Songs are the most excellent introduction to the capabilities and subtlety of cryptic communication in the English language. Temporal dithering of phonetics in the 4 part harmonies are used for singing two simultaneously radically different song lyrics. The cryptic verses are the "Lewd" as in "and bawdy" verses.)
This parent-comment musings drive home the importance of documentation, or complete project management. You’ll feel it viscerally and whatever the experience, you’re responsible for it.
What a great phrase, I'm going to remember it next project do. I get angry at past-me sometimes for the gibberish he wrote.
NB: (1) I made easy improvements it indicated, but not hard ones. (2) the tool itself is super-hacky.., partly my philosophy to impl once to understand the problem, once to solve it (because there's no point designing "the right" solution before you've encountered the whole problem - and I haven't yet.)
What they are free to do is fork the project, and do whatever the hell they want to in the fork.
[1] https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
And if that really bothers you, you can turn off issues in github.
Feel free to mail us your feedback written in pencil on a $20 bill.
Probably Car Talk. Iirc they instructed that puzzler answers be written on the back of a $20 bill also. It was a great radio show!
make the repo private or close contributions then?
if it's going to be useless and only be used by yourself, you might as well blog about it and move onto the next useless project.
hell, there may be no need to place it on github for these sort of projects.
An unmaintained[0] badge feels like a better solution compared to not publishing it
For someone like me sometimes I'm looking for a small sample of code that fits a pattern. I could careless about the project. Sometimes you need an odd piece.
Saying his code doesn't belong on github tells me you might not belong on github.
you're right, most of these 'unpolished' projects can go on gitlab, bitbucket or another git hosting solution instead.
I use Github all the time to find code samples, especially for 3D stuff, shaders, audio, emulation, demoscene... It's more common to find solutions to my problems in zero-star projects than in big ones.
Lots of people star my code-as-art experiments too, and from the forks I can see they find educational value in it.
Not everything in the world has to fit perfectly into some preconceived mold. Heck, in that case, the most interesting/educational things are trying to avoid that.
works well and you can self host it you should try it!
Gitlab/Bitbucket are not "dumps" for projects you deem useless, and "useless" projects are not useless at all from an educational point of view. Gitlab and Bitbucket are exactly the same as Github and should have both "serious" and "useless" projects the same.
Using a personal Gitlab instance or anything similar for that is a terrible idea because it costs substantial time and money of individual developers and severely hurts discoverability.
People should put their "useless" projects wherever they want and are permitted to.
Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.
I also don't want people to have to bug me for feature requests as well on top of that.
There is a reason GitHub/Lab/Bitbucket has private repos for this purpose.
You can obviously choose to share it, but you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features.
I never said you wanted anything. I'm the one who wants to have 'discoverability', both for my projects and other projects that might interest me. It's you, for some unknown reason, that don't want me or anyone to have it!
> Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.
Then don't. But don't demand that of others.
> I also don't want people to have to bug me for feature requests as well on top of that.
That's perfectly acceptable, and I never implied it wasn't.
> you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features
That seems to be your problem, and you're the only one in this discussion complaining about it. Looks like you're projecting your issues onto me.
agree with the others here. github isn't some place where only published packages go.
If you don't want to support an arch/language/platform, etc. just say so in the readme (all arch/languages/platforms besides ____ are unsupported.
People expecting things are pretty par for the course on the internet... Just be firm and curt. Close the issues quickly and refer to them if reopened.
That people send unwanted messages on the internet is the most common complaint I see regarding the internet that I just cant empathise with at all. I just really dont get it. Possibly has something to do with my first couple years online involving 4chan.
I used to put pressure on myself to “finish” and would often miss and feel guilty. Not just computer projects, but electronics, learning musical instruments, etc.
Then I realized I was making my hobbies work and doing it badly. Real work (where I have to finish) got in the way of my hobbies. Hobbies are supposed to be fun, relaxing, and rewarding. What was I doing?
I gave up the pressure and it was liberating. I pick up the guitar for a couple months, then get lost in trying to make analog circuits. I tinker in the garden then teach myself enough CAD to do a small woodworking project. I started sewing masks and tote bags then set it aside. I fish a bunch in the spring and fall. Then, I’ll revisit them later when the muse hits and don’t feel like I wasted money.
Now my only goals are to have some fun, relax, and learn something new.
I really only program for fun in languages I don’t know or platforms I haven’t played with. I learn by picking up a project that scratches an itch.
Sometimes those feed back into my work (eg Go, Kotlin), but most don’t (various LISPs, low level C).
My issues are exacerbated by my ADHD, but I would recommend the approach to anyone with a steady job they enjoy. That and not using TV/movies as a hobby. There’s just so much cool stuff to explore.
I won't post my list of accumulated learnings because it's about as good a personal identifier as my SSN. But it's similarly scattered as yours and I love them all even the ones I haven't used in years.
It's really become the way I orient my life. What bizarre or useful thing I'll get into next is always the big question now.
Long live creativity and self-determination.
So much this.
The time you have is a finite resource, and technical expertise is a function of how you invest your time in activities that enable you to learn and grow.
More often than not, your job is not aligned with your career plan or growth path.
So how is it possible to bridge that gap? Well, through your own persona projects, projects whose goals are set by you and are not encumbered by third party requirements and don't even have to have a business model. Just coding.
Corporations want the reward of investing time in learning and exploring, but they don't want to foot the bill.
They clearly led to the development of skills that produce great economic value.
And yet, so much of what is being monetized these days is being built on top of technologies that their creators gave away for free.
Off the top of my head, I can think of three very influential technologies that their creators (initially one person) gave away for free:
- The world wide web
- Linux
- Python
His reply was: so, how are you planning on making that money back with it?
I had no reply to that.
There are people who, as zombie fiction for teenage audiences author Jonathan Maberry put it "think like insects" - they have but one overriding goal in life: maximize their total wealth.
This is an approach to life so foreign to me yet so often rewarded that it makes me wonder who's really happier.
One thing I know is that I hate working with such people - reading their code feels like listening to muzak - it works, but there doesn't seem to be any actual thought or design behind it. Long term it becomes unmaintainable, but that usually doesn't matter much, because projects get rewritten all the time.
The first rule of sustainable productivity is taking care of the thing doing the producing. If that's a human, that isn't limited to physical wellbeing, especially if they are producing knowledge work.
+1 to this mindset. I would go even further and suggest that useless projects tend to be morally superior to useful ones. A lot (not all) of the useful software out there ends up being used to make the world worse, but useless software can only ever inspire joy (in yourself and, hopefully, in others).
I'm also into compilers and engines. I learned 3d programming by looking at small projects online. The "worse" the code, the easier to learn. If I had tried to follow the Unreal/Unity/Godot codebase I'd still be at the intro screen.
However, I still think you can enjoy working on things that are useful, to yourself and other people, and not for profit. The projects I'm the most proud of are projects I've shared that have been used and appreciated by many users online. You just have to keep the project small and simple, and keep your expectations low.
people have claimed that crypto mining is useless too - but a lot of people also claim that crypto mining is morally wrong since it consumes vast amounts of electricity for "no reason".
I think there's no such thing as morally superior, and a project is never useless to any and everyone. A "useless" project is taken to mean useless to everyone else but the author (since it inspires joy - which makes it not useless).
So in other words, a project that's only useful for yourself is morally superior. However, that's just another way to describe selfishness. So by the transitive property, being selfish must be morally superior!
The HN comments they quote (shipping for customers, and avoiding pointless homework) come from a very different perspective -- where the medium being explored is not computing, but rather the process of satisfying specific human needs in the context of a "market".
Both have their own value; it's just that they're completely orthogonal in intent and worth not conflating.
It's not that I would recommend every project must have customers, but I do think that most programmers will learn & grow tremendously if they take on a project where they are trying to directly satisfy a set of customers. It came to mind because whilst there's a tendency to focus on projects that are technically challenging or interesting, I think such a project would perhaps prove even more challenging, albeit in very different ways.
After a full week of staring at a screen and sitting too much (I alternate between standing/sitting desks all day) and typing, the last thing in the world that I want to do is more of that. Which is unfortunate, because there are numerous fun programming projects that I'm itching to do.
So I play music and make elaborate chalk art with my kid and garden and ride my bike like a madman. And I suspect that I'm better for it. (Though I'd probably be better at my day job if I were doing those side projects.)
But sitting or standing for hours and hours in front of a screen, I'm starting to resent it. This goes so far that I started thinking about building a backpack with an extendable arm to hold my laptop in front of me. Still 2D and physically moving doesn't add to the programming task, but at least I could move while working.
I have thought about that a lot, so much of software is ephemeral, and I find I can never talk to anyone in the real world about it making it feel even more ephemeral.
I don't intend to retrain exactly as I do love software, but I have been trying to work with software that interacts with the real world more often, and I have been adding lots of hands on skills to my skill collection.
Working in robotics or automation could potentially be a decent blend of software and the real-world that still has career prospects, and if anyone has any suggestions on more hands-on software industries I would love to hear them.
I always wonder how and why people feel differently. It is obvious, that a good chunk of programmers have no problem being passionate about completely abstract problems. I've also seen some of those programmers talk about having a mental map of the program, which they can manipulate inside their mind. Is that the difference? I don't have this mental map for code, therefore I crave a 3D representation through other means?
Let's call it the ability to physicalize mental models inside your head. I've also heard mathematicians talking about this ability. And personally, I'm way better at math that can be visualized (geometry, trigonometry, calculus and so on). Respectively, I only start to get math that can be visualized and it's my preferred way of thinking about math, not the manipulation of symbols.
Well, I'm rambling. Good luck finding a more hands on software job!
I think the flip side of this is that, for most of us, it's very hard to learn new and interesting stuff in our paid software engineering roles. Day to day tends to be dominated by maintaining code you didn't write, dealing with business concerns, or greasing the tiny wheels in the big machine that your team covers.
When you want to build stuff for profit, coding is an afterthought. There are so many tasks necessary that involve zero coding. You essentially become your own product manager that needs to talk to (potential) customers, completely reevaluate your value proposition, do marketing sales. The more time you spend on coding, the higher the chance your assumptions about what people want are wrong.
If you want to spend 100% coding I would argue that's impossible to make profitably.
I mean I think I've written more code in 2 weeks working on useless hobby projects than I have in 2 years professionally. I'm not even exaggerating
I feel like this is such a key technique for maintaining momentum with your personal projects -- always keep a list of things you want to work on next. I'll often find myself day-dreaming about the next thing on my list while I'm still tinkering away on my current project. After I realized how important this was for myself, I started noticing other people doing it too; apparently whenever Bob Dylan had an idea, he'd write it down and put it in a box. When it came time to create, he'd open the box.
A. Educational value is a thing. Not everything needs to be a business with customers. Not every project needs to make money. Many of my projects teach me something about science, tech, or arts.
B. Fun is a thing. Building stuff is a way to enjoy life for me, similar to spending time on the beach.
A couple of my more "useless" projects:
https://dheera.net/projects/4x5/
https://dheera.net/projects/mnist-clock/
But yes, they are useful to me as art, as educational projects, as fun, etc.
There is a lot of sentiment on HN about how you should be making a side business or selling your own stuff or being your own boss or getting your first 100 paying customers or your $xxxxx MRR or whatever.
That is all fine, but I think that line of thought can be a little bit toxic at times: you don't have to be continually hustling for the next dollar all the time - it is ok to do stuff simply for the joy of it.
This comes in stark contrast to the IndieHackers/ProductHunt/Twitter builder communities, who are all about making revenue and not about tinkering and doing cool hacks.
How many things we use in our daily life would have survived the first peer review for usefulness?
The printing press? Makes no sense, use scribes. The public cant even read.
The internet? Why would people use a computer to communicate and share data? Its super slow, just send a magnetic drive or even better, copy the images on paper.
Solar power? We have coal, oil, nuclear, that stuff has no future.
If something is not useful, in dubio assume, that it is, but you just are not capable of seeing the use or the market it will create.
The printing press was made to print bibles in bulk.
The internet was made by the DOD and universities, not to transfer large files/images but for small text documents.
Solar came from LEDs which were discovered by accident by scientists working on other semiconductors (trying to find something useful), but to your credit probably explored because it was interesting. 99% of the work done on solar now is to do something useful.
That’s the part about painting that I love the most too. You don’t understand it? I don’t care
Do you need a doctor that is published on the procedure you are about to have?
https://www.opendoctor.io/research/?research_papers=mohs+sur...
What about ranking doctors based on their Opioid subscription count? I got you covered.
Once things start getting _serious_ for some definition, a whole other cloud rolls in. There is now a right way to do things, but how do we know this is the right way. How do the boundaries get pushed? Much of the time, best practices is a signaling phrase to have an in group and an out group.
Things like esolangs give one cover to be playful. For example if you try metaprogramming in Python, you will be called out as unpythonic. If you create classes in Python with public member variables, you will be ridiculed.
- is fun
- doesn't hurt anybody (except possibly yourself)?
Go write books, programs, plays, scripts, go do sports, go do drugs (responsibly), go drink, go play board games or online games, just do it. It's your life, your body and your decisions.
However until that point, I try to do something that I feel has some value (or hope will one day).
That said, I do agree with the general premise that work is where we spend to make money and we should relax in our spare time. The criteria for me is that I should enjoy what I’m doing and it should have some small chance of success. But as long as I enjoy it, then I’ll be okay. Better to do a project with 2% chance of success that I enjoy than one of 50% chance of success that I feel like a chore. Life’s too short.
However I would not be able to actively do a project with zero chance of any value (learning can be achieved through many ways, so I don’t count that as value on the outset, only as justification for the time spent afterwards). I rather go for a walk then. There are only a few hours a day where I have the energy to code, it’s too precious to waste.
(ps sorry for the over use of first person - just wanted to share my perspective)
Why do you feel bad about/dislike first person (in this context)?
Excessive use of first person imo is a good flag that the writer is too self concerned (egotistical), which can interfere with their judgement (as it’s affected by ego and not a cold, rational look at both sides). Which I’m guilty of from time to time.
I realized that as I was halfway through, but it was too late in the night so I just pressed reply :)
Perhaps the act is the end in itself. The journey in this case is probably more important than the destination.
Working on 'useless' code is a sort of massage for the mind sometimes.
Which is probably what you meant anyway, but I think "useless" means two different things here.
The thing about $customer_ready software is that huge % of it is just "boring" stuff, the exciting $core is just small part.
I also have a project I normally use when attempting to learn a new language. It involves naked women and copyright violations, but it get’s me around most aspects of a language and gives me a sense of how complete a language and its eco-system it.
You can't just leave us hanging like that. What's the project?
For my learning project, for the last four language I looked at, my code grabs the latest "page 9" girl every day, and builds up an archive. Because Denmark is a small country, the girls in the newspaper will frequently have appeared in the magazine at some point, to it checks their archive and try to build up a merged archive.
It's a neat little project for learning, because you need to do at least: http requests, regex, database integration, an web application (to browse the archive), scheduling and how to use modules/package/third-party libraries. Later iterations also adds a REST api, so I can use the project to learn how to write JavaScript application.
I finally have found piece in my "stuff" being a product of my intuitive curiosity and therefore not bound by the same laws of explanation :-)
A successful useful unpaid project might feel like an obligation, if there are users and a community around it.
Note: does not apply to Fabrice Bellard, with his remarkable talent for building incredibly useful software on a whim, on his own, in secret (at least initially).
I hate making useless stuff when everyone else believes that it's useful. Then the work is usually tedious, repetitive, stressful and frustrating. There is 0 satisfaction. You just want to waste as much time as possible to maximize your hours/income.
For example you can't necessarily improve if you can't simply how you write. Readability is essential in code. So practice makes perfect and writing for profit often requires redundancy which does neither the programmer or the customer any good.
If I were interviewing for candidates, I'd definitely ask for their "useless stuffs".
Sure, being able to develop and maintain whatever you need for your company is important, but sometimes you don't have much degree to employ your creativity.
He is known for a large number of playful side projects.
[1] https://spectrum.ieee.org/tech-history/cyberspace/claude-sha...
I'm often wondering myself why I watch so many videos about people fixing or modding old Amiga and 68k computers. Those computers are bare and raw compared with what we have today. However I find those fascinating. I wonder what is like to write programs in these machines.
https://twitter.com/raevilman/status/1396683828907941888?s=1...
Richard Feynman's commentary on being burned out and playing with ideas of spinning plates, which culminated in his Nobel Prize award, comes to mind. Recently featured on HN (and something of a perennial favourite): https://news.ycombinator.com/item?id=26931359
https://www.asc.ohio-state.edu/kilcup.1/262/feynman.html?rep...
You'll find similar observations regarding corporate research and development. See David Hounshell's work on R&D at DuPont: Science and Corporate Strategy: Du Pont R&D 1902-1980, originally published in the 1980s.
https://www.worldcat.org/title/science-and-corporate-strateg...
Similar stories exist for AT&T's Bell Labs, Xerox PARC, IBM Research, and even Ford Motor Company's research division. In the case of the latter, Henry Ford (in)famously gave his engineers significant discretion, but somewhat-less-than-optimal equipment, the latter apparently a spur to creativity in order to overcome limitations.
Geoffrey West has discussed this regarding the Santa Fe Institute, I believe in the Q&A of this presentation: https://youtube.com/watch?v=w-8sbSPf4ko (At 1:09:00)
West quotes the late Max Perutz's guidelines for organizing research, in full:
Impishly, whenever he was asked whether there are simple guidelines along which to organise research so that it will be highly creative, he would say: no politics, no committees, no reports, no referees, no interviews; just gifted, highly motivated people picked by a few men of good judgment. Certainly not the way research is usually run in our fuzzy democracy but, from a man of great gifts and of extremely good judgment, such a reply is not elitist. It is simply to be expected, for Max had practised it and shown that this recipe is right for those who, in science, want to beat the world by getting the best in the world to beat a path to their door.
http://www.theguardian.com/news/2002/feb/07/guardianobituari...
As an anti-creative environment, the most effective obstruction is to ensure that everything is not only consequential, but a path to failure. This tends to emerge in oppressive and excessively bureaucratic environments. John Cleese outlines the general parameters toward the end of this presentation: https://youtube.com/watch?v=Pb5oIIPO62g
The start-up world seems to me to increasingly exemplify the high-consequence, no-win environment.
I try new approaches and languages, occasionally something gets dumped into Github for the usual headhunters requests for HR filter.
Turning them into useful stuff for others? Well that is what work is for.
Not useless and much needed!
Why are you reinventing wheels? Why don't you just use Unity?
These trigger me every time.
CHIP-∞ that supports unicode and symbolic algebraic computation
Now saying you really prefer to do specifically useless stuff seems like glorifying a weakness for no reason. Why not leaving an open door to both have fun and make money ? Seems like the author tries to make some moral/practical higher ground because he cant deal with the ambivalence of whether what he does is for some "inherent" pleasure or for money.
At the end of the day the way your deal with you psychology is not my problem. Having fun if is cool. Making money is cool in another way. If mixing both is too hard for you the maybe you really dont have any real problem in your life. That post wont get too much of my sympathy.
Don't get me wrong, I like coding videogames as much as the next guy but it's like, if nobody is gonna play it then what's the point?
I could ask the same about going hiking, what's the point of that? You're still back home at the end of the day.
If you are making a good living, your family is taken care of, etc. etc. then go ahead and make as much useless stuff, because empirically you are making good life decisions and your useless stuff is just fun - doesn't detract from value, or perhaps even helps you learn useful skills that translate into your money-making life.
On the other hand, if you're having employment or financial problems of any sort, the last thing you should be thinking about is "useless" stuff, because there're indicators in your life that you should be focusing on how to make more value for yourself (by making things of value to others.)
I guess that's the same for everything, not just useless projects. I'd have the same criteria for watching a lot of TV - fine if your life is on track, probably should stop if there are other problems!
But if you insist on thinking about everything in terms of money, realize how many well-paid programmers started out as hobbyists. Learning to create now can translate to big bucks later.
For me, I build software for a living, but a lot of my hobby projects are completely useless to anybody but me. I build them in languages and tools that require me to think differently, and the new way of thinking influences the code I write at work. This has paid off in terms of career trajectory, for sure. There is a bonus, in that me being a better programmer means I can spend less of my time figuring out how to write it, which means more time with my family.