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.
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.
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.
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.
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.
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.
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.
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...
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)
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.
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.
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."
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.
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.
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.
>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.
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.
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.
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.
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.
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.
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:
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'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.
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)
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).
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.
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.
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 :).
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.
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!
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.
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.
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 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.
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.
* 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/
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.
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...
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.
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.
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 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.
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.
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!
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.
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.
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.
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.
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.
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 10.2.3.4 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.
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 ?
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.
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 definitely will. Hopefully today. Very common, understandable request. I only launched it a few days ago. Definitely has things I want to improve.
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.
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.
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.
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.
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.
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)
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 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!
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 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.
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.
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.
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.
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.
* 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
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.
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.
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!
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.
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.
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.
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.
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).
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
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.
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.
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.
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.
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):
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!
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
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
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]
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.
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.
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.
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.
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.
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.
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.
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'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!
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...
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.
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.
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.
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.
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)
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 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.
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.
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.
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 :-)
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(!)
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.
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
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.
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.
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.
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.
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.
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 :)
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.
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.
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.
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.
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.
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.
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.
Android app and Chrome and Firefox addons that lists live and upcoming programming competitions on sites like Codeforces, Topcoder, Hackerrank, Hackerearth, Codechef etc
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.
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.
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 )
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.
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.
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.
Starting a Swiss-German language school in Zurich, Switzerland.
Most course materials and the world's biggest dictionary (Swiss-German) is provided online for free.
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:
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.
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
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.
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.
- [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.
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.
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.
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.
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!
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.
* 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.
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.
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
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.
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.
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.
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 :)
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.htmlhttps://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
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.
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.
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.
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.
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 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
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.
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.
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).
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.
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`
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.
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.
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'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
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.
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).
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://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.
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.
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.
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 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...
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.
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.
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!
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...
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
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.
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! :-)
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.
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.
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.
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
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.
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.
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.
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.
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!
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.
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.
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.
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 :)
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.
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.
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.
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.
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...
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
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!
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.
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
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.
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.
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!
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 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...
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.
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
}
}
}
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
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!
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.
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:
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.
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.
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
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.
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.
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.
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.
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 :)
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.
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.
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.
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.
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.
- 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!).
- 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.
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 :)
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.
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
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.
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 :)
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 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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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
It's a simple diff-as-you-type tool. I realized that I often had two strings (test output, code samples, etc.) and wanted to compare them in as few keystrokes as possible, from any computer.
When I was learning Go a few years ago, I build a simple way to generate line graphs from the command line by piping to a cURL command. A few people still actually use it.
I got bored of trawling eBay so decided to make my own tool to make it faster. StoreSlider has been going for a few years now and has been really useful.
https://www.hireloop.io - Put an end to job appliant overload, with clearer 2-way communication between you (the hiring manager) and your applicants. No more ghosting.
ok, stretching things a little, but Poe (http://getpoe.com) started out as a single-function tool - a distraction free writing app, for the windows store, back in 2012 when there were none. It was basically just notepad with a hidden interface back then.
Now it has word-count goals, writing timers, built in resources and custom theme support. I'm working on a follow up with lots of incremental improvements and new features.
I'm proud because people love it. They give it amazing reviews that I feel like I don't deserve. People are super nice about it.
An in-terminal interface for performing polynomial fits of a small number of data points. I use it for calibrating gamma-ray detectors, and so it has lists of the energies of some common calibration sources.
We're a bunch of web devs out there doing "JavaScript code-golfing", for fun. The goal is to make mini apps, or mini-games, with the smallest possible source code.
I have a thing that puts my RSS feeds into an IMAP folder. Not "emails them to me", but actually connects as an IMAP client and stores them in a folder that's not my inbox.
A simple timer. The colors represent an hour block of time. It’s designed for your peripheral vision, put it on a secondary screen. Just drag or use the keyboard.
Auto-detects Unicode mistakes (particularly mojibake), and if there's enough information left to fix them, it fixes them.
Particularly useful for Web scraping and dealing with Unicode that was incorrectly exported from Excel (which is nearly all Unicode exported from Excel).
Pay more than the person before you and you get... to be the person that paid the most. That's it. Well, you get a message on the front page along with your name, but still.
People tend to react positively to it, though I can't for the life of me figure out how to market it. I've tried Reddit/Facebook ads, mentioning on relevant Subreddits and such, and nothing has really taken off. Maybe someday I'll figure it out.
A very simple search tool for the command line, aiming to replace very common cases. It's pretty minimal, but I use it every single day and love it... it unsurprisingly 9i developed it) fits very well my daily flow (90% of the times based in vim, at and ffind)
It's a tutorial on how to write a Linux command-line utility in C. Was up on the IBM dW site for long; now archived. Got some stars etc. Code and article text now available via (links in) the above post on my blog. Uses as a case study / demo, a real-life utility I wrote for a client, to print only selected pages from a text file, specified by line number range or page range (form-feed-delimited pages, a common industry format for line printers). It was for a very large company with huge print jobs, so if the paper jammed in mid-job, this utility could save them a lot of time and paper, by letting them print only the un-printed pages. They might still be using it several years after it was written. I had also shared it on the HP-UX mailing list, and people said it was useful.
This post shows how to use that utility (selpg) with xtopdf (another project of mine, for PDF generation from Python):
Print selected text pages to PDF with Python, selpg and xtopdf on Linux
PySiteCreator was a bit innovative and fun to do. It lets you create simple web sites by writing them purely in Python. I designed it to impose as few requirements or constraints on the user as I could, so that it would be more generally useful, i.e. more like a library than a framework, though it is a sort of framework, since it calls code you write.
That post describes the ways it can be used. I originally created it with the goal of creating simple wikis using Python, but then realized that it generalized to any web site, so changed the name from DSLWiki (a DSL for wikis) to PySiteCreator :)
And while this one - pipe_controller - is not really a tool or product (it is an experiment), I enjoyed seeing what I could do with it - like running a pipe incrementally and swapping pipe components at runtime. There are few posts describing those experiments, in reverse chronological order, starting from this last post:
Swapping pipe components at runtime with pipe_controller:
Edit: I'm working a few other products, some for sale, some free, so anyone interested in checking them out, is welcome to follow me for email updates here on Gumroad:
Successful. That's what I want for my SaaS developers. Whatever your core product is, it's always going to need
- billing integration with Stripe
- user authentication (for your customers)
- access control (so you can drop in support)
You can pull this off (of course!) but do you really want to deal with this portion at all? Wouldn't you rather focus on driving traffic, writing blogs, adding new features to your core product with the time that you would spend on maintaining the non-product portions?
Here's how we are doing it:
- We would be your go-to resource for all of your SaaS website issues, fixes, CSS changes, anything related!
- SaaS website never enters your cognitive load, we are keeping it up!
- Send us an email at hi@saasful.com and we'll work on any request you send us in 48 hours. This is nice because months down the road you want to quickly change CSS
- Never deal with hiring from freelancer.com!
This is the tool that my devs and I have been working on this quarter. Would love some feedbacks.
edit: Care to explain the drive by downvotes? The thread is about sharing what tools we are working on right? Or did I not do it properly? Please let me know!
Proud because of what I didn't do. I was pragmatic. Avoided fancy nosql databases and funky languages and just bashed out some JS and said stuff it ... no server side!
I would guess my most used project would be an HTTP header editor for Chrome[0]. According to the developer dashboard it has close to 4,000 weekly users and I don't think I've had to do anything to it in over a year and a half. That so many folks would use my software is cool.
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.
(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