We trade 15 min of lunch (60->45) during the year for only working 7 hrs during the summer, so 8-16 between June and August. Practically everyone is off in July so it is a good deal for the company strictly speaking but that one hour does make a bigger difference than I thought it would.

In my current project most get in between 7 and 8 but in other parts of the IT organization most get in closer to 9. Varies a bit and many have kids so they tend to arrive late or leave early.

(I have a separate branch for windows, but I found out that branches are not a good solution for this, since unlike feature branches, they'll never be truly merged... and unlike maintainance branches, they'll never stop being touched due to being out of maintanance)

And I use my own script, to also support Windows (since ansible supports windows targets, but cannot be used from Windows)... I defined this table with the destination for the symlinks (or, in the case of .ghci the destination where to copy it, since symlinking it wouldn't work)

Git and Xstow. I have a small shell script that parses the xstow.ini file and creates all the directories I have listed under the [keep-dirs] directive in order to prevent it from deleting empty directories or replacing them with links.

I think no one has mentioned rcm[1]. I just maintain a private git repository cloned in .dotfiles in each system I own, and use rcm to set up symbolic links properly. It works pretty well with directories and lets you choose between creating and populating it with symlinks, or just symlinking the whole directory. For example, I can symlink the full .vim directory (including git submodules) and only link some files inside the .ssh directory (link the config file to my .dotfiles repo but leave ssh keys alone).

I've probably spent hundreds of hours across all my configs over the years. In the old days, I'd rsync config files manually. Having frustrating times where I had to start everything over again.

I have a lot to say on the subject.

1. Like other users here, git is a great way version your files. Not just that, it handles the issue you have with keeping the configs of various systems in sync.

1b. It doesn't have to be GitHub, but understand pushing to some remote gives you a backup, and a way to keep the latest configs you have in sync across multiple machines.

2. As a rule of thumb, the more POSIX compliant you are, the more cross-compatible your dot-configs will be. In my case, a great deal of my config works superbly across Ubuntu, FreeBSD and OS X with no modification whatsoever.

4. Tangentially related is PATH's. Definitely be sure you're not accidentally appending multiple one's over again or omitting ones you want to search. For this, I recommend a pathappend function like one used at http://superuser.com/a/753948.

5. As for managing vim / neovim, I'm coming to the realization the amount of time I've spent trying to configure completion / fix tiny things over the years probably makes me lose the net benefit vim has given me. Too bad there is no intellij for the CLI. In any event, I keep a vim config at https://github.com/tony/vim-config which I document extensively. It has quite a lot of bells and whistles, but lazy loads and checks the system before installing certain plugins. It should work with neovim too.

I have everything in ~/dotfiles which is a git repository here: https://github.com/dmarcoux/dotfiles. Basically, I use GNU Stow to symlink what I need. I have master which contains common config and one branch per computer. Everything is explained in the README, in more details if you want do know more. It's not perfect yet, I still have some small irritants, but I'm quite happy with this setup.

I have a modular family of git repos with a 'dotfiles' one that pulls in the dependencies via bower and handles various bootstrapping and install steps. I also have one for my system config which works similarly. Vim, zsh, and tmux have their own standalone repos with one step install and updating scripts. They are written as normal plugins that load other plugins.

I want to avoid vendor lock-in to something like chef for this. The idea is that everything is either defined in a tool-agnostic config file, and bootstrapping / installing / updating the dependencies is handled by simple shell scripts. Down the road I can always swap out the tooling (bower, config_curator, archutil) without updating code in my repos since state is defined as data.

I don't like syslinks or putting ~/ under git as I don't want my working tree to affect my dotfiles until I run an "install" command.

I see a trend of people maintaining a GitHub repo called `dotfiles` for their public configurations, myself included for zsh/tmux/vim/git. I haven't found a satisfactory way to sync secrets between machines other than via sneakernet.

Payday loans are fleeting cash propels intended to get you through to the following payday. You round out an application giving data about yourself and your salary online for moment endorsement http://www.1monthloan-uk.co.uk/. Once affirmed, a cash development is kept into your financial records the next day. The loan organization will charge installment from your financial records on your next payday.

tar, scp, and a VPS server I've had for longer than I can remember (it's still running Lenny, if that helps -- its OpenSSL was too old to be vulnerable to Heartbleed...). Every new install, I scp the tarball and extract it to my home directory.

I recommend going to sleep if possible, or persevering with sleep in mind as something to look forward to. After waking, one tends to have a more harmonious frame of mind.

A sense of depression (and I assume you're referring to the emotion, not the medical condition) quite often has nothing to do with easily identified circumstances, the mind just tends toward the things it is dissatisfied with.

If you believe you have the medical condition, treat it like anything else: see a doctor. I know many people who have wasted years of their lives fearing a few moments of awkward discussion with their general practitioner. There's no rational reason to join them.

There are two things here to recognise and differentiate: depression (the clinical kind), and dejection (feeling down about things in general).

With the latter, you can work out a plan of action to gradually lift yourself out of misery. Since you're on HN, you're in a community of like-minded perceptive, intelligent individuals. There's an abundance of advice in previous threads on this subject.

The former is more complicated, and potentially dangerous. It's classified as a 'mental illness'. Professional assistance may be called for; other times one can recognise the effects, realizing that the cause is within rather than without. If a good night's sleep doesn't cure it, seek assistance...

Going outside in sunlight and walking to a park is my healthiest trick. But my most effective trick is going to a cafe & ordering a Large Chocolate Mocha with 2 or 3 shots of coffee. (Failing that, a chocolate ice cream sundae usually works too.)

When I was in Berlin, on the rare bad day, I would go to my closest train station, sit on a seat and watch the people go by. Inevitably someone would come up and ask me for directions. Helping someone even with my terrible German skills cheered me up.

These tricks aren't long term fixes (walking & sugary mochas won't help you earn more money), but they might give enough of a short term boost that you can get back to working on something productive, and thinking about how to fix the bigger issues (improving relationships, finding a better job, making new friends etc).

You feel bad. It's perfectly fine, more than fine, in fact. Tell yourself it's good for you to feel what you're feeling right now. Because it is. Now, what are you feeling like you want to do? Does it hurt other people? No? Then go do it. Or you want to sit here and do nothing? Then do that. Just be.

I take a walk and look at things to extrovert my attention (get myself out of my head/feelings). Bit of exercise helps as well (e.g. go for a run). After 30 minutes, I'm usually sweating and feeling much better.

I've done this on a small scale for web, never for mobile/apps though. My approach was a git repo containing the main code then a branch for each brand which only had config changes. It works ok but gets difficult to manage once your size grows - it's essentially using git as the build tool.

If I were to do it again I'd likely not use the branches for branding config, but keep them all in one place and use a build tool to make sure the required settings are in place and merged before deployment. As long as you tag your releases you can fix certain clients to certain releases.

Make sure you talk to your clients about what their branding requirements are. Some companies get very very specific about what they 'need' and as soon as you offer the ability to customise something they can get irritated if their brand doesn't look quite right. As others have said make all of these customisations part of a config file and just reference that in your code. Once you start making specific changes for a client your life becomes difficult and you end up managing a specific bunch of code just for them.

You didn't say if the white labeled app would be a public download of it it's intended for company staff. If it's the latter you can probably have a single app that gets configured on the first start up, i.e. it's blank when you open it, sign in and it pulls in the required config and then takes on the customer's brand.

Approach branding in the same way as internationalization. Instead of hardcoding strings, reference a config file that translates the logo/brand names/color scheme for the specific deployment. Look into how Shopify does this for their customers.

Corporate (banking) - across multiple departments and users - but I'd like to share:

Bucket

|- filename1

|- filename2

|- filename3

|- filename4

|- filename5

|- ...

I'm not joking. This is because I worked in an organisation where directory structures and silo'd access across each department were removed, and everything got thrown into a pool of documents with files that needed to be correctly names, and attached meta data filled out.

Most people hated it.

But I loved it, because it brought a discipline of accurate filenames and attaching correct meta-data. It brought strong disciplines on security/permissions. It brought an audit trail of who had opened or edited what and when.

Whenever I see a department of a company with endless directory upon directory of files with data replicated across them, I know the department has big people trouble - stuff is being done manually and operational controls are weak. Like seeing Excel sheets with merged cells = non-normalised tables that cannot be pivot-tabled = staff don't know basic Excel functionality = stuff is being done manually, time wasted, effort duplicated.

Everything was accessed by search. This also brought strong levels of discovery: Formerly, a document in another department could have been useful to me, but I'd not know of its existence unless I'd caught wind of someone working on this problem before. Now, with correct permissioning, I would see it through search. This saved incredible amounts of time. I also know that what I wrote 10 years ago isn't stuck in a directory that no one knows exists, it is at the fingertips of anyone who needs it.

I'm really horrible at this. As neat as I keep my git repos, I'm a chaotic keeping my disk organized.My desktop started to regularly get crowded with files since I had a computer with an OS that made that possible.Still move everything to "Stuff" whenever it gets too crowded and I don't want to make the decision yet whether I should delete this particular file or not. At least I have a "Code", "Git" and "Stuff" folder now.

I also highly recommend Codecademy courses on HTML, CSS, JavaScript and Ruby.

If you are really serious about this stuff, which is great news, you might want to read more about making software. Start with the Pragmatic Programmer. It is a great book to read in your formative years.

And finally (this is important), try to solve a problem (like building a website for yourself or a friend etc) with programming. Learning just to know doesn't stick for long in my experience and probably is true for others.

After you've got a Python project under your belt, learn JavaScript because pretty much every programmer will need to use JS at some point. [MDN](https://developer.mozilla.org/) is a good reference for JS, CSS, and HTML. W3Schools is a terrible resource and should be avoided.

Finally, learn a LISP (like Clojure/ClojureScript) because it will expand the way you think about programming and learn at least one lower-level language (like Rust or C / C++).

You should also learn Bash or Zsh as you go. I wouldn't recommend shell-scripting languages for large projects, but they are immensely useful for tasks like file manipulation, and you will need to know how to work with a terminal for system administration tasks.

I recommend installing MAMP or WAMP for a local web host and using sublime text as your editor.

Starting from scratch, use the book Head First HTML and CSS (you can probably get through your library or a digital version)

Once you have a few local websites setup, get a hosting account (hostgator is ok for learning) FTP up your site using filezilla, buy a domain, learn to point it to your hosting.

Next get the book head first PHP & MySQL.

You'll learn PHP and MySQL building on top of what you've learned in the first book.

After you have completed that book. Pick a project to create for your self. A todo list maybe. Code it from scratch using what you've learned.

Next I would look at jQuery and learn how to improve the front end of your todo list.

Next step up would be learning a framework if you want to continue learning backend coding.

I recommend Laravel(PHP) or Rails(Ruby).

I'd recommend developing on a mac for both. Windows tends to have issues doing even the basic tutorials where you'll spend half a day troubleshooting only to find out it's a windows problem that needs a work around.

There are lots of tutorials for both.

Railscasts.com and Laracasts.com are good places to start.

You don't need to dive in to these till you have a solid foundation of HTML->CSS->javascript->jQuery->PHP->MySQL.

I like to think a good programming book will teach you theory along with showing you what an implementation in a language is going to look like.

While you still find it's hard to decide which language is superior to learn, maybe do some comparisons? You could look at some samples of different languages very easily, e.g. get on github and browse around! Then perhaps you gravitate naturally towards how one looks?

It could be nice, just starting out and all, to enjoy the natural elegance of languages: consider solving some project euler problems...then you can look at solutions in all sorts of languages! What fun.

Depends on)1) Who you ask, their opinions etc (and there are many)2) What you want to do. Coding is too big of a field to say "you should learn this language." Javascript is ubiquitous and you can do most anything with it (especially work with browsers) but it's also not the loveliest language.

You mention web design so then CSS, Javascript and HTML would be the logical choices.

If you want to learn to code, though, then I would personally suggest learning a functional language - maybe Clojure or Scala? That's a highly opinionated recommendation because my own experience has shown me that learning functional programming makes you more capable with other more imperative languages. This might be of interest. http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budg...

Most people would likely recommend something like python or ruby or even Java. There are many opinions. I would look at what you want to do first, and then choose the technologies that are used in that problem domain.

Coursera has courses that you can take for free. It would be a good place to start.

I don't think an open community would work very well. The signal::noise ratio for each individual would be very high and they would have no social obligation to follow up with eachother. It seems no different than posting the latest update to Facebook / a blog / HN / Product Hunt.

My two cents is to find driven people you already know and get a small group (5-10) together to do this.

YC does this by subdividing its now larger batches into different groups that meet together with their mentors every two weeks. On my own, I created a slack channel with about 10 other U of I founders. We can all commiserate about our startups, help eachother out with intros, and share good news and progress. Its more meaningful as well due to the shared friendships and history.

"SELECT" isn't broken. (h/t The Pragmatic Programmer, by Hunt and Thomas) Junior programmers will sometimes think the problems they encounter are the fault of bugs in well-tested system software, rather than their own code. (1)

The implementers of the legacy code aren't stupid. It's very common for junior programmers, tossed into the swamp of some codebase that's been around for years through many different hands, think the code is junk and the original implementers were fools. Usually, it's just that the problem is much more complicated than the juniors understand, and that's how the code got that way.

New tools probably won't solve the problem. There's a tendency with junior programmers to whine about the antique tools in use, convinced that the new Foobaz framework or Language X will magically clear up the issues they encounter. But the problems with code usually aren't from the tools used to build the code - they're from failure to understand the requirements, and time/scope/resource constraints on development.

Perfect isn't as important as finished. It's easy to get caught up in perfectionism. It's a good excuse to avoid releasing something you find embarrassing into the world. But the more time you squander polishing that turd, the less time you have for the next tur... er, cool new project.

If you can't write a test for it, you don't understand it well enough. Writing good tests is hard. It's easy to fall into a trap of "That's too hard to test. I'll just sort of check manually to make sure it works". This will bite you in the ass later!

(1) My first really good bug as a junior programmer actually was a "SELECT is broken" kind of problem (technically, mmap() was broken). I went to a great deal of effort to prove to the senior programmers (and then IBM) that my code was actually correct and I had an OS bug. And if some junior programmer came to me today and said a deep system call like mmap() was broken, I'd laugh at her and tell her to check her code. So sometimes, SELECT actually is broken - just not as often as junior programmers think.

Ok two personal pet peeves. 1: Check your code 100% before you say someone else is at fault. 2: You should assume the engineer before you had a reason for doing the things he did, do NOT assume they are an idiot until you have conclusive evidence that they are.

I say this after having spent a huge amount of time taking over code bases and figuring out that the reason people make engineering decisions sometimes have nothing to do with engineering. Many times the decisions are based upon some business process or "guidance" that led/pushed them down the path. That does not make the engineer or software necessarily bad, it makes the process or guidance faulty.

So many times as a consultant I come in and start researching the code and issues, and then work with the business to understand their issues. Then review the code and find that the code does exactly what they asked it to do (as stupid as it may be), but not what they intended. Do not assume an engineer before you made a mistake until you have proven they have. Assume you haven't seen all the facts initially and dig more. 80 or 90% of consulting is asking the questions to find out why more then how, understanding why tells you the how most of the time.

1) When someone comments on your pull request about how you could make your code more efficient - don't get upset - be happy to learn and get better at coding. And get back at your code and refactor it.

2) If someone is mean to you. Like really _mean_ to you, tell them. (Or tell team lead etc...) Some examples are:- UX guy jumping up on you grabbing your keyboard while in the middle of complicated rebase = not ok!- other developers not talking to you/ not helping you because they feel superior = not ok!- random people coming up to your desk demanding you take immediate action because they experienced 'some bug' = not ok!- people sending you cryptic emails "everything looks fucked up" = ... relax, tell them to send screenshots

3) Take breaks!I actually think this is one of the hardest points and I still cannot get myself up sometimes for breaks - but yeah - fucking take breaks! You don't need to go out with the smokers every 40 mins, but try to break for lunch and mayyybeee socialize (if your co-workers are actually sociable)

4) I can't believe I'm actually posting this but - if you happen to be a straight male and there's a female on the team... ugh... don't stare at her boobs or at her in general - talk to her about code - yes there are female coders out there and fyi they are just like you so don't be too creepy and listen to what they have to say about your code. -__-

When trying to understand a bug, taking up a new framework, or anything with learning: don't read too fast. Read slowly and make sure you understand it. Read the stack trace. If you're 100% sure the documentation is lacking, read the source code, search through the issues, and ping the maintainer. Make a pull request while you're at it. It's okay to spend 1 day debugging by learning the foundations of a framework, rather than 1 day copy-pasting every StackOverflow answer you come across. That approach wastes your time without learning properly in the process.

6-10 years ago we didn't have all these frameworks and libraries. Junior devs are now faced with a mountain of these things that they can easily copy-paste without understanding what's underneath the hood. Make sure they keep the hacker ethos and try to open up those boxes from time to time, so that they'll understand the foundations of certain pieces of software.

To a first approximation, when a client doesn't pay on time, I stop working for them. Clients who don't pay are worse than one less client because there's no income and there is an allocation of resources...both directly and to collections.

There are cases where I have had a long standing relationship with a good client who was experiencing short term problems and let me know about it and we worked something out. Those cases are very rare and required an existing good relationship.

On the other hand, people who started out slow to pay never get better.

I had this problem, and solved it by giving discounts. Hopefully, your pricing will allow this. It is fairly standard to see a notation on an invoice like 1/10 net 30

That means you will give a 1% discount if they pay in 10 days, or the entire undiscounted invoice is due in 30 days. This made a huge difference in my business, since all my customers wanted the discount.

I should add that I was doing projects and billing for projects for the Fortune 50 - with a good margin. So I'm not sure if this will apply to your customers.

We have a small agency, and have these issues too. Most of the time it is just the occasional slow payed invoice. If they get past two weeks we shoot them an email.

Things we do to lower the risk as much as we can. #1 we get paid upfront for the month. #2 We always ask for a credit card or ACH as part of the contract, we still do get checks because for some that is the preferred method for them, but we try to get the CC / ACH.

For us, if it's becoming an issue over 1-2 months, I'll personally make the ask and find out if something is wrong. I try to give them the benefit of the doubt that the invoice isn't getting to them or was missed.

Something people have suggested is when the payment is late, a nice notification email that just says that you haven't received payment for this month and according to policy, work is suspended until payment is received.

The reason we don't do this is because for us 100% of the time it has been a missed invoice, not an intentional stoppage of payment.

Setup your payments with Stripe so they are recurring subscriptions . . . this will keep them paid on time.

I expect most clients will just signup so they don't have to handle your invoices.

I would start getting your slow to pay clients signed up first but roll this out to all clients. If a client is shying away from signing up offer them a discount to get on subscription payment.

For slow/non-paying clients . . . not on subscription . . . a friendly email reminder that invoice are due upon receipt or 30 days net (spell out terms on invoice). After 30 days we will stop providing services till invoices are caught up.

I have lived this many times over. You will always have clients like this, these are the best ways I have found so far.

1: do not give net 30 day terms unless a client has earned them or applied via credit. Some exceptions can be made for large firms, but many small to medium businesses are terrible about paying. Large businesses might be a little slow, but almost always pay consistently the same, unless there is a known issue.

2: If you do give net 30 terms (or anything more then 10 days), provide a discount for payment within 10 days. This makes almost all larger businesses prioritize your invoice and get you paid. You may think it is minor, but many businesses do this over hundreds or sometimes thousands of invoices and they save significant amounts of money doing so.

3: Make payment details clear within your TOS/contract. For my smaller consulting clients, if their invoice was unpaid after 3 days from the due date I stopped all work and they lost their spot in line for services. So essentially most of those clients had 7-10 days to pay me or I halted all work. I also had it up front that if that happened 2 times within a short period (defined in the contract) that all future work (if accepted) would be prepaid. This was part of my non-negotiable contract terms. For my SaaS product, I used similar terms, we billed their credit card for small/mid sized clients (generally under $2k/month) and if their card was denied or we were unable to collect that months service after 5 days we suspend their account until it was brought current. They typically had until the next billing cycle to do so and then their account was disabled and couldn't be reactivated without talking to me. For enterprise clients on the SaaS product we used invoice terms with a built in discount and a time bomb suspension, it was just typically a little longer as I never had an enterprise not pay.

Employing those three strategies fixed most of our cash flow issues and helped stress levels go down drastically. But sadly, it never fixes all the issues so like others said, no client is better then one sucking up resources, dump them.

Also, I had clients get super upset when their accounts got suspended or we stopped working their project and they went back into the queue. But in the end, it isn't my problem, it is theirs. I would always try to empathize with them and would work with some to help out where it seemed right, but in the end, fuck you pay me. https://www.youtube.com/watch?v=jVkLVRt6c1U

Speak open and friendly to your client that it is important for you being paid on time. I would always call over email a client. You get a better feel on what's going on. If multiple follow up attempts fail, I'd speak more serious and eventually involve a lawyer. You could also explore selling your invoices. Factoring can be a good way to mitigate the cash flow issues.

Just come to Romania. There is a town called Sfantu Gheorghe near Brasov. There really isn't much to do here. You can have all the quiet you want, even more. When I moved here from a big city, it took me a while to get used to it and literally stop hearing quietness. And there's plenty of nature and mountains and stuff.

I was looking for exactly the same thing about 9 months ago and came across this. My girlfriend and I visited and we weren't sure what to expect at all. We immediately fell in love with the place and ended up buying a house there (for under $10k).

The couple who are 'running' it are amazing people and are looking to turn this entire Spanish village into one big makerspace.

Tarifa (ES), has some small 'digital nomad' scene and nature, sea and mountains. Other option is Granada (ES), some of the highest mountains of Europe, good weather but nature/mountains a bit dry compared to Switzerland

Brasov (RO), fast internet (faster than UK), good food, friendly people and more nature and mountains (Carpates) than you can hope for (and bears for bonus points). Also good priced vs Switzerland and nature wise looking very similar, Brasov and surroundings being more unspoiled. With what you would spend in Switzerland you'll be able to live 3-4 months in Brasov in the same conditions.

Croatia!Flights from UK can cost around 10 euros sometimes, you can get a place for real cheap (under 100 GBP per month), beer costs about 1-1.5 GBP in bars, lunch in a restaurant can be as low as 2.5 GBP and life in general is pretty cheap (most people here live on 300-350 GBP per month). You can live on the seaside, on an island, in the mountains, in a city or combination of any of those. Literally, pick any 2 and you can find a place like that.

Pomorie, Bulgaria. Try a quick Google image search and you'll get the picture. Small town colonized since ancient Thracian times with beautiful beaches, a salt lake of unique biodiversity, and magnificent vineyards - quiet even during peak tourist season.

Don't go to Switzerland. Flying into Malaga southern Spain there are lovely mountain areas between seville and Granada, Google el chorro for example. Or east of Rome about an hour or two are some wonderful mountain regions-you might find a hotel near sulmona. Or mallorca, sardinia, sicily all have fabulous scenery, history, lifestyle.

I moved from London to Graz, Austria[0] a couple of years ago. The city has a population of roughly 300k and is surrounded by large hills.

There are some really good universities here, so quite a lot of interesting research happening, and a decent night life (although with a young family I don't get to see much of it).

A car would be useful for exploring the countryside, but a bicycle would certainly see you in the middle of "nature" easily within 30 minutes ride.

Speaking German would help, but not mandatory, as almost everyone speaks some English. If you have your own projects to work on, then you're in a good position. Trying to find employment here, without speaking German, is quite difficult, mostly due to the small population base.

There is an English speaking language group that meets at a bar on Thursday nights.[1]

There are around half a dozen co-working spaces which charge in the region of 20-25 per day, with discounts for monthly commitments.[2]

Transport to and from the UK isn't brilliant. There are no cheap direct flights (some might see this as a positive!), so your options are Lufthansa with a connection somewhere, or train to Vienna and direct on Austrian or Easyjet from there.

In short, it's a nice little city, reasonable climate, good architecture, decent cultural attractions especially in semester, good natural surroundings, but if you're from somewhere big in the UK, like London, it'll seem very, very quiet.

West of Ireland! Ok, I'm biased, I live here. But the scenery is nice, the pace is easy going, and everyone speaks english. It's also not going to break the bank to get here. It's not nearly as expensive here as Switzerland / Norway / Sweden etc. Westport in Co. Mayo is surrounded by beautiful scenery and was voted best place to live in Ireland. Pretty views, nice friendly people and great food. Internet can be slow if you venture away from towns, but most towns have decent speeds.

I Will tell you something I wish my psychology would had told me: go some weeks to the coolest hostel you can. Don't go with your laptop, go just to have fun, meet people, to enjoy your present, that you are fucking alive. In fact if the hostel is good, you will be able to make at least 20 new "friends" almost fucking instantly. You will hear so many different life stories and you will tell yours. This year I went to one with some friends after living a big depression of the same "working" feeling and just by the second day I was feeling "fuck I wish I had done this way before ". I overstayed alone for two more weeks than my friends. I even ended working in and from the hostel and staying for free. Hope it helps you as it did for me.

Life is a balance. This persistent lack of sleep, stress and over-exertion needs to be given back. Your mind and body are trying to tell you something. You need to listen.

Take some time off if you can afford it. Travelling is a good way to get away from everything related to work. No computers and mobile phone.

When you come back, you'll have lots of new perspectives, new ideas and feel refreshed.

I'm not sure where you live, but if you are in the US, try a flight down to central America with a backpack and a good pair of walking boots, keep your mind open, watch your back and you'll have a blast.

The backpacking trail through central America is awesome. Depending on how frugal you are, you can live pretty cheaply.

It takes time to recover from burnout - sometimes months. The best thing for you to do is just let that take its course, and not try to push yourself back to 100%. That will only bake in the burnout, and it'll take longer for your to recover.

So go on holidays, meet with friends, read fiction, find some new hobbies. Whatever gives you pleasure, and isn't work, or an attempt to push yourself.

That'll be the 100% capacity that you did for a while and it burnt you out, right?

No one can work at "100% capacity" forever. You need to rest, to relax, and to do things that aren't work and aren't "productive". That downtime is recuperative and informative. As counterproductive as it might sound, taking time away from your computer to do other things makes you a better developer.

Working at what feels like 90% all the time is better than working at 100% for 6 months and then working at 40% for the following 6 months when you're burnt out.

Just in case the occasional anti-games mentality rears its ugly head around here: whilst there are lots of good suggestions coming up, games are certainly a pretty solid way to relax too.

In the last couple of months I've been recovering from mild-to-moderate burnout symptoms myself, and a lot of how I've been doing that is playing The Witcher 3. It works. (It probably helps if the game you're playing is one of the most astonishing artistic creations of the last couple of years, to be fair.)

The big thing is this: you can't force it. One plausible explanation for burnout is that it's a defense mechanism from your subconscious against excessive delayed gratification: if you're very self-disciplined and work very hard on something that you think will give you rewards in the end, but doesn't whilst you're doing it, then don't get those rewards, after a while you start building up subconscious resistance to doing that again.

It sounds like you're not too long away from the death-march project. If so, just give it some more time of not trying to do things (counter-intuitive and often scary for highly motivated people, I know), and see how you're doing in a month or two.

I am currently in the same position you are in except with school. I love learning but I am burned out from reading chapters on top of chapters and writing "novels". My brain is definitely on strike and the quality of work I am producing is not the best. Not to mention, I am averging about 3 to 4 hours of sleep a night.

I decided to take a break for a few months after this last class I am in. I did not want to, however at this point it is very necessary. I can't wait to just do nothing for a day or two.

I hope you find balance and are able to find some time to step away from everything to reset.

If travelling is not your cup of tea, doing a little creative art work ( or anything that can be done is a short time and have a tangible result to show for it) can do wonders.

One of the causes of burnout is putting in long hours to finish something that later amounts to nothing (because it never gets released or the end product is much below your expectations). All work and no satisfaction.

In such cases, small work that can be accomplished in a few hours can give back the oomph factor and infuse some energy into one's life. Glass painting worked marvels for me. Nowadays I find it fun to just take my time and colour a picture with crayons :) Yep I have kids.

you are like a battery. if you need to work 100%, you also need time to recharge. take a vacation, without laptop, without phone, far away from tech. take some friends with your and just clear your head.

I won't even begin to discuss how horrible of a scam this stuff is. I will speak to the Rubik's cube for a moment though. First off, we know that a Rubik's cube has 43.25 Quintillion possible starting combinations. Any one of these combinations can be solved in 20 moves or less (we know this from a team of researchers who used a super computer to calculate all of the possible moves). So while you could memorize a set of musical cords for each possibility, it would be an insane number of things to memorize. Interesting scam premise though.

At any rate, learning to solve the cube is actually a very enjoyable and relaxing activity that I believe helps my brain, at the very least. There are a number of systems for solving the cube. I use CFOP. With it I can solve any cube in under 30 seconds. Much of it is intuitive with the memorization about 100 algorithms (technically there are 119 total: 41 for the f2l, 57 oll's, and 21 pll's. I use all of the oll's and pll's and only a few of the f2l's. I mostly finish the f2l by intuition). Don't get tricked into buying some neat system for the cube. Ask the experts. You can get all of the algorithms for free online for numerous systems. Grab a cube and just have fun!

A couple of weeks ago, researching options for remote pair programming I signed up to Cloud9... and I was quite (positively) surprised! They give you a full VM/container so you can play with a proper Terminal..

I only disliked one thing.. I couldn't install yeoman for scaffolding some apps.. I don't know why! I'll need more research...

One of the ones I recall seeing (and can't remember) allowed you to use your own Digital Ocean/AWS instance instead of using theirs. I've also seen an old post on reddit suggesting a DIY instance of Codebox (https://github.com/CodeboxIDE/codebox) but it no longer appears to be updated.

I would suggest checking out Codenvy (http://codenvy.com) they recently released a new On-Prem version built on Eclipse Che (http://www.eclipse.org/che). Che has made some big steps forward recently, if you haven't looked into it lately I would strongly suggest taking some time to check it out.

Codio has been my favorite. Very great for web development. I used it for a couple years to program from chrome books!However, their business model has shifted to a more education focus, so I can't say if they'll continue to focus as much on badass web development ide.

Yes, you do always need humans to enforce/interpret the laws. Don't be absurd.

The alternative is kind of like that scene in Robocop, except ED-209 is a judge instead of a robot, it sentences you to death rather than killing you directly (the bailiff obeys unquestioningly), and instead of frantically trying to shut the machine down, everybody in the room agrees that you were indeed carrying the gun, and almost certainly still are.

You ask for a retrial and it takes 1/50th of a second to spit out exactly the same response. The rationale for the verdict is a procedurally generated AST running to 5200 pages, which is incoherent not only to you but also to lawyers and programmers alike. (You are given a copy of it on a USB stick, but no computer to read it with.)

A country where laws are applied with absolutely no nuance, context, consideration, empathy or judgement is a petrifying hellscape. A pretty good Black Mirror episode, in fact.

E: this is all ignoring how awful human beings are at software development.

Bitcoin already enforces practical law in some sense. If you dig into this it all comes down to property rights, which now can be implemented on the net with blockchains. Ethereum attempts to go a step further along these lines, but its not practical yet IMO. You're right, this is a very fertile ground.

There's a lawyer at the MIT media lab named Dazza Greenwood who is working on projects along these lines. My understanding is that he's already working with Boston to get any city ordinances that are amenable to the challenge to also be published with valid code of some sort. He has really worked through a lot of the issues and is really open about talking on the subject.

The formalization of all law into code fully is probably not fully achievable in the near term since there are many component parts of legal tests that are not really deterministically resolvable, and I think it would be a hard sell that justice is properly served if a call to rand() played a part in adjudication or sentencing.

I think a more profitable way to start integrating code is within the realm of contract law. A contract described in code has some advantages over even a well written legal prose contract: it's testable, components could be more easily reusable, in some circumstances it could self-monitor for breach, it's easily diffable. Such contracts could be made to be more transparent (assuming good faith and code-literacy) and less prone to purposely unenforcible clauses etc (law linter?). Some such contracts might be progressively abstracted into a genuine and good faith "standard contract" for [thing]. Of course now you need two lawyers who both can also program comfortably in the same programming language and I have to imagine the first judge to interpret such a contract is going to be pissed as hell (or more optimistically intrigued).

As far as starting from scratch all the time, we don't really do that. The US legal system was basically just forked from England at first, and within the US we have a lot of model laws that are more or less universal (look at the https://en.wikipedia.org/wiki/Uniform_Law_Commission), but we do sometimes have some weird holdouts (pretty sure Louisiana still uses some Napoleonic code instead of UCC stuff).

Edit: sorry for the wall-o-text, also just thought of IoT/semi-autonomous agents that might require the autonomy to decide whether or not to enter into a legally binding agreement on behalf of the operator without necessarily knowing ahead of time the counterparty or the exact terms. It would be a lot easier for these kind of bots if there were some generic contracting convention or DSL or something. I'm thinking trading bots and maybe of an intelligent shopping bot.

Lots of very small companies will happily do 1099 contracts without trying to control your time at all. The hard part is finding those contracts, which usually come through networking and existing clients.

You might try emailing companies offering to work as a 1099 contractor, which companies sometimes like because it means you're easier to fire and don't get benefits, etc.

Most companies want a very serious full-time commitment and will be disappointed if you don't work there for at least a few years.

Forgive me, I'm not familiar with all the us tax/irs related codes - is "1099 contractor" similar to Australia's "sole trader" - where you are registered as an individual doing business and can therefore issue tax invoices like a company?

I believe you're overestimating what it takes to get a job at Google (or Facebook or whatever other company you might be thinking of).

As someone who's approaching middle-age and has done a wide variety of interviews, it's my experience that large companies like Google have less age discrimination than trendy startups. If you don't want to work at Google because you don't think it's a good fit, I think that's a totally valid reason. But if you don't think you can get a job there because you're too mediocre at actual programming, I think you're simply wrong. For all I know, you actually are a mediocre programmer. That doesn't matter.

It's not possible to be too mediocre a developer to get a job at Google because the interview process doesn't measure how good a developer you are. It is possible to be too mediocre at whiteboarding algorithms and answering the brand of design questions they ask, but those are learnable skills.

I am 47 and on disability. I became disabled in 2003 and I get mentally ill in 2001. Had a hard time finding work after I became mentally ill. Also I was old, and ageism came into play as well. When I applied for jobs I was told I was overqualified. That is if they bothered to reply back at all.

I think when you get older in IT and you don't make it into management positions, it is harder to find work. Most companies want recent college graduates because they earn a lower salary and they have all of the latest theories still fresh in their minds.

I don't see this being the case in bigger companies in the uk e.g. government, health, utilities, finance. It will definitely help if you have some business specific knowledge too. Try to match this to where you live I'm in the Midlands and there are a lot of utilities and retail companies who can't get enough people, same with banking and finance in London.

Technically, macro was a crack. Not a hack. Hack should make things; Not break things.

But, I think you are right. Hacks have gone through the hype cycle. When every programmer wants to "hack" to be in the elite circle, they tend to push the boundaries that are grey -> unethical -> unlawful. It's like those greedy bankers - except that they want to look cool; instead of money.

What you are suggesting is that YC become more risk-averse (e.g. take less risks on founders that might be too aggressive).

If YC ever fails, it will be because they stopped taking risks, not because they took too many. For every 5 companies that rocket up and flame out spectacularly, there'll be a company that rockets up and stays up.

When I get like this I can write code and design systems as easily as breathing, but only for short stints, and once I go to bed and get a full nights sleep I'm done for a couple days.

It's like hyper vigilance but all I see is the computer, it's awesome (probably unhealthy), but I can't turn it on and off. There are triggers that usually work though.

If I stay up playing past 10pm it almost always turns on, and all of a sudden it's 4am and I've got standup in a couple hours, but I got a shit load completed.

I used to be able to take a lot of uppers, like smoking and drinking too much coffee/red bull, and that would stretch it out, but I can't do that anymore because I want to live past 40.

So now I get the effects over shorter periods of time, and really only when I stay up late.

I also find that when I'm really exhausted from lack of sleep, it actually kicks in faster, but when I do that, I just end up sleeping all weekend because I invariably end up working on something until 4am every day.

I'm still trying to figure out how to attain that extreme level of focus at will but it feels like it would require me to stop focusing on computers/electronics to try to figure it out, and that simply won't do.

2. Not possible while coding at work. That stuff is just too random and boring to be exciting.

So I suppose to induce "productive mania" you could:

1. Get big chunks of free time.

2. Do stuff you are excited about. Do them because You want to and not because of some other goal (like getting money, attention, rewards etc.).

I manage to get that for very small scripts that I program in order to get some small things done for me personally. Those things (I hesitate to call them tasks or projects) are always done quick, work like a charm and do exactly what I need. It gives me a good feeling.

If you're working on something hard, and you're working on something you care about, and you're pushing the limits of what you're capable of (but stopping short of being overwhelmed completely), you can do this.

But most of the time, several of those factors aren't ones you can control. The reality is that we have to work on mundane shit that we don't care about pretty frequently. Learning how to do that is much harder than learning how to be maniacally into something insanely cool.

The main point of stock options is a tax hack: it's a way to give someone something (a promise) that has a face value but no taxable value. Generally speaking, you pay taxes on stock options when you exercise them, not when you earn them. The difference between strike price and market value at exercise time is incidental. I don't think stock options are a good analogy here. Maybe you want 'ad futures', like 'pork belly futures'.

Im using YNAB - You Need A Budget. I can honestly say its changed my life. I would definitely recommend signing up for their 9 day email course. Ive been using it for about 5 months now and its made a huge difference to my life.

I do budgeting in Google Sheets and use Mint for historical reviews. I recently helped my gf go from minimal money management to proper budgeting, forecasting and tracking, so I learned from experience what steps can be helpful to take and in what order to help understand things.

I think if you earn less than or equal to what you spend, the most important information is where your money is going so you can be aware of what is happening. If you earn more than what you spend, you want the same thing plus an ability to save and invest in something and track that.

I would suggest starting with something manual (ie. Google Sheets) and then automating once you see how everything comes together. Do things that don't scale (ie. enter every transaction) until you feel more in control, and then automate with Mint or similar tool for European market.

My primary bank account have some Internet/mobile banking features where you can see your current spending, some prediction till end of month.

It's just simple overview because I have more bank accounts (due to security reasons). Personally the best way how you can track your spending is to create own customized reporting system. It will require tune up at the beginning but it worth. At least you will learn how to think about entire process and your spendings, which information is valuable and which not. You will be able create some additional features (like spending categorization).

I have more personal "tracking tools" (spending, time tracking, writing, idea etc.) written in excel, some in power-shell, some of them in HTML and PHP.

Other point of view is your psychological attitude to money. If you are responsible with spending your head might be enough. From my experience, money invested to food, bills and mortgage are "sunk costs".

Detail mortgage tracking is different story. It is always good to know how much you can save with different payment attitude.

I'm using https://www.simple.com/, which is a debit card but really a PFM (personal finance manager). I have a ton of goals set up with automatic daily "savings" that move a small amount of money into my goals (ranging from "haircut next month" to "Portland trip"), and Simple calculates how much to move each day based on the amount I need and target date the money's needed. Pretty granular, and I feel pretty in control without any spreadsheets or charts.

I highly recommend manually tracking in spreadsheet in addition to whatever automated tool you use. You can start with a simple, date, merchant, thing, and amount columns.

I used to use a spreadsheet. Then came Mint, and I thought my days of manual work were over. But then I realized that now I was less careful with my money. I would check Mint daily, I would look at each transaction but by removing manual step of inputting amount spend, I sort of got immune to big or a lot of spendings.

Now in addition to Mint & Personal Capital, I also record each transaction almost daily. This way it is very hard to ignore multiple transactions in a row for dining out or buying junk etc.

Also if Mint goes away or they start charging you will still have your spreadsheet.

In my mind mostly. I keep track of the big pieces - the university debt, the stock portfolio, the bank account balance. On the day I get paid, I take out a chunk to repay debt, and take out a chunk to move to the portfolio, and whatever I have a left, it's a game of making it last. I keep a lookout every week on my expenses and make sure I have enough to last to payday.

Tried many alternatives, from GNUCash to MS Money to various iOS apps to heavily smart/complex spreadsheets to solutions in the local Brazilian market (GuiaBolso and Organizze).

GuiaBolso is most of what I use today, beucase it works like Mint, auto sync with banks. In Brazil, Mint does not work and getting statements automatically is a major PITA, so much that GuiaBolso is a major, funded startup, relying mostly on the auto sync feature.

Even then it's a bit ugly, they likely use web scraping, you have to share your internet banking password with the app, and some banks go the extra mile to prevent scraping, such as requiring a one-time access token (time generated) each time you want even to check your balance.

Good thing is, in most major banks, your "internet banking" password is a read-only one, since you need a second auth step to move money in any kind of fashion (either by entering the plastic card PIN, or by authorizing with a QR code from a previously-authenticated smartphone)

It also attempts to autocategorize your transactions using black box magic (likely by your own historical categorizations + heuristics or some degree of machine learning as a catch-all net), and it gets most things right (especially credit/debt card spending, where it gets like 90% right), so that's a good start.

While it has nice features, it still doesn't do all I want. In pretty much every solution I tried, there was always something that was not quite how I'd like it to be.

So I decided to roll my own - I scrape data from GuiaBolso to an sqlite database, mix it with manually entered data (which I grab from sources where GuiaBolso does not reach), and built some Python scripts to fit things into my own category structure (GuiaBolso does not allow subcategories), and crunch numbers for more sophisticated analysis.

I did this because while GB's graphs cover some basic needs, there were still things left unanswered - how much do I spend per day of the week? Per day of the month? Only in a certain category, to avoid odd transactions interfering with the analysis? Am I spending more in large purchases from time to time, or consistently?

There's no way GuiaBolso will offer all of this, and it also does not offer any kind of data export (I would guess that their current business model depends a lot on data lock-in).

I also ordered a NuBank credit card, a smart-ish credit card, where everything is done via app or otherwise digitally - spending tracking, payments, order details lookup, etc, which I plan to try over the next few weeks and maybe integrate into my workflow somehow.