HACKER Q&A
📣 Chiff0

How do I start building useful stuff?


CS student here. In a couple of weeks, I am going to the next 6 months more or less free, and I want to spend the time building (or at least trying to) build something that would be useful to at least someone. Probably something I would learn a lot from and would be proud to have on GitHub. I have heard that the best way to build something useful is to scratch your own itch, but I can't think of anything that hasn't yet solved my problems. Do you have any suggestions as to how I could find a problem or have any interesting ones you are not planning on solving? I would appreciate any advice on the topic.

Cheers!


  👤 LarryMade2 Accepted Answer ✓
Some itches that I had scratched in the past - might give you ideas on your own ones to work out:

Text Formatter - paste in copied text with hard returns broken paragraphs, bad characters, etc, clean up text, reform to correct sentences, paragraphs...

Data Parser, take useful but unwieldy raw data and parse it into a readable text, HTML table, PDF pages, etc.

simple event list/tracker input events (name, date/time) and let it be a clock reminder of whats coming up. For next level do global events (event, date, time, country or timezone) and adjust for viewing realtime in local timezone.

One I have thought of but haven't started would be recreate a Commodore C/G telnet BBS in python, where C64s can connect and see it as a Commodore C/G BBS but no limitations of it running on Commodore 8-bit hardware.

Text Adventure Enhancer - that prompts AI creators with descriptions to create enhanced room descriptions and images to enhance an old text adventure...or do a choose your own adventure one where you begin with player adding their picture to use as an image prompt along with the description prompts.

Just try to use something you understand and/or that would be fun for you. so you can concentrate on just figuring out the code instead of having to figure out the subject matter also.


👤 mikewarot
I recommend greatly expanding the space of problems you can solve, by exploring the world of hardware, signal processing, etc. It's usually a good thing to be a generalist.

Try out GNU Radio, it can use your audio I/O for signal sources and sinks. You can learn about DSP, complex signals (with I and Q) and develop an intuition about a new domain of computer applications, just for fun.

If you feel like spending some cash, you can get a USB receiver kit for about $40 and explore the world of radio.

You can also get an Arduino or a Raspberry Pi starter kit, and start doing hardware things, to get acquainted with that world.


👤 fabianholzer
> I can't think of anything that hasn't yet solved my problems

You might have several decades ahead where you'll need to search for suitable third-parties and then fill out the necessary forms in JIRA to get the formal blessing to actually make use of them (aka software engineering).

When, if not now, do you think will be the time to do something that tickles your curiosity without having to take economic motives into account?

Go nuts with re-inventing the wheel. Maybe try to not re-invent the square wheel, but if you happen to do, well you've learned something, which makes it useful for at least one person: you.


👤 nicbou
Start with your own problems, even if you're the only one to have them. You're guaranteed to help at least one user, and you know that user's needs better than anyone else.

Most of my projects - especially the enduring ones - solve a problem I have. Only a few have multiple users.

Back in university I made a sort of personal Netflix, basically a web viewer for torrented movies. I rewrote that project many times and learned a lot from it: ffmpeg, Django, VueJS, single sign on, REST APIs, and a lot more.

A year ago I wrote my own static site generator. Again, learned a lot. This one powers the website I live from.

At a smaller scale, lots and lots of scripts. Some turn screen captures into gifs, others rename files or checks places against the Google Maps API. These small bite-sized problems are always fun to work on.

One problem I currently have: I need a dashboard I can push status updates to. "Last build green" or "no heartbeats in the last 48 hours" are updates I'd like to get. Most uptime tools only pull information.

My only advice: keep the scope small and release early. It's a lot more motivating to work on something that you actively use.


👤 austin-cheney
What is a problem you have? Think about something that frustrates you or something you wished worked differently. Then solve for it. Don’t let ambitious problems scare you.

As a dumb army guy it frustrated me that I could not access my file system off my computer from across the world through the internet. There were times when I would have to leave home for a year or more. To add insult to injury I can only program in JavaScript/TypeScript, so my solutions are limited. I wrote a Node app to solve for this with a GUI that displays in the browser or Tauri or Electron.

Yes, iSCSI is a thing but it does not provide social restrictions to share with other people with custom limitations the way Samba does. I also didn’t want to waste money and violate my own privacy on a third party cloud provider. If both end points are IPv6 you should need any third party server/proxy.

When I first started on the security model of this app it got too complicated and became littered with regressions and testing manually was taking too long and I would always forget to test some feature. There are some good test automation apps out there for the browser but they are really complicated and I needed something peer-to-peer to test multiple computers from a single command and control. To solve for that I wrote a test automation component for the app.


👤 ekimehtor
Well if you are interested in programming embedded Devices, I have a project that I could use some help with and would extremely grateful if you could help me see it to completion.

https://github.com/s1gmapr1mus/ESP32-Arduino-Stuff/tree/main...

Just to provide a bit of context, on October 14 2023 I was shot while driving my car and due to the crash and the bullet severing my spinal cord I am now a quadriplegic. I have obtained the hardware listed on the BOM and will be getting a friend to assemble the device but could use some help with the coding. Currently I am using an iPad with voice control and it is tedious to say the least.

https://community.element14.com/challenges-projects/element1...


👤 JALTU
A front-end for Spotify to better organize music one likes! (Once you dig into music file metadata, you see this is non-trivial, especially for classical music lovers/users.)

👤 fsndz
I wish I could have your 6 months to just build and explore my interests. adult life is overrated with all the constraints

👤 qup
Is any of the information at your college hard to assemble? Create a scraper and republish it.

Are some select classes a race to register for? Write a registration sniper and get in.

How about your county bus schedule? Mugshots? Are they easy to access?


👤 atak1
Solve something you experienced as a college student. You're an expert in what it's like in 2024 to have gone thru such a crazy process. What would you have wished for?

👤 nprateem
Read a book on idea generation. Generate ideas then filter based on what you can do and what you want to do.

👤 8BitArmour
make a note of stuff that annoys you on the day to day basis,might help you figure what's necessary. Start small.