Hacker News new | comments | show | ask | jobs | submit login
Ask HN: What simple tools or products are you most proud of making?
526 points by shovel on Nov 15, 2016 | hide | past | web | favorite | 868 comments
I'm thinking of tiny projects along the lines of single-function tools like domainr. But also game-changing ebooks, newsletters, courses.


(i.e., "iz u ded?")

I made this because I adopted a puppy and realized that, if I got hit by a bus on a Friday, he could be stuck in his crate for days before anyone realized. Morbid, but useful.

It texts you every X days and asks, "u ded?" -- if you don't click "naw" before X days pass, it'll notify your contacts.

It's a portfolio project to show what I've learned in the realm of "serverless" architecture. Details about its construction here: https://medium.com/@marclar/iz-u-ded-713594fd80e9

Google has a similar feature to give trusted people access to your data if you've been inactive for a given amount of time (so probably dead): https://www.google.com/settings/account/inactive

Wow, going through that was a bit emotional. You've got to set up an email that gets sent to your contacts when you've been inactive for >3months. That'll only happen if I'm dead or imprisoned so, yuck. Did not enjoy typing that one up.

Yea, I got to that step and closed out. I need to set aside some time this weekend and think about what to write.

Wow, what a frighteningly effective deadman switch. Normally I'd be worried about forgetting to reset it but in this case it's hard /not/ to use a Google product in a normal day.

That's a fantastic hidden feature - thanks for pointing it out.

Is it safe to put my 1Password's master-password into the message that is sent in case I'm dead?

How about the name of the book on your parents'/friend's bookshelf with your password lists in? Or some clue to a more secure hiding place.

I'd say no. I find an offline alternative to this.

The ability to attach files to the autorespond email is unfortunately arguable both for and against.

If at least one of your friends is technically minded you could probably use yEnc.

My security-mindset-sense is tingling..

Could be an attack vector when you know someone's google usage will be sparse.

"im ded :( plz walk doggie"

Man, that's not how I would want to find out that a friend or family member has passed away.


I don't know, getting that as a final joke from the right friend or younger family member might be my favorite way to be informed, and then I'd go walk their dog. I'd still be sad, of course, but there's really no good way to be informed of this. In all likely hood, I'd already be informed, and then I'd get this half-assed reminder and be all "oh my god, it's so like them!"

Actually when considering likelihood, they're probably on vacation and forgot to pause the program. A better message might be along the lines of: "Hi this is Sean's personal assistant script: I can't confirm that his puppy has been getting walked would you check into that for me? Spare key is..."

I agree in part, but I think that if you are setting up such a message, it's important that you inform your friends and family of the message while you are still alive, and probably you should also tell them that the message might end up getting sent while you are still alive because you forgot or for some other reason didn't get around to confirming that you are alive still in time.

Right -- the message is customizable, and after you save your contacts, it prompts you with a message you can text them to let them know about the service.

Yeah, you customize your own message -- write whatever you'd want to send, e.g. the location of a spare key.

well but it's funny enough not to cause much harm on a false alarm, while still triggering research in to the doggie/death situation :)

Also, the message is customizable. I'm kind of surprised at how many commenters didn't assume it would be, so I'll need to think about how to change the presentation.

Oh, it's all customizable. You write whatever you want, like "I haven't checked in in a day -- please make sure I'm alright."

right? How horrible...

You can set the message to whatever you want; the message in the screenshots is just in keeping with the overall tone of the site.

Appears that the site would refuse to show up.

  Your ad blocker may prevent this site from working. Please
  disable it to continue.

Can you make a version of this that just texts my mom that "I'm okay". That'd be perfect.

P.S: Yes I'm thirty. Y'all don't know Indian moms.

I'm over thirty. This isn't Indian specific...

Also over 30, starting to want them to send me messages that they're ok.

You could write a cron job that uses Twilio. I like to optimise for success.

"- Text me when you arrive"

5 minutes later..

"- I arrived. No assassins encountered."

But mum, look, if anything has happened you'll get a bloody phone call. With this system my not texting just primes you to worry more, despite the far higher likelihood that I forgot than that I'm dead.

Literally the best result is that you start worrying I'm not ok a few hours before finding out for certain that I'm not. So let's assume success, and agree that in case of failure you're going to have a very bad day anyway and this doesn't really help mitigate anything at all.

(this does not work)

It never works.

Oh, I know. I know. I'll be damned if it's going to stop me trying though...

Kudos for friendly easy-going presentation and sleek implementation, enjoyed checking it out. Would’ve signed up were I in the market!

> "were I in the market"

> the market of dying

is there something about your mortality that you'd like to tell us?

I don’t have a dog.

Your post just made my morning :)

I genuinely laughed out loud at this in my office, thanks for making my day of copy changes better @goblin89

Thanks! Much appreciated :)

"The workaround is to POST directly from the browser to an S3 bucket and then handle that AWS event with a Lambda. "

Great article and nice project. Do you upload an "event" to a queue type folder on S3? what triggers the Lambda function after the file upload?

S3 has built-in functionality to trigger a Lambda function when certain events occur (e.g., object creation). For example, see http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.....

Thanks so much :)

As @jdale27 said, there's built-in functionality with AWS that lets you subscribe to various events, e.g. S3 uploads, CloudWatch logs, etc.

Have you ever had any false alarms with this?

I have not!

Is it weird that I'm quite interested to final out how many "messages to contacts" have been sent out so far? :P

After the final one hour warning, it should call you and if you pick up, the alarm cancels. So a final step that's not passive and only requires picking up the phone instead of opening the texting app and clicking a link. Also helps if you're somewhere where you have SMS/calling but no data. Although in that case, being able to reply "I no ded" would be more reliable.

In which case your murderer answers the call.

Would it be much harder to process a tone-based password prompt?

So you receive a call and it just beeps on says "enter passcode" and you enter the code. Though to be honest it's highly unlikely that will the hypothetical murderer would pick up a phone call unless they were expecting it...

Interesting idea -- thanks for the suggestion

This is fantastic, made me laugh. Brilliant idea

Haha -- thanks, Dave -- glad you like it :)

really like the clean design of the front-end, did you use anything special to create it?

Looks like Semantic UI.


Indeed, as @axlee said, Semantic UI. Highly recommended.

If I iz ded and I selected 17 days, my dog is ded to.

You should do a Show HN for this.

Thanks! I'll try to get something together next week.

next week: looks like mk4p hasn't showed up... time for somebody to break in and feed his puppy?

Are the SMS being sent from Lambda or another service like Twilio?

There's a scheduled Lambda that sends messages via Twilio.

Nice! But what if I lose my mobile phone or change my number? :D

Wellll, you could set it to check every 1-30 days, so maybe set it to check less frequently?

Wouldn't solve the changing-your-number thing, but I'm guessing you don't do that too often.

first world problems :)


I have migrated my wife's (then girlfriend) computer to Linux and sometimes I had to configure something on her computer (e.g. a printer). This ended up generating lots of back and forth on the phone with me telling her commands to write in the terminal, and she reading the output out loud. I wanted an easy way to see her terminal. So shellshare was born.

Shellshare allows you to run a single command line and share your terminal online (read-only)

    wget -qO shellshare http://get.shellshare.net && python shellshare
That'll give you an URL others can join and watch your terminal live. No sessions, no recordings, and the data is deleted every day.

There aren't many users, but I use it almost every week.

wget -qO shellshare http://get.shellshare.net && python shellshare

Please don't tell people to do this. This is an idiom called "curl pipe sh"; you're asking people to run whatever code someone on their network decides to send them.

As an absolute minimum, you should change that http to https, so that they're merely running whatever code YOU decide to send them; but even that doesn't quite fit with the "share your terminal (read-only)" philosophy...

I agree with the HTTPS part, but aside from that I can't really see how it's less safe than saying "here, install this .deb (which gets to run scripts as root) and then run the binary inside".

deb packages distributed to the public should be pgp signed and in a proper repository. It doesn't help people who will just force-install it anyway, but if they care it allows verification.

Both require trusting others, how is this any different?

Out of band verification. When you're doing curl pipe sh, you're trusting the host and that's it. With packages, you can verify the trust against external services like keybase, check website archive for changed key ids, check signatures on the public key if the author is into things like web of trust.

It won't protect you against someone being directly malicious, but it will against MitM, website hacks, etc. It also establishes semi-permanent trust on first use.

>Out of band verification. When you're doing curl pipe sh, you're trusting the host and that's it. With packages, you can verify the trust against external services like keybase, check website archive for changed key ids, check signatures on the public key if the author is into things like web of trust.

Your grandma is pretty advanced.

> Your grandma is pretty advanced.

Grandma level: Grace Hopper.

Who said anything about grandmas. The topic was "what's better than curl pipe sh". The target crowd knows how to use the terminal.

But if the software is already installed, trusted package author also allows secure updates.

Totally agree on the HTTPS. Wanted to change it for a while but life kept on the way. Changed it now, it's live on https://get.shellshare.net.

I also agree on the bad sides of the "curl pipe sh" pattern. Ideally, that command would be "apt-get install shellshare && shellshare", but haven't been able to write packages for it yet. There're 2 open issues about this: https://github.com/vitorbaptista/shellshare/issues/28 and https://github.com/vitorbaptista/shellshare/issues/31, if you or anyone else have some time to contribute.

What's a better alternative?

You could use hashpipe (https://github.com/jbenet/hashpipe), from Juan Benet (the author of IPFS). It simply checks that the input to the command matches a given hash, so you can do `curl <url> | hashpipe <hash> | sh`, and if the output of the curl command is different than expected it won't be passed in to `sh`.

Ironically the prebuilt binaries of hashpipe itself are provided without means of verification :I

So if you are going to use hashpipe, I think you should download it in source form, read it -- it's under 100 SLOC -- and then build it from source yourself. This way, you do that once and then in the future provided that you trust those sending you various scripts and binaries and the channel they used to provide the hash, all is well and no further manual verification is needed on your side of things ever again for any of those.

If an attacker can modify the output of the curl command (on the host or on the wire), cannot they also modify the value of the hash seen and copy-pasted by the end-user? I must be missing something...

As viraptor said, putting code into a public repository (e.g., debian packages); that way there should be a paper trail if the code is modified.

Beyond that, there's a simple matter of advertising: "Share your terminal (read-only)" may mislead some people about what is happening. A more accurate description would be "Give us control of your terminal (we promise we'll only let other people read it, not write anything)".

Imagine if this principle were applied to other software products. "Click here to download the Office installer, which will gain full admin-level access to your machine. We promise to only use that to install Office."

That would be awesome. Users might start to understand security.

Users don't read.

As usual, you can never be sure unless you read the code, luckily, it's very small: https://github.com/vitorbaptista/shellshare/blob/master/publ...

The only thing sent to shellshare's servers is the text in your bash terminal. There's no return channel for the servers to send commands back to the computer.

You could argue that you're giving control of the terminal because you're running a third-party executable, but that's the same for any executable you run.

Download it, audit the code, and then do python shellshare

> Download it, audit the code

Applies to your operating system as well, plus any firmware.

Boring, you need to live on the wild side a bit more :D

Wow, that's pretty cool. I've thought about moving my parents to Linux; my mom only uses the internet, and while my dad needs his computer for work, the software he uses supports Linux. I'm afraid I'm not going to be able to support Windows for them for much longer. I use Linux full time, and Windows is slowly changing. I can still talk them through most problems over the phone, but little changes here and there have made walking them through an issue really time consuming, which is frustrating for all of us.

My chief concern with installing Linux was having to teach them how to communicate what is happening over the phone all over again. Outside of that, I'm pretty confident Linux is a good choice for my parents. My dad actually worked for Digital Electronics for years, and he's been interested in Linux for as long as I've been using it, but I think Linux would actually be better for my mom, because she literally doesn't care about her computer as long as it works. Her computer issues are generally the "the computer keeps telling me something and I want it to go away" type. Fixing those problems on the phone with Windows is a mess, but are basically trivial in Linux. My dad's issues are generally "I broke the internet," so this wouldn't be as helpful for him.

I'm really excited about this. I might honestly go buy an SSD to install Linux on my Mom's computer today. That way I could just drop it in her computer next time I'm at her house. My hope is that the boost in speed from Windows---> Linux, and the boost in speed from a 5400 rpm drive --> SSD would keep her happy long enough to get used to Linux. She's been complaining a lot about speed recently, and last time I was there I discovered she managed to her default user folder from the internal drive to an external USB backup drive. I have no idea how she did this, but it means she keeps running out of space because the backup process now backs up the backup drive recursively.

Have you ever considered installing remote screensharing software rather then having to troubleshoot over the phone? That's how I help out my parents.

Yeah, I've used it at times. It's great when it works, but getting remote desktop working is always a bigger pain than just trying to explain the problem over the phone. The individual issues aren't that big, but it means a 20 minute phone call turns in to a 1 hour phone call because we spend 20 minutes trying to get screen sharing working.

For one thing, I'm generally away from my computer when they call me, and all I have is my phone. If that isn't an issue, then port forwarding is an issue, or the desktop sharing they have on their computer is out of date, or they only have RDC, and I can't find a Windows computer. Sharing the desktop via chrome works pretty well, it still can be an exercise in frustration. For instance, my dad is a trader, and has 8 monitors. Getting him to share the correct screens takes forever. (I don't know how Windows decides where to open a window, but it seems like it tries to find a monitor my dad isn't looking at and opening it behind a window marked stay-on-top.)

I might use it if the problem was extremely urgent and extremely complicated, but I live about 30 minutes from them, so I'd just head over to their house if it was that bad. Screen sharing software was just one more thing to go wrong on their computers. This way, I don't have to worry about whether they have a version with a critical vulnerability, or if they'll fall for a social engineering attack and click on a teamviewer invite.

This software solves my concern about not being able to see what the hell my parents are doing when I'm telling them shell commands. This makes it really easy. They'd already be using Linux if I knew I'd always be able to use desktop sharing to look at their computer, and port forwarding/security/etc wasn't a concern, because connecting to a remote X server is incredibly easy. I already fix internet issues by SSHing in to the router (with key-based authentication) and then connecting to whatever piece of hardware needs to be tinkered with. I could probably do the same thing for an actual desktop, but I've fixed misbehaving servers via ssh on my phone before, and typing commands on a phone keyboard is an exercise in frustration.

In any case, I sat down with my dad and created a clean image of his desktop a while back. When he really messes something up he just reimages his computer. He likes the fact that I gave him the ability to bring his computer back from the dead himself. All his files are installed on a separate disk, which is constantly backed up, so he never loses more than about 20 minutes of work.

> getting remote desktop working is always a bigger pain

Easy as cake with TeamViewer

>Screen sharing software was just one more thing to go wrong on their computers. This way, I don't have to worry about whether they have a version with a critical vulnerability, or if they'll fall for a social engineering attack and click on a teamviewer invite.

You can lock down Teamviewer pretty tight, including a whitelist that allows only you to log in.

It's no more of a risk really with TeamViewer installed. An attacker can use gotomypc or similar or just send a TeamViewer invite binary (or link to download it and give the attacker access).

Wasn't there some story a few months back about TeamViewer accounts being hacked in some unknown way and their access used to infect machines? Was that ever clearly resolved? (I remember speculation of TeamViewer themselves being compromised, or just a massive password-reuse attack, or ...)

It's never been clearly resolved, but also hasn't developed. So far it looks like TV was correct and the breaches were the result of password reuse from other sites who did have passwords compromised.

I suggested this in a recent similar thread: if this is a desktop, you could switch to an entry-level server motherboard with IPMI.

Then run the IPMI cable to OpenVPN on (eg) an RPi or even directly on the router.

You can configure and soak-test the router/RPi/etc locally, and IPMI is OOB.

Using an RPi/similar has some nice properties: you could VNC to that and then go from there to the IPMI console, and also recovery images stored directly on the RPi would upload quickly etc.

Thanks! Glad you found it useful. I hope the transition to Linux goes well for your parents.

I like https://tmate.io/ for this. It also has a read-write option. :-)

This is another great option, with much more features than shellshare. At the time I started working on shellshare, it only allowed read/write sessions, so I wrote it anyway.

I like that it only allows watching, not interacting; that makes the security implications of someone obtaining the URL much less serious.

Can the same effect be achieved via GNU screen (potentially combined with an SSH tunnel)?

http://hamvocke.com/blog/remote-pair-programming-with-tmux/ it describes tmux setup, but screen can do it as well - there are guides online.

What a great way to create huge amounts of IT maintenance work for yourself.

How so?

Linux tends to require configuration/debugging from the console. Don't get me wrong, I use linux every day, but I would never push it on someone who is not interested in solving their own tech problems.

If it's setup and working it requires no configuration/debugging. And it sounds like whether it's windows or linux he's going to be responsible for fixing any computer problems so it may as well be on a platform less prone to problems that he can fix better.

Just being on a platform where uses can't get infected with malware from stupid flash game sites cuts out 90% of maintenance.

Why not just SSH + shared screen / tmux? Not sure why you need to involve the browser.

Incoming SSH connections can/should be blocked by the router. There is also likely to be no static IP.

Connect them to a private zerotier network (https://www.zerotier.com/#try_zerotier) it's free and you can bind sshd just to the zt0 interface. Instant access from anywhere.

Sounds like yet another hosted/subscription based service.

You can use your own server if you prefer. Otherwise it's hosted. No subscription needed if you're not using massive networks.

That sounds a lot harder than solving the original problem.

I may be biased, but I put zerotier on lots of hosts these days. Whether it's home raspberrypi for remote access, or vps to get all administration off the public network, or sometimes just as a VPN replacement for stuff like replication. It's pretty much fire and forget.

You can install TOR on the machine and use it for NAT traversal, by making SSH available through a hidden service. Latency is a bit high but it's easy to set up and connect to.

This is great. Thanks for creating and sharing. I've made sure to bookmark it.

this is brilliant, and very useful. Well done!

Thank you for this one :)

this is cooool. :)

why would you do that to your poor wife


I am very, very proud of the (very simple) platform that we've built there. It's a basic tool that "just works" - and just works exactly like you'd expect it to.

If I were a consumer of cloud storage, this is what I would want it to look like.

It pleases me so greatly to know that, right now, someone is doing something like this:

  pg_dump -U postgres db | ssh user@rsync.net "dd of=db_dump"
... while simultaneously, someone else is doing this:

  zfs send tank/test@snap1 | ssh user@rsync.net zfs receive -s tank/test
It's been 15 years now since we started providing this service - almost 11 since we branded it rsync.net - and the first warrant canary is now 10 years old. This appears to be, for now, my lifes work.

I have used rsync.net at work in the past, and the service and support is the best I have experienced in any commercial service, period. Good job.

On the other hand, we need a word about that scrolljacking on your homepage...

+1 for scrolljacking. It would randomly pick a direction independent of my actual scroll direction.

Holy moley that scrolljacking

Scrolling is very annoying.

I've used rsync.net personally and commercially. Thanks so much for building a great, simple tool and also caring about user privacy with the warrant canary and stuff.

Your website is unreadable on iOS chrome

Started with http://rsync.net/products/aws.html but all of them linked at the top are unreadable


Aaah, what happened to your old site? It literally takes 10 seconds minimum from the screwed up JavaScript scrolling to reach the bottom of the site.

I'm sure this converts better, but at the same time the site design and stock photos screams newish SaaS service that could disappear on me tomorrow. (I know better, it's just the impression I get)

Yes, we're scrapping this design and going back to a more "bettermotherfuckingwebsite" inspired design ... will happen shortly ...

I've only heard good things about rsync.net (though never had the chance to use it). Thanks.

Is there a blog posting or use case description for using it as a personal photos and videos backup solution? Something along the lines of best practices, approximate cost, any additional desktop tooling, etc.?

Can I use rsync.net to backup my (selected) laptop files to my local-network linux server? (I'm currently doing this with CrashPlan but I don't like that the backup destination has the files in some proprietary format).

If so, I would love to be a customer.


I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

rsync.net is a cloud service that provides a remote filesystem and ssh access. How do you envision using a remote storage provider to backup your laptop to your local server?

By using the cloud service to manage data transfer from one computer to the other, even if they are behind NAT, have changing IP addresses, ...? You know, just like CrashPlan, which otherwise also provides remote storage, does?

(rsync.net doesn't offer that, but it is not a totally outlandish idea that they could if you just know them as "cloud backup services")

> (rsync.net doesn't offer that, but it is not a totally outlandish idea that they could if you just know them as "cloud backup services")

Ah, if that is what you wanted to do, they don't need to offer anything more than they already do. There's no reason why you can't rsync your laptop to rsync.net and then rsync the fs on rsync.net back to your local server.

Yeah, exactly as detaro says.

I usually like to keep most of my stuff backed up and that's almost 1 TB of data which would be very expensive to keep in the cloud.

So what I did was build a very cheap server with a WD Red HDD that I use to backup my full drive every couple of months.

I know I can probably use vanilla rsync but I really don't have the time to set up everything up and make sure it works, so I thought rsync.net could be a potential solution/alternative to CrashPlan.

Thanks for the answers though!

Yeah, the thing is rsync.net is just vanilla rsync. Solves the proprietary format issue, but not the 'some assembly required' issue.

Then you have to pay for the capacity to store a copy in the cloud. Fine for small sizes, annoying if it is terabytes of stuff ;)

How does this compare to, say s3?

At 14 Cents Per GB / Month, rsync.net costs me ~$1720 per year for 1TB (14 * 1024 * 12 / 100).

S3 at 3 Cents Per GB / Month clocks in at ~$368 per year for 1TB (3 * 1024 * 12 / 100). Let's say I'm using a lot of transfer, so I'm going to double the price to ~$720 per year.

Still, rsync.net costs me $1000 more per year. Convince me :).


This is already addressed on the site.

As always, email[1] us to ask about the HN readers' discount, which is significant.

[1] info@rsync.net

Am I missing it or is there no Company/About page on your website? There's an obvious difference between rsync'ing to Chinese/Russian and US/European clouds, so knowing where the company is and who's behind it is pretty much a must.

> There's an obvious difference between rsync'ing to Chinese/Russian and US/European clouds

Apart from latency, is there a difference? Would you upload your unencrypted data for long term storage to anyone?

Very happy user here. I'm thrilled that rsync.net supports git, and the service has been absolutely rock solid.

I can't browse your website on safari mobile without it page refreshing when I attempt to scroll.


I created this favicon generator a few weeks ago to generate minimal favicons for my side projects. I'm not good with design tools so it saves me time when I start a new project and want a simple favicon in ICO format.

I'm proud of it because it's server-less. I generate the multi-BMP ICO file in binary using ArrayBuffers and Typed Arrays in JavaScript. I use a <canvas> element to create the images/design.

It's not very polished and I'm sure there are bugs, but feedback would be appreciated!

Cool. I like the fact that the icon shows in the actual tab as a preview. I guess what is missing is the option to select a font?


I'm thinking about adding some of the Google web fonts.

Also, there's a neat technique to make the text color either black or white depending on what has more contrast against the background color.


Nice! I'm definitely going to use this. The text is barely visible on a lot of the lighter colors right now.

What is this magic?

I didn't check the source, but rendering the <canvas> to a data URL, and using something like this [0] would work.

[0]: http://stackoverflow.com/questions/5199902/isnt-it-silly-tha...

Yep, this is the strategy that I'm using. I export the canvas to data URL and place the data URL in the href attribute of the favicon <link>. I'm not sure if this works in every browser though.

oh cool! That's way better than trying to be a pixel artist in http://www.favicon.cc/ :D

I solved a similar problem--- I was tired of websites that didn't provide favicons. So I have a chrome extension that hashes the domain and fetches a gravatar icon for it. https://chrome.google.com/webstore/detail/replace-missing-fa...

It's sad when you bookmark a website and there's no favicon... I'll have to try your extension.

Just tried it out and the file size is huge (350KB).

Right now I'm adding many different image sizes in the ICO file to cover many types of browsers and devices, but it's probably not a good default. I will expose sizing options or default to fewer sizes in the future.

Thanks for feedback!

Nice. I like that it's all client side and it's perfect when I just need the minimum necessary for an example project or starter template.

Hey, I used that a few weeks ago for a personal website. Thanks for making that!

Just used it for a placeholder icon for a new project. Thanks!

No problem!

This is great. I just immediately used it for my nascent blog.

Awesome, let me know if you have any problems with it!

You can use

<input type=color>

to make color selection more flexible.

I literary need this right now. THANKS! Other tools are too over-thought( lets you draw your own icon ). I needed something simple.

Two years ago I created a CLI tool called pgcli (http://pgcli.com). A postgres client with auto-completion. It became ridiculously successful. I got a few requests to support mysql. So I launched a kickstarter to write mycli (http://mycli.net). This also became quite successful.

There is a thriving community of core devs and a ton of users. I'm happy with both creations and made a lot of online friends.

These projects also led me to create a standalone python library for doing fuzzy matching. I'm quite proud of this one since the resulting code ended up being ridiculously small but produced really good results. https://github.com/amjith/fuzzyfinder/


I can't remember who turned me onto pgcli, but I've been telling everyone I can about it for a long time now. It's wonderful.

Thank you!

Thank you for spreading the love. :)

The initial surge of users came from HN when I originally posted it at launch, but since then most of the users were through word of mouth.

This is why i read threads like these. Thank you!


I work in security and have a paranoia of shortened links (bit.ly, t.co). I got frustrated with the options out there that forced me to right click every shortened link or paste it into a site so I made this Chrome extension / web app. It is pretty simple and keeps a list of 300+ shortened link services to check against. If your browser ever visits one it redirects you to the site to expand the link. It will also hit the Google Safebrowsing API to see if it is known to be malware plus will strip out tracking cookies.

It's been fun and rewarding watching my little extension grow to global use of over 4k users.

Does anyone know of a Firefox equivalent of this extension?

No, but you can use Chrome Store Foxified to install most Chrome extensions in Firefox.


That's pretty neat!

It's in the works!

Relevant PSA to file away:

http://goo.gl/zxcvb2+ (toy link, doesn't work)

Note the + at the end: it gives you a detailed statistics page that also tells you what the URL points to.

(NB, the stats come from JSON that seems easy to fetch; ratelimiting/"that's not a browser"-checking untested.)

This is a great tip. I had no idea this existed.

Does it warn you if someone sends you a link designed to log your IP address and browser? e.g. one generated on http://grabify.link

It'll expand a goo.gl link which would then display the Grabify link. The extension does not support Grabify but will certainly be adding it. I'm not a fan at all of these IP trackers.

This is something I have been looking for, thank you!


I'm proud of many things :(

* I converted a rotary phone into a cellphone: https://www.youtube.com/watch?v=fSkdWQswpc8

* I wrote a personal bookmark search engine: http://historio.us/

* A site that talks to spammers so you don't have to: https://spa.mnesty.com/

* A pastebin: http://pastery.net/

* A remote-controlled GSM irrigation controller for farmers: https://gitlab.com/stavros/irrigation-controller

* A button that orders food when pressed: https://www.stavros.io/posts/emergency-food-button/

* A python library and cli utility for controlling YeeLight RGB LED bulbs (a cheaper and nicer version of Hue bulbs) that I wrote this weekend: https://yeelight.readthedocs.io/en/latest/

* A secure communications library for IoT devices: http://stringphone.readthedocs.org/

* I took some non-terrible photos and made a site for them: http://portfolio.stavros.io/

* A hardware library for the A6 GSM modem: https://github.com/skorokithakis/A6lib

* Expounder, a better way to explain things in text: http://skorokithakis.github.io/expounder

* Dead man's switch, a website to email people after you die: https://www.deadmansswitch.net/

* I can't even remember the rest.

I like expounder, definitely haven't seen something like that before. I'd like it if there was an option to have the expanded text highligted in some way, just so I can keep track of everything mentally.

Having it reversible would be nice, too. Knowing the click is irreversible gives an uneasy feeling.

There is an option, it's detailed in the docs. I don't like it on by default, but some people (like you) do, so I added it.

Spamnesty is really amusing! It would be even better if your bot had a wider variety of responses.

I foresee that sooner or later, your bot will get stuck in an endless conversation with a spambot which keeps replying, leading to another round of replies and then another...

"Greetings from the International Journal of Swarm Intelligence and Evolutionary Computation"

Well, that's fitting...

Haha, this already happened, I think the 22 response one was a bot. I have a ~8 hour delay before I stop it, so luckily I noticed it and deleted one of my responses.

Wow. so many things. Please consider taking time to write about how you are able to be so much productive. Just Curious, how old are you ?

I'm 33. I don't think there's much of a secret in productivity, I just like these things so much that I prioritize them over other things.

Spamnesty is nothing short of amazing! :)

I hope you'll also distribute the code so hopefully anyone not necessary trusting your service to not harvest email addresses or resell them (or get hacked) would be able to deploy that on a custom server.

In any case, was very fun to read.

Actually I just noticed that your repo is available. Awesome!

Yep! Feel free to issue merge requests for features!

> Dead man's switch, a website to email people after you die:

Whats your thoughts and learnings on this one... it seems dark to me.. but i might be completely wrong..

It's pretty dark, but what can you do? You won't avoid death by avoiding thinking about it.

I'm using historio.us for three years now, it's great. Thanks for that :)

Thank you, I'm glad you like it!

Those photos are absolutely stunning.

Thank you, I'm a novice so I'm kind of insecure about them, so your kind words mean a lot to me.

That's a great body of work!

Thank you, the face isn't too bad either!

that Dead mans switch type of project is only funny when you want others to use it.

That idea alone should make us reflect if we had lived a life being true to ourselves and told everyone what we wanted them to hear.

OK, next its my turn: Ill create a dating bot that contacts users on Valentines day, and invites them to restaurant if they will still be single next year. How does it feel ?

I can't tell what point you're trying to make here.

And how exactly does your dating example work? It invites them only if they agree to stay single for a year?

I think parent assumes users send their confessions and sins to people after they die instead of clearing things up beforehand or living an honest life. Says more about himself/herself than the product IMHO.

Nyan Mode.


I made it as a simple joke, but for some reason it rapidly gained popularity among Emacs users, and now I sometimes find it or hear about it in unexpected places.

(Also I fear that on my deathbed I'll look back and realize that the most used thing I've ever made in my life was an animated cat for a text editor... sigh)

I have been using this for years and all my work colleagues always ask me "what is that nyan cat on your text editor? that must be super annoying!" and I always have to tell them I just really like it.

Thank you for building this, it's awesome!

Same! But sadly when I switched to Spacemacs I haven't set it up again.


Scroll down for nyan mode, if you don't mind using an external package. :)

Use the colors layer and enable the Nyan cat option. ;)

You're welcome! :).

Found it through Spacemacs. Totally love it. Even if it were to be your most used creation, it totally deserves it.

The simple tool I'm most proud of is spiped. If you have two systems which need to be able to talk over TCP without worrying about evilness on the network between them, spiped is the answer.

The simple tool which has probably had the largest impact is bsdiff -- now found used in hundreds of millions of devices -- but I'm not particularly proud of it because it was a quick hack and horrible code written by a C novice.

The non-simple product which I'm most proud of is Tarsnap, of course; I've spent a decade of my life on it, and don't expect to stop any time soon.

> The simple tool which has probably had the largest impact is bsdiff -- now found used in hundreds of millions of devices

In your thesis, you mention an updated algorithm that produces smaller patches. Do you have any code available that implements that algorithm?

Some of that, and some further improvements, made their way into https://github.com/cperciva/bsdiff . But I don't think anyone is using that new code; the company which was paying for me to work on it decided not to continue with that project before I had a chance to finish polishing the work.


Ludicrously simple but I rely on it and use it every single day for Dev (and real) purposes

<3 single purpose apps

edit the app I use for HN (MiniHack) seems to have mistakenly replied to the first reply instead of the root

Sorry for comment sniping!

That reminds me, I keep meaning to look into seeing how hard it would be to add a reverse mode to spiped.

Right now it acts like a ssh -L tunnel, but doesn't have a mode where it acts like ssh -R, right?

Those are really the same thing, considering that you run a copy of spiped on each side.

Oh? Maybe it's just that the documentation specifically mentions ssh -L but not ssh -R. Can you do something like run spiped on a machine behind NAT or on a dynamic ip address to create a reverse tunnel via a publicly reachable host?

Well, spiped lets you say "when connections arrive here, encrypt/decrypt them and send them over there". But if "over there" is behind a NAT, there's no way to do that; you would need a persistent connection, which is what ssh does and what spiped is designed to avoid.

thank you for spiped. Surprised at how often I find myself using it


I started working with VMs several years ago, manually setting up a Virtualbox image. It would take around 30 minutes, and whenever I'd screw something up I'd have to delete it and redo the whole thing. Sometimes I'd fat-finger a command and have to start the process all over again.

Once I got tired of that I started to look into Vagrant, which recommended using a tool like Puppet or Chef. That led me down the rabbit hole of learning Puppet, which made me want to have a GUI to be able to easily change some choices around without having to mess with the code itself.

So I created a simple HTML form with drop downs and buttons and released it thinking that maybe 10 people or so would find it useful.

Almost 4,000,000 servers created later, and I'm quite happy with how it's been received!

Great tool! Made it much easier for me to get started with puppet & vagrant

I use this frequently at work! :D

I built https://cronitor.io after having an important cron job fail silently for several days. When I mentioned this problem to a friend his first response was "we just had a major issue with cron failing silently at my work too".

We decided to hack on it together, and we've since grown Cronitor from a tool built for our own needs into a small business with a couple hundred paying customers.

As someone about to write a cron job, what ways do you see Cron fail?

My assumption is that cron is robust and reliable, it's the job script itself that may fail silently and need monitoring, yes?

Yeah, I'd say your assumption is correct. However, other common ways that I've seen cron "fail" is for the cron entry to being installed in the wrong user's crontab, the permissions on a script changing such that it can't be executed, temporarily disabling or removing a cron job and forgetting to re-enable it, etc.

My favorite is forgetting a newline at the end of the crontab. I always put a warning at the bottom of my crontabs.

# Always end with a newline!

The most common failure I've seen is when people forget to use full paths in cron.

bash instead of /bin/bash (or similar)

There's other weirdness in cron-land too. Cron will completely ignore files containing "." .

The cron process can be killed by the oom_killer, resulting in missed crons. This may be aggrevated If the cron service is never respawned later.

I found where I used to work that cron jobs usually failed because they weren't adequately tested, so I tried using MAILTO but it didn't do what I wanted, so started putting something like (it's been a while):

45 5 * * * /bin/bash -eux -C /path/to/real/cmd >> /var/log/somefile 2&>1 | mail -S "/path/to/real/cmd... at failed with details in /var/log/somefile" to-address < tail /var/log/somefile

...then test failures to make sure the email and everything worked as expected (like, mail might not be set up correctly on the box by default). And either overwrite /var/log/somefile with ">" instead of ">>" or use logrotate. Of course, the /path/to/real/cmd script, if a shell script, should have something like "set -eux" or at least "set -e" at the top (and be well tested), otherwise it won't always report failures and this has no chance of working.

I didn't (in mild use) see unreported failures after that, and it was really handy for problem diagnoses when something did go wrong thereafter.

But after any change I had to test carefully again every failure mode etc, because it seemed so easy to miss something that causes unexpected behavior. Maybe even had to wrap it in an "if" statement (single-line), "..else mail...".

It would be fun but time-consuming to automate those tests, maybe with shunit2 (or something named roughly like that), to rerun periodically and make sure ops didn't change the mail config to break this setup, or something.

I know that looks awful but I enjoyed it. It might just be easier to use your replacement. How did you advertise?

In case anyone ever reads that, too late for me to edit but: file 2&>1 | mail -S ...should be: file 2&>1 || mail -S ...or more likely the wrapped "if" mentioned.

also https://wdt.io/cron-monitoring.html , I think it's been awhile for awhile.

A personal knowledge organizer at http://onemodel.org/ (AGPL). Highly efficient at managing lists; like an org-mode that uses postgres and is more efficient and flexible in some ways. I use it heavily, daily, to manage checklists/tasks and notes on many subjects. No mobile or mouse support currently, but about everything one needs to know is on the screen at any given time. It's something like really fast mind maps but (currently) keyboard-driven and handles very large amounts of interlinked data. Data can be somewhat structured, as there is a feature that lets you clone then modify template entities.

I see it as the beginning of a platform to change how individuals (or mankind) manage knowledge overall. I'm now working on exploiting the internals for collaboration (linking instances, sharing data, subscribing to each others' data, mobile, etc).

For current org-mode or evernote users: The app has export (& finicky import) features to convert anything to (or from) an indented plain-text outline. The FAQs have links to a discussion of a more detailed comparison with org-mode that seemed somewhat well-received at the time (the link is on this page which also discusses evernote: http://onemodel.org/1/e-9223372036854614741.html ).

Feedback or participation are appreciated. If one has any interest at all, I suggest signing up for the (~monthly?) announcements list at least. More details are at the web site, including some FAQs.

https://transfer.sh which I built because I needed it myself, now being used by hundred thousands of people a month and http://slackarchive.io used by 500 slack teams.

transfer.sh is easily one of the best file-sharing website I've used.

when I recommend it to others, they find it _counter-intuitive_ to use, maybe because of them not being comfortable with the command line. now it has a drag/drop interface, so, that's _good_ (i guess).

one "issue" that I do have with it, is that downloads aren't resumable/pause-able or you can't see actual download progress. Is this a limitation or was it built that way ?

thanks for making such awesome things :)

(for those reading, transfer.sh is fully open sourced here: https://github.com/dutchcoders/transfer.sh )

Not sure the code is production ready, but similarly, dro.pm is a small thingy that has a command line option to share files. The links expire automatically so there's no abuse headache and it allows links to be single characters most of the time (eg. dro.pm/v).

You can even edit links afterwards, for example to remove content you know the other person already opened.

Additionally to files, it also dupes as a URL shortener and as pastebin if you paste text.

http://www.averageweather.io/ - tool to make planning for travel much easier. When you are too far out for a forecast, I found myself taking too many clicks to get average weather data.

EDIT - Whoa. Getting lots of traffic. This site is like 3 days old and I taught myself python and django to build it. Open to any recommendations at jonathan at averageweather dot io

EDIT 2 - Back up... Site crash ... Google apps shutdown smtmp connections which crashed my entire site.

I would use it if it was in Celsius.

Noted! Will work on that asap.

I wanted to let you know that I've added a button for Celsius.

Excellent work! I have been traveling down the East Coast for the past month and found all the similar solutions for this problem very clunky. So happy you posted this!

Thanks, I appreciate it.

Looks like San Francisco will drop to 0 degrees on the 18th!! http://www.averageweather.io/averages/San%20Francisco/Califo...

Bundle up! Let me look into that ... Thanks

Nice website!

Some urls are weird though. You have a trailing / somewhere I guess.


Thanks ... I've been seeing those on google analytics ...

Support for entering postal codes would be really nice. :)

Also it would be nice to per-populate the date field to today's date.

This is really cool, would it be possible you add a toggle somewhere for Celsius degrees?

Thanks! I definitely will. Hopefully today. Very common, understandable request. I only launched it a few days ago. Definitely has things I want to improve.

Also I've used Google's Places Autocomplete before for something similar to the city selection, it gives you a dropdown with possible locations.

Wanted to let you know that I have added a Celsius button.

Great project. Especially launching from 0.

Have you considered adding a Celcius option for us quirky Europeans?

For us in the rest of the world...

I know I know ... Sorry

Don't worry, it's a nice problem to have. Having users around the globe is something you should be proud of.


Well ... assuming traffic doesn't die post Hacker News fame ;)

Thank you. After I switch to Google Places Autocomplete, celsius is next.

looks nice - would be handy if it was in celcius too (and if it showed avg rain %)

Thanks. Agreed. Will add celsius. Rain % displays when the data is there. Otherwise I don't show it. Maybe I should show N/A or something ...

Just added Celsius.

Where do you get the data?


They have a free API that offers that kind of stuff?

not free, but cheap: https://darksky.net/dev/

What he said. Light years cheaper than any similar offering.

this is really cool.

feature suggestions:

* range of dates

* zip code support cleanup


Thanks! Range is something I am trying to figure best how to do. I know how, but it is "expensive" in terms of API calls etc. Like would someone pay for this feature?

Zipcode - Django has a great library so that is a next step for me.

Can you save the DarkSkye data so you never make the same request twice? Over time, you would have data for all places and all days of the year.

this is out of left field but one thing i find myself searching for is sunset/sunrise times in the future, especially when traveling to different latitudes. could be a cool addition if this info is available.

Wolfram alpha has that functionality if you type in a place and a date. Example: "Vancouver BC, december 2, 2016"

Thank you. I believe I can get that ...

The simple tool I wrote that I get the most bang for my buck out of is synesthesia[1]. I spend a lot of my time tracing things down across multiple log files, and having to pick out the important lines visually or trying to isolate them with custom grep incantations was wearing on me. Synesthesia allows you to specify regexes, and it will color matches based on the value of the match itself, meaning that it's stateless and doesn't need to keep a dictionary of strings to colors. This makes keeping track of things like GUIDs easy - you can just keep track of e.g. the orange one and watch it fly by across multiple terminals. It's currently python 2 only and assumes a 256 color terminal, but it has been invaluable.

I've been toying with using the idea for forums so that it is easier to keep track of who is replying to whom[2]. I also would like to try using it as a layer on top of traditional syntax highlighting, perhaps as an emacs minor mode - if those can provide colors to the buffer; I've written hardly any elisp and don't know what capabilities are available.

[1] https://github.com/cromo/synesthesia [2] https://imgur.com/E1N1Zsm

Reminds me of Internet Explorer 7(?)'s coloured tab groups. I actually thought they were quite a neat UI idea.

I don't remember how those worked. I think it automatically kept a hierarchy of what tab parented other tabs and colored them that way. That gets kinda strange because it's trying to represent a tree in a flat space, and I don't think the colors reflected their heritage. Since a tab could technically be a parent and a child, you lost tabs to one group or another.

Thankfully synesthesia is really simple - match the string, take the md5 of it, lop off some bits and interpret that as a color. There's no additional structure to superimpose on color selection.

Sorry, but please make a short screencast of what synesthesia looks like?

No need to be sorry - I've been meaning to do that for a while and just haven't gotten around to it. Synesthesia is really something you have to see to understand how useful it is. I'll see about getting a recording up after work today.

Last year, I launched https://devmarketing.xyz

I'm really proud of it for a few reasons:

1. It was a response to an observed need. I was getting daily emails from devs asking me about product marketing. I believed that devs who learned marketing could be unstoppable when it comes to launching products.

2. I created it on the side, while working full-time.

3. In its first 3 months it did $28,433 in revenue. This allowed me to go full-time on my own projects this January.

If you build an audience, and earn a good reputation, selling your expertise is a good option.

Hey Justin, I enjoy reading your emails. Sometimes they're a bit too AppSumo-y but overall (Y). I wrote out a reply to one of your questions the other day but didn't end up sending it. I have a ton of projects that I never really take through to completion for whatever reason. One of the reasons is marketing. I bought a book or two of yours on sale a while ago but haven't gotten to it yet, I'm sure it will be good though. Keep up the good work!

Thanks! I'll work at making my emails less AppSumo-y. ;)

You should definitely send that email. I try to reply to every one I get.

(BTW - one of the things I include with M4Devs is a secret podcast RSS feed where I read the chapters for you. Perfect if you're having a hard time getting started)

Great. Thanks for sharing. I may become your customer at some point.


Plain-text todo list:

1. To create a project, type a line ending with a colon.

2. To create a task, type a line starting with a dash followed by a space.

3. Everything else is a note.

4. To create a tag, type the @ symbol followed by a name.

5. Tab to indent and create outline structure.

TaskPaper started as few days TextEdit hack in 2006. It's no longer a "tiny" project in terms lines of code. But the original simple idea–plain text todos with 5 formatting rules–remains the core of what TaskPaper is.

I'm very proud of that!

I use TaskPaper throughout the day, every day. I've tried at least a dozen task-management apps and TaskPaper is the only one that I keep coming back to. It strikes just the right balance between simplicity and customization. I could go on and on, but just know that I, for one, think your pride in the project is justified ten times over!

Thanks! :)

Oh man, I've been a fan of your app for so long! Have you ever considered an official iOS app? I think it's the only thing that keeps me from leaving Apple Notes.

I did make a TaskPaper iOS app, but then got overstretched and and wasn't able to continue working on it. I did open source the code here:


I think the most popular app that derives from that code is TaskMator:


I might make another iOS app for TaskPaper at some point. But as an individual developer splitting myself across multiple projects and multiple platforms becomes painful pretty quickly.

iPad app with sync and same sort of keyboard shortcuts would be great (and would pay for handsomely). Clearly a lot of effort and intelligence went into TaskMator, but for me it somehow didn't translate the simplicity of TP to a touchscreen interaction.

Simple visualization of the relative size of different planets and moons I made when my daughter was asking if the moon is bigger than the earth - http://callumprentice.github.io/apps/celestial_bodies/index....

wait, Earth's moon is _bigger_ than pluto? mind blown!

That's great visualization! Thank you!

Kudos for this one, I love it!


Real time tracking of Boston subways, buses and commuter rails.

Made mostly in a weekend and available free and open source [1]. Though it's simple, I think it gives a nice overview of the trains and buses. Boston has stop prediction so in some sense it's kind of frivolous. I think the biggest 'innovation' was to integrate the "map icons" into a nicely visualized open street map [2].

Not super popular but it's been running for around 2 years with ~20 hits per weekday.

[1] https://github.com/abetusk/bostontraintrack

[2] https://mapicons.mapsmarker.com/

Ha! That's cool: I can hear the red line go under my apartment, and your visualization synced up pretty closely with the noises.

Busses too?! Man, I wish this were around in the Bay Area!

This is very possible [1]. I use NextBus for the real time bus mapping even though the MBTA offers it because I've found NextBus to be much more accurate and stable.

I'm a little nervous because I might be violating their terms of service in using their feed without being an official customer but it's been running for a couple of years now without issue.

[1] http://webservices.nextbus.com/service/publicXMLFeed?command...

I'm not sure whether "proud" is the right adjective, but that batch file I wrote when I was 12 or 13 which moves all images from the Desktop into a folder called "images" has been the single most useful thing I've ever written.

This is actually one of the few types of examples that I think fit here. Most of the other people are just posting their side projects. When I clicked this I was expecting some quick bash/batch/python/etc. scripts that do useful things.

One less useful thing for you: https://onli.github.io/izulu/. It is a bash script that changes the background of your desktop according to the weather at your locations, and can show the temperature and forecast.

Doesn't have much functional value, but it was easy to write (though over the years it needed some care, mostly thanks to closing weather APIs) and it is a small simple thing I use almost every day, as it is in my autostart.

That looks sweet! Is there a Windows version?

Thanks. Sorry, Windows is not supported. It is written in Bash, Windows was not a target at that time. It might work with https://msdn.microsoft.com/en-us/commandline/wsl/about, but probably not since it also uses imagemagick to paint on the images, and xml_twig_tools as well as jq to interpret the api output. And it would need to detect that it is running on Windows to change the desktop background with the proper command, if that is even possible.

Perhaps the tools here might suit then? https://github.com/skx/sysadmin-util

* Picnic CSS: a simple css library. I use it for both small projects from the CDN as medium projects with the SASS that I have carefully built: http://picnicss.com/

* cookies.js, a simple cookies library that uses a getter/setter style that I (and many people) like more. I'm considering taking the format and extend some other libraries like store.js. https://github.com/franciscop/cookies.js

* drive-db, a tool that converts a Google spreadsheet into a small database for Node.js: https://github.com/franciscop/drive-db

Thanks for making Picnic CSS! I picked it for small project recently and enjoyed using it.

I'm a fan of Umbrella JS, too.

love these small simple tools! Aligns well with the little projects I hack on at work

The simplest one that I also use the most is start.sh: https://github.com/JangoSteve/start

I've been using it for 3 years now, but keep forgetting to tell anyone about it. It's a simple bash script that detects what kind of project your current directory is and runs the appropriate command to start the development server.

I created it, because I found myself constantly switching between projects of different types, and it always took me a few moments to remember if the current project was Rails 2 or Rails 3/4, Node, Jekyll, Rack app, etc. and starting the development server on port 3000 was starting to take 2 or 3 tries before getting it right.

Now, I just cd into any project and run `start`. It currently detects Foreman projects, Rails (old and new), Jekyll (old and new), Gollum, plain Rack apps, and Node; and it's easy to add new things as well.

Thanks for sharing, will definitely use it!

As a somewhat related tool, I started using autoenv (https://github.com/kennethreitz/autoenv) a while ago (automatically sources a .env file when you cd into the directory). I use it to set environment variables, start docker images...

This sounds like one of those things that might, with some luck and maintenance, become a universal thing. My first reaction was "why would I need this, surely I can type the appropriate build/run command for the environment I'm developing in?" but I might just end up going "okay this is extremely practical", especially after running some open source projects from a git clone.

Innovative idea ...


I have some sideprojects around the internet, but so far the most useful thing I made has been


A tool that helps you learn languages by reading public domain books. I should continue working on that...

Very, very cool! I’m teaching myself Spanish, and I’ve been looking for something like this for ages.

I’d be curious to know more about how it’s built, and where you found the source texts. It it open-source?

Hey, thanks! I made the prototype using publicly available matched books and and got a friend included who built a matching engine for adding new books.

The frontend is react, everything is hosted on s3. If you have any questions lemme know!

Any plans to do short stories as well?

This is fantastic, great work!

This is incredible!

Excellent work!

https://www.hiroapp.com - Note-taking reduced to the core that just works™. Offline first, no signup needed, easily sharable (url, sms, email) and (web)realtime sync between all devices and collaborators.

My co-founder and I moved on to a new project a year ago, but this thing is still buzzing along on a cheap DO box and works like a charm with basically zero maintenance. Frontend is vanilla JS, backend in Go and the protocol is our slight modification of differential sync[0] to (re-)synchronize all text and metadata.

[0] https://neil.fraser.name/writing/sync/

Very cool app! It reminds me of http://litewrite.net

Hey, your first link is giving me a 502 Bad Gateway error.

Thanks for noticing, should be fixed. (there goes my "zero maintenance"-claim :) )

:) It works now, and looks great! I just tried to share a test note via SMS (with a spanish mobile), still waiting though...

Congrats, and keep up the good work!

Thank you! Fixed the sms quirk as well (twilio api key was missing). If you re-invite your phone-# now, the sms should come thru.

Your product look reminds me Fog Creek Software website. What the style/fonts were inspired by?


I've been poking at this for 4 or 5 years now. It started as a simple simplified air pressure simulator for teaching logic programming. But now you can make all sorts of stuff with it, like logic gates, adders and I'm working on a replica 4004. (Links below)

The website is awful for new users - It doesn't work on mobile, there's no tutorial and no real documentation on how to use the editor. Instead of fixing that I'm working on making a dedicated puzzle game built around the engine to teach all the concepts up to and including getting players to build their own CPUs.

The backend is powered by a FRP compiler, which I'm really happy with. You can have huge steam powered worlds and incrementally edit parts of them, and it does fancy incremental recompilation.

Logic gates: https://steam.dance/nornagon/logic

2 full adders: https://steam.dance/josephg/adder

Miniaturised 8 bit ALU: https://steam.dance/josephg/alu

Work in progress CPU: https://steam.dance/josephg/4004_4

This sounds amazing! I can't seem to get it running on Chrome, but I'll check back on it!

It should work in chrome - thats what I've been developing it in. Play button in the top left will make the simulations go.

The projects I am the most proud of:

http://rationalfiction.io - a collection of amazing science fiction stories.

http://lumiverse.io - discovery platform for educational videos.

http://digitalverse.io/rigs/ - several rigs that I have made, for practicing 3D animation in SideFX Houdini.

Single scripts:

https://github.com/raymestalez/rssdigest - sends me a daily email digest of my rss feeds.

https://github.com/raymestalez/reddit-scripts - scrapes /r/WritingPrompts, and compiles a list of the top writers and their best stories(http://fictionhub.io/story/top-100-writingprompts-authors)

http://blog.digitalmind.io/post/ai-writes-hpmor - ANN that generates Harry Potter fanfiction.

rssdigest => Wow Thanks!


I made this 4 years ago for those times when you just need an invoice. Today 10s of thousands of individuals and businesses use this each day to get paid. It's free to use with no login required. Instead it uses localStorage to remember data.

Homepage says lite is free and unlimited, pricing page says it's limited to 10 invoices per month?

You are looking at our paid service, invoiced.com. Invoiced saves your invoices online, and does much more, whereas invoice-generator.com only generates PDF invoices.

I personally have been using this since March 2016. I want to thank you for making such a nice application. The main reason I used this is because it was the FIRST result on startpage search engine results. Big thanks to you again! Keep up the good work.

One of the better examples I've seen, while still very simple. What has worked well to attract visitors/users?

Thanks! Listening to users and iterating.

I used your tool to get paid in the past. Thanks for making it.

Simple and effective.Thanks! One question, How you create pdf of the invoice? which library do you use to generate pdf?

Thanks for pointing out how to change currencies, that black link is not very obvious, I would change it to something else.

Would be nice to support other currencies

160+ currencies are supported. Just click on the selected currency to change it!

https://scri.ch/ draw => save => share (you can add .png to the URL)

https://gif.gg/ photos => save => share (you can add .gif to the URL)

I made them because they were useful for me, and I am still happily using them almost every day, especially scri.ch: nothing beats typing scri.ch in a browser from anywhere to quickly sketch an idea (except a napkin and a pen of course).

It’s nice to see other people using them too! :-)

Nice tool. What someone might should consider that you URLs are not private. They are quite guessable and each saving leads to an "increment" in the alphabet: https://scri.ch/acc -> https://scri.ch/ace

"A primer on Bezier curves", https://pomax.github.io/bezierinfo

It started as a small explanation on the basics of Bezier curves in 2011 and then kept growing until it's basically a full book now, hitting hacker news every year/half year, and getting lots of thanks for having made it by a very diverse crowd - from kids doing homework to engineers at software companies who have a question not covered by the material (yet).

It's been a mostly low effort investment and I could have just as easily not bothered, but just adding small bits at a slow pace parts of on the internet: five years of improvement would not have happened if I'd simply not bothered, and now there is an amazingly popular free resource for this material easily findable online.

Thank you for this! I've studied your material and I've able to understand an create a nice canvas coloring app.

One weekend, to scratch my own long-time itch, I coded up a simple browser extension to display GitHub repo code in tree view [1]. It now also supports GitLab, works on Chrome/Firefox/Opera/Safari and has almost 90K users.

[1]: https://chrome.google.com/webstore/detail/octotree/bkhaagjah...

On a similar note, I started making a thumbnail view: http://www.git-browser.com

Dude, I use this every day! It's super handy for doing code reviews. Thanks :)

One tool I wrote and I wish I would still have time to maintain was "Folders2Flickr" (luckily someone forked it https://github.com/richq/folders2flickr and keeps it alive). It's basically a DropBox for pictures with Flickr being the storage server and viewer. The tool simply synchronizes all of your pictures which can be in a hierarchical folder structure and recreates this folder structure on Flickr (but uses Sets/Albums instead of folders). I dont see the stats now but for years it supplied Flickr with multiple pictures every single second 24/7 from many users.

Used this just a year or so ago to upload ~decade of family photos from a backup-less old computer and into the cloud. Thank you!

I wrote a humble static site generator in Scheme that generates not only my blog, but at least 3 other blogs and the websites for 2 GNU projects. It's no Jekyll, but it's the first piece of software I created that is used by more than just me.


GNU project sites:




It parses DSV data like Awk does, runs SQL queries against it and formats the output in one of several ways. An example I am particularly fond of is using this tool as a poor man's libxo (https://github.com/Juniper/libxo):

  $ ps | sqawk -output json,indent=1 'select PID,TTY,TIME,CMD from a' trim=left header=1
      "PID"  : "3947",
      "TTY"  : "pts/2",
      "TIME" : "00:00:07",
      "CMD"  : "zsh"
      "PID"  : "15951",
      "TTY"  : "pts/2",
      "TIME" : "00:00:00",
      "CMD"  : "ps"
      "PID"  : "15952",
      "TTY"  : "pts/2",
      "TIME" : "00:00:00",
      "CMD"  : "tclkit-8.6.3-mk"

I started a list of command line tools for querying, processing and converting structured text data: https://github.com/dbohdan/structured-text-tools.

I wrote peewee, a single file Python ORM. It's codebase is very small but it is extremely capable.


I actually only heard of this for the first time today, and it is indeed a fantastic ORM. The `pwiz` tool is insanely useful, and is a pretty good first step towards porting over database models from other projects.

I'm quite impressed with how easy to use everything is, despite having used pwiz to generate my model classes. I had to manually edit a couple of the "related_name" fields for some foreign keys that are common between tables, as well as import the ArrayField type from playhouse.postgres_ext, but otherwise had a very, very easy time getting everything set up for what I wanted.

Thanks again for this, I didn't think porting my database schema over to Python would be so easy.

This was actually the first ORM I used. It's currently in a super simple newsletter script I wrote for my university and I plan on using it anywhere else I run into databases and Python. Thanks!

oh nice. I remember using it long back for some personal mp3 classification software I wrote.

Nowadays though I tend to use either Key/Value stores or straight SQL.



Sms Lists is an sms craigslist for refugee camps. I made it after visiting a couple of refugee camps and realizing that it was really hard for business owners who made <$1/day to have any extra money left over to re-invest in marketing their businesses. Code is here: https://github.com/alando46/smslists

This is really a great project. Would be worth to give more details how it is possible to reuse it. Do you think it work for homeless people too?

Thanks! I'm working on linking it up an android gateway so anyone who wants to test / try it out only needs a local simcard and the ability to download the gateway software to an android handset. This basically already exists (https://telerivet.com/product/app), it's just a matter of setting everything up.

greate stuff! I feel that for things like this, the real problem to solve is getting it out to people, which might be why some programmers shy away from it. Though, I love stuff like this. Not everything needs to be disrupted by a pool of GPU-assisted tensorflow instances, low-tech is still way better than no-tech. Keep up the good work, and hmu if you need an extra hand

Well, I really like the simplicity of athena. [0]

athena is an elegant, minimalist, light-weight static blog generator written in Python. It's just over 50 lines of code. athena tightly integrates with Tufte's design and typography rules. Have a look! [1]

[0]: https://github.com/apas/athena/blob/master/athena.py [1]: https://apas.github.io/athena/

At the beginning of the year, I started at a large print shop where numerous types of projects came through our doors. There's this one client of ours who's project would take ~13 hours to complete--and that's just in our department which was file prepping.

I did this project by hand one or two times and then asked the manager to let me research the possibility of automating it. After a week or so of fiddling around, I was able to bring it down to 2h10m. Just in the past week, I was able to bring it down to 15m and reduce the number of steps where a human is needed.

readthedocs.org -- A site that automatically builds documentation for you when you commit to your VCS repo. It's been widely used in the Python ecosystem for a few years now, and started off as a 48 hour hack day project.

Having just recently listened to the Talk Python to Me (yesterday) and Import This (today) episodes with you, thank you so much for everything. Read the Docs is a truly amazing resource.

A/Bingo, a Rails A/B testing plugin that I wrote in a part-time week and used for a few years. The main reason I'm proud of it is Ben Kamens and company ported it to run on Google App Engine for Khan Academy, where it formed the core of their experimentation platform for a while.



I made it because I couldn't find a developer to do a larger project I wanted to do based on the same principle.

So I paid a developer to do this and now he is my partner and we are building the project I wanted to do to begin with. It's quite profitable for a small tool.

It's based on the idea of contextual note taking which basically allow you to attach notes to all sorts of things like website, folders, files etc.

The contextual engine is part of my new project.

Sounds cool. Sort of what the people at Genius are attempting to do at some point?

Kind of but more focused

Not sure if this warrants inclusion in this list, but I'll share it anyway.

I made a simple firefox/chrome extension for people that horde tabs as temp bookmarks. You might find it useful to find tabs and quickly navigate to them by clicking on the link in the list. It's free and open source. The github page has a gif showing usage. You can also type cmd-shift-e or ctrl-shift-e to switch to it.

Chrome Extension: https://chrome.google.com/webstore/detail/tabist/hdjegjggiog...

Firefox Extension: https://addons.mozilla.org/en-US/firefox/addon/tabist/

source code: https://github.com/fiveNinePlusR/tabist

Let me know if you find it useful or have any suggestions.

Very useful. The only other feature I'd want is the option to display URLs along with the titles.

That could be something I could add. Thanks for the feedback!

Have you seen OneTab?

I actually have seen it, yeah. Didn't really suit my needs and I wanted to make something for myself. I plan on adding a few features similar to OneTab but still keep the extension light.

I got tired of remembering how to format date/times as strings and made http://www.foragoodstrftime.com/

I've used this more than a handful of times. Thank you!

I use this on almost every project. Thank you!

Made a python command line tool that decrypts and dumps assets from an indie video game called awesomenauts.

I started knowing next to zero in assembly, reverse engineering and crypto. Took me about two months -spread accross 2 years- of work and learning to do it. The game uses a modified AES crypto, just the key expansion was modified, probably so it can be different enough to not look like AES, but still benefit from hardware acceleration. It's probably less secure than regular AES.


Can you eloborate on this? Why did you have to use assembly and how did you decrypt it? Hiw did you find the key?

Assembly is related to the process of reverse engineering a game - disassemblers translate compiled code back into assembly, so knowing how to read assembly would have been very useful.

I think answering the questions about decryption and finding the key would make a pretty nice blog post, if OP has a blog.

Edit: Looks like he made a really detailed follow up comment describing the process. Impressive.

Sure. Bit of a long story. TL:DR at the end.

I wanted to dump sounds from the game, not for myself, but because I wanted a way for people to do videos/soundbanks without having to record them from the sytem audio, which would often contain other noises from the game. So that was my initial motivation.

I started by doing it the brute force way, load game, dump content of ram into a file, use a command line tool (can't recall name) that would search for media files inside that file (using magic numbers and whatnot), and boom. I would get a bunch of .wav files from the game. This worked, but now I had to categorize each file one by one, since it's just a data dump all filename information was gone.

Using an hex editor I found that the file names were also loaded into memory (ctrl+f .wav in an hex editor proved as much). So I needed to figure which file names pointed where, which was not an easy task looking just at hex values. I figured: well, the game has to know somehow which names belong to data, at least at some point, so I googled x86 reverse engineering and landed on a wiki page that brought me to a program I used only once a long time ago, ollydbg. Back when I was 14, (I'm 30 atm) I had followed some tutorial on how to use ollydbg to crack tony hawks pro skater 3. I wasn't too difficult, but I never followed up because back in the day I cared more about playing video games than figuring out how they worked.

Ollydbg this time proved fruitless to me, I had no idea what I was looking at. I followed some other tutorials and videos on youtube, the most helpful were the tutorials on cheat engine but I was still stumped on how to reverse video games, so I dropped the project, for a while.

Back then I had been recently introduced to python, which rocks btw, and one of the books, possibly the turning point of my reverse engineering "career" was a book called gray hat python. The book explained how debuggers worked, what's the stack and what does it do, registers and what they're supposed to hold, how breakpoints work, how hooking dlls works, etc. This proved the cornerstone for me understanding what's going on.

I've come to realize I haven't explained what ollydbg is. Ollydbg is a windows debugger used mostly by reverse engineers, with most-likely evil intents, to read machine code. A debugger is a program that tells the operating system "hey I'm a special program that wants to find bugs in this program so let me peek around", so it has access to what memory the program has allocated, or what files it has loaded, etc. It also converts the executable part of memory into assembly instructions. So instead of you seeing "57" you see "PUSH EDI". Basically, let's you read the assembly code of a program.

So now with my new found knowledge, I found ollydbg to be very helpful. I first hunted down where the game doing the file loading, which was easy because it's using windows APIs, then poked around until I found the call that returned the decrypted data, which was also easy. Knowing this information, I built a python script that would pretend to be a debugger, hook itself into the game, set a breakpoint right after the function call, retrieve all metadata and decrypted file data from registers/stack, and then resume execution so the next file could be loaded and repeat the steps all over.

So, mission accomplished right? Nope. A major pain in the ass still remained, this script would only dump files that the game would load, if the game didn't load the files, they would never be decrypted, this meant I had to select every "hero" and load every map, select every announcer, etc. Which I did for a while, but I figured, "there must be a way to automate this". So I tried to understand what the file loader was doing. This is where I spent the majority of my time, just poking around at code, tracing segment of code and reading the traces to try and figure out what was going on, etc. One key piece of information, the game was using the AESENC instruction to decrypt stuff, so I read some wikipedia articles on AES, got the basic grasp on how it worked, and tried to figure out what the game was doing. Note one thing, AESENC is used to encrypt files, however the game was doing decryption. This stumped me for a while. I watched free lectures on encryption online, I read articles, stackoverflow, youtube videos. None of them could explain why would you do encryption to decrypt a file. So I figured they must be using some sort of custom encryption, because according to wikipedia, one of the paremeters for the XOR right before the AESENC instruction should be the key, and it didn't work when I inputed it in online decryptors and whatnot, trying all combinations of operation modes, etc. I was stumped, and for several months I could not figure out how the game was doing it.

The next eureka moment was hiding in plain sight, a webpage that I had seen several times already, but never noticed a detail. It's even bolded. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation... . In CFB mode of operation, the encryption algorithm is used to decrypt the file. A light turned on in my head and if what I thought was right i would have solved part of the problem, so using the graph on that page I quickly built a proof of concept to test my theory. And I was right. To explain what my theory was and why it worked, I need to explain a bit on how AES works. I'm strictly talking about AES-128 here to keep things simple. This comment is too long already.

So AES-128 can be divided into two parts, first part is the key expansion. It grabs the encryption key, and uses a special algorithm to transform it into 10 different keys. The second part is the encryption operation proper, it does 10 rounds each using one of the keys in the first step, first and last round are different, but the others you're just grabbing the result of the previous round and the round key, and doing an AESENC with those as parameters, the last round will output the decrypted data.

So my theory was, they don't touch the encryption proper, but alter the key expansion step. It I was right, I could grab the first block of the file, use the round keys and IV I got from ollydbg, and be able to decrypt a whole file. And like I said, I was right :) Next step: find out how the game is doing the key expansion.

This was kind of a boring job. I worked backwards from the encryption operation. See where the output was being generated, then replicate it in python. Remember, this is all in assembly, and optimized by a compiler, so the code is anything but structured and logical. After implementing a bunch of the code, it started to look familiar, it basically was a modified version of the regular AES key expansion. It seemed to skip some steps. The key that was fed to that key expansion, was being generated by running a sha-1 hash on the relative filepath of the file encryped. You can find these two functions here: https://github.com/Nodja/AwesomenautsFileDumper/blob/master/...

Apologies for the lack of comments and ugly code. It went through dozens of iterations and it's based on assembly code that I don't fully understand yet. Well I know what it does, but don't know why it was done that way.

From here on was more busywork, basically make the script read a whole game folder and dump the contents somewhere else.

TL;DR: I didn't need to "use" assembly, I didn't write any assembly, I however needed to understand assembly since I was reading decompiled machine code. This allowed me to understand what the game was doing when loading files which lead me to the encryption "key". It was not actually a key that I needed to find, since they were using a modification of the whole AES-128 algorithm that only needed a file name as input, instead of key and IV.

P.S. There were some white lies to shorten the whole thing. Basically just me coming to conclusions sooner that I did, and skipping some steps (the game used compression and their own archive format). Also apologies if I made some typing errors, I didn't proofread my comment and sometimes I type words that are different than the word in my head :P

Thanks for taking the time to write this. May I suggest editing and publishing to medium or some other site? It's really a shame when gems like this get buried on a site like hacker news. Imagine all the awesome stuff buried in slashdot, reddit, usenet, etc allthese years.

Thank you very much for the detailed answer. It really answered my question. This kind of passion in people is so rare and always when I meet I learn a lot.

Great story, would be cool if you included this post in the repo.


I built it to learn JBoss Seam, and recently re-wrote it using DeltaSpike. I personally use it almost every day!

You're a lifesaver, I'm glad I scrolled down the thread this far. Sometimes I hop around these sites when one gets blocked, but yours seems to be consistently helpful for me.

If you indeed did build 10minutemail.com - I applaud you. May I ask how much you make (roughly) off of the service? It seems to be the go-to for most temporary email services, at least that I know of.

I did indeed build it:) I find myself somewhat reticent to discuss the details of the finances, but let's say it's a five figure amount annually.

This is incredibly impressive and I just wanted to say I have used your service 100+ times. You have saved me many spam emails, my hat is off to you.

My Elixir/Phoenix project Magnetissimo. When KickassTorrents died, I thought I should just build my own crawler and be done with it.

Elixir's OTP was a fantastic fit, I scrape stuff really quickly with minimal orchestration code. There are bugs here and there, and I haven't had time to circle back and patch a lot of the issues I noticed, but it "works".

I'm proud of it because it broke the 200 star barrier on my Github profile. With Elixir to boot! I love this language.


I built http://pixelsview.com

I run a media website and people are always asking me, what will X or Y look like? How do I know what size I want? I send them there.

You should have links to specific views. So someone could just share a url to a specific size.

I'm most proud of React Flip Move (https://github.com/joshwcomeau/react-flip-move), an animation library that does exactly one thing: animate transitions when DOM nodes change positions (eg. list re-ordering).

I wind up using it in almost every project I work on, since just about every app has a list of some kind, and many lists need to support being sorted, having items added, etc.

It's a simple tool, but the internal logic is surprisingly complex. The DOM is a tricky beast!

Great job! this is a harder problem to solve than most people would imagine.

Thanks :)

Is that a purely JS thing ? Surely such things would be best done by CSS? I am speaking as a person with 0 experience apping production level web apps.

So, the issue is that CSS transitions only handle CSS attribute changes. For example, if I apply a CSS attribute like `transform: translateY(100px);`, I can easily animate that using CSS.

When an item's DOM position changes, there's no CSS change to animate. You can throw a `transition: 1s` on it, and nothing'll happen. This is the distinction between moving an item around on-screen, and removing/appending a DOM node from one position in the tree to another.

For Flip Move: I actually do use CSS transitions to accomplish it, but through trickery known as the FLIP technique. You can read all the nitty-gritty details, if it interests you, in a blog post I wrote: https://medium.com/developers-writing/animating-the-unanimat...

Thanks for the insightful reply. This does bump up my morbid interest into web development, but I'm sure that will eventually fade away.

I was annoyed last week that ii (http://tools.suckless.org/ii/) didn't support SSL, so i reimplemented ii inn Golang and added a few extra needed features.


It's essentially just a file based IRC client. Using FIFO files as input, and spitting out the loggs into an out file. I really enjoy the simplicity of the idea and how easy it is to script. Been using it to learn goroutines and some more go, the code isn't the best but it's fun.

Planning to create something like "wii" where you can use the same structure but with HTTP requests. POST to send data into the FIFO file, and GET to read the out file.


After having multiple clients change their DNS settings without warning and then email us when shit hits the fan I knew I needed some type of warning system.

This checks every X minutes and saves each version so you can see the revision history for all your DNS zones across many providers.

Might be better to go in the reverse direction - get them to store their DNS records under revision control and then when changes are committed/pushed they are deployed.

I wrote something like that for Amazon's rout53, https://dns-api.com/ but it wouldn't be hard to wire up a git hook with APIs from DNSMadeSimple, Dyne, or similar I'm sure.

(Of course if you don't host your clients DNS then it might be a fight to get them to change. But if you do it might be worth a think..)

I thought about that, but some of our clients use 3rd party contractors / internal IT to manage their DNS as well so getting those entities to use it would be hard. Eventually that would lead to mismatched records.

The current way, I can actually monitor DNS changes to clients without them having to change anything they are doing.

I have thought about a syncing type of feature where you'd be able to schedule a one-time or recurring sync for a particular zone or group of zones.

I guess it's good you've got a solution that works then !

If you had the option the simplest way to poll for changes would be to do a hourly/daily/weekly zone-transfer. But many DNS-hosts disable those for security reasons.

Yeah thats the trouble. The big providers disable zone transfers so you have to hope for an API. A lot of providers don't make one available. Besides the ones I have up there, there are only 2-3 more that provide a workable API which I'm planning on integrating soon (Dyn & Azure).

I have two small kids (2 and 5) and I am travaling a lot with my family around the world. I found out that it can be hard to find a good place to spend some time with kids. So I build a simple tool that helps me to find such places.


This tool already helped me a lot.

I really like this, thank you. I have a nearly 3 year old boy, and we have a fairly standard set of places we take him around the small European city where we live. Your site actually showed me a couple of new places we haven't been before (only been in this city for about 3 years). I also really liked that almost all the suggestions were outdoor activities or locations.

Having said that, there are also a few places on our standard list of destinations which aren't shown on the map. How can I contribute them?

I will certainly bookmark the site for ideas when we travel too.

Thanks for a feedback. Just log in and you will see "add place" button.

I added two suggestions for my city, since I only saw parks listed. Great idea! The interface to add things is a little clunky. Most places being added are already listed on the base map, so being able to select something from there as the base recommendation would be great, then just add a few notes on the kid-related aspects. Also I wanted to be able to add a picture from the location's website instead of downloading and then uploading it.

I've actually thought about making one of these!


Helps people read more easily on-screen. Originally designed as a speed-reading tool for lifehack types, but it turns out to also be super effective as an assistive technology for people with dyslexia, vision impairments, and executive function disorders.

This looks really great. Can it be used in chrome on android?

It's available on Android in Firefox (and is free). Unfortunately Chrome for Android doesn't support extensions like on the desktop.

I'm most proud of making Open Exchange Rates (https://openexchangerates.org), which grew out of a hobby project (and a desire to create a really simple API for something that had previously been annoyingly complex.)

The basic JSON API request and response formats are unchanged since day 0, although we've added a few new features in response to customers' demands over the years.

I've been using this for years. Really really nice both practically (the data is useful) and conceptually (I always use this or OpenWeatherMap to explain to students what an API is)

Wow, nice, I'm looking into alternatives to OANDA to do simple ER requests.. And your comment is really in place for me.

The Obvious Password Detector, intended for use inside programs for setting and changing passwords.[1] (Yes, this is real K&R C, pre-ANSI.)

[1] http://www.animats.com/source/obvious/obvious.c

Wow, you're that John Nagle?


Started it over six years ago and have been sending it every week since. Have about 39,000 subscribers and still see a 45% open rate. It has been a lot of fun, and even better, I have made connections with a lot of great people.

And I just want to tell you that I really like the service. It allows me to quickly check the most interesting posts of last week if I wasn't able to read up on Hacker News during the week. Apparently, your selection matches my interests quite well. (And for the other weeks, I get a nice confirmation that indeed I've read/seen the most interesting stories :-))

Thanks for creating this. I was introduced to Hacker News through your newsletter. When I think I browse too much the site and I want to stop it for some days I know that I won't miss anything because I'll get updates on Friday. Thanks again!

Thanks a lot for this. Was looking for something like this. But I'm a little sad that this will now make me not want to put in the effort to make one myself.

I made a printed circuit board to make it easy to connect things to a 1000 watt computer power supply I had lying around. Similar adapters are available commercially, but I couldn't find one that could manage 1000 watts.


I made http://serializer.io 18 months ago and I still use it multiple times a day to follow tech news. It's how I found this thread.

looks somehow nice. gonna get on my list

Thanks - let me know if you have any queries. The code's here if anyone's interested: https://github.com/charlieegan3/serializer

I built https://fancyjson.com in a day about 5 months ago. I've used it pretty often since. Its a fancy JSON beautifier.

It tries to compact simple objects and spaces all delimiters. It also attempts to align array children. The idea was to produce the most compact, yet still easily readable form of a JSON document.

I was creeped out when trying to find something like this online, because there are many which send your JSON document to the backend instead of doing it on the client.

Neat! just tried it with this json and it didn't do a great job:

    "name": "vuejs-guide-test-1",
    "version": "0.0.1",
    "description": "My app",
    "author": "Duncan Lock <dlock@phemi.com>",
    "private": true,
    "dependencies": {
      "vue": "^2.0.5"
    "devDependencies": {
      "babel-core": "^6.1.2",
      "babel-loader": "^6.1.0",
      "babel-plugin-transform-runtime": "^6.1.2",
      "babel-preset-es2015": "^6.1.2",
      "babel-preset-stage-0": "^6.1.2",
      "babel-runtime": "^6.0.0",
      "webpack": "^1.12.2",
      "webpack-dev-server": "^1.16.2"

this was the result:

  "name": "vuejs-guide-test-1",
   "version": "0.0.1",
   "description": "My app",
   "author": "Duncan Lock ",
   "private": true,
   "dependencies": { "vue": "^2.0.5" },
   "babel-core": "^6.1.2",
     "babel-loader": "^6.1.0",
     "babel-plugin-transform-runtime": "^6.1.2",
     "babel-preset-es2015": "^6.1.2",
     "babel-preset-stage-0": "^6.1.2",
     "babel-runtime": "^6.0.0",
     "webpack": "^1.12.2",
     "webpack-dev-server": "^1.16.2"

That's the same XSS vulnerability that I came to report. Here is a simplified test case:


The most useful one is an invoice generator that looks at a bunch of Markdown files of work I've done for clients (I'm a freelance writer) and generates an invoice from them.

It can either generate an HTML report with various stats and graphs or create a draft invoice in Freshbooks for sending to the client. It used to take me a couple of hours a week to invoice, and now it basically takes no time at all.

I can't really share it because it's got some hardcoded client details, but I'm considering generalizing it into a txt2invoice utility other people can use. It's also massively over engineered because I used it as a learning project for Elixir. Every time I learned how to something new I tried it out on this tool, which means it spins up lots of processes it doesn't need and does fancy stuff with messaging, genservers and supervision trees which are entirely unnecessary, but that's part of the fun.

Right now, https://fromscratch.rocks a smart and simple autosaving note taking application. It's a rectangle you can type into, and if you use it like that, that's all it is.

But if you want more, you can use note-folding, a whole bunch of text manipulation changes and best of all, it's automatically written to disk (no saving needed ever) in a real text file, so syncing and backup is really simple.

Super neat, but all the download links on the site are dead (tag name missing 'v' in 'v1.2.0'). I was gonna' submit a PR, but it doesn't seem to be managed via a public repo.

Yeah the site's separately managed from the app. I noticed it after someone filed an issue and fixed it straight away. Thanks :)

Thank you for that! I use your app regularly.

Jumper (https://github.com/mpwoz/jumper)

It's a simple chrome extension to jump between top-level comments on hacker news using the arrow keys.

I've been meaning to publish it to the extension store, but that process looks like it'll take longer than actually writing it did :)

The reason it's my proudest "achievement" is just because it's so useful to me (solves an actual problem)


It's a simple website that randomly picks someone to pay for the entire bill when eating as a group. But unlike credit card roulette, your odds of paying are proportional to your meal's cost, so your expected value is fair.

I know it's simple, but it was my first foray into javascript and d3 and angular. I am proud of how it turned out.

Lol this is awesome, and most importantly, it looks great on mobile too

lc, or "List Commands used in this directory". It's a bash_history that's directory specific, because the terminal commands I type are usually directory-specific. It is only like 10 lines of bash, and I got help with the bash, but I'm proud of it and I use it everyday. I think my most common usage is `lc | grep partialCommandIcCantQuiteRemember`


I strongly felt the world needed a way for close friends, family, and coworkers to band together in order to anonymously spam someone's phone with giphys on their birthday :-)


It's without a doubt the most enjoyable thing I've done and it came from feeling a little loss of humanity with FB coopting birthdays.

I'm proud of a tool that I did to find the visual center of images (http://javier.xyz/visual-center/) and one to make random color schemes more cohesive (http://javier.xyz/cohesive-colors/). I find those two really useful.

I'm not so proud of a tool that transforms images to pure css (http://javier.xyz/img2css/) but it's by far my most popular tool ¯\_(ツ)_/¯


I made this because as tutorial youtube lover I got distracted by the youtube "recommended" clickbaits

It simple hides all distraction videos -> simple turn off switch if you have some spare time ;)

wanna use your own ? https://github.com/franzherzog/youtube-distraction-free

FAQr - An ASCII GameFaqs reader for Android - 2k + 5 star reviews - 1k + DAU https://play.google.com/store/apps/details?id=com.faqr&hl=en Great for retro gaming! *EDIT - Free with no ads

As someone who was desperately trying to use guides for Pokemon games with £4/MB internet abroad, this would have been amazing...

This is something I never knew I needed!

Awesome! Hopefully you find it useful!

Crab - SQL for the filesystem.

Bash is such a pain because of all the incompatible utilities. Its much nicer just to think about logic than to be searching for command switches and dealing with corner cases like .. file names that contain spaces(!)

Free for personal use, $5 / month commercial


How big filesystems have you queried with it?

We've only tested on personal systems so far, just a few TB.

The theoretical limit is around 9PB, but we don't know what performance would be like at this scale.

A one TB spinning disk drive takes about 30 mins to scan, several thousand files per second, and query performance is very good. Most people scan project directories on demand, and the whole disk once a week or so. SSDs are much faster of course.

There is a restriction on the maximum number of files acted on by one query (e.g. moved, deleted, renamed), as the exec() function caches the list of files in memory. On macOS we're ok with tens of millions of files, but the first Windows release, due any day now is 32bit (we're fighting compiler issues), so the limit is around a million files.

I am pretty proud of


My business partner and I often needed clients to sort things (features, objectives, pains, restaurants, you name it).

Eventually we built this tool together. You can create a list, sort it, then invite others to sort the same list and create an aggregate sorted list. There's lots we'd like to improve but it's pretty useful right now.

Hidden behind the JS front end is a Clojure sort-api server that provides an API to sort arbitrary data. We've no idea when that might turn out to be useful.

Like others have said, I made these for myself, but they have been useful to other people as well.

Search Wikimedia Commons: canweimage.com (300 - 600 searches a day)

Testing flexbox rules: flexbox.help

Googley Eyes Firefox addon: https://addons.mozilla.org/en-US/firefox/addon/googley-eyes/

Can We Image got included in a listicle on Buffer's blog. flexbox.help started getting use after I posted it as a Show HN and it got picked up by HTML Weekly.

Obvious throwaway account but 4 years ago went to odesk.com as I had a super simple idea to make an app. I believe spent less than 2 hours paying a developer $50 an hour making the app. Had it up in less than a day.

Couple years later the app has made close to a million dollars with me pocketing about 60% of that and the other 40% to the ad company.

It's one of my favorite projects because it was so simple and literally took less than 2 hours but I was able to pretty much make a 1000x on it which to this day is better than anything I have ever done.

"Obvious throwaway account"

Why use a throwaway account in this instance?

Mostly because the app still brings in money. Anybody with a basic understanding of mobile coding could easily duplicate the app in 30 minutes thus streamlining a bunch of competitors I would rather not have.


Netnode. It is a little like a unix pipe, a little like netcat, a little like tcpdump. But really simple.

You create a graph of communicating entities with netnode. The terminal nodes of the graph are external data sources/sinks (user input, udp/tcp servers and clients, shell pipes, named pipes, /dev/tty*, etc.) The internal nodes are a mesh of instances of netnode.

It is easy to insert a little instance of netnode anywhere, and have it print the traffic going through it.

I think it turned out really well, and I use it for everything. It feels like "connective tissue" similar to classic Unix pipes, but for the network age.

./netnode -h

    -p/-P:  tcp client/server.
    -u/-U:  udp client/server; client does pings to notify server.
    -k:     stdin/stdout.
    -s:     filename.  works for /dev/ttyS0 etc., named pipes, regular files.
    -X:     tcp proxy; local_server:remote_host:remote_port
    -w:     raw network device interface eth0 etc.  (requires sudo.)

    -i      next interface is input only
    -o      next interface is output only

    -d:     next interface is prefaced with time/direction
    -t:     next interface shows non-printable characters in hex
    -b:     next interface prints data formatted as hex dump


It’s simple, useful, and I learned a lot while I was building it. And people use it (which is always a plus).

Love it. You should add example problems.

Thanks :) That’s a good idea — each rule has real-number examples, but there’s nothing to solve. It would be fun to add test problems to use the rule on.


Scientific plotting in the terminal. I didn't come up with the idea of abusing unicode characters in such a way, just fyi.

Example: https://raw.githubusercontent.com/Evizero/UnicodePlots.jl/ma...

Thanks, this is very impressive. I didn't know about braille unicode characters, very cool.

I wrote Open-Publisher: https://github.com/chrisanthropic/Open-Publisher with a focus on easy fiction book creation.

Markdown manuscript input with high quality epub, mobi, and print-ready PDF output.

It's a wrapper (your choice of Rake, Bash, or Docker) combining Jekyll + Pandoc with custom PDF LaTeX templates for print-ready (valid PDF-X1A 5x8 and 6x9) and professional epub/mobi ebooks.


Draw something and share it.

Like jsFiddle for drawings. In need of a rewrite and mobile support, but pretty useful if you just want to scribble something down and share it. And I like the borderless canvas :)

Ah ! This is really cool :) Do you mind if I ask what this is built on ?

Thanks. It's just plain JavaScript and some jQuery. It uses SVG so the browser takes on some of the work you'd have to do yourself with canvas, like having the shapes as their own element and detecting mouse events. This also makes it easy to export as SVG (just append .svg to the URL). Server stuff and a small backend runs on minimal PHP and MySQL, no frameworks. The data is stored in a JSON-based format. PNGs are generated from the SVG with ImageMagick. Keyboard shortcuts with jQuery.hotkeys.

Could be more modularized to allow touch input, multiplayer editing, use as a library etc., thus the needed rewrite :>

The endgame for this could be something like https://www.figma.com. They have collaborative editing, use canvas to completely do their own thing for graphics and React+Redux for the interface. Quite amazing.

A tool to make JS bookmarklets:


I created this years ago because I wanted a quick way to create bookmarklets. Since putting it online I have had good months in terms of visitors (1000+) and worse (50), but I am still very happy that people keep coming to bookmarkify to create helpful bookmarklets for themselves and others.

By now it has been around longer than 4 years, despite what the banner says.

This is great. I've never had the time to learn how bookmarklets work, but your tool just let me make a simple one in under a minute.

Thanks a lot for the compliment! It is really great to hear from users. I just created it for myself and it is humbling every time I find out that people simply like it.

I don't have a link as it was an internal project but it was a simple ASP.NET MVC app that interfaced with Yubikey (a 2 factor dongle) and Active Directory. It would set the Yubikey password to the Active Directory for a user which would then be used to authenticate users when they logged into the network. It wasn't much work but saved the company about $20k, which was the cost of the commercial version the company was looking into.


I built a utility for python programmers - pipreqs which helps to generate pip requirements.txt file based on imports of any project

https://github.com/jurgelenas/pdfify-server https://github.com/jurgelenas/node-pdfify-client

My little open source app which converts HTML to PDF.

Useful when generating PDF invoices, legal documents. I am using it in my own projects.


Osh (Object SHell) is a python application giving you a set of Linux like commands which can be composed similar to pipes. However, it is objects, not strings, that are passed from one command to the next.

It includes typical shell stuff, listing files and processes; database access, in which queries yield Python tuples; and distributed access, which distributes commands to the nodes of a cluster and then combines the results. For example, to submit a SQL query to each node of a cluster, getting a count on each, and combining the results:

    osh @cluster [ sql "select count(*) from request where state = 'open'" ] ^ f 'node, count: count' ^ red + $
- osh: Invoke the interpreter.

- @cluster: Relay the bracketed command to each node of the cluster. The bracketed command returns (node, count) tuples.

- sql: Submit a sql query (on a cluster node).

- ^: Denotes piping results from one command to the next.

- f: For each result from the cluster, run a function on (node, count) which returns just the count.

- red +: Reduce using +, summing up all the counts.

- $: Print result on the console.

https://mailgroup.io - Free online mailing list manager

https://crond.net - Free web cron

https://ipaddr.dk - what's my IP?

https://ent.re - URL shortener that generates mobile type friendly URLs

I have been working on a version of the cron thing as well! Good to know there are more people who know this problem exists.

I wrote a concurrent, super fast webcrawler for my job with Go (~300 LOC) to get data out of customer sites fast even when they have 1.5 million pages or more.

You can basically filter everything to get a .csv file in the end with the links for the given domain, the source for that links, link number, link depth, timestamp, HTTP Request Codes (200, 404 etc) that fits that filter.

Filters: Number of concurrent http(s) requests, max link number, max link depth, must include path, must include word(s), must exclude word(s), local or global search (for links with path, local means you only search for fitting links on that site and the found sites instead of crawling the whole homepage) etc.

It was my first Go project and I always wanted to do multithreading and Go made it so easy. Can't opensource the code because it's company property.

But damn is it fast if you let it run, one homepage didn't throttle me and I got up to 96 Mb/s (on my 100 Mb/s connection) with set to 2000 connections per second.

DDosed our office wifi a few times before I implemented a token bucket for rate limiting (and sometimes just for fun after that :>).

I did something very similar a few years ago, but in c#. I didn't do real rate limiting, just threading configuration and a configurable random sleep; but it got the job done. It was a super fun project to work on.

I can't believe that the open source options are so still so few and far between in this area. There are TONS of great tools for building crawlers, and there are tons of great crawlers built for mirroring a copy of websites. But, there are very few polished crawlers built for simply extracting metadata from pages and getting information about a site.

Yep, that's why I've build my own, the existing ones don't give out a list of the links or are super slow. A co-worker made the first one in Python but it was so slow that it took hours (6+ sometimes) to finish a site and I thought "you can do that faster".

Problematic are some sites that don't use <a href="asd.com"> tags because that's what my crawler is looking for.

C# & Elixier & Rust where the the other options I thought about and I want to build the same crawler on these languages (relative easy to do with ~300 LOC) to compare them for network / server / cli stuff but that has to wait till next year.

the biggest headache with the c# implementation was the threading. A lot of the out-of-the-box threading structures (pools, etc...) have limitations you might not think about checking for; e.g. you can't set the number of threads lower than the CPU count on the machine with some of the official .net threadPool helpers; you can try, but it will just silently ignore you.

There is some super useful stuff too though that made it easy to write a generic extensible crawler. My implementation ended up supporting separately compiled plugins you could just dump in a 'plugins\' directory, which responded to events and had full ability to manipulate the output pipeline. Do-able in lots of languages, but c# has some formalized helpers around it that make it super easy.

Is it in github?

"Proud" might be a stretch, but some very small tools I get a lot of use-value-for-coding-time out of and thus feel warm fuzzies about:

https://github.com/brennen/bpb-kit/blob/master/home/bin/phot... - copy photos from some common camera media locations.

https://github.com/brennen/bpb-kit/blob/master/home/bin/gif-... - wrap Byzanz and Festival to record a gif of a screen region (and tell me what it's doing so I know when to do stuff).

https://github.com/brennen/bpb-kit/blob/master/home/.sh_comm... - an alias for navigating directory history.


After getting chew out by my last boss regarding scrapping job post off of oil and gas industry. I created this site to practices what I have learn so far on web scraping with c# by using selenium, phantomjs and htmlagilitypack. Its a site where I scraped job posting from major oil companies.

Something doesn't work there. Using Chrome on OSX I'm getting: Server Error in '/' Application. etc.

yes, you are correct. I've fix it.

I created https://jsonip.com about 6 years ago. Supports several million requests a day at this point.

Also created Helium, https://github.com/geuis/helium-css, a tool to help frontend devs clean up old CSS.

They're relatively popular.


Android app and Chrome and Firefox addons that lists live and upcoming programming competitions on sites like Codeforces, Topcoder, Hackerrank, Hackerearth, Codechef etc

https://play.google.com/store/apps/details?id=com.corphots.c... https://chrome.google.com/webstore/detail/coders-calendar /bageaffklfkikjigoclfgengklfnidll https://addons.mozilla.org/en-US/firefox/addon/coder-calenda...

Has 7k+ users all together :)

I recently wrote and was able to open-source https://github.com/weebly/tinydns-filter. I got tired of using online tools to create individual records that tinydns-data doesn't support, so I wrote a tool to process those "custom" records.

Tiny Player - a music player for iPhone at http://www.catnapgames.com/tiny-player/ (free). Got tired of using iTunes to "sync" mp3s and watching it fail. Took about 2 months' worth of weekends and evenings, now I use it every day.

Really tired of iTunes too. It's tagline should be: "Making simple complex". I'm using OPlayer Lite right now, but may try your app too.

Of all the things I've made ( here https://gen517.com) there are a couple that stand out in hindsight:


Which is a tool so people who don't know anything about programming or fancy excel usage can still do SQL join type things.

And this version of the classic game mastermind, which I use in conversation to make the point that "machine learning" can be tremendously approachable -- the computer here just picks a random potentially correct guess and does very well.


And this, which is massively pointless but has gotten more comments than anything else:


I have a script that gets a bunch of data and emails it to me and some co-workers every day at 7AM. Stuff includes: high temperature/probability of precipitation for the day, bitcoin price, iTunes/Google play sales/rating values, number of "diff" lines in web pages, number of followers on Facebook/Twitter/Google+. The latter isn't entirely a vanity thing... some co-workers manage multiple social media accounts and it's nice to know if readership is going up or down.

Part of the point was a) to aggregate everything in one report to reduce the temptation of looking at something multiple times per day, b) to avoid visiting multiple pages in order to find all the information, and c) to find changes in things that I may have forgotten about since they rarely change.

I've thought about making it available for others, but it'd take a bunch of work, and I'm not sure what the demand would be like.

Neat! IFTTT also does this - you can create whatever events and add and output to a daily/weekly digest email, which is sent at a configurable time, if it has any content.

Thanks. :) I've been meaning to look at IFTTT more, but you know, scratch your own itch, etc. I'm not sure if it could do a sparkline like I do, but maybe if you add to a Google sheet or something. (The characters in my example got filtered out, but they look like https://github.com/sindresorhus/sparkly-cli )

eg: 12.20 (-1.60) temp


Shpotify, a command-line interface to Spotify on a Mac. :)

I wrote obmenu[1] some time ago, a menu editor for the Openbox window manager.

I'm pretty proud of this simple tool because it eventually made its way to the repositories of all mayor distributions: Debian[2], RedHat, Arch, you name it.

I've received many emails from users, questions, suggestions, bug reports, people offering to translate it in their language... I'm super thankful to all of them (unfortunately I could not answer all of them!).

It's been unmaintained for a while, but it's on my To-Do list to refactor it, clean it up and add some missing features. It's been 10 years so I'm hopefully a better programmer now.

[1] http://obmenu.sourceforge.net/ [2] https://packages.debian.org/de/jessie/obmenu

Built https://securesha.re/ a few years back, it is:

Secure (browser-encrypted) dumb file storage with self-destruct. By default, it self-destructs on first access. The server can't read your files and it will delete them anyway after a week (or less, if you like).

It's a good way to quickly send a file to someone else and to know if it's been accessed in the interim.

It was really just our own attempt to build something that can do very simple secure file sharing that anyone can use, as an alternative to so many broken practices (such as clearnet emailing sensitive docs).

It's turned into something pretty cool for a few reasons:

1. We get emails all the time from people who love how simple it is

2. It's a great testbed for new web technologies; I rebuilt it once using Polymer and intend to rebuild using Elm when I have the time

3. It's a great testbed for web crypto & webworkers.

Just a fun one... a Greasemonkey/Tampermonkey script that removes a lot of the Facebook Suggestion/Trend information on the sidebar of the site when it first loads, replacing it with random pictures from /r/aww (or whichever subreddit you want to use)


I fear I'm going to get chewed out for my crap code on this one but I'm really not a webdev... I hacked this together after getting sick of celeb gossip links and trash ads for facebook games. I'd rather get a random pic of a cat or a supercar than irrelevant junk.

EDIT: Pic for how it looks when loaded: http://i.imgur.com/Yqc2jdY.png


Hits the API for Philadelphia's Regional Rail and displays real-time data on the system as a whole as well as historical data on specific trains and train stations. It's useful to tell, for example, that the evening train I normally want to take home (https://www.septastats.com/train/573) is almost never on time, for example.

There's more I want to do, such as displaying more detailed stats and train data (on-time percentages, for example). And hopefully get some interest from SEPTA so they can use it to determinate the "biggest offenders" and what can be done about them.

My co-founder and I built a desktop app called Woot Agent when we were younger which would tell you when woot.com had a "Woot-Off" [1] sale.

It would sound an alarm every time a new item came up for sale, with a special sound for their highly sought after "Bag of Crap" [2].

It had over 25,000 downloads after its first Woot-Off. Sounds so bizarre in hindsight, but a partner at Polaris Venture Partners asked to meet—he wouldn't say how he found me, but I'm sure Woot Agent was how.

[1] https://en.wikipedia.org/wiki/Woot#Special_events [2] http://www.woot.com/offers/bag-of-crap

Began as a simple Pomodoro timer but is gradually becoming a full task manager - https://lanes.io.

Less proud of making it than I am of the fact that thousands of people use it to accomplish their goals every day, which is neat.

I made software that track pour rate of liquid glass at 1800 centigrade using camera and control its pour rate by moving ~1 MW arc electrodes. I was in my teens and a local company need to quick fix it. My first actual earned money. 13 years later, its still working. :D

My git-based DNS hosting site is pretty simple, in terms of code, but it is enormously useful to be able to make changes to DNS with a simple git-push and keep a local history:


In the same vain I put together a little archive for storing bookmarks under revision control:


Finally I put together a small archive of tools which seems to be quite popular for reasons I don't fully understand:


https://UpDog.co hosts websites with Dropbox. Currently making < 1k / m

How did you do marketing for this? How 1st users learnt about your service?

http://www.a440.audio/ (Warning: plays audio) I wanted a dead-simple tuning fork; I saw the domain was available so I made it. One-click access to A440 from any bookmark.

Very niche, but I'm very proud of having made this: http://kerrick.github.io/mtg-tools/#/playtest-cards

It allows people to create playtest cards for a strategy card game, so people can test out decks before purchasing cards to play with in a tournament.

I made it because my wife is a Twitch streamer, and she needed a way for the card name to be visible even though the usual printed size is quite small. It ends up looking like this: https://www.youtube.com/watch?v=3lCQFI9nthE

A 3.3v power supply with a 3.5mm audio socket for bypass current measurement. (well perhaps not most proud, but it's cute)


A React library called "onclickoutside", https://www.npmjs.com/package/react-onclickoutside, for dealing with clicks from outside a DOM node's tree.

Sounds like a simple thing to have, but when I wrote it it just didn't exist. In half a year it's gone from one guy needing a small lib to deal with closing a menu when you click on the page, to a library with loads of optional functionality, fixes and improvements filed by 24 contributor, and over fifteen thousands downloads a day.

It's probably the most successful piece of software I've written to date.

thefuck - https://github.com/nvbn/thefuck

I just use it every day and I guess a lot of people too.

Did your program show up on Hak5 2111? I saw 'fuck' in Darrens console and it made me go WTF. Now I know what that might of been :).


Definitely different from the ones here since it hasn't made me loads of money, but definitely proud of it.

The first web application I ever made, which was actually based on one of those Ask HN threads we had 2+ years go about looking for furniture the fit a specific size. I actually did make a few sales, shockingly.

At this point, it's pretty much dead as I've taken in other projects and independent security consulting engagements. It was extremely useful understanding the entire stack, and I've found it to be something I've been able to use to build a bridge to developers.

I'm happy the following two are getting traffic:

- [ByteSize](https://github.com/omar/bytesize) (.NET/C#) library which is a utility class that makes byte size representation in code easier by removing ambiguity of the value being represented. ByteSize is to bytes what System.TimeSpan is to time.

- [PS1 Gen](http://omar.io/ps1gen/) is a simple bash PS1 generator and reference so you can soup up your command line. I created this after trying to research how to create a cool PS1 string.

I wrote this script three years ago to grab screenshots from my networked Agilent oscilloscope at work. Ten lines of Python, but I use it every day. It saves me a ton of time moving screencaps from my scope using USB (ugh). More importantly, it spares me the agony of trying to rename them and classify them in a batch, hours after I took the original capture. Definitely the best junky little tool I've ever made.


I also have some unpublished ones for doing worst case setup/hold analysis in point-to-point DRAM interfaces.


When Android was pretty new, I got the myTouch (the second public Android device) and was surprised that there was no way to easily see the exact battery level. I'd been a hobbyist programmer for quite some time, and it seemed like a problem I might be able to tackle. The result was Android's first battery indicator app, which remains by far the most-used piece of software I've ever built, with over 8 million downloads.

Hint.css - https://kushagragour.in/lab/hint It started as a side project but now is the most used CSS tooltip library on the planet :)

It's not totally unique, but I made a simple tool I call "watch" that runs terminal commands on file save. You specify a file glob and a command and it runs the command whenever a globed file changes. Also has a few handy flags. I use it ever day to automate my file save->compile->run workflow. It's amazing how much time you save by never having to up-arrow/enter a terminal after every save. Been meaning to update it to use file hooks instead of polling but it works.


For a brief moment I thought you wrote the Unix utility watch. Cool project anyway!

Thanks! I had not seen that before but it looks nifty.

Nearly every website owner I've worked with is obsessed with users getting 404s from old incoming links. First I wrote a cron to summarize apache logs and email a report, but that involved me building redirects or a cluster of cms changes. Its evolved into a super simple tool to help site owners see user 404s in near real time and setup their own redirects until our team gets around to fixing them. Super simple from a tech pov, but it's completely removed a huge set of annoying tasks from my plate.

Toying around with productizing it as https://www.404fyi.com


it's a small "webserver" that acts as a sort of proxy between several localhost:<port> applications and a domain name.

You need to modify your /etc/hosts file but then you can access your localhost applications from dedicated domains.

Mostly intended for dev purposes, not really production. Like, you could use it to test your website awesome.example.org as if it was in production on your dev-machine while it really only runs on localhost:9999

It also copies headers, so no problems when using some custom headers either!

(Beware that it uses IPv6)


I built it because I wanted to able to make websites in Objective-C and I didn't like any of the stuff that existed when I started.

I've learned a lot making it and enjoyed it. I don't know if I would start something like this again. Reading the RFCs and implementing FastCGI and HTTP was a lengthy and tiresome process. I enjoyed it though.

Sure, now you have a bazillion Swift server-side frameworks, but at the time Swift didn't even exist. Call me a dinosaur, but I like ObjC and the Cocoa stack and I think it deserves its place on the web.

There are several.

* cfgen, a config files generator that is fed with config templates and parameters to fill them

* CronBuilder, to pull a repository, run building command, and save the results in another repository

* flowmon, which shows bandwith usage of different streams, each defined by BPF filter (a.k.a. "tcpdump syntax")

* sftponly, a shell for jailing in chroot accounts meant for data transfer only (for scp, sFTP, and rsync)

* xmlrpcd and its spiritual successor HarpCaller, RPC daemons for sysadmins

* logdevourer, log parsing daemon

These are just the public ones, the ones that were generic enough to be open sourced. I have few others that are/were too specific to the environment they were written for.

sftponly is really nice, needs updating and wider distribution (more packages for more distros).

What do you mean by "needs updating"?

And with packages, I disagree. I only use Debian (and have used Red Hat some time ago), so it would be quite troublesome for me to provide package build scripts for anything else. I wouldn't expect any developer to provide packaging for the whole variety of distributions and OSes. But providing a sane build process is enough for anybody to build a package for their OS.

A few tiny projects that I feel have provided real value to people. All resulted from scratching my own itch:

* dotenv-safe: https://github.com/rolodato/dotenv-safe

* gitlab-letsencrypt: https://github.com/rolodato/gitlab-letsencrypt

* Editor for Volca Keys synthesizers: https://volcaeditor.com (work in progress)


Create Countdown Timers to an Event in the Future and Share them with others. Includes Timer and Progress Bar.

Brilliant. I'd love to see a way to embed the timers on a webpage.

This is minor, but I used the Random Everything(https://packagecontrol.io/packages/Random%20Everything) sublime package at work relatively frequently. I eventually needed to quickly generate lists of up addresses. I used a small Python script locally for awhile and then finally decided to just make a pull request on the Random Everything package.

It was just cool to be able to contribute to a small package I used a lot at the time.

The first thing I ever made and released I'm stilled very proud of. Tiny, just a Sublime Text plugin to copy the relative path to an open file from your project root. https://github.com/bpicolo/CopyRelativePath

Up to nearly 2k installs these days! https://packagecontrol.io/packages/Copy%20Relative%20Path

https://github.com/alexadam/save-as-ebook - Save a web page/selection as an eBook

JsFormat and CaseConversion. I wrote them at a time when a lot of stuff we were building at work wasn't really being used by a ton of people, so it was really nice to produce something that actually got used by tens of thousands of people.

https://github.com/jdc0589/JsFormat https://github.com/jdc0589/CaseConversion

http://hellojarvis.io/ is a Messenger bot that reminds you to do stuff. You can phrase time in many ways, which was quite tricky to do: "in 3 hours", "on the 25th", "tomorrow night", "next wednesday" all work.

We currently have almost 25k users and I'm proud of the fact that people really do find it useful. A friend recently mentioned to me that he used Jarvis to remind him about his dentist appointment.

this is really cool! the lack of explanation and any privacy statements makes me somewhat nervous though. reminders can be somewhat personal.

True, but one could probably come up with codewords for any really personal reminders.

I'm not looking for insane privacy, just some reassurance that the engineers are at considering privacy.

Is this project open source? I would love to see the code...

The things I have made that I am most proud of are:

* https://standardresume.co/ - Started because I couldn't find a resume that I liked.

* https://amplitudeapp.com/ - A more advanced artist radio style playlist maker.

* http://rediscover.rile.yt/ - Automatically save Spotify discover weekly playlists.

I was looking for a Discover Weekly saver for a while, but resorted to using just screencapping the list, and saving the good tracks internally.

One issue with saving a Discover Weekly list to Spotify is that Discover Weekly is generated based on the content in the user's playlists. If you add a bunch of Discover Weekly lists that are 28/30 duds you're going to start reinforcing the system to generate crappy lists.

I think that's why Spotify doesn't allow saving them. They do allow saving of the topical Discover Daily, which reinforces my belief here.

Just thought I'd let you know about the possible issue with your product. Even though I absolutely love it and would use it.

I have heard talk of this before, it would be great to get an answer from someone who works at Spotify. I wonder if saving the tracks in the playlist and not creating the backup until the next week would get around that? There is no way they are track all plays, saves, playlists, skips for every user over all of time.

It doesn't track plays at all, it takes songs in your playlists and calculates close matches based on songs in other users playlists.

It's a relatively simple graph-transform that is just using occurence in playlists tor generation. Which makes adding the playlists self-reinforcing, which could have negative situations.

I have a wide range of musical taste, but a low number of playlists and can drastically change from metal to dance to hip-hop by adding a prebuilt playlist week to week.

Here is an article on how it works, and there have been discussions from the staff elsewhere on why DW is so good.


No? Tracking all that stuff is trivial. For sure they are tracking plays, I do not see how they couldn't just as easily track saves/skips w/ one log entry.

Sorry, i meant that they arent talking all of that into consideration for each weeks playlist -- im sure they are tracking it.

I've been using an IFTTT recipe for saving the weekly playlists. Works like a charm.


Rediscover doesn't require an IFTTT account though so it is much easier.

http://node-ping.herokuapp.com (Repo: https://github.com/qawemlilo/node-ping) - This is a very simple tool that monitors the availability of some of my websites and sends me an email if one is down. Hosted on heroku on the free tier, running for 3 years without much maintenance :)

(Edited: removed markdown elements)

Dead By Zombie. might have been the world's first commercial true Rogue-like. Why? Played in a terminal, looks/works like Rogue, yet I was literally selling copies to customers and promoting it in person at game conventions. might also have been first in Python too: http://synisma.neocities.org/deadbyzombie.html https://github.com/mkramlich/Dead_By_Zombie

The Dread Space Pirate Richard. a comedy ebook. 1st book on Amazon, 2nd being written. sells copies: https://reddit.com/r/dspr

Software Performance & Scalability Cheatsheet. free download. geek out on it. revise and expand from time to time: http://synisma.neocities.org/perf_scale_cheatsheet.pdf

lots more in the distant past. (eg. once wrote a pretty decent clone of Empire Deluxe, but with more unit types, and for Linux. shoutout to @WalterBright!)

my next one might be Maxitize. but we'll see, its very early.

In 1997, I wrote MailSend, a commercial command-line SMTP emailer for Windows. It is now free to use, open-source software.


There were (and are still) a number of other similar programs with the same name.

It was my first experience in working with users world-wide, conversing with them both electronically and through postal mail.

So taking your project as an example, and having Carbon Ads, how much $$$ do you get out of them?

I don't pay attention to it and I can't for the life of me figure out how much it earns monthly but there is over $800 in my account. My hunch is $10-$15 a month or so.

I just moved it to a cheaper hosting plan so it's actually turning a minuscule profit now.

Nice. I thought the Carbon Ads and Deck Ads require some minimum # of traffic, so I guess you're hitting a lot of visitors on it?

About 1K pageviews a month it looks like


It's the missing invite system for Slack.

Let's anyone create invite pages that can accept payment (monthly, one-time) for access to a Slack community.

It's been a blast to work on. Learned React, Redux, and got into Flow and Tcombs while building it. Interest so far has lead me to realize more people are interested in creating private/paid communities online than I had previously expected.


My responsive demo, resize the screen ;)

Also https://github.com/xanderstrike/whatui, a dirt simple what.cd web interface similar to Couchpotato or Sickbeard, but without the terrible performance and extra features of Headphones.

heh - that's awesome :)

Built https://fsterramaker.com/ last year. It generates scenaries for Flight Simulator X using updated orthophotos from several sources. Another very simple tool that I use almost every day (dealing xlsx files): https://github.com/aritztg/svc


I'm not the original creator but currently maintaining Antigen: A plugin manager for zsh, inspired by oh-my-zsh and vundle.

Back in the days I made and found quite useful Dumpr: Command line download tool written in bash. https://github.com/desyncr/dumpr

The name suggests it's also inspire by pathogen :D

I made a very simple CLI util that prints a timestamp and an emoji inside a rectangle, makes separating and scrolling through repetetive terminal output easier. I use it all the time and it's stupid and I love it. https://github.com/kris-s/learn/blob/master/block.go

https://github.com/k2xl/downtime_monitor - Simple HTTP monitoring that sends a slack message when site is down. Configured all from a yaml http://recap.work - Chrome extension that shows salary info of people when browsing linkedin profiles http://facepalm.bogost.com/ - Silly little app that shows a facepalm picture of Georgia Tech professor Ian Bogost and his latest cynical tweets http://yofigame.com - Mobile word game for iOS and Android http://www.k2xl.com/games/boomshine/ - Flash game I made called Boomshine (also on mobile) http://www.leanbelts.com - Six sigma certification for really cheap http://k2xl.com/games/obechi/ - Flash game I made called Obechi (also on mobile) http://soundcloud.com/k2xl - Some EDM music i wrote http://k2xl.com/games/psychopath/ - Flash puzzle game I made called Psychopath http://k2xl.com - Personal site with a bunch of flash games I made a long time ago

Multiple others I can't remember off top of my head

Definitely not as awesome as some of the others I've seen posted here :), but I made https://github.com/oliver2213/showerthoughtMOTD to spice up my message of the day on servers I log into. Usually makes me laugh and occasionally makes me contemplate things I normally wouldn't think about.


I got tired of trying to filter my dev-tools console, so I wrote a little tool that shows log output on-screen with some interactions.

You can play with it here: https://jonbri.github.io/ticker-log/

I spent way too much time on a tiny menulet that just switches Mac audio from stereo to mono.


It's simple, but I think I think I made it nice to use. A couple minor details I added: you can change its keyboard shortcut directly from the menubar, and it flashes the keyboard backlight to get your attention.

Stackie. It's a stack machine texture generator using single character instructions. This lets you produce textures from a very small encoding.

For example, this URL contains code for a flame texture.



A simple, server less, offline-capable web app for practicing reading music. I've always been slow at sight reading, and this lets me plug in a MIDI piano and do drills.

It was also a good catalyst project for getting to play with: React, Webpack, Service Workers, Web MIDI, Web Audio, and the Progressive Web Application paradigm.

I built a Windows phone app for PAX that let you have the schedule and maps offline. At the time there was an iOS and and Android app, but not even an unofficial one for Windows. There are more apps now, and PAX has gotten more "professional" a.k.a it has gotten harder every year to access the schedule. This year it wanted me to log in to the Guidebook site to even see it and I decided that was a good cue to stop providing the app so when Microsoft said anything without an age rating would be unpublished i just let it happen (it's less necessary now anyway since internet access at PAX has gone from none-whatsoever to pretty decent). I had several hundred users each year, and people emailed me suggestions and requests. Definitely the only individual project I've ever done that had other people relying on me, and it was harder than I thought (one year MSFT didn't approve my update with the new schedule until after PAX, so then I built an in-app downloader that fetched the schedule data from my server, etc).

http://direnv.net/ is a language-agnostic shell environment switcher.

I built it years ago because I thought RVM was doing it wrong. It replaces all the ${lang}env switchers on my machine that I still use every day. The best thing is to see users adopting it without me doing much PR and contributing back with useful features.


Ridiculously simple chrome extension I built while learning how to build one. Tells you the Google pagespeed insights score for the website of current tab.

Probably my largest is https://github.com/chad-autry/rototone Android app for ringtone nad notification tone play lists.

Other than that, I've gotten alot of use out of my dockerized minecraft project https://github.com/chad-autry/minecraft-server-container

And more recently, in line with what the OP is looking for https://github.com/chad-autry/markdown-code-extractor is a quick project to extract code from a markdown file(GH READ.md) and create files. I use it to create the yaml files which I otherwise develop/comment straight in the READ.md of https://github.com/chad-autry/wac-bp

http://chriswarbo.net/git/warbo-utilities/branches/master/sy... just runs a given command in a given directory, e.g. `inDir ~/Pictures convert MyPhoto.jpg MyPhoto.png`

Really simple, yet I use it a lot, e.g. for remote mounts where Emacs can slow down if I "cd" into it, or in loops `for DIR in submodules/*; do inDir "$DIR" git pull --all; done`

When I used to do Web development, I found http://chriswarbo.net/projects/repos/chrome-duplicate-tab-de... to be super useful. When opening a URL in Chrome, it switches to an existing tab with that URL if there is one.

I also made a simple Chrome extension which let me navigate Drupal test output using the left/right arrow keys. Can't find it now though :(


I've made this because all the companies that my co-founder and I met had scripts glued together in build tools to get code metrics and static analysis.

We ended up discovering a significant amount of people and companies interested in having a nice product constantly running code analysis and linked to Github.

A simple wordsearch tool for scrabble players that I wrote twice:

updawg [https://github.com/martindemello/updawg] had the distinction of being the only wordsearch tool on the nokia n900. featurewise, it was a clone of lexpert, a popular app that ran on a few other mobile platforms. it was a vala/gtk/hildon wrapper around some open source wordsearch code, and it all just worked. the nice thing was after i wrote i for my own use, another scrabbler bought an n900 and was delighted to find she could get a wordsearch app for it.

varix [https://github.com/martindemello/varix] is my from-scratch rewrite of the same thing in ocaml, with more powerful searches. it's a linux TUI app so i haven't really tried to interest anyone else in using it, but i use it all the time and i love it.

I got tired of filling out timecards so I wrote a simple script to print out my timecard for me (I still double-checked and signed it). Word got around and I added some features to default to your hours/billing numbers from the previous week for people other departments. It was really cool walking past the timecard tray every week and seeing it evolve from the pile of yellow cardstock timecards with a few folded white paper ones (printed from my script) to eventually almost entirely printed ones. It was something that just took me a few hours on a slow week, and probably ended up saving the company quite a lot of time.

Now that I'm doing contracting work, I did the same thing again when I got tired of invoicing from a spreadsheet. Not that generating an invoice is all that hard or time consuming, it's just one of those tasks that takes me a lot of inertia to start, so I would put it off. I'll probably clean up and post the invoicing script on github one of these days.

I built https://www.findlectures.com, which is categorized list of lectures and speakers, inspired by the faceted search on Newegg and Amazon, which I wish Youtube had.

It's been a fun project, because I've had to build tools to come up with a lot of quality measures for the dataset.

Gary, great work! You could add a bot to post links to lectures in social networks, at least Twitter.

Like one random lecture each day, or the most "active" during the week.

Thanks! I like the Twitter idea.

I'm working toward custom entity recognition, which would help in that area. For instance, listing all lectures about a particular programming language, lectures on the history of countries that no longer exist, etc.

Hotcold Typing: https://chrome.google.com/webstore/detail/hotcold-typing/gik...

Learning Touch Typing with instant visual feedbacks.

I initially made it for Mozilla Dev Derby, and now released as an Chrome App.

http://strlen.com/treesheets/ It's a cross between an outliner / spreadsheet / mind-mapper and general note taker. I've spent significantly more hours using it than I've spent programming it, so that's a win in my book :)

I used it for a while but I forgot sometimes the key scheme so it got unusable from time to time. Anyway, it's awesome idea!

This looks awesome! I love the idea. It makes me want to make a web version...new side project?

I've just made this interactive periodic table of elements.

It's a periodic table that you can interact with like Google maps or similar. Zooming in progressively reveals more information about each chemical weekend element including images, video and Wikipedia content


Really like it :-)

Useful and great example of how to show data.


Simple single function tool decision maker. I made this because my co-workers and I always had trouble deciding where to go for lunch. It was kind of a joke but then the traffic kept growing and I now consider it a huge success as a side project.

I've built https://www.defollow.com

It tracks your Twitch unfollowers. I would never recommend anybody to care about unfollowers, but I was just always so curious to find out who unfollowed me (and hunt him until he refollows).

I also plan to add YouTube support soon. :)

Edit: It's still a little bit in development.

May sound trivial, but for me it's a simple charting tool.

I'm quite big on QA, but it's always been a problem for us, due to lack of tools. We have tons (millions) of time series being churned into proprietary files (neither of which can readily change). We've always had issues analysing these, be it analytically or visually. Two years ago, I wrote a parser in Python, which feeds the data into a browser interface. There, one can select values in a few (<select multiple>) dropdowns - which denote dimensions, compare multiple files across these dimensions, and further manipulate these subsets of data. But the core are simple line charts from these data slices.

The whole thing is under 500 SLOC, it's blazing fast and it lets users cut through our data in no time. It has helped streamline our verification workflows, catch bugs, and allowed our clients to better understand the large amounts of data we send their way.

http://AnthonyDavidAdams.com/memescope The Memescope is a dynamic kaleidoscope that uses images representing leading news headlines as the source material.

http://PlayTheLoveGame.com or http://amzn.to/2fSyUXX The Love Game started as an app here on HN, then a crowdfunded card game that ended up in Urban Outfitters, Ritz Carlton Hotels & Amazon.

http://AnthonyDavidAdams.com/spacejournals I took those images from NASA / JPL and created a series of 17 journals as part of a crowdfund. They are super beautiful and really incredible as a full set.

Pipelines [1]

Me and a couple colleagues initially built devo.ps[2]. We made a lot of mistakes (over-engineered mostly).

We ended up building its successor, Pipelines, as a lightweight Python alternative to tools like Jenkins and it works great so far for us and many of the teams we work with.

It doesn't solve much; we mostly use it to easily trigger Ansible playbooks (through Slack/webhooks or a Web interface) and review failed/successful logs of past runs. But it has a few nice features (like prompting users for values and being easily extensible).

Also you install it with a simple `pip install pipelines`. No DB, no need for a gazillion dependencies, just Python. Done in 2 minutes and running in 5.

1: https://github.com/Wiredcraft/pipelines 2: http://devo.ps

Kamlock - https://www.imralsoftware.com/kamlock

A software based keyboard and mouse lock for your computer so you can have a small child sitting on your lap (for example during a video call) and not have to worry about them pressing random keys.


Despite the site being free and open source, people still send me a few bucks each month, and very nice thank-you emails. And there are at least 2-3 sites out there that I'm personally a fan of that used it.

My chrome extension that overlays Reddit comments when you go to XKCD.com


Not my most impressive feat but I love it :D


My wife and I made it so that I could quickly paste timestamps from various log files and see the relative time between then and now. It also allows for a pretty basic relative time entry, like "2 weeks ago", etc...

For me it is Splitons!

Splitons is a simple Offline web application to split costs between friends (www.splitons.com).

It has been a mobile first development using AngularJs, Bootstrap and font-awesome.

Splitons takes advantage of AppCache, websockets and local storage to provide the best user experience possible. There is a clear separation between the Ui and the service thanks to a simple reusable Api.

At this moment, the application takes care of about 150 projects, users are regularly providing feedbacks and thanks email. They really enjoyed not having to install another application and how easy it is to share a project.

Because it is an open source project (https://github.com/Paraintom/Splitons), one user sent me a pull request that I accepted to improve the Ui some months ago.

Please try and give me a feedback!

The website : www.splitons.com

I wrote a little tool for working with github gists from the command line, https://github.com/jdowner/gist. I was pretty happy with how it turned out, and pleased that a few people have found it useful :)


It shows you all HTTP redirects that a certain URL leads to, with all cookies that are set at each of the steps.

I built it to help my online marketeer colleagues get insights in what is hiding behind short URLs. Before building this tool, they routinely came to me with URLs asking me to trace them. The back-end is a websocket API that returns each step as it discovers it and the front-end is an Angular (1.x) application. I also built a small Chrome extension[1] that adds a followww. context menu item to all links on the web.

[1]: https://chrome.google.com/webstore/detail/followww/dmpapbgln...


This is a deceptively simple rule engine that I built for some side projects but has has since been picked up for many things that the big guns would have been overkill for. Clobbered the first version together in less than 5 days too!

https://simplepush.io Easiest way to send notifications to Android from the command line.

No registration, unlimited notifications, send messages via curl.

I made it because I like simplicity and all other tools were overly complicated (require registration and so on).

https://typed.pw - Simple way to write online.

How do you keep it out of spam?

I want it to be spammed. I was creating another site which accepted user input and the problem was: how do I avoid spam? I searched online and found some simple and clever solutions. Typed is a way to test these solutions and a way to come with new ones.

This is not the only reason typed exists obviously...

Please expand on why you want it to be spammed?

Pottery. A Pythonic way to access Redis, the same way that you use Python dicts. I use it in production, and I hope that it's useful to other people too: https://github.com/brainix/pottery

iStats - https://github.com/Chris911/iStats

Wanted a command line tool to show OS X stats. Browse Stack Overflow and a bunch of forums to find that nothing existed. I believe it is now the go-to tool for this.

http://bugfender.com/ - A remote debugger for iOS and Android apps.

This is one of the internal tools that we built at Mobile Jazz as we always had the problem of being a remote team and therefore physically detached from our clients. Many times they had problems that we couldn't reproduce on our devices. With Bugfender we now can get access to their device's app logs and figure out what's wrong.

From being initially just a clunky internal tool, Bugfender is now a whole platform with a nice admin interface and many filtering and search options. The result is great and we're having quite some success with as not only we, but also the whole mobile developer community really loves it. And that is what makes us proud! :-)

I wrote a SAME encoder that runs in your browser: https://github.com/aaron-em/same-encoder

Hardly game-changing, to be sure. I did it for fun and to see whether it was possible at all, and as far as I know nobody actually uses it for anything. But there's something about synthesizing audio a byte at a time and playing it back in a web browser that tickles the same sense of magical possibility that I first experienced as a kid learning BASIC on an Apple IIc. Our industry's grown up a lot since then, of course, and I've grown up with it - but, every now and again, it's delightful to be reminded of what led so many of us into this line of work in the first place.

Wrote a plugin for Borland JBuilder (Java IDE from 2002).

It would auto-wrap code comments to a specified column number. It would also auto-wrap on delete or backspace. Still miss it because I want it for existing editors but I'm not interested in learning some random plugin API just to rewrite it.


Unsubtitle for Netflix - Sometimes Netflix force subtitles to appear when you're watching series. I found it really annoying and decided to create this Chrome extension to disable it.

http://www.vua.sh/ - Vua.sh is a simple website that encrypts messages on the client side and stores only the encrypted message. It generates a link that can only be used once, after clicking on the link and reading the message it is destroyed from the database.

Usenet binary grabber: http://www.ensisoft.com (http://github.com/ensisoft/newsflash-plus)

A little history. Back in the day when I started looking into Usenet there were no proper clients for Linux. There was pan but it had huge problems dealing with large volume binary groups. I figured it can't be that hard and started working on my own client which slowly evolved into the current 4th major version. Ten years in the making already :)

The 3x series was the most successful with perhaps around 50-60k installs. In general the field is very competitive and there are several clients for Windows especially.

Automation to look for secret API tokens in APKs - https://android.fallible.co

Its pretty basic, it reverse engineers code and scans strings.xml and AndroidManifest.xml to look for random strings and print it on the UI.

might I ask how you were able to get the APKs from the play store?

I've used this Python library https://github.com/egirault/googleplay-api but I'm not sure if it still works

A little tool to check the similarity of two images using PIL, it gives a % difference as well as an diff image:


Also a utility I made for myself to graph my bank transactions. For some reason USAA doesn't have that feature on its site so I made it for myself. Very bare right now but it does want I need it to, which is to visualize my spending. Eventually want to be able to look at transaction names from within the graph.


I'm in the process of producing my first physical object and it's exhilarating.

I learned a lot about stainless steel (303, 304, 316, 316L...), CNC machining, stamping, polishing, etc. but what's really cool is designing something on a computer and receive a metal object some time later that does exactly what you hoped it would do.

(For prototyping purposes I first 3D print each design, but the plastic version is waaay less interesting than the metal one.)

Should go on sale in 3-4 weeks; super excited.

- - -

Some time ago I made a rich text to markdown transformation that runs completely client side; it's available here


It would probably need a serious face-lift, but it's still used by many, apparently.

A simple, multi-threaded IPv4 TCP port scanner for Python 3.5



I like this because it is one stand-alone file compared to something like nmap which has to be installed.

I have installed Python 3.5 on most of the systems I use. Otherwise, I built a portable windows binary with PyInstaller. It can scan a LAN at about 600 ports/sec.


Super-fast lookups and filtering - 50,000 within second(s), support for regular expressions and the derivated ontologies.

People don't seem to get it though (even my co-workers struggle with basic regexps).

Angular CLI Tools


I started with the official Angular CLI (for Angular 2) back when it was still using system.js and it was painfully slow on a windows machine. I realised that 95% of what I needed the official CLI was for generating components/modules/pipes...etc. So over a weekend a friend and I wrote our own CLI tools that generate components and decided to use a simple webpack seed for our projects. Been using our own CLI ever since for (m)any Angular 2 projects.

I heard that the official CLI has gotten better but I don't have a reason to go down that route any more.


https://github.com/gamache/fuzzyurl.js https://github.com/gamache/fuzzyurl.ex https://github.com/gamache/fuzzyurl.rb

It's a library for parsing, constructing, and wildcard-matching of common-style URLs. Aside from being crazy useful, the fun part is that I wrote it for Ruby, Elixir, and JS with the same basic interface. Kind of like writing a poem that works in three languages. :)


It's dramatically reduced the amount of annoying recruiter spam that I get. I'm proud that it was initially just a test-bed for new technologies, that actually became useful.

Very nice, pity it's extremely invasive. Now, if there was a way to protect email privacy...

I built the Chrome extension [0] for Pesticide[1]. It toggles the Pesticide CSS in the current tab making it easier to visualize the placement of elements in the DOM. Useful for front end debugging.

The extensions first implementation was basically just a ternary operator! Now it's got a little more to it, but it's still super simple.

[0] https://chrome.google.com/webstore/detail/pesticide-for-chro...

[1] https://github.com/mrmrs/pesticide


I spent most of my free time the last 1.5 years to make this 4-player iPad game together with my brother (developer) and two cousins (graphics).

Considering that it was our first Swift and SpriteKit project (my dayjob is programming business applications in Java), I am pretty proud of the outcome. It even got some reviews (one with a 92% rating!).

The only problem is, we completely underestimated how hard it is these days to get downloads for an old-fashioned "pay once for the whole thing" game. Currently we are in the process of converting it to a free to play model, hoping that more people try it. Wish us luck!

That looks awesome - purchasing now :)

For what it's worth, I much prefer the pay once play forever model for good games. It would seem I am in the minority though

I hope you have a lot of fun with it and I'm curiuos of your feedback!

As a customer I very much prefer the pay once model, too, but we really seem to be a minority these days.

We sold about 45 copies of the game so far in almost half a year, but when we made it free for a weekend we immediately got 200 downloads without even advertising.

So let's see what happens with free2play. We are going to make all levels but the first one an in-app purchase and maybe a few characters. There will be no consumable IAPs because I hate them with a passion.

All previous buyers are going to keep the full game btw. Apple makes it surprisingly difficult to implement that, but anything else would just not be right.


Probably not the best example of a "tool", but it does have an API and a Slack integration. Probably one of the more favorite things I've published.

Mods: please rename this title to "Oh god, what have I been doing with my life ?!"

Not as cool as most projects here but this is mine: https://github.com/gempir/relaybroker

It is a proxy for irc bots on twitch.tv because connections can die and more than 1 connection will make things possible like going around rate limiting. Also joining a lot of channels at once is made easier so the user of our proxy needs to worry less about what he is sending when, we handle that.

Made it together with 2 friends who of mine we all 3 use it everyday for our bots. It was fun to write and learn go while doing so. I wanna improve it everyday but I'm never sure where or what.

I don't have it on this machine, but I wrote a little Python/Tkinter script that wrapped a call to GNU aspell.

Select text, activate script (by shortcut button on bar or global control key combo), and a little window pops up with spelling suggestions.

Earlier this year AWS was running a serverless chatbot contest. We built http://opsidian.ai/ a tool to work with AWS from Slack and ended up as one of the finalist.

ImageTracer: It's a Public Domain raster image tracing and vectorizing library, outputting SVG.

JavaScript https://github.com/jankovicsandras/imagetracerjs or Java https://github.com/jankovicsandras/imagetracerjava or "Android" Java https://github.com/jankovicsandras/imagetracerandroid


I made a simple endless swing game for Android with Unity 5. It was my first experience with Unity or C#. I needed units for college, and I was able to have a professor oversee the project for 4 units. I'm so glad he did because I had a ton of fun making it!

Took a quatter to make and I'm pretty proud of it even though the only users nowadays are friends and family members who keep it installed and accidentally open it, and a couple of Russians :)

I've mad a few:

Command line tool for OSX to upload images to imgur: https://github.com/FigBug/imguru

Copy and paste for Windows command line: https://github.com/FigBug/ccopyppaste

Mac App to set Philips Hue bulbs colour temperature to match the sun: https://itunes.apple.com/us/app/circadian-hue-for-philips-hu...


Enter a word, and this site will make up some puns for you based on that word. I'm way more proud than I have reason to be of this.

In 2015 I launched Bitcoin Fax. https://www.bitcoinfax.net/

Send a fax, pay for it with Bitcoin. That is all.

I like it (and Bitcoin) because you can transact online without signing up.

An archive of chrome extensions versions: https://crx.dam.io (I should upload it to archive.org)

Also, this small templating library for python: https://github.com/mdamien/lys

Also, a chrome extension that display images like firefox do, people seems to like it: https://chrome.google.com/webstore/detail/center-images/dama...

I really like lys. (I've started to use it for some small bits and pieces and will possibly/probably continue).

thanks, I have a lot of ideas planned to make it easier to use, especially for django projects. Would love to get more feedback on how people use it.

A very useful, tiny project I made fairly recently is Tamarind:


Tamarind is a CGI-based web service which manages throw-away mail aliases.

You log in, and manage a list of generated aliases which instantly go into service when created, and out of service when deleted.

It runs on a Debian setup (I use Courier IMAPD + Exim MTA).

Tamarind is written in my own programming language, TXR, without any web framework: it includes all the code for processing requests from Apache, and doing session management with cookies, etc.

Not a tool or product, but still sorta kinda. For me this year it's been making:


It's not the most polished-off looking thing in the world, but it gave me an excuse to write a short fiction highlighting the importance of Black Lives Matter. It also allowed me to experiment with Greensock to put together some dodgy ass animations to go with the story. And it meant having to hear my own damn voice, urg, for some of the narration.

Also I learned a ton about BLM while making this.

https://pdfcv.com - a tool for creating a CV/resume online. It has been running for 5 years, without adding any new features and people still find it useful.

How are you doing LinkedIn import? We had it at https://standardresume.co, but lost it when they closed off the developer API.

I still use http://seductiveequations.com/2015/11/09/water-meter.html rather often to casually see how much water I've been using. Helped me to discover when a new water timer I installed outside got stuck open. Similarly, I've been able to see through actual data how much water my new low-flow showerhead just saved me right after I step out of the shower. Wish I had more time to improve it, but despite that, it's still remained quite useful.

I use Flipboard for my news and RSS feeds, but really hate how Flipboard forces every feed you add into separate "magazines." I like all of my news in one magazine, all my tech news in another, etc. Fed up with it, I whipped up a Django-based app that lets me create collections of feeds and then outputs them into single RSS feeds in a Flipboard-friendly format. I can add and remove feeds in a collection from a simple web interface and see the results in my Flipboard app. It's not one of my most amazing creations, but it scratches a really big annoying itch and works great.

I made myself a program that downloaded & organized torrent music files; it was customizable so that %a/%y - %d meant store underneath <artist name>/<year> - <album name>. It was one of first projects I ever coded, and eventually got to point where main thread would lock up cause I was doing so much processing on it. As anyone who does this kinda work knows, main thread processes graphics, so when it would freeze up for 10-20 seconds I really had no idea what was going on and started doing all this crazy stuff before figuring out how to handle threads.

My hakko soldering station doesn't automatically turn off if I leave it on. One time I was leaving town and had to worry about my house fire for the whole weekend. So I made an Arduino/msp430 from spare parts to do just that.


Other than that, I also made a Apple ADB to USB converter so I can use my old Apple Extended keyboard II with my new computer. Hard to believe newer keyboards are worse compared to that one.

Do you have any details on the ADB convertor? I have a few old keyboards I'd love to be able to use!

Here: https://github.com/tmk/tmk_keyboard

You only need an Arduino Micro Pro (the 5V/16Mhz variant). The cheap ones on eBay work just fine.

I made sortable NMR chemical shift data tables for impurities to improve access to this information for chemists and students: http://nmrs.io/

BoardingBot https://boardingbot.boorgle.com Is a tool I made few weeks ago over 4 days. I started it as a Facebook chat bot which sends TestFlight invitations and then realized it's also worth turning it into a more complete tool which creates a website and invitation request form which automatically sends TestFlight invitations. It was featured in ProductHunt and I was generally surprised with the positive feedback. I'm wondering if it's worth investing more time into it...

My top 2 are:

1) Sherlock, a JavaScript natural language parser for entering events that I hacked the bulk of in a particularly productive all-nighter many years ago. https://github.com/neilgupta/Sherlock

2) Exceptionally, a super simple Rails API exception handling library that is tiny but has proven very useful on every project I've worked on. https://github.com/neilgupta/exceptionally

https://wanderinglunch.com/nyc use it to track food trucks around NYC. Very happy it taught me python, nodejs, and now go.

Weather Extension - https://weather.timleland.com/

I created a Weather extension using DarkSky.net api. I wanted a quick/accurate way to check the weather without ads. I have a Chrome, Firefox and Opera version. Let me know what you think!

Chrome version is most popular: https://chrome.google.com/webstore/detail/weather/iolcbmjhmp...


I developed "Eskéndereyya", a comprehensive writing system of Arabic in Latin alphabet to help Arabic learners esp. beginners to improve their reading and writing skills in Arabic without the immediate need to be familiar with the Arabic script.

Please try it out and let me know what you think.

Show HN: https://news.ycombinator.com/item?id=12956885

A couple bash utilities I use daily(ish)

lnks: List, Save, or Instapaper your Google Chrome links from the terminal. It uses a small amount of Applescript, so it is OS X/MacOS only for now. I'm working on getting around this. https://github.com/unforswearing/lnks

aliaser: a tiny directory traversal/command aliasing tool. https://github.com/unforswearing/aliaser

A component like jQuery plugin called Freud for jQuery.


I use it so much I nearly forgot I made it myself. With Freud you can apply 'behaviours' to DOM-elements. What this does is that it enables you to work with your DOM-elements in a more object oriented way.

What I use it most for is applying pieces of javascript on the page only when the DOM-elements that I apply freud to are on the page. This way all you get a lot less code in one big js file.


• Pretty print JSON: https://gist.github.com/niedzielski/53c98af986955053aaabcc8a...

• Zoom in on pixel art (disable image smoothing): https://gist.github.com/niedzielski/63becce4640d28caaec1eaa2...

For Chromium / Chrome. Short bookmarklets are preferable to extensions for privacy and performance concerns.


I wrote back in uni some 20+ years ago. Since then I've seen it copy-pasted, remixed, translated to different languages and integrated into little projects hundreds of times. It's falling out of favor lately. But, there was a time when it seemed like for each implementation of Marching Cubes, there was a 50:50 chance it was a derivative of that file.

I wrote a course scheduler for students at my previous university. It doesn't have that many users, but I get a "thank you" every now and then, which is enough motivation for me to keep it updated. In any case, I automated the entire course data update process, so I only need to run a Python script before the start of each semester.

It's running on the Heroku free tier with a cheap domain, so it only costs me a few cups of coffee every year.

http://jadawil.xyz (sorry for the crappy design!)

Workflow automations at continually chip away at friction and speed up everyone's work in three main ways:

- Bringing notifications into Slack that aren't possible out of the box. This includes some services that only send updates via email, and others that enable webhook subscriptions, which can be parsed, filtered, augmented, and formatted.

- Creating Slack slash commands that let you do simple things in Slack instead of opening another browser tab.

- Connecting one service to another behind the scenes, assisting with data centralization for all sorts of downstream benefits.

I've recently released a beta platform and API for tools for working with links: https://0ut.ca/

There's currently a Link Shortener, UTM Campaign Builder, Parser and Validators for 15+ RFC implementations for different URI components.

I have a lot of continuing work to do, such as better analytics, a user system, and more tools.

I haven't got any feedback yet, I would love to hear just about anything, it would be encouraging. Feedback about my implementations would be greatly appreciated. Thanks!

I created a uuid generator in racket(then called PLT Scheme) after being told to abstract into a library. It was downloaded thousands of times and I never got a bug report. https://github.com/zitterbewegung/uuid-v4 http://planet.racket-lang.org/display.ss?package=uuid-v4.plt...

Believe it or not, but back in 2000-2001 WAP (Wireless Application Protocol) was "the future" of mobile internet.

I worked at a startup doing mobile games but often business people needed very basic landing pages - so I did the point-and-click Wap Prototype Maker! Screenshot still available here: http://www.stefan-pettersson.nu/site/wpm/

I remember I was happy drawing the toolbar icons, because it reminded me of working in Deluxe Paint.

After making a React app for a hackathon in August, I was surprised I couldn't paste a link on Twitter and see a URL preview, thus began https://www.prerender.cloud/ - middleware that runs your single page app through a chromium browser to generate the HTML markup and return it along with the original JavaScript to the client (so the first browser paint happens quickly from the HTML, then JavaScript takes over after it finishes parsing)


Back when I was in school I hacked this together as a diversion from lab reports and as a convenient tool for myself. You can drag xlsx files onto it and it converts them to LaTeX tables (all done client-side).

Even though it has some really glaring flaws (no numerical formatting support), it has a loyal following of grad students from around the world who find it useful and occasionally email me to say thanks. Feels great :)


I'm pretty sure this is best quality user session recorder out there. Just gotta work on the marketing bit :)


SelfControl - a free Mac focus app that helps users block their own access to distracting websites

Thanks for making this. I use it to stop myself trying to score dopamine hits on Facebook.

I built a Chrome extension called `Popup my Bookmarks` (https://chrome.google.com/webstore/detail/popup-my-bookmarks...) to solve my pain from switching from firefox to chrome :)

source code: https://github.com/foray1010/Popup-my-Bookmarks

I made a localization extension for WPF which can take any source of data and turns it into a switchable localization, which is not possible with stock WPF.


I'm pretty proud of it any many users use this extensions, from private to commercial. It's free and open source and I never charged for it (sadly). WPF is now dying and my work will eventually die as well...

https://knife.ai, which is an email analytics tool.

I'm proud of it because it's something I've always wanted to use and create.


Map Caps Lock key to Escape key, or any to any key, on Windows systems.

I am very happy about it because my wife (then girlfriend) was the first user of this little tool and she still uses it everyday. She likes that this tool is unobtrusive and it silently remaps Caps Lock to Escape which is very convenient while using Vim.

From the download count I know that there are more people using it now but I don't know who they are.

Not as fancy as many of those posted by: http://landmark-tool.herokuapp.com/

When I was researching face recognition, I absolutely hated the labeling system that we were given, and couldn't really find anything better (mind you, this was about 6 years ago). So I started building Landmarker. It let you plot points, identify segments, zoom and rotate.

It never served any real purpose besides the few times I've wanted to make vector art.

How does it work? What does it do?

The premise is to build a json file to represent "parts" of the face.

For example say I wanted to landmark a feature like the image's left eye. Here is a GIF walking through the labeling process. http://i.imgur.com/63UXkUg.gifv

I would select "+New Shape" and enter in the name of the shape, in my example "left-eye". This will add the shape to model and enable cross hairs as you drag across the screen. As you click, a landmark point will get added at the XY coordinate you click. I can add as many points to a shape and can add any number of shapes to the model.

Once done, you can select the </> menu item and select "Export Points" to produce something like this: { "url": "http://landmark-tool.herokuapp.com/img/nic_cage.jpg", "lefteye": { "0": { "x": 119, "y": 274 }, "1": { "x": 163, "y": 251 }, "2": { "x": 202, "y": 274 }, "3": { "x": 161, "y": 289 } } }

Ah, cool! I couldn't figure out how to get in a mode where you can actually place points.

This is actually pretty useful for creating stuff like image maps...

Thanks for sharing!

Yeah, that was sort of what I was going for when I started making it; life and work just took over. If I ever have some time, I might add a tutorial explaining how to add things

I made: http://github.com/deviantfero/wpgtk

An easy to use wallpaper/config manager and themer for GNU/Linux which takes it's colorscheme from the wallpaper and applies it to things like the terminal, tint2, openbox, GTK2/3 and optional config files too, so the color scheme affects all the config files specified. It's compatible with everything that uses written config files and hex colors!

http://upush.xyz/ (No longer functioning)

I did a web scrapper which auto login to my university portal to detect any changes on news board (like lecturer post a class cancel notice), if change detected it will send a push notification to a mobile app.

Did this app in few weeks because I got pissed by lecturer suddenly canceling class and post the news at last minute. I shared it to my classmates and it jumped to 2200 active users before got shut down.

https://blankslate.io - just a blank page you can type on and save your thoughts. I use it every day and love it!

A widget that displays basic context sensitive help. I work in payments and we wanted to address user questions without polluting a simple UI and update the content without deployments:


A small directory for finding informal household services in Jakarta. Old service, ticking along - still proud of the mobile UI :)



I know there are a bunch of similar sites outside however I wanted something simple with no ads but all information.

this one's really cool, works flawlessly without javascript in my browser, and the various CLIs are awesome!


A simple warmup calculator for my workouts. Use it multiple times a week.


When Turntable.fm folded, I was sad. I wanted to learn sockets, so I built this. It's like Turntable, but uses YouTube videos instead of actual songs. Bugs galore, but I use it at work almost every day.

Let's Encrypt certs hosted: https://www.clearalias.com/

Simple story: I've been involved with a lot of SaaS in my career and unless you're running the latest and greatest, it can be hard to host customer websites on a plurality of custom domains. This just makes that really simple by hosting it for you.

Disclaimer: I posted this earlier today as a Show HN, but posting here as well in case anyone is interested.

Recently, this profiler for multi-threaded Unity apps. It's almost the simplest thing that could work, but it's surprisingly effective. I've used it almost exclusively to optimize the hell out of the multi-threaded game I'm working on.



Long-term reminders emailed to you. It keeps these tasks out of sight until you need to be reminded.


It's a hosted code analysis solution for Python. It tracks code quality issues using our own code analyzer.

We have developed an AST/flow-graph based code analyzer which allows users to write their own code pattern queries using YAML.

BTW I have been working on an OS version for the last four months which I will release soon, if you are interested in helping me please write: andreas@quantifiedcode.com

Are you making any money on it?


Proud of it because it's the first basic thing I've built from, mostly, the ground up. It's just basic HTML and uses Materialize CSS for the styling. I hope to learn enough JavaScript soon to add a dynamic component to it which highlights the next departure times for ease of use, so the visitor doesn't have to scroll through every time.


It's a pretty simple tool that lets you bookmark and jump to directories. It's not that complicated but I use it pretty much constantly and it gives me a strange sense of satisfaction to have a project I can call "done". Everything I want to add to is merely packaging enhancements so that more people can use it.

does an autohotkey script count?

    ^':: ;;; (or ^2 for US keybs)
    Send me@e.mail
CTRL+@ symbol pastes my email address wherever the cursor is.


I built PokerQuiz, which is an android app and (as the name suggests) about poker. It generates random cards for you and opponent and you have to guess your chances of winning. It has another "mode" too, but that's a bit too technical.

Disable Facebook's "Seen" function:


Definitely not the one that gives me most pride from a technical standpoint, but it is used by a thousand people every day and that's more than enough to make me happy about that small hack.

Pydash https://github.com/k3oni/pydash - web-based monitoring dashboard for linux in Python and Django .

Created initially for Raspberry PI, but ported to most linux based OSs. There's also a Django app for it https://github.com/k3oni/pydash-django-app

I built a simple habit tracker for groups of friends to hold each other accountable. Although it has no growth, it's been an amazing tool for my friends and I. The app lead a big change in our lives and I am proud of that.

link: https://itunes.apple.com/ro/app/tribes-build-habits-friends/...

The "Can I Use?" CLI is probably the highest attention per unit of effort project I've done: https://github.com/sgentle/caniuse-cmd

I also made a firefox extension about 10 years ago that let you restart an animated gif (there's a config option to make them only play once). I was surprised to learn people were still using in FF 3.6.


I made this simple Instagram image downloader. Just copy image link of any Instagram image and save that in Full HD and size using right click. Still used by many for social media marketing as you can't save images from other's profile on Instagram, only way is to screenshot which obviously reduce the quality of the image.


One of the auto generated microservices backend/documentation/playground/sample code all in one sweet pa(cka)ge.

I'm proud of it because it's completely scripted, I can generate/deploy any CRUD Restful microservice in under a minute, it's Lambda powered and multi-tenant cloud-hosted. A mouthful of buzzwords :)

Compute for Humanity


It hasn't really taken off like I had hoped, but I still stand by the idea, and I think I really nailed the UX. For something fairly complex there's no account to create, no configuration, no installer, just open it once and you're done. Anything my 95-year-old grandma can use without help is a success in my book.

The landing page is confusing, quickly looking at it can't really discern what the page is about. Something about charity, by whom for whom and how? Can't tell, already clicking the back button.

My two cents.

Thanks for the feedback! That landing page has gone through a lot of revisions, but definitely can still be improved.

For an even easier setup and even smaller output, why not implement it in Javascript on the page? ;)

Ha, I originally planned on building it as a browser extension, but this gave better performance, could be more intelligent (e.g. stop running if the computer is working on something else), and was usable without a web browser.


It's a simple time tracker. No cloud BS. It just uses local storage to track how long you've been working on any task.

I still have some features I'd like to add (like a countdown timer and clearing individual tasks), but I'm real happy with it and I've been using it at work to track my project time.

I've always felt that an entrepreneur's toughest job is to find just the right prospects and leads for their new business. So, I created a tool to helps people find highly targeted leads and prospects. You can target users based on location, # of followers, twitter bio, and 7 other filters too. Give it shot:


I've build http://leash.jcubic.pl the shell that can be used on shared hosting when you can't install aything. Built using my jquery terminal http://terminal.jcubic.pl and php if php exec functions are disabled it try to use cgi scripts written in python or perl.

st - simple statistics from the command line


Hey! This is great. Another thing that would be awesome would be to have a small histogram (could be oriented in rows rather than columns)!

FindIt. It's a simple utility that lets you do find-in-files searches, but with features to require that a file contain any number of terms together, and the ability to exclude files that have an unwanted term. I wrote it for myself and every friend I shared it with ends up pinning it to their taskbar.


Lua Newsletter(still WIP): http://luadigest.immortalin.com

Merlot (Rapid website builder, WIP): https://github.com/Immortalin/Merlot

Kloudtrader (Trading platform): http://kloudtrader.com

The signup workflow sends me to luadigest.github at the end, which doesn't work.

Insta-subscribed though, Lua's on my todo list.

(PS. I tried to reply to your previous comment but found you'd deleted it, thankfully found this comment via your account)

Thanks for the head's up. Fixed now!

Cool! I'm curious though, where does the link go now? I wasn't able to find much else with poking around your domain.

It brings you back to the newsletter page. I have a bunch of projects that are still WIP and not quite ready for their own landing pages which is why Lua Digest uses a subdomain and also why immortalin.com does not redirect to a home page. I have been trying to get HTTPS working on the site but CloudFlare's requirement to transfer over DNS control is messing up a lot of site configs so it's currently non-https for now.

Ah, cool. Very nice.

Does CloudFlare not interoperate with Let's Encrypt et al? That's not great...

(Also, did you get my email?)


Good to hear :)

http://yuml.me diagrams as an API.

This was scratching and itch, yet get used by 1000s of people every day.

This interesting, any relation to yed and yworks? Are you making money from it? Are uml diagrams the only diagram offered? I had a similar idea years ago, web front end for dot and graphviz. Never acted on it though.

My projects:

- Sensorama for iOS: it's meant to be an open-source data science platform for obtaining data from your iPhone's sensors. And you get the JSON file with data e-mailed to you (and I get a copy too!).



Read code:

https://github.com/wkoszek/sensorama-ios (main repo)

https://github.com/wkoszek/sensorama-artwork (artwork, scripted: generates all JPEGs from cmd line)

I did everything myself: coding and design for it.

- LastPass for SSH: https://github.com/wkoszek/lastpass-ssh You keep your SSH keys protected with a cryptic pass-phrases and you store them in LastPass.

- Asset toolbox: https://github.com/wkoszek/asset-toolbox My attempt to improve the workflow with asset on iOS. I've used that multiple times to get all the resolutions/sizes during random moments of weakness.

- Finite Automata Simulator written in QT/Graphviz: https://github.com/wkoszek/flviz

- Network Simulator written in C, with visualisation in Graphviz: https://github.com/wkoszek/kmnsim

- Other stuff from my junkyard: https://github.com/wkoszek (feel free to let me know what's the most interesting, or fiddle with GitHub stars)

My next target would be to get some paid online projects done and delivered to users, so that I could pay my phone bill with software.

Great thread. Thanks for making it.

Universal Beat [0] - When Apple Watch came out I had an idea for showing day & year progress 0-1000.*

Open for feedback!

* I'm aware that Swatch had this for the day only long time ago, it was called `swatch @beats`.

[0] - https://itunes.apple.com/us/app/universal-beat-different-loo...

Decimal time is cute (albeit not very novel) and makes imho a lot of sense. I'm secretly hoping that maybe on Mars we could end up using millisols for timekeeping.

On the other hand dividing a year into 1000 does seem bit more of a novelty, and not very practical. I suppose it is bit of a reminder that the year is passing, in the sense "oh dear, this year is already 87% done"

I also don't think that you can orientate on dates in a decimal manner. With dates it's easier to orientate, but you don't get the exact feeling on progress.

So yes, same as you, when I'm seeing it from time to time I get motivated to do more in the time remaining for the year :)

Interesting concept of measuring/showing the time. Love the UI. Good job @Kexoth


I made this because I was trying to introduce friends to Chromium for Android and loosing most of them at 'unzip'. It makes installing the official latest build of Chromium reasonably easy.

Threw together a shell function to quickly initialise development environments.


It allows you to quickly switch between different development contexts by:

- cd'ing you to a particular directory - opening your text editor - setting environment variables - setting up VPNs - anything else that can be scripted

Dealing with old archives with hundreds of thousands of user uploaded images I needed a quick way to test for and take action on image integrity.

I wrote a PHP CLI script to test directories of images for image integrity and log or take action on found issues. https://github.com/e-ht/literate-happiness


Aggregation of bar trivia events in your area.


The place I work at is not ready to use something like docker, so I made a cloneish of docker for us to use. We are still in the early stages of it right now. Brocker is a combination of docker and kubernetes. Sorry for the bad documentation, I'm slowly adding more.


A polling tool for quickly getting opinions on logo designs, product ideas, etc. I thought other people might like it too, but 5 months after publishing it I'm still making about 95% of the polls.

The 5,000 app users have now basically become my personal soundboard for ideas, which I'm more than happy to pay for.

My calendar Chrome extension has 300 weekly users. It shows all the months for last year, this year, and next year fitted together into one continuous list.


I'm not sure where it would fall, but I've been very satisfied with my blog, https://junglecoder.com. For a side project, once I got the kinks out, it's been surprisingly low maintenance, and it holds up to load pretty well. It's not perfect by any means, but it's been pretty handy.

* libfaultinj: a fault injection library for testing. [1]

* fuzzpy: a fuzzer for the Python interpreter itself (specifically CPython) [2]

[1] https://github.com/androm3da/libfaultinj

[2] https://bitbucket.org/ebadf/fuzzpy

Link with context - https://chrome.google.com/webstore/detail/link-with-context/...

Mostly because I wanted to share reddit links with friends, but they didnt make sense without the accompanying title of the post.


I wanted to make a quick way to motivate me when I don't feel to work. Pretty simple idea !

But what I'm the most proud is the generating of quotes. So I passed a csv and then, the quotes are generating almost automatically (regarding the author and keyword). Make it really simple to generate 100 quotes+.

I built https://snowpool.org about 8 years ago. It's used in New Zealand for carpooling to ski resorts. I'm awful at marketing though so while there are US and Canadian resorts, it's not really used.

Still, it's nice to have a project which results in a little less carbon going into the atmosphere :)

Buoy visualization site (WIP) that uses raw spectral energy data from NDBC buoys


Bonus: I made this for my friend and I to log our surf sessions



I made this in a few days to learn React + Redux and it turns out a bunch of people now use it and have personally thanked me for building it. It's a web UI for Deis (an Heroku like PaaS that runs on Kubernetes).


I've been building HelloBox for the good part of last 3 years. Certainly it has been the longest project I've worked on without losing interest and for that I'm quite proud, since I used to jump from a project to a project. Not planning to stop any time soon either!

Similar to domainr, but more accurate and faster!


I have been working on a multiplayer game as of recently


move with arrow keys, attack with "A"

there's a ton to work on and I've been busy with other things, so sadly the game has taken the back seat. Hopefully I'll be able to put more time into it next month

Nothing like as interesting as your other responses, I think, but I got quite into userscripts (eg for Greasemonkey) when Facebook was trying out different kinds of adverts, in the news feed and sidebar etc. Wrote a few little userscripts to stop them showing up. It was nice to regularly spot something I'd made was installed in friends' browsers.

I built Eggshell , a BASH script manager for the Mac menu bar. I built it because I really wanted a tool to manage the scripts that start up our dev environment. Got tired of copy pasting them. I'm not a dev, so it took a few days to figure out how to build. Built with Swift.


What resources did you use to learn swift?

Create Save Prompt


Allows you to quickly save a new file to a location in Sublime Text's input bar by pressing CMD+S, instead of opening the OS dialog which takes a lot longer (especially on OSX).

I made to site to teach people how to built the projects that I've built (was on HN two days ago) https://enlight.ml

I plan to add more projects to teach people to code in this type of way. I think the best way to learn is to actually build small apps and then altering them to make them better.


At first I wanted to experiment with building a private email server but then thought I might as well build it for others to use, it doesn't really work in decentralizing much, but I thought it would be a start in moving towards secure and private email.


Really proud of this, saves a lot of time and people tell me they love using it, if you want a REST API with all the features (OAuth, JWT, multiple databases, etc) without the maintenance, it's for you


A python clone of an old disk space visualizer that I used before I migrated away from windows. Nobody else has used mine, and it's very much a work in progress, but it works and I use it frequently.

On one map the road was straight, on another it was curved. That's why I made http://comparemaps.drona.ro/ to easily compare online maps.

It turns out that the curved road went around the hill, while the straight road was a newer one, over the top of the hill...

https://github.com/mike-schultz/materialette I made this color palette of material design colors that lives on your OS menubar. I frequently use material design colors, so having it always within reach is a nice time saver.


I made this because every time I decide to post something on HN, I hang on for a moment making my mind up on whether it's the right time to post on HN.

So, I made this live visualization, showing activity levels on HN. Now there's this data driven decision instead of a vague hope.

Quickview for YouTube! Allows you to quickly view videos from your subscriptions feed page without any clicks.


Good question-- I'd say Nymeria (https://www.nymeria.io) at the moment, mostly because it's something I took from start to finish (nothing is ever finished), but you probably get the point.

It's easy to be proud of things you take all the way. Congrats to everyone!

I use my simple little command line tool filewatcher to autorun tests. You supply it with file patterns and shell commands to be run when files matching the patterns is updated, added or deleted. It's available via gem install filewatcher. It was a great milestone when most of the code was from other developers pull request.


Restores the little counter next to Twitter's "tweet this" button that shows you how often your article has been tweeted. Also available as drop-in replacement for Twitter's old undocumented API endpoint that provided this info.

It's a very, very simple thing, and needs updating, but my filter bubble busting Twitter bot is something I'm quite proud of.


My company put this together and it seems to get some love on github: https://osrec.github.io/currencyFormatter.js/

Originally built to help an internal project but we later open sourced it. It's great to see the stars go up!


A small script to ease chrooting (or docker running) into a development environment with usual set of workarounds (toggleable) like passing virtual filesystems, SSH/X11 env, home directory, etc.

FinBot - a free chat bot that answers the question "what should I do with my money" after a few questions. It'll tell you how much of your paycheck to allocate to your emergency fund, loans, IRA, 401k, and investments.


http://glogg.bonnefon.org/ a fast log browser born of my frustration looking for patterns and trying to understand bugs from huge logs. It has become not-so-tiny over the years and I see it pop up in a lot of unexpected offices.

Umbrella App: Simple digital and physical security lessons for people who travel, activists, aid workers and journalists:


I have a scripts repository on github served as a collection of years of scratching my own itch: https://github.com/fishy/scripts

They are mostly python and shell scripts (with one PHP), and most of them are still useful today :)


Simple, yet powerful bridge between http request and shell commands. Useful for running build or deployment scripts, and stuff like that on incoming webhooks. (i.e. github, bitbucket...)

I combined the best saliency detection frameworks with a aperture kernel to emulate depth of field and bokeh on iPhones with only one camera. (The app is free with watermark https://appsto.re/se/c3lxfb.i )


Google Chrome Extension to download YouTube videos. It was growing in popularity quite well at one point. It still works and gets notice. I use it frequently.

A small utility to colorize diff from standart input. Uses PyGments and opens a webpage served on localhost.

Very simple but I use it daily.


On behalf of my friend: https://autono.ml

It is a wrapper over DuckDuckGo which redirects all searches without bangs to Google. It also changes the bang operator (!) to the open square bracket ([) because it is easier to type.

Very simple but effective time saver!

http://youtuberanktracker.com It's a simple tool to keep track of YouTube video rankings by a keyword. I found it difficult to find a simple service that didn't cost a significant amount of money.

Nice. Is there a way to see list of the keywords for which a video makes, say, the top 100 results?

No, there's no way for me to determine that within a scope of this application. You can essentially see that already via search analytics on YouTube for your videos, but you have to do some digging.

Flour: http://ricardo.cc/cake-flour/

A build tool predating js modules, grunt, ES6. While it hasn't been touched for years, I still go back to it from time to time because it's so simple to use.


Not sure it's the project I'm most proud of, but as far as a simple tool I use everyday, this is it.

One reload shows you the site in multiple sized iframes, so you can quickly test breakpoints.


We enable anyone to easily create their one-of-a-kind Art, T-shirts, Lifestyle products via "Remixing" Copyrighted works. Products are printed on-demand. No minimums.

Think "Forking" for IRL design.

Example: you can create your very own $10 FUCK TRUMP T-shirt : http://juicycanvas.com/anonymous/gallery/products/fucktrump/...

use coupon: "FUCKTRUMP" to get $25 off.

Just Read: https://github.com/ZachSaucier/Just-Read

It's a simple Chrome extension to help put just the actual web article content into a customizable and distraction-free layout.

https://Timerdoro.com - A productivity timer where you can build your own timers to work for Pomodoro, eye strain, GTD, meetings, whatever. Averages about 50 visits/day, with half being repeat users.

I fixed my prediction market last weekend: https://github.com/qznc/prema

It used Mozilla Persona for authentication, which is now gone. Switched to Github OAuth, which went surprisingly well.


Basic, but my first dive into krypto and security. Droped it a while after. Not that interesting. Still using this link for random pwds.


Answer a quiz, discover new tea


I hate how long it takes me to find a name for my new projects so I made launchaco. It's super simple but has saved me so much time when ever exploring names for new projects.

Observideo, annotating videos tool for social sciences students. The norm is either excel or very costly software, this simple tool saves hours of manual tagging. https://observideo.com