[0] https://andersource.dev/2020/10/10/procedural-butterfly.html
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
--
[0] - There are plenty of better options, but they tend to not scale - so they cost more, and companies avoid them.
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.
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.
If an interviewee has a pet operating system they've developed they can probably figure out your CRUD app.
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.
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.”
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 :)
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?
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.
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!
Edit: grammar.
If genuine enthusiasm really is lethal, it sounds like a toxic work environment.
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.
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.
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.
Hope you found something more fitting for your personality.
The answer should be: yes, because you are hiring me now for the skills I learned doing this.
"Yes, by motivating you to hire me"
Seriously, did they expect new hires to be working on their startup on the side?
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.
Ironically, tinkering for fun can lead to innovation. Many cases of this in maths, science and engineering.
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
"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 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?"
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.
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.