Build a machine that prints money.
Find a problem that regular business computer users are solving with some combination of raw effort and a spreadsheet to keep track. Write an app that accomplishes the same thing, but better, and in a mostly automated fashion, and charge them monthly for access to your tool.
It's a lot of work upfront, but the gains you make each month compound. Most of the customers you sign up this month will still be customers next month and you don't have to resell them. Instead you focus on selling new customers, who themselves will be around the month after that. Eventually, the amount of money the machine prints each month is greater than the effort you're putting into it each month, and you've freed yourself from exchanging time for money.
In terms of life hacks that are particularly attainable for developers specifically, I think starting a SaaS is near the top.
Especially because what most businesses actually do on a daily basis, and what annoying problems they have, is totally invisible to me.
I have my collection of guitars behind my work desk, and every time I am waiting for a download or process to run, I force myself to NOT just open another browser tab for Facebook/Youtube or revisit my emails and instead reach for an instrument and take my brain to another place for a short while by playing something or practicing some scales/modes.
I also do this when I start feeling overwhelmed with to-do tasks or debugging tricky code. Forcing my brain to think about something completely different and then coming back prevents burnout for me and makes me come back to problems with a different mindset.
Never mind if it is a musical instrument, your cat, card tricks, painting - whatever. Take a mental break.
Although this doesn't really work for a quick 15 minute break, and only if there is a climbing gym/wall nearby.
Otherwise Ukulele!
It's not just important to actually enjoy the life you're trying to hack together, it's also healthier, and if neither of those reasons will convince you, it'll also make you a better programmer: Too many programmers think they need to get in front of a screen to start "programming", when in actuality they're just spending themselves, and responding to what they see. Only thinking about the problem fully will make your programs smaller and faster.
Elevate your command line game:
autojump https://github.com/wting/autojump
ag https://github.com/ggreer/the_silver_searcher
Use zsh and put this in .zshrc https://gist.github.com/chx/f9509cb2db6595be334ca2404fac8a91
Now you can jump to directories freely with just j afewcharactersfromthedirname, search their contents with ag super fast and if you ever figured out something on the command line, you can recall it after this. For example, I remember I was searching dangling commits with awk so I do Ctrl+Rgit*awk and there it is. (I posted this particular command to http://stackoverflow.com/questions/21903972/search-for-strin... but that's less relevant to the topic here so I won't repeat here.)
Use Beeminder <beeminder.com>, a commitment device with a sting. Make a commitment, and give them a price (in USD) for failing to meet that commitment. They take your money if you don't do what you said you'd do. They have APIs for many services such as RescueTime and TagTime, and an Android app.
Note: If you're the kind of smart person who always finds a way out of doing the things you claim to care about, then if these two tools don't get you to do those things, you'll at least think deeply about, and know if you really cared about them.
You either get value (success in the things you care about), or information (learn what you don't care about, that you thought you cared about). Then you can use the value of that information to reorder your preferences in an optimal way.
Some months are almost full, some months have only a handful of info. But it is quite stable since all the way back to 2014 for me.
You could add both tags and paragraphs of what you're doing.
I know that if I feel guilty about paying those $5 per transgression I can just lie to the app, which makes the whole thing pointless.
I understand that the whole idea is to be honest to yourself. But because I have been frugal/cheap my entire life, it feels stupid to waste $5 when I could easily avoid it.
Or maybe a better answer is to automate the data entry (we have dozens of integrations -- GitHub, Trello, Fitbit, RescueTime, etc) so that you'd have to do more than lie to the app. With enough effort you could still cheat, of course.
Would love to hear if this is overcomeable or a dealbreaker!
I think social accountability would only work if (1) someone else could tell whether I'm cheating (that's not happening in a personal project) and (2) cares enough to check my graph.
Maybe my cheapness trumps my integrity. Or more positively, I reframe the meaning of the price: what does $5 buy me in Beeminder? an accurate data point. Is $5 worth an accurate data point? depends on what I'm planning on doing with the data later. And because I don't know what I want to do with the data, an accurate data point doesn't seem very valuable.
That's really unfair, though. I know that losing those $5 eventually will coax me into complying, but my inner Hyde will convince me to lie. Sigh.
I guess I just don't fall into the target niche (although it really looks like I do—except for the cheapness-trumping-integrity issue).
I feel like this is where all languages will eventually go, being easier to hear and speak instead of read and type. And not having to think about brackets and semicolons frees a developer to think instead about the work their code is performing.
CTRL+@ - paste my email address. saves buckets of time logging into things, signing up to things etc
]t - paste date-time in the format 2016-08-12 09:53
]d - paste date in the format Friday, August 12, 2016
#ho - open windows hosts file in notepad
ALT+MOUSEWHEEL - page up, down with each movement
F11 - switch to thumbnail view in explorer
SHIFT-F11 - switch to detail view in explorer
I also have a universal autocorrect script which I've filled with common typos so I can't type 'pulbic', 'widnows', 'anywya' etc (had to disable the script to type those in here)On top of this, an autocomplete / intellisense script for html / js dev.
Chocolatey: Apt-get for windows. If you ever need to install anything, you can open a web-browser, google the thing you want, open the page, find the installer, download it, open explorer, find the exe, run it, step through the options and get on with your day. OR, if you have Chocolatey installed you can just open powershell and type "choco install vlc" or whatever it is, silently.
The best feature of choco is that you can chain things together. You can write a script that installs everything you need in life, and have a new machine up and running in no-time.
Synergy+: If you use more than one machine, you can share the mouse, keyboard and clipboard - even across operating systems. Put the two screens side by side, configure, and they might aswell be one machine with two monitors.
Another thing is, also automation, to use Hazel to automatically keep my temp files manageable. Basically, when I file is older than X days, move it to a "need review" folder. This mean that there is a steady but very very manageable flow of files to delete or move to their correct location. I also wrote about it here: http://jontelang.com/blog/2015/08/17/hazel-is-great.html. My Downloads folder have not been 1000s of files since I started with this.
Workflow: http://jmp.sh/QAEQSep
Instead of using Hazel I directly set an "rm -rf ~/Downloads/*" at every restart. This way I only save files when I really move them instead of having them pile up there.
Funny fact: at some point it was mounted in ram, but I couldn't download files larger than half of the ram. :D
Meeting women is a bit like doing sales. it's more of an outgoing activity and being extrovert. So rather the contrary of coding. This is refreshing, gives me balance and a nice change to my day to day life as a coder.
[1] For the sake of verbal simplicity, I use the term 'women' for people of the opposite gender or the gender you are into. And also for the sake of simplicity and decency, I use 'meet' for all kind of interactions.
While I appreciate that finding a partner in life is very important, I don't know if it really falls under the umbrella of "developer life hack".
More to the point (at least in my case) is to ensure that your priorities remain ordered correctly. Basically, ensure that you spend sufficient time with family, friends or others, and make time for hobbies that don't involve code. Time management is important in this regard... committed to providing 8 hours a day? Stick strictly to that. Your own personal project? Define a time restriction on the hours spent on that project, and keep strictly to it. You soon realize how much time those distractions during the day take up. By reducing those, your productivity increases. But importantly, relationships become stronger and those hobbies help expand your mind. Both are extremely beneficial to you and your growth as a developer...
A few weeks ago I read about an American civilian pilot who was out on a training flight and by chance ran into the Japanese air fleet over Pearl Harbour - becoming one of the first Americans to learn of the imminent attack. I don't remember any details beyond that. If I wanted to read about that pilot on wikipedia, I guess I could navigate to Google.com, enter some relevant search terms, scroll through the results until I find one from Wikipedia that looks right, click on on, read it, see if it's the correct one, etc.
But because I search for wikipedia articles about stuff all the time, I have a chrome shortcut set up that does a Google "I'm feeling lucky" search with "inurl:en.wikipedia" appended to it, so I just type in my browser bar
w civilian pilot first to see japanese air fleet
and hit enter, and it takes me straight to https://en.wikipedia.org/wiki/Cornelia_FortOnce you get used to going straight to where you want to go, using the "search and choose" method becomes painfully frustrating
Edit: to be more clear, I have a chrome "custom search engine" set up with the keyword "w" and url:
http://www.google.com/search?ie=UTF-8&q=inurl:en.wikipedia %s&btnI=745
this obviously routes your wikipedia navigation through google, which some people may have a privacy issue with, but I don't when it's something I would search google for anyway https://duckduckgo.com/?q=%21ducky+inurl%3Aen.wikipedia+%s
I also use Google's "I'm feeling lucky" as my default search so I can type e.g. "mdn array" to look up the JS array docs quickly. I used to use DuckDuckGo's version but the results were unfortunately too inaccurate.Bonus: works in every browser or environment.
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navc...
It goes straight to the first result if the result is very good, otherwise shows you the search results.
Applying to real-life, this means making excuses for goals or habits you want to achieve, instead of finding clever solutions to meet them.
Example: you want to develop a habit of listening to podcasts or audiobooks. But excuses like "I don't have a commute with dead time to listen to them" or "I can't focus if I listen to while I work" pop up. You could just say to yourself "that's just the way it is" and not bother developing the habit. Or you can push through the resistance, get creative and figure out other ways to make the time for the habit. Personally as I don't have a commute to work and can't listen while I work, I listen in pockets of time like when I'm in the shower or going in-between meetings.
I had also started a small website (http://bushcraftvideos.woodsandrocks.com/) to "collect" the best of them a few months ago but i'm facing a "break" due to work and personal commitments.
Starting a fire (small and safely) in the nature using a knife and a firesteel is an inspirational experience!
If you are on Chrome, use Tabs Outliner to manage your tabs (https://chrome.google.com/webstore/detail/tabs-outliner/eggk...)