[HN Gopher] The Joy of Small Projects
___________________________________________________________________
The Joy of Small Projects
Author : dschroer
Score : 119 points
Date : 2022-04-10 18:43 UTC (4 hours ago)
(HTM) web link (schroer.ca)
(TXT) w3m dump (schroer.ca)
| mtoddsmith wrote:
| One of my more useful tiny projects was simple command line
| search until for the windows registry. It helped a lot back when
| I was making installers and apps that used the registry a lot.
| FunnyLookinHat wrote:
| Short projects are an excellent way to learn a new tool or
| framework. Want to learn Next.js? Looking for an excuse to try
| that new Golang game engine? Pick an obscenely small goal and
| you'll likely have more fun exploring the docs and learning the
| tool than getting stuck in the weeds of the myriad requirements
| not helping you learn that new tool.
| la_fayette wrote:
| Last year I participated in the advent of code challenges. I
| remember a puzzle from day 16 [1], which took an afternoon or
| more .
|
| The idea is really great, however it seems quite hard to solve
| interesting problems in this short timeframe.
|
| [1]: https://adventofcode.com/2021/day/16
| hinkley wrote:
| If you did get good at this, all you've done is trained
| yourself to trust your own code over libraries. My suspicion is
| that experiences like this are the supervillain origin story
| for people with NIH syndrome.
| shadowofneptune wrote:
| It's amazing how rich some of the puzzles are in Advent of
| Code. Sometimes the question is about tabular data and so is
| naturally suited to Excel, other times a stack-based language
| fits better. There's countless answers posted online to each
| one, each equally valid but with different tradeoffs. Great
| outlet for this small-project programming.
|
| If anyone likes solving puzzles like these, I'd recommend the
| Zachtronics games. TIS-100 in particular was my introduction to
| parallelism (https://www.zachtronics.com/tis-100/).
| rickdeveloper wrote:
| Great read.
|
| I think this is a good place to reference Tiny Projects [0],
| which to me are a manifestation of what is described here.
|
| [0] https://tinyprojects.dev/
| stazz1 wrote:
| This is delightful and well-stated. I don't think a timeline is
| necessary, but I do think a sense of urgency "get the prototype
| done as cleanly and quickly as possible" is helpful. Create an
| exhibition of the smallest novel component. And there you have
| it, progress.
| dysoco wrote:
| I like the ethos behind this post; I've been struggling to finish
| projects for years, I get desmotivated, jump into another thing,
| don't finish it, come back after months now lost again, advance a
| little bit, drop it after a weekend, repeat, etc.
|
| I will try to use the framework presented here but I'm not sure
| exactly how to apply it, for example the project I've been
| meaning to finish is what I call a very dumb compiler (parse a
| very simple language and emit x86_64 assembly code but without
| any optimizations, the most naive thing that will work).
|
| It's hard to think how to reduce this problem to something I
| could do over a weekend; I have to do a lot of research, thinking
| and trial and error because I'm not an expert in writing parsers
| or anything like that.
|
| I feel like this might only work in certain occasions.
| dschroer wrote:
| I have had this feeling a lot with my project. One thing that
| might work is break down the compiler itself into smaller
| projects. If you cant solve it all in a weekend try solving
| just a part of it and then calling that the project. Then move
| on to the next part. In the end up are building up to it
| without overwhelming yourself.
| didip wrote:
| So, how do you balance between small projects that bring joy vs
| projects that can make tons of money?
| cersa8 wrote:
| For me it works best to start a project in such a way that it is
| easy to get back to. Fully expecting and embracing getting bored
| and leaving it gathering dust for a while.
|
| For this to work I have docs folder with a todo.txt,
| architecture.txt, questions.txt and features.txt. I push it early
| to a private gitlab repo and use a language like TypeScript that
| makes it easy to come back to and make changes without fear of
| braking things. It won't be the first time that I get excited
| (again) by something and can continue on an existing project.
| jonwinstanley wrote:
| +1 for a docs folder. It seems so ridiculous but I've come back
| to projects and can't remember where it's hosted, or how I
| deployed etc.
|
| Great to have a few txt files that tell you how it all works,
| how you setup your server etc as it's surprising how much of
| your process can change over a few months/years.
| bkq wrote:
| I've worked on simple projects, but nothing I would consider
| small in the sense that I had them done in a matter of hours. But
| it is satisfying having a project come together in terms of
| completion, even more so when you reap the benefits of its use.
| The one that comes to mind for me would be the static site
| generator I built for my site, something I spent some time
| working on as I continued to use it, and tweak it for my needs.
| lambdasquirrel wrote:
| Meh... someone of us like the depth that comes from longer-term
| projects.
|
| Don't get me wrong, I've taken art classes that taught me to
| appreciate smaller, shorter things. And I think it's important to
| take that spirit into longer-term projects. But I think there's
| just a lot more "small" projects these days, what with the
| combination of APIs, funding, hackathon culture in engineering,
| and prototype culture in design. The pendulum has gone all the
| way to the end. Which is fine too, but some of us are going to
| want to go the other way.
| t_sea wrote:
| rhubarbcustard wrote:
| I agree with this and I haven't done enough of these kind of
| projects but I did create this parkrun map as the one on the
| parkrun website was not very good.
|
| https://www.moreofless.co.uk/map-of-parkrun-5k-running-event...
|
| It's really simple but I use it often myself and other people are
| finding it too, which is nice.
| eternityforest wrote:
| Trouble is... I don't think I could build anything that I'd
| actually have a use for in less than 1-3 months, except for
| extremely ad hoc things that you can't really predict in advance,
| like a file convert and rename script.
|
| I can think of 4 projects on my own, lifetime total, that I would
| consider ready for a "Version 1.0.0" tag, and far more that
| regret ever spending time on, some that required more time on top
| of that to disentangle myself one(Especially with hardware, where
| you've now got physical stuff to deal with).
|
| The only small projects I've been happy with are the pure toys
| and decorations. One was a replacement for fortune, but it
| generates them dynamically using a MadLib style text replacement
| engine. Another was a candle flicker simulator.
|
| Anything tool or infrastructure or library-like has usually
| become a regret, save for one multiyear megaproject, and a few
| things with zero reasonable alternatives.
|
| I think the best small projects are the ones that are purely self
| contained, that will never have anything else depend on them,
| that will never be part of you "personal baggage" to maintain.
| sideproject wrote:
| I think it's important to define what it means for you to "finish
| the project".
|
| Is your project "finished", when you see an MVP that you can
| release to the world? Your project now has a minimum set of
| features that delivers the initial value you thought it would
| deliver?
|
| Is it worthwhile to do a Show HN on it? (and risk no one clicking
| on it because HN receives so many submissions? :)
|
| Is it worthwhile to release on PH? (and so many products launched
| in PH thesedays are... pretty much well-polished, revenue ready -
| if not funded etc)
|
| What comes after you "finishing" your projects? Will you
| continue? or move on to something else?
|
| For me, one of the ways to define "finishing" was to make sure
| that it launches with some type of payment plan. It is an MVP,
| but it also has monetization in it so that should anyone else
| wish to pay for it and use it, they can do so immediately.
|
| Sure, not all projects are about payment and those projects are
| fine (which is why I said 'one of the ways'...) but if I know
| that this is something that I'd like to continue to work on
| because I enjoy it and I know it has legs, I try to find some way
| of generating revenue to see what the response would be.
|
| Thoughts?
| _benj wrote:
| Love your thoughts and observations!
|
| I think for the most part I align with you regarding calling
| something "finished" as a project having monetization in it.
|
| As of lately though I've been thinking a lot about two
| different definitions of "finish", one of them being that I can
| use it to do some task that I want to do. For example, I handle
| my finances using beancount and around that I've build a few
| projects that are finished in as much as they do what I want
| them to do and make managing my finances easier (import
| transactions from email notifications received from bank, eMacs
| configuration for my finances, etc.)
|
| The second category is open source projects. I often wonder
| what would it take to build something that is useful to others
| but that doesn't come with all the complications of a monetized
| products? Like, how Moodle or Drupal became Moodle and Drupal?
| How did they became known? Who used it first?
|
| I want to find a tiny little problem to solve, and find a way
| that the people with that problem know about my solution and
| hopefully can benefit from it... but I don't even know how to
| properly ask the question about where to start something like
| that... and actually finish it!
| levmiseri wrote:
| One such simple project for me was https://kvak.io. A weekend
| crafting for a need I had and couldn't find anyone offering - a
| simple online notepad where I can share the note by just copying
| the url and the 'sharee' continues writing.
|
| The process itself is indeed very fulfilling and joyful.
| drBonkers wrote:
| This would be even more amazing if it could display your
| partner's edits in real-time.
| dschroer wrote:
| Very cool project. I love the fact that you did it in a
| weekend.
| not-my-account wrote:
| This is great. The fact that there is an incredibly low marginal
| cost for software projects has been on the front of my mind for a
| while. Compared to working on something mechanical or electrical,
| you can get from "fuzzy idea" to "workable-ish code" with
| incredibly low cost in time and money.
|
| I've learned a lot about browsers, for example, chugging away at
| a little toy website[0] with a buddy. I know it is simple, but it
| blew me away that I could dig into webkit to see why stuff worked
| the way it did. We are incredibly lucky to be digging into such
| an accessible field.
|
| [0] http://legomosaicdesigner.com/
| criddell wrote:
| > Compared to working on something mechanical or electrical,
| you can get from "fuzzy idea" to "workable-ish code" with
| incredibly low cost in time and money.
|
| That's very true but I think the fact that my day job is in
| software development has pushed me to work on more physical
| projects on weekends.
| alin23 wrote:
| I've created the rcmd app switcher (https://lowtechguys.com/rcmd)
| in 2 days, going from statically assigned hotkeys in my
| BetterTouchTool config to a real menu bar app with dynamically
| assigned hotkeys for my most used apps.
|
| A big part of that time was spent creating the icon, and copy
| pasting boilerplate code from my other app for the menubar UI.
|
| Coding the main functionality of the app took little time and it
| still remains one of the most fulfilling projects I've completed.
|
| Of course, I have invested a lot more time since then, especially
| in handling edge cases with odd keyboards, only because I wanted
| the app to be useful to as many people as possible.
|
| But it could have stayed the way it was as well, where a 2-day
| project was still solving a problem thousands of people had.
| simonw wrote:
| One tip I've picked up from experience: avoid projects that have
| user accounts.
|
| If your project has user accounts, you'll get users who you have
| to take responsibility for. Then it's not a side-project any
| more, it's a part-time job.
|
| These days I much prefer side projects which have no user
| accounts at all (like https://www.niche-museums.com/) or that are
| open source tools where the end user installs and uses the
| software without me having any involvement at all (like
| https://github.com/simonw/shot-scraper)
| floucky wrote:
| Especially if these users can share content, then you need to
| do moderation and hooo boy, you don't want to do that.
| bambax wrote:
| Ok, maybe. Examples would help, though. Specifically: describing
| the process that goes from the big dream to the smallest
| implementation feasible in an afternoon.
| hinkley wrote:
| Peter Norvig creating a tiny SAT solver for sudoku stands out
| as one of the most sophisticated examples of a "simple"
| application that I know. The last time that came up several
| people said they use that exercise to introduce themselves to
| new programming languages.
| rahil627 wrote:
| m_herrlich wrote:
| I can barely finish a leetcode hard in a few hours, let alone
| something I would call a project. Still, this is an inspiring
| approach to tackling day to day work in incremental micro-
| projects.
| dysoco wrote:
| Personally I find leetcode boring because it's not something
| that would motivate you to see finished; it doesn't have a
| "real" purpose, maybe trying to build something concrete (a
| little game, a little web app, whatever) might bring more
| motivation.
| adhesive_wombat wrote:
| Same for me. All these things like Project Euler leave me
| cold: I'd rather learn something new on the way to a tangible
| endpoint, even if it's a janky PoS that I never look at again
| and lose when I don't bother to copy it to a new hard drive.
| hinkley wrote:
| So far my experience with leetcode is that it is asking me
| over and over again to implement binary search of arrays
| (which is the wrong solution 95% of the time) and it wants,
| to charge me money for a debugger, and I have to write my own
| unit test framework from scratch if I want to avoid a
| debugger.
|
| Everything that's wrong with interviews, with rent seeking as
| the cherry on top.
|
| I haven't tried hard yet but I'm bracing for a shitshow.
| ransom1538 wrote:
| My last projects were controversial. lol. Finished it in 3?ish
| days. Ruby/Rails/mysql. The elevator pitch: "You place your
| github project on the site, you rate atleast 5 people's github
| project, people will view and rate your github project ". It was
| a fun way to view rando github projects and share feedback.
|
| Github security reached out. Banned. All accounts locked. Creepy
| lawyer emails. Threats. Then i remembered we are in a closed
| garden now. It isn't 1998.
|
| Then I was like oh! I will try another one. What if we allow
| people to automatically delete comments under 0 points on HN. I
| had a simple script anyone could run on their laptop. Posting was
| Flagged. Removed from front page in 10 minutes.
___________________________________________________________________
(page generated 2022-04-10 23:00 UTC)