[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)