The best way to get people to actually move is to create some competition. Seek out other investors, and when they're ready to invest, circle back to the original folks you were talking with and say "We've had some interest from other investors, and the round is closing NOW [or some short deadline like a week]. Do you want in or not?"
I guess it's pretty easy to say that and a lot harder to actually do it though, so good luck!
But I see your point that the context is subtle and maybe some people would miss it and still click.
Just my opinion too, but HN is a uber simplistic interface that isn't following a lot of current trends, but it also isn't really designed for the consumer level user either.
Why don't you work on how to bring the new open MS technologies into your area (probably something like back end systems at a credit card bank, for instance)?
With a 15 year .NET background, you'll get taken more seriously than a developer who just graduated from a 10-week MEAN bootcamp, for instance.
I find an SSD helps a lot. Visual Studio runs fine until I install ReSharper then it absolutely needs an SSD and 8 GB minimum of RAM.
> How about using text files for configuration rather than overly complex APIs (WMI Providers)?
The Windows Registry is more akin to /etc than WMI is. The Windows Registry is clunky, however at least you only have a single interface to program against rather than one per configuration file which is nice. Even XML doesn't resolve things quite as nicely as the Windows Registry.
Do I wish the Registry was better? Sure. Organisationally it is horrifying and there are some strange bugs and workarounds. However I think /etc style text files are a step backwards.
> How about a proper bash shell (powershell is no replacement)
I agree Powershell is not a replacement for bash. It is in fact one of the best command line interfaces ever designed and leaves bash well in the dust (although bash is a bad example of the best the unix world has to offer anyway).
> how about a proper SSH client?
If you wish to use Linux, BSD, or OSX the more power to you. There is a lot of great tech' around on those platforms. That being said, your post reads a bit like a troll, you don't seem to know a lot about Windows and seem to be spouting very bland generic "benefits" of UNIX-style operating systems out of context.
Almost like you read someone else say these things then just decided to repost them to get a rise out of people? Some of your complaints (e.g. Powershell sucks) are pretty laughable. As someone who is quite familiar with both Linux in particular and Windows, it is a hard complaint to take seriously...
Like you, I am limited in some ways because I have kids in school, shared custody of my daughter and also really enjoy where I live, so moving isn't really an option. To make it work I do a ton of remote work and collaborate with people from all over the place.
To get started, just release some simple things into the wild on GitHub or pick your platform. You could write your own tutorial on learning node doing different common tasks, like reading files, writing files, network communications, API definition, project structure etc. It would serve two purposes, you learn how to solve real problems via node, and you help others with that same transition. You could even do the tutorial idea but use iojs (https://iojs.org/) to show how it differs etc. People would like that and you would be learning something of value.
That being said, with the announcement of ASP.NET vNext and the open-sourcing of .NET Core, I've decided to double-down on the Microsoft stack (installing vNext, learning F#, writing more apps in ASP.NET, etc) since I'll eventually be able to develop ASP.NET apps in OS X, with all of the tools I could ever want.
Also I would look for positions with a well-funded startup or a small company (opposed to a large company). They are the best bet for getting to use cutting edge technologies while also allowing remote work, in my experience.
It's not easy, but build a few apps, starting with the trivial and then increasing in complexity.
Is there a node or open source users' group near you? If it is a major city, the answer is probably yes.
Go there and ask folks about node jobs.
There are some software best practices that can solve a lot of these issues. Years ago I began to espouse DevOps principles. Those principles keep people from being there all weekend and all night. High levels of testing and high levels of automation really do help and make a huge difference in quality of life for engineers.
I can hear the objections now. "I am already working nights and weekends, how can I add more to get tests and DevOps in place?" or "my company won't support it!" or even "we have some of that..." Well, if you are up all night for a release, if you are there on a weekend fixing something that is broken, if you are constantly on call and exhausted, you don't have enough. Just do it one step at a time and you will find that you will spend a lot less time fixing things, being exhausted, and being frustrated, and a lot more time making new features for your employer. It's a skill that moves to any environment and any company.
Chin up friend, and good luck!
Now, I will only put in all my nights and weekends if I am at least a 50% owner in the company.
I work on employee leave policies with companies, and we constantly struggle to balance these needs. While companies have different needs, I think that all companies need to listen to their employees.
If I may pick your brain, what would a reasonable policy look like at your company?
I can gladly play the role of the worry wart employer and see if we could flesh out a policy that would work.
The standard 40 is more than enough for me, in-fact too much.
Ideally work 40 hours and then spend those other 20-40 hours on building something for yourself, taking a second job, or just relaxing and enjoyment.
If this is the 'American' way then try emigrating to Europe!
The worst part is probably the fact that I got a raise when I stopped caring about the company altogether, and took 2 month for a 15 days job...
Take your nights and weekends.
x = "*a*"
",a,".split(",") #=> ["", "a"]
Think about what's necessary when splitting up a row of CSV, say (or even some space limited logs or configs). You want that first 'missing' value to be represented in the output as it affects the position of later values. However, you don't need the final missing value represented as it has no significance - it's merely a trailing null value.
Also remember that Ruby has its heritage in Perl with methods like this, and Perl behaves similarly:
perl -e "print join(':', split('\*', '*a*'));" #=> ":a"
x = "yay"
=> ["", "a"]
I'd consider shipping a bare bones version of the back-end under MIT, letting people spend their own two weeks getting one ready if they want to have it more useful in production, or give them the option of paying $500 per year for your back-end. That's an easy, easy call for a lot of companies to make.
Just to set expectations: just OSSing your thing is not going to cause the world to beat a path to your door. You're going to have to go bang down doors to get this adopted, whether it is 100% free, 100% paid, or some combination of the two. Unless you put in the marketing and "sales" work, you will probably build no community, receive no buzz, acquire no press mentions, and get no meaningful support from other developers. Be ready for this, because three months from throwing most projects on Github you can expect a deafening cacophony of absolutely nothing at all unless you find the people it solves a problem for and, with the best of intentions, shove it down their throats.
Metafizzy's Isotope goes a very similar dual-licensing way: http://isotope.metafizzy.co/license.html
Isotope's author has written about how commercial support has worked for him in his particular context, search for "support" on his blog archive: http://metafizzy.co/blog/archive.html
While an MIT and BSD license is (among other things) good for monetizing on consultancy (... not easy for a one-person project), a GPL-including multi-license may additionally allow to monetize on third party modifications of a software component (... that's way easier for a one-person project).
If someone sees a fallacy or gotcha in my monetization reasoning, please comment.
The conclusion I'm leaning towards is that the Saas version should, on top of the hosting/maintenance, offer some distinctive features ( it depends of your product, but on an Saas model, your architecture can be more complex than a Backend/Frontend/DB architecture, thus allowing more advanced features ).
In my view there is three layers, that could be seen as three steps ( but maybe I'm wrong ) : open source ( great for WOM if well managed, great to harden the software ), enterprise-behind-the-firewall license to make recurring revenue and build a sales pipeline, Saas once the architecture is stable enough to handle hundreds/thousands of customers with acceptable costs of operations.
Someone can take your code and set up in competition to you using the OSS version, just changing the logo. But the software is at the end only 30% of a company. What makes a great company is how it evolves with its market to serve and nurture better its customers. Economy is not about selling products, it's about exchange between humans. The real product is in the experience ( the software, the tone, the customer service, the email, the documentation, the ads... every little byte, pixel, sound that your company emits ). A company that steals your OSS and monetize on it without making it a new experience is just like a guy around the corner selling Rolex replicas.
We have open sourced 95% of our code, which gives people a really great product they can install on their own servers. Along with our hosted version, we have a premium self hosted version with a few things that only the big users would want. I would not personally want to build my business around support/contracts as it is really pretty close to being a contractor.
We were already an established company before we open sourced so I can not speak for how many users it got us. I don't think its foolish todo but at the same time it is not going to make your business.
Be aware open sourcing will add extra burden to everything you do. But starting open source is going to be easier than doing it retrospectively.
discourse.org started life open source and they are doing very well but have some big hitters and finance.
There are many, whether it fits depends a lot on the product but this open source first, business second approach is definitely not new. See for example MongoDB, WordPress, Vanilla Forums or Discourse.
Or here: http://en.wikipedia.org/wiki/List_of_commercial_open-source_...
And see also: http://en.wikipedia.org/wiki/OpenSaaS
It was originally started as an internal tool at Disqus. Its developers were able to open-source it, and spin it off into a side business. The developers then moved on from Disqus to other companies but kept getsentry.com running till it was profitable enough them to go full-time on it.
I'm using the open-source version as part of a solution at $dayjob. So how does this benefit getsentry.com? Well first of all, I'm talking about it here. They could also potentially sell my employer a professional services contract if I needed some level of customization that I can't do myself. Finally, I've contributed bug fixes and code changes which benefit my use cases, but also make it a better product for other sentry users.
As an aside, the sentry developers are great to work with. Very responsive to issues on github and they seem to be available on the sentry IRC channel almost all the time.
 http://blog.getsentry.com/2013/07/17/sentry-at-disqus.html and http://stackshare.io/posts/founder-stories-how-sentry-built-...
You may want to double check on which license is best to use in this scenario, but it definitely is possible to grow a business using it.
Their software is open sourced and easy for anyone with a server and some technical knowledge to get up and running. They offer a paid for hosted product which is reasonably priced and offers automated updates.
Here's a report on their progress in 2014, as you can see their model is working very well for their product.
Open sourcing the wordpress blog platform? Sure that makes sense, the target audience for wordpress are largely technical (to a greater or lesser degree), and want to see what they're putting on their servers. More importantly they want to customise it without limitation.
Open sourcing a productivity application? Hmm, not quite so clear cut. If the majority of your users are technical that's good. But are your users going to want to fiddle with it to the extent that they want it open sourced? I'm really not confident that they will unless you know something about them that I don't? In other words, what is the benefit to your customers in your app being open source?
To answer your other questions...I don't think that you'll get more press coverage about your project just because it's open source. Open source isn't a new thing.
My personal view is that I would launch your app paid for using one of the standard pricing models. See if you can gain traction on the benefits of the app alone, rather than trying to put an open source twist on it at the outset.
Odoo (an all-in-one platform for companies) has been having plenty of success using the open source model. There's a community of partner companies which contributes bug reports, fixes and modules, and builds upon the base platform, and then when selling those solutions to other companies, those contracts often include an yearly support fee for Odoo (the company) itself.
Regardless of the technical merits of the platform (I think it's actually pretty decent, but some disagree), the business model has been working. Some of the clients using it for core business functions include companies with revenues in the hundreds of millions, as well as official organisms.
Odoo (the company) has also recently raised $10M from European VCs.
Additionally, I think it depends on how likely your clients are to use that code, IE the model of your business. For example, if you have a time tracking software, a good portion of your clients are probably not strong technology companies. In this case, open-sourcing it, while continuing to develop it, could create an excellent open-source project that is maintained through paying subscribers.
A few examples:
OpenStack, is a huge open source cloud operating system. Rackspace runs on them. They've fostered a huge community, all through original backing by Nasa and Rackspace. Essentially, OpenStack is now used by Rackspace to fund their for-profit business, while OpenStack is being actively developed by thousands of people.
Sidekiq is an background job processor, that sells a pro version on top of the open source library. This pro version provides additional user functionality at a cost, allowing funding for future development of the open source library.
Essentially, both these platforms use open source to sustain for-profit businesses, and both had a long term plan for why they wanted to open source a big part of their business. While I think a lot of planning needs to go into open sourcing it, it's definitely sustainable and doable.
 https://www.openstack.org/ https://wiki.openstack.org/wiki/Getting_The_Code http://en.wikipedia.org/wiki/OpenStack#History http://sidekiq.org/ http://sidekiq.org/pro/
The big risk with your suggested approach is that you have no defensibility as there's nothing stopping someone else offering a hosted version of your software. Because of this it's hard to maintain the high-margins typically required to grow a software businesses.
Open sourcing your product also isn't going to magically make it more popular; unless there's strong reasons why a customer would prefer an open source version (i.e. if you're making infrastructure software which you're asking your customers to bet their business on) it's unlikely to have a significantly greater marketing impact than other freemium strategies.
It sounds like what you really need is a go-to-market strategy. Most SaaS is sold through traditional online marketing (ads, seo, whitepapers, etc.) and sales and those are probably the main options you should be evaluating.
Ask your self,Do i ever heard for such story ?
Also if you open source your code and offer customers a full export of their data you have two advantages over closed source SaaS: Customers do not need to worry about vendor lock-in. And they can depend on being able to continue using your software even in case you ever go out of business.
I would argue though, that many of these successful companies are more platform providers than SASS.
We have developed for a few years a "more than email" server that we have already licensed to one major customer.
The open source or not question is one main right now, and until we decide, we have prepared a free to download offer based on Docker. If you're curious: https://github.com/MLstate/PEPS
We haven't really launched yet, but think that open sourcing (using for instance the AGPL license) might bring:
- more visibility,
- more confidence for the customers who would buy support and maintenance instead of licenses,
- the opportunity of creating a community (if not on the core product, at least on extensions)
- the loss of a few potential customers that would just use the open source version instead of work with us.
Is it likely someone would try that in the English-speaking market? I just doubt it. Technology that someone else is using and improving but also made available to you will never be a competitive advantage.
+ An open-source version that folks can download, install, and trial is a great way to get your software in as many hands as possible. However, that's also more work for you: if folks download your software and it doesn't install / has bugs they can't troubleshoot, you're providing a very bad experience, and that will reflect badly on your commercial offering.
+ Research your market first. In our case, it's increasingly difficult / unpopular today to provide developer / IT tools that aren't open-source. In other words, being open-source is becoming a requirement.
+ Open-source offers reassurance to enterprise customers who might not have considered your product otherwise (you're small, and they don't want to tie their success to your survival, but if your product is open-source, this concern is more limited). There again though, it depends on who're selling to.
+ Our product hasn't been forked / used by a competitor. This wasn't really ever a concern. Note that we're following a model where we do open-source releases on a 3/6 month basis (we don't develop in the open); that's a reason, too.
+ We did lose several prospects to our own open-source software, but we also acquired several customers who transitioned from the OSS edition to the commercial edition. the only incentive at this time to choose the commercial edition instead of the open-source one is "support and more frequent updates" (which is good, but not always enough to get prospects to sign you a check). Before you decide to open-source your product, think very hard about how you'll differentiate your open-source and commercial editions (options include delaying updates, differentiating on features, support...).
+ Most of our revenue is now coming from the commercial single-tenant edition, whereas it used to be the SaaS edition. This happened after we pivoted to the enterprise, and made it much easier to deploy your own Scalr installation (it used to be a pretty daunting task).
+ We're not getting that many contributions (probably largely because of the model I mentioned above), and because so far we haven't had the energy to encourage them. In other words: just putting your product out on GitHub doesn't mean some folks from the internet will suddenly start working on it for free. That just doesn't happen. We did get a few very-well-thought-out bug reports, though!
Ultimately, I'd conclude with saying that open-sourcing your product is a solid way to get more attention. However, it's also more work: you're creating a competitor (your own product) that you must somehow beat in deals, all the while making sure that that competitor is solid enough that it doesn't turn people off your product.
Hope this helps!
You can reach me at email@example.com if you have questions you think I could answer!
One last thing that isn't stricly-speaking sales related is people. We have an open-source culture here at Scalr, and there are employees (including myself) for whom that matters a lot.
It was politically contentious for SMC to be closed source, due the connection with the Sage open source math software project (see  for a big thread attacking SMC for being closed, and  for a rebuttal). SMC was closed source for years, primarily because my university commercialization office wouldn't work with me unless SMC was closed source.
In December 2014, I discovered that SMC had received some development support from NSF grants that had explicit requirements that all code written under those grants be released under the GPL (very few NSF programs have open source requirements, but the SI2 NSF program recently added them ). As soon as I realized this, I complied with the conditions of those grants and open sourced everything. This has had no real impact on SMC development. This didn't surprise me -- many of the other responses in this thread express the same expectation. I wasn't surprised because I started the Sage math software project back in 2005, and grew it from 0 to hundreds of developers (over many years), so my expectations for what it would take to get useful contributions to SMC were realistic -- massive, insanely hard work over many years, many workshops, writing lots of documentation, recruiting developers, arguing for why my project is better to contribute to than the many competitors, etc. Building an open source project is like building a company -- you have to recruit and train every new "hire" (contributor), build up process, sell a vision, etc.
My situation is unusual, since I am balancing simultaneously being both a (tenured) mathematics professor at a university and founding a company. Technically the university can assert ownership over anything I write using university resources (see ). However, due to the viral nature of the GPL, it doesn't matter who owns what I write, since I (and everybody) can still use it. I didn't want to use the GPL for SageMathCloud (I much prefer the BSD license), but technically I have no choice.
 https://groups.google.com/forum/#!topic/sage-devel/ojLOJaxIh... http://sagemath.blogspot.com/2014/08/what-is-sagemathcloud-l... http://www.nsf.gov/pubs/2014/nsf14520/nsf14520.htm http://www.washington.edu/admin/rules/policies/PO/EO36.html
The first thing it depends on is where one is wandering on a spectrum from Coca-Cola brown beverage trade secrets to full on Stallmanism. People can and will disagree about "the right thing" using plausible arguments based on reasonable assumptions [this doesn't preclude implausible arguments based on unreasonable assumptions or the other corners of the 2x2 grid]. We all decide what sort of person to be.
Since this is a common conundrum, Spolsky has encountered it and being Spolsky has clearly thought about the issue. My understanding, and he can correct me if I'm wrong is:
1] open-sourcing should be done because it benefits users. 2] open-sourcing doesn't always benefit users.
Wasabi is FogCreek's VBscript compiler. It performs a specific task. That task doesn't require a math library so Wasabi doesn't have one. The only people who need it are Fogbugz customers for the purpose of using Fogbugz. They don't need Wasabi to have a math library. [wasabi]
The compelling rationale for not open-sourcing it is that it basically sucks as a compiler for the way people usually use compilers. In the very limited use case of Fogbugz, it doesn't suck. It's even good enough for Spolsky. If someone wants to learn about compilers The Dragon Book is better. If they want to learn from example code, there are much better compilers in open source. Is the world better if using Wasabi in the wild just plain sucks and studying the source code leads to poor conclusions about writing compilers? Probably not.
Why not just open source all of Fogbugz? It uses technologies which are licensed under terms incompatible with various open source licenses. The same is true of StackOverflow. They both have free as in beer options. It's a more generous business model than used car lots operate under.
Since you are asking the question, you're in the land of utilitarianism. Utilitarianism is hard because it requires weighing potential harms against potential benefits. That's engineering for you.
I think the world is better for what StackOverflow provides right now than it would be if it provided less but was entirely open source. The pace of improvements that not having to patch bugs on other people's systems allows outweighs the benefits of it going the route of PHPbb.
If you make a program for interconnecting element together (by definition a complex system) it can yield chaotic behaviour.What will be important will not be your code for doing so, but your setup.
You may not want to spread your specific setup, but you can release good brick of your code that may benefit from externalities (the more it has adoption, the more it enforces your position on the market). (virtuous cicle)
You can also release on purpose shitty free softwares blocking the devs from easily be able to use their platform if there are not pro of your complex solution... like systemd (vicious circle, the more it is adopted, the more you block competitors)
To answer your questions
1. Popular opinion here on HN is to charge by day or per project (considering what value you bring to the table). I found it hard to implement so I found a rate that was reasonable for the kind of lifestyle I wanted. This is an exercise you have to do it yourself. For me I figured out what was my necessary expenditure (bills + insurance, what was enough for me to keep myself happy (books,movies,outdoor day/weekend trips etc.). However as soon as I get my head around actually implementing popular HN advice I'm going to follow it.
2. I started with oDesk and so far have only got 1 project out of it. It was only 3 weeks effort. There is too much competition there and it is hard to stand out AND get good rate. Rest of the work I found through my network. I let everyone know I was freelancing, reached out to everyone I knew and asked if they have any project or any of their friends needed any help.
3. Following things helped
a. My spouse was working until recently so it was comforting to know we will at least have food on the table and pay mortgage. If you don't have any support I suggest build at least 6 months savings first before jumping in or get a contract first.
b. When I was not working I was either constantly searching for work or working on side projects.
c. I had a pretty good previous work experience to bank on but if you don't have any make sure you have some sort of portfolio to showcase your skillset.
2. Stay away from oDesk, elance, Freelancer.com, etc. You won't get quality clients that way, and you'll constantly be competing with some guy that only charges $8/hr for "expert" level web development. Gun.io has been very nice for me, and going to networking type events in your area could help too. The majority of my business comes from people that I've met in person at an event like this.
3. Make absolutely sure that you bill for each and every hour you work. No freebies. You're running a business, not a charity. Get paid before you deliver the final product. Always have a contract. ALWAYS have a contract. In most cases, don't let your clients dictate technical solutions to their problems. They're the client, but you're the expert.
Regarding a contract, you don't necessarily need to know legalese. Putting the terms in writing is adequate. See https://github.com/cweagans/Contract for an example. IANAL, YMMV, etc.
Get clients through friends, co-workers, previous employers and by going out and meeting people and companies. Start a blog or contribute to open source projects etc. That always helps your credibility and also helps you get recognized over time, but it doesn't happen overnight.
1. In the U.S. most contract placement agencies will charge between $75 and $135/hr per person, except in some of the higher cost locals where it will be more. You are competing against them regardless of what people say, simply because companies will talk to these agencies when looking at projects only requiring one or two people to do over a short period. You compete against them not by lowering your rate, but by offering a solution not a warm body. Overall, I see rates typically from $100-$185/hr in the South East, some try to get $225-250 but reality is I see those people losing deals and/or constantly discounting their rate to get work. Your rate should constantly be going up as you get more experience and successful projects behind you that you can point to, but you'll find the point which it is in balance with the market. Also, discounting your rate is generally a bad idea, don't do it if you can avoid it. A couple of clients have told me before that they think a discounted rate means you know you are overpriced and are just looking for a sucker. Not sure I totally agree, but I don't discount my rate because I never really have a fixed rate, I will vary it by the job, duration etc.
2. Avoid these sites, unless you are outside the US in a low cost nation where you can live on $1-2k USD/month. Use friends, co-workers and previous employers as a first start and go out and talk to people and companies. We have found work on Craigslist a number of times where companies were looking for a "coder" to write their project. I don't get turned off by poorly written ads, or obviously non-technical people seeking help and will call them up and discuss their needs. I have walked away with $40-70k deals this way when some friends looked at the same ad and said it was a waste of their time to call. Fuck it, call them the worse you find out is the job isn't worth your time but you can still use practice on your sales pitch and interviewing potential clients. I have a client right now that I found on Craigslist and called up, that contract ended up being roughly $60k over the next few months, not bad for less than an hours work searching craigslist and calling him up. Of course it took a couple of weeks to get the contract in place etc, but well worth my time.
3. There are a ton of things you need to know, get yourself insured, always have a contract with clients, get paid by the hour, day or week. Demand payments be timely and stop working when they aren't. Small clients I make pay weekly or at worst NET 10, medium clients I go NET 10 and up to NET 30 the larger they get. Accept you will get screwed over a few times with clients not paying or paying slow, just learn from it and try not to repeat those mistakes. Set expectations clearly, and avoid clients you feel are going to have unrealistic expectations, no matter how desperate you are. Don't take on more then you can do, it will just piss people off (rightfully), at the same time, don't turn down work, just schedule it for the future when possible. Don't let small clients drag out the project or let scope creep in. Every client will try, but small businesses seem to be the worst, they will call/email you constantly and always want more for free. Don't let people devalue your time by getting your time for free, you don't have to be rude, but make them respect that your time is worth money.
Basically some ISPs are 'reclaiming' unused/unadvertised IP addresses that are used by Gov Agencies (Military and Security Services) to use on their internal networks.
Nothing will break (at the moment) because those networks are not accessible from the internet, and also not routed anywhere, despite being allocated.
One of the big things I learned is symmetric C- and M- for Emacs.
I like the MS Natural Ergonomic 4000 because it is designed to sit in a person's lap. I can't describe how much better this is than VT100 knockoffs. And it's not absurdly priced [from a price anchoring perspective].
I suggest you create a simple financial plan. In Excel or Google Sheets, put months along the top, and each line item of expense along the left. Do it on a cash flow basis (i.e. book revenue in the month when you will receive the payment, not when you make the sale).
You can then total up each column to see your net cash in or out in the given month.
Then think about what could make you need more cash. Need to hire some sales people? Possible delays getting paid by customers? Need to scale up infrastructure before the related revenue will come in?
If you want to do this 'properly', all of the numbers in the main body of the table will be formulae, driven by a small set of assumptions (start dates and salaries of key employees, starting # customers, customer acquisition rate, monthly churn %). Then you can play with these assumptions to find your pessimistic and optimistic cash flow scenarios. This will tell you how much cash you need and when, for the most-cash-hungry scenario.
Then work backwards based on how much time you think it will take you to raise money, and when you can afford to spend the effort to do that.
If it's the first time you're putting together a monthly budget or financial model, then start simple. Don't worry about highlighting every input cell in yellow. Just make sure the big numbers make sense. Make 2-3 copies of the sheet (one for each scenario) and adjust manually to something that looks reasonable to you.
Investment makes sense (and you'll get a much better deal from investors) when you have recurring revenue AND you have to grow fast to the next stage (e.g. from a small team of 2 to a team of 5-10, from a few servers to many, from a local office to globally, from self-serve online sales to face-to-face B2B/Enterprise sales for which you need sales people etc.)
In short, evolve organically and delay outside investment until absolutely necessary for rapid growth.
Maybe you don't need investor money. If you don't need it, you probably don't really want it. The purpose of a business is not to raise money from investors...well maybe if you're running a con, but that's another story.
I would recommend bootstrapping as long as you can. Then take investment in the future only when you really need it to scale things up, bring on employees, roll out version 2 of your app.
The longer you wait the more likely you are to maintain a larger percentage of the business when you do take funding.
Good luck in 2015, sounds like things are going well.
Or you could always just turn your server into a little bitcoin miner. Probably won't make any money from it, but it might be fun to do regardless.
Now, on a more serious note: you could host your friend's sites (and probably can do a split of the payments), use it as a host for various tests (if you are a developer).
If you are living in a non US country you could make an instance in US then use it as a proxy to access various services that requires you to be in US (hulu, netflix, etc)
Run a dedicated server for whatever games you could manage with 512 mb ram.
There are also a number of coding-challenge sites where you can show off your skills and get ranked, like codeeval.com
Both these types of scoring systems are just rough heuristics though. Since full-stack development uses a lot of "soft" skills like organization and creativity, you'll never really get the full-picture from these kinds of objective battery tests.
1) if I understood correctly, the design of Angular has some inherent, and rather large, performance hits.
2) Google isn't dogfooding Angular save for one project. Facebook seem pretty serious about doing all new developement in React.
3) the specific kind of developement they're doing is similar to the one I have to do right now, viz. taking an established mostly static page and adding bits of highly interactive and dynamic behavior here and there. Google used Angular to reimplement the app from scratch. I can't afford that.
4) Angular, at what will probably the top of its popularity right now, just broke all interfaces and syntax and everything during the passage to 2.0, for reasons that were never fully explained (to me at least). Facebook won't be able to do that without breaking the proportionally large investment they had so far with React.js and incurring significant costs, which is nice and stable and comfortable. If the benefit/cost ratio of React 2.0 (or 1.0, I guess) is acceptable for Facebook, then it will probably be acceptable for me, too.
5) React interacts nicely with their Flow typechecker, which I think is, uh, the safest vector, right now, to foster the adoption of algebraic typing in the mainstream of programming. I won't typecheck my JS before the summer, probably, but still, this is philosophically fun.
IMO, you should use Angular, unless you:
1. Need good performance with over 1000 data bindings
2. Are making a literal SPA (i.e. don't really need URL routing or multiple controllers)
3. Plan to build a long-term rock-solid application (like a backbone for an enterprise)
4. Want to understand exactly what is happening in your app.
Personally, when I switched to React, I never turned back. Angular gives you more out of the box but I personally hated that box. I really jive with the React way of doing things and mixins allow you to easily add more functionality like routing, etc.
Is your site made up of many different views that don't change much once loaded? Then angular would be a fine tool for the problem. You would likely move much faster initially, since Angular handles a lot of problems with data binding and routing for you.
And finally, are you sure you need either of these frameworks? If you want your front end to consume JSON but it isn't particularly dynamic, something like backbone will probably be good enough. Hell, server-rendered templates do the job in a lot of cases. No reason to solve a problem that doesn't exist.
Spreadsheets are so hard that the resources of Google couldn't unseat Excel despite Google providing web access, simplifying collaboration, and giving it away for free.
It's not getting numbers in boxes that matters, it's the long tail of functionality. Microsoft has been dogfooding its spreadsheets since MultiPlan in 1982. They have more than 30 years of robustness in their sausage.
This means you'll always be getting bad inputs from workable spreadsheets. Excel deals with hand built data better than any likely automated external method.
Cleaning Excel data is a great idea for a consultancy not a startup.
I've been involved in this space quite a bit back in 2012/2013. I founded Spreadsheet.io to address this problem as well.
Anyway, thinking about open sourcing it and/or finding a partner of sorts, etc.
There's an xsl parser too, but if you want to handle csv you'll need something like papaparse.js (which is sort of the grandparent of harb, which is the node.js csv parser sheet.js uses).
Lots of variables there.
Tax offices in most countries have ways of ignoring cute little "bulletproof" accounting setups, throwing the book at you even retroactively (money, even jail time).
I mean, if you're a small fish, you may well slip under the radar. But obviously you're asking for trouble if you set up a company somewhere, hoping for the best, because someone on HN suggested "country XYZ, low taxes!".
For what it's worth, I "digitally nomaded" through Asia on tourist visas, acting as my normal, home legal entity. No problems. But don't take that as legal advice :)
From Panama City it's a 2.5 hour flight to Miami, 5 hours to New York / Toronto, about 7 hours to LA / Vegas, 10 hours to Amsterdam. Copa airlines has its base in Panama city and operates direct flights to many US and South American destinations.
A lot of people in Panama speak English so it's fairly easy to get by even if you don't know much Spanish. I found people in Panama City to be very friendly and helpful. Panama City also has great infrastructure, Internet, roads, apartments..
If you're a citizen of one of the 48 "friendly" countries you can be a legal permanent resident in Panama is a matter of months for under $5000.
And if your profession / business is global and online, you can likely break free of highway-robbery tax rates and the mind-numbing, time-wasting accounting / reporting requirements of your home country by moving to Panama.
Unfortunately for US citizens, they're still on the hook for US taxes even if non-resident in the US. But for citizens of 47 other countries, Panama is just about the #1 easiest and most practical residence option on the planet at the moment.
Search for "Panama Friendly Nations Visa".
: https://www.cro.ie/Registration/Overview: https://www.cro.ie/New-Act-2014/Overview
Americans have it different than most others, because they are taxed globally.
A true 'digital nomad' without set residency somewhere might also encounter problems, because certain countries might challenge the tax treatment of certain transactions. (depends on if you're selling your own stuff, or doing consulting, for example)
Talk to a lawyer (or law firm), see legal500.com (-> tax) for some recommendations. A firm in the country you're currently residing in is a good starting point.
Here in Boliva we typically complaint about taxes management and government regulation, but looks like is a breeze compared to other countries.
If not legally, in practice. With the nomadic piece, you have a certain amount of momentum that makes it hard to pinpoint your origin, so you might be giving up freedoms by putting a flag in the ground when you don't need to.
We're taxed on personal income worldwide, with small exemptions for living overseas/based on tax treaties, etc.
But on the corporate side, can you incorporate in a 0% tax location, then leave the money in the corporation? You'll be taxed when you pull it out, but if you leave it in then you have a larger capital base to re-invest, and can grow the money faster. Then worry about taxes when you take the money out.
Is this plausible? Can you own the corporation outright without any tax implications, or would it be more ideal to put it in a trust or foundation type of ownership structure?
And obviously a lot of here us are doing digital/mostly online businesses. Could you open a US based LLC that is a subsidiary of the foreign company, for passing through Stripe payments, and for managing your salary payments?
Edit: Also judging by the comments so far you don't want to trust HN on this.
You find a few more details here: http://www.guidemehongkong.com/
My company has been thinking of creating a sort of "world company" package for people like you: solid main entity (Wyoming LLC for example); globally accessed banking, mail scanning/forwarding, etc. I'm curious if that would appeal to you (or anybody else on HN). Email me mattknee at google's mail system if so.
Here's our general information page for international clients that might be helpful with other issues: http://www.mynewcompany.com/international.htm
In case you don't know already, Estonia is offering an e-residency program[-2]. For the time-being it requires a quick trip to Estonia to get this (and it's open to everybody regardless of nationality), but afterwards you can run and administer a company remotely with this smart card. (Bonus points for the fact the smart card reader plays nicely with Linux as well as OS X and Windows.) Soon you won't even need to show up in Estonia, but will be able to register as an e-resident at one of their consulates.
Estonia have made it pretty straightforward to run a business there and it doesn't appear to be especially expensive to start an Estonian company either. To the best of my knowledge you can deal with the government entirely online and IIRC in English too. (This is a big deal because some English-speaking countries like the Netherlands have tax offices that are forbidden from speaking English unless they come out to you in person, even though all the staff are fluent. I hear this might change in the Netherlands in the future.)
Banking in Estonia appears to be awesome and developed. Stripe isn't there yet, but Paymill is.
Estonians are fluent in English and just about everything the government, banks, etc publish online is in English. The Estonian government even translates some of their laws (like the ones pertaining to companies) to English too. They might be translating others but I've just never looked.
Taxes aren't super low, but are pretty sensible and IIRC corporate profits aren't taxed until they're distributed. [-1]
To the best of my knowledge, Estonia didn't really implement the EU cookie directive. They got a slap on the wrist for it but no Estonian site (even big bank and government sites) has those "y'all accept cookies?" banners. That's a good sign.
The biggest downside to Estonia is its size. It's going to be a ghastly nightmare to hire a decent number of staff if you want them to be all in the same building in Estonia, but hey, why not just run a 100% remote company? But cross that bridge if and when you come to it. You can always just open up offices in other cities around Europe or other places.
Right now I'm in the United States and I'm forming a Nevada Series Limited Liability Company. I needed a Registered Agent to do that, but the question came up for me: how long do I need to be somewhere, and what kind of mailing address do I need, to not even need a Registered Agent?
Nevada has no State tax, but there's still Federal. I'll be watching this with interest on the tax piece... otherwise to me, in this country, it seems like Nevada is the way to go.
If you just need something simple with no employees partners then you probably only need the equivalent of a u.s. LLC which separates your business income/debt from your personal income/debt. Find whatever the equivalent is where you're a resident.
If you need an actual corporation then it's much tougher. Where I live (Switzerland) you need to start out with a lot of capital, probably need a lawyer and an accountant, etc.
It will get complicated if you need to register a corporation outside of where you're a resident and paying your taxes.
On the other hand, if you can manage this I've found forming and dissolving companies in SG to be very easy, not to mention the tax and accountancy processes.
To get permanent residence you need to visit Paraguay, proof that you have a fortune of at least 5K USD and run around a few days between different agencies. I helped a US citizen some month ago with his residency and we had everything together in 4 days, it would have been 3 if we not had forgotten one paper.
The big draw to Singapore is usually for the individuals - Singapore has no Capital Gains Tax (http://en.wikipedia.org/wiki/Capital_gains_tax#Singapore). At a personal level, if you're flipping a multi-million dollar business that's a big deal.
As other commenters have mentioned, the company/personal/VAT picture becomes more murky.
There's a lot of people on nomadforum.io/ that will have first-hand experience on this FYI.
Nothing else is required (office/staff), virtual services are provided at additional fees (secretary etc ..)
As to the how and what, I'm willing to learn myself.
If you're American, this gets really sticky. The US taxes you on your worldwide income. If you have a US corporation, it is also taxed on worldwide income, so it can be double taxed. And foreign corporations in the US are taxed on US-sourced income.
However, there is a loophole. If you own a company outside the US, and the company earns money outside of the US, it's only taxed in the US when the money comes back into the US. So, many people have companies registered abroad (Hong Kong is a popular jurisdiction) and money earned offshore is accrued in the foreign corporation. Expenses abroad are also paid by the foreign corporation. So, you can effectively avoid the money being double taxed (paying personal income tax only) if you earn money offshore and your offshore corporation pays your salary.
Also, if you're working abroad, it's not a vacation. A lot of things you spend money on are legitimately considered business expenses. So, if something is a business expense, pay for it with company earnings that haven't been taxed.
Now, what about paying income tax in the jurisdiction where you were living abroad? Typically, countries only tax income sourced within the country, and many countries have tax treaties where income is only taxed once. So, for example, if you're living in China, a country that has a tax treaty with the US, and you're paid by a company outside of China, and you pay taxes in the US, you don't actually have to pay taxes in China. Technically you are supposed to file there (at least in Beijing), but this isn't actually enforced unless you're on a Z-type visa and you are working for a Chinese company. And, if you're on a tourist visa pretty much anywhere in the world, you won't owe any tax in the country you were visiting. As best I know, no country in the world charges tourists income tax!
One thing that WILL happen if you're living abroad, and have foreign bank accounts: You will get audited if you claim tax exemptions that apply when you live outside the US. In my case, this came in the form of a letter to my Chinese address which basically said "prove you're really living in China," and gave me a list of documents to supply as evidence of same. There was a list of 8 or so things, of which I had to supply 3. I just sent the IRS everything on the list (not only 3 of the things, but all of the things), mailed the package from Beijing, and I never heard from them again. I think they just wanted to make sure I really was living abroad."
edit : this comment come from here http://nomadforum.io/t/what-is-the-tax-situation-for-perpetu...
These links might be really helpful : http://www.irs.gov/Individuals/International-Taxpayers/Forei...http://flagtheory.com/digital-nomad/http://flagtheory.com/nevis-llc-formationhttp://nomadforum.io/t/what-is-the-tax-situation-for-perpetu...
.sg = low corp tax (first 3(?) years waived). someone else here mentioned capital gains scenario. stock market secrecy regime is designed for laundering burmese drug money. US lapdog. its boring as batshit... see https://en.wikipedia.org/wiki/Disneyland_with_the_Death_Pena...
.hk = low personal tax (none, unless resident >3 months/year). can open business and bank account within 2 hours (pay an agent). first world level of service. less US-friendly and more fun than .sg.
.cn = low chance anyone will come looking at your balance. basically no tax. nice forex trajectory for CNY at the moment. only way to really do business in china. possible to convert inbound international SWIFT xfers to EUR/USD/RMB cash, even without a bank account, with any foreign 'id' document. online banking is crap. foreign banks are barred from providing most services despite china signing to the contrary when joining the WTO. ~impossible to process card not present credit card transactions. its bladerunner meets monkey magic meets the land of opportunity. taobao is a big win if you ever do hardware sourcing.
other countries in Asia tend to lack decent english or infrastructure, but may provide interesting fringe benefits (eg. IIRC Philippines gives you permanent in/out visa with a property purchase, has lots of good english speakers, though they recently dropped their relative bank secrecy to US pressure)
I feel guilty fighting with my fellow man. I feel guilty for out-doing my neighbour.
I feel... confused. Knowing that the key to monetary success in this world would require I turn into a person I could no longer be proud of. So I'd win, but I'd lose.
I feel angry, knowing that there are people in this world who knowingly work to make things harder for others.
But that's the world we live in.
I'm slowly coming to the conclusion that the only true success in life is that which you create for yourself. Doing something you believe in. Providing for your family; contributing towards the community; making the world a better place. Everything else is just a proxy for that.
I am currently between jobs with nothing on the horizon, because I chose to leave a place, a career, that I felt was abhorrent. I don't know how it'll work out. I could end up as one of those statistics; an unemployed or underemployed graduate. But there's no other option but to keep on trucking - if you think you have potential, anything else is a waste.
- Life is short, you should do what you want to do. The transition probably won't be as painful as you think it is.
- The grass is always greener on the other side. Right now someone in some dirt poor country is wishing he was you and had the opportunities you had. They may not have the opportunity to change things, but you probably do.
I'm probably exactly who you're talking to in this post, but man, lose the self-hating melodrama. You're just making excuses for yourself.
Pick what you want to do. Imagine you did it, and everything went wrong. Imagine the absolute worse case scenario. Is it that bad? I bet it's not. So go for it.
The advantage however of self-learning is you choose what you want to learn, how you want to learn it and the pace. You don't need to jump through the hoops of writing essays or passing exams.
I am not sure what university is like in US but my experience is you get a lot of core topics you have to cover whether you like it or not. The pace is set for you. I found most of the time it was too slow but then sometimes too fast.
Someone else mentioned ITT a list of famous successful (as in money) people and said they had been to top universities. The question is do you want to build a $10 Billion dollar business and all of the responsibility and sacrifice that comes with that?
Or maybe you would prefer to be something like the anonymous creator of Bitcoin. No certificate required for something like that. Or create something to help lots of people for little profit. Or maybe simply doing a PhD and enjoying the subject is enough.
What does fulfilling your potential mean to you?
I'd also like to mention that going to a prestigious university has generally no bearing on the jobs you get, it's the people. As a result hiring companies (in the tech sector) don't really care where you came from as long as you can prove your value.
Probably be easier for the non-GUI parts. Networking and filesystem is probably trivial. It doesn't sound like you need much access to the device otherwise, but that would be something I would check before using -- they probably do some kind of native-bridge.
Fantastic employment prospects, completely open source, runs on all desktop and mobile platforms.
Perhaps the QR scanning connects the phone and the browser via some token stored somewhere and used to both authenticate and send/receive messages.
Think of the "token" as a channel. Phone sends all messages to that channel. Browser gets messages from the channel.
This is obviously not the whole picture. For example, the web app can scroll back and "load" previous messages.
It's weird though. Why would they go through such a router? It would make a lot more sense to just use the QR scanning to authenticate, and then let the browser receive messages in the same way that the phone app does: directly from the server(s).
Also, this is just an educated guess.
Thinking a bit more it could be that the messages are routed through the phone itself, and so it requires the app to be running and connected.
Monitoring real-time stats of all WEB traffic across all IPs as well as sites with my own custom built, splunk-based analytics app:
This allows me to see exactly what's hitting my server and not trusting any third party skewed "summary" analytics offerings.
Have few paying hosting clients that are paying for it, so it's essentially free and clients are happy.
If I'd get busier with offering hosting services to other i'd probably get faster server and add cloud Linux to it as well, but my passion os not exactly service administration and hosting, so it works for me as is, pretty ok.
I think Jiro-like programmers would similarly be distinguished by their mental attitudes, and not by their tool sets. For example, satisfying the customer - by creating code that's reliable, secure, easy to use and cost-effective - would be their most important goal. Their own satisfaction would be derived from fulfilling those goals, not from getting rich or using the latest trendy frameworks. (I have nothing against people who want to advance their careers or build billion-dollar companies, but that's not what Jiro is about. After all these years, he still has just his one hole-in-the-wall sushi bar.)
He would use all the tools that make it possible or easier to write good software (version control, tests, continuous integration, possibly code quality metric tools) without being married to one in particular. He'd switch to better languages and tools as he becomes aware of them, as far as the switches are practical.
He would have a broad overview of the underlying theories (algorithms, computability, complexity, various fields of math), and dive deep into those that matter for the problem at hand.
He'd write clear documentation that the end user can understand.
He'd continue to evolve his tools and skills, and where he finds the current tools lacking, he'd improve on them, or even write his own - but only so far as it doesn't distract him too much from actually producing the software that is his focus.
He'd be aware of his customer's requirements, and equally important, of the goals behind those requirements.
He would be aware of security and moral implications of his software, and refuse to compromise on them.
He wouldn't rant on hackernews, but be available for mentoring to those who strive to imitate him.
Surely at least until you can type quickly and accurately, you're not going to get much out of learning to use a complex editor like emacs or vim, and indeed most command-line tools are going to be a chore to use.
As Jeff Atwood says, "When was the last time you saw a hunt-and-peck pianist?" 
 This is of course not an original thought. Here's Jeff Atwood saying the same thing: http://blog.codinghorror.com/we-are-typists-first-programmer...
 http://blog.codinghorror.com/the-keyboard-cult/ (I should mention that I don't agree with most of this post, but the line about pianists has always stuck with me.)
The only excellent programmers are the ones who've written a million lines of terrible code and understand which methods have the best probability of achieving a decent deal of success before the inevitable refactor (anyone can pick up a book and turn everything into a Factory).
Write shitty code - each session is a brick in the foundation of an endless skyscraper which gets more complex the higher you go. At some point you'll start to program with the foresight to make your code easier to change down the road without breaking everything and causing headaches. That's really all that anyone needs in a programmer - making the future easier while allowing the present to function as it needs to with as little issues as possible.
At some point you'll work on code made by inexperienced programmers that's been built upon for years. If you are experienced enough, that code is actually the most interesting thing in the world to transform and simplify.
tl;dr: Languages, tools, ides, setups are all insignificant if you've implementing patterns in every wrong way as possible. Knowing what not to do is more valuable than knowing one way to do it.
I think the market reflects my assessment, where young smart developers can get paid a lot more than much more experienced developers. My view is also consistent with the common advice I see on HN, which is to develop deep expertise in a popular language/technology, and ensure this knowledge is always up to date (as opposed to mastering the art of programming in general).
(I agree that accurate touch-typing doesn't hurt!)
Having your tools where you expect them to be and mastering them (shortcuts, how to save keystrokes, how to type efficiently, how to perform daily/repetitive tasks with low friction) is key factor. Personally this is the reason why I use VIM over some modern IDE, i value more being fast and keep improving over the years than having the latest feature which is likely going to slow you down due to lack of consistency.
The beginner's mind - http://en.wikipedia.org/wiki/ShoshinAvoid at all costs to close yourself inside your craft and job. Avoid strong opinions and realize that you will never know enough, you'll likely keep learning from others and improve, this is why you should keep over the years the beginner's mind.
Be a Tenzo. http://en.wikipedia.org/wiki/Tenzo Understand that you have responsibilities and that you must work hard, both for you and for the others.
In short, i think these are the requirements to be a good programmer (as well as a good professional in general).
Good programmers never stop learning. If you have ability to learn on your own this is the only skill you will ever need. Everything else comes naturally.
I used to be in the "math all day every day" camp. My perspective has shifted quite a bit. For non-English speaking countries my recommendation would be...English. It's pretty shocking how many HS students are taught and/or write code in German here.
Learn to think/communicate in English as quickly as possible and learn good search/selflearning skills would be my #1 recommendation. Followed by "work with other people as much as possible, especially if what they do is kind of strange for you (artists etc.)"
It's not really mastering your craft and more base level but you have to start somewhere.
Jokes aside, most of the skill required to be a good programmer is independent of the tools used.
a Good Memory
Everything else is learned, but those innate skills will get you there.
Clearly, everyone commenting here must be doing so from the position of believing themselves to be good programmers with pure skill sets already in place. I have to include myself in that assessment, of course. But, note how we are all a little different. Or a lot. So I agree with those who emphasize attitude, although even in that there is a lot of wiggle room. What we have are anecdotes, not prescriptions - we can tell our stories but you know, really, everyone's path to mastery will be different. Different drives, different talents, different happy accidents. But, much time, much dedication, much passion, and not only freedom from the fear of making mistakes but rejoicing in them - opportunities for learning, and the shorter term the joys of debugging and problem solving.
For, if one does not love the journey for itself, one will never stay the course.
For myself, I fell into computers as a career entirely by accident, aided by a perceptive girlfriend's advice when I was down and out as a 2nd year Physics undergrad in 1967, forced to drop out by family issues. No degree, 19 years young, and basically a C student. She suggested I seek a job as a programmer.
Not surprisingly, none of the big 5 were particularly interested despite my perfect scores on their aptitude tests. (? what ?). But one passed me on to a different track at a sister company, and to my great surprise they hired me on the spot to debug their computers as they came out of manufacturing. I have no idea what they saw in me, but it was a revelation. I could do it. From day one. Room sized hand built discrete component monsters. Elliott 4100 series.
And ever since, that job included, I have always been surprised that people want to actually pay me to do what I love, and to ride out those unpredictable deep thought intermissions when nothing apparent is happening with me. That I am still fully employed, at senior technical levels, is I think a token of how I am perceived, and I take it t be my qualification for commenting here.
So. Passion. Joy of challenges. Endurance, persistence, and open to the luck of the draw wrt career path (mine looks like a classical Drunkards Walk - transistors to pixels, ALU to 4G graphical language design). Always learning, always doing new stuff, always going where no-one has gone before - and short of an academic career this pressing out on the boundaries has to be pretty special to computers.
And the tools. The original question. There is no prescriptive answer to that one. For every project, often even every phase, there are new things to learn and invent, and the invention part usually has to include custom tools. And, personally, I gave up learning the current technological SOA in tools just for the learning, because typically by the time they became the right one for a new task they were already outmoded and something else was in vogue. So my tool focus is whatever helps me do the work right now. Picking new tools and technology up quickly are the key. And I don't think that can be taught. It is one's mental toolkit that is the key, one's habits and tricks of thought and problem solving in their most abstract meanings. And I believe only love of the work brings those forth. Because we are all wired differently, some more differently than others, and we all have different satori moments which result in the laying down of the memes of Mind that shape those tools.
In short, stay awake, and pay attention, and love what you do. The rest will take care of itself.
Oh, yes, one more thing. Think of the poor folks who have to maintain what you did after you have moved on. Or, as was my painful jab for this, even if it is yourself six months later. Style is a tool unto itself.
However, I'd like to stree the one thing that most programmers ignore or worse still are unawre of -- Programming is NOT like making sushi simply because it is NOT a singular, individual effort. Programming is a social activity, even if you never ever meet another developer in person -- coding is communication -- it is communicating the the authors of libraries and tools using the APIs and interfaces that they have created ...while also creating your own 'story/conversation/...can't find the word for it'
To repeat the Hal Abelson quote in the context of what I am saying:
> Programs must be written for people to read, and only incidentally for machines to execute.
So, on a higher level than specific skill, I'd urge you to stop thinking of programming as a sole activity that you indulge in. A lot of good programming advice (like the quote above or the robustness principle or 'There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.') when seen in the light of a 'more-than-one-person' activity suddenlly make a whole lot of more good sense.
Ok, I think the point is made. :-)
 Be conservative in what you do, be liberal in what you accept from others http://en.wikipedia.org/wiki/Robustness_principle
Having watched Jiro Dreams Of Sushi, his task is to provide excellence in food, in service, and overall experience. And at the root he needs to understand each component of the food and the service intimately, so that he can put them together in a way that is both pleasurable and fitting to the customer. He uses what he knows and the resources he has to create the best dishes he can.
For a programmer, the core of our trade is algorithms, and their combinations. You may not need to know them at the smallest details, or even that they are called algorithms, but to accomplish anything you will use them. Combining larger programs together in a specific way to perform something novel is an algorithm, though we may not call it that.
Next, data structures, understanding how to store information in a way that your algorithms can use and alter. This underlying knowledge is key to creating larger things from many small things.
Next, simplicity, combining logic and code together to accomplish the goals alone is not enough. While it may be simple to combine large things together, the question should exist of whether it could be done more simply. Simplicity can be hard to accomplish, but is easy to appreciate. Simplicity means avoiding cleverness, if possible, as it can make the program hard to be changed or maintained. Simplicity is elegant refinement, which leads to doing small things very well.
Those three things, in my mind, are the only pure things necessary to being a programmer. Algorithms, data structures, and simplicity.
The reasons none of the other things apply in my mind to the overly-general title of just programmer is that they are not required by every programmer.
Text Editor - Cannot pen and paper be used just as well in the task of constructing a program as a text edit?
Programming Language - Maybe I could have leniency here, you do need language to describe yourself, but not necessarily a programming language.
Databases - This is much higher-level than a regular data-structure, and as such isn't a necessity. Applies more to specific fields.
Algorithms - Yes, even if not known by name.
Math - This isn't a requirement, though it is a nicety. Some get by without knowing much more than the very basics of Arithmetic and maybe a little basic Algebra. It applies more to specific fields.
Debugging & Testing - These aren't necessary, but they help ensure quality or finding issues.
Documentation/Comments - If the code is simple enough, it should describe itself. That isn't to say documentation and comments aren't important, but they aren't necessities either. You should describe as much in comments and documentation as necessary, to provide clarity and usable instruction, and is a great skill to have.
I hope I've explained things clearly enough. Knowing one's craft is understanding the fundamentals, and that comes much further ahead of the tools one uses, within reason. In my opinion the single best thing for describing the craft of programming is the Unix Philosophy.
If we were in a largish town on a more populous island, we might get WiFi, but never for anything better than a quick email and FB check, and posting one and most two pictures, but more generally we had 2-3-4 day stretches with no Internet access over the course of two weeks. During some stretches, our world was quite literally the 9 people on the cat.
(But I still had tech: Took pictures and read books on my mobile. Once back on land, streamed a Senators-Canadien game, that felt like paradise, 'cept the Sens lost....)
Last fall, on a weekend retreat. Hardly any cell signal, let alone data, and dialup, had there been any, would have been 56K at the most. Full 36ish hours with no contact at all with the outside world, just my wife, the three other couples, and the retreat leader.
And the occasional weekend here or there when I just unplug. Read an actual made-of-pulp book. Draw, snowshoe, go wheeling, play music, cards, or Carcassonne.
Then there are days like today, plugged in constantly.
Weekends, after starting to overwork again, have stopped being for the internet and more for phone calls, or outside, or cooking epic food. Anything analog. Digital will still be there if I grab my phone, but, I'm trying to remember and learn how to live life in 3d.
The strangest thing was that when I got home, I really hadn't missed anything. In a normal day I read dozens of articles and consume news from so many sources that when I got home I expected to have to catch up. But I really didn't. I think we consume a lot of information just because its there, but so little remains relevant a few days or weeks later.
I still find myself clicking "unsubscribe" quite often, or opting out of email lists when I sign up. I don't miss the additional interruptions to my day.
I slept on this beach and in the forest behind it for a few days, go! https://goo.gl/maps/8GC1F
The last time I went without internet connectivity was 3 years ago, celebrating my two year wedding anniversary with my wife in Dominican Republic. The hotel has wifi in the lobby area, but I learned from a previous trip that it was an exercise in frustration trying to get anything other than pure text.
Before that? Every other weekend or so. I don't own a smartphone, and I make a point of staying offline most weekends unless I have a major email backlog to deal with, or something specific to look up.
Even when working on personal coding projects I prefer to stay offline during weekends whenever possible. Very, very useful strategy for maintaining sanity generally, I find, and for making time available for more useful + deserving sources of interaction and stimulation -- like books, music, movies, paintings, architecture, natural scenery, animals, and people.
It's hard to have that type of disconnected experience any other time than vacation since my job relies on using computers all day. Maybe one of these weekends I should switch off the phone...
We were playing board games, under candle light and family was bonding like never before.
It was amazing... It was the first time in a year that I was able to pull away from daily minutiae and think about things from a much higher level (such as career goals and big plans for this year).
I came back full of energy and motivation that I hope to carry through the end of the year... or until my next trip.
I didn't suffer from any withdrawal symptoms, although I napped a lot (which I normally never do) but that had more to do with 1) not sleeping well the night before on the way there and 2) my employer knowing I was unreachable.
Kicking off from sugar is much harder, to me at least.
To gain access to the internet you were required to goto the business center at one of the government hotels. The business center sold 60 minute time cards issued by the government for ~$15. These cards would have a unique code that would grant you limited access to the network.
Unfortunately for 7 out of the 8 days every hotel I went to had ran out of these cards meaning no connection to the internet whatsoever.
There was no wifi on the train then (or now, I believe), and I did not have a phone with cellular internet.
The Legend of Zelda: Phantom Hourglass for the Nintendo DS came out in North America just 3 weeks before my trip started, so I saved that for the train trip. I also brought Mario Kart and some other Mario game that I had not finished. Oh, and Brain Age was very helpful--it includes a bunch of Sudoku puzzles. I also had a bunch of podcasts and some audiobooks on my iPod.
I did not bring, if I recall correctly, any physical books on the train. I wanted to travel light, and the books I was currently reading or wanting to read were all heavy hardbacks. (Kindle was not out yet...it was released while I was I was in Texas, a few days before the trip home started).
All I brought on the train was my PowerBook, the entertainment stuff listed above, my phone, a TomTom GPS, a couple charges to keep the aforementioned stuff running, toothbrush and toothpaste, a comb, a swiss army knife, and enough clothes to cover the time on the train.
Everything else I'd need or want for the 3+ weeks I'd actually be in Texas, including several hardback books, I shipped via UPS or FedEx ahead to the hotel.
I don't understand why more people don't do that, at least for stays where they are bringing a lot of stuff. You've already got enough to deal with on boarding day...why add wrangling two or three big pieces of checked luggage to that? And FedEx and UPS lose luggage at a lower rate than airlines (I could not find data on Amtrak lost luggage rates). 
 for the usual reason one would go to Beaumont, Texas if one has no relatives there. A patent I was involved in ended up owned by someone who sued someone else, and I had to go be a witness.
 Most of the route is over track owner by freight rail companies, and their trains have priority. That means AmTrak spends a lot of time sitting on passing sidings waiting for a freight train to pass. Add several hours to scheduled times for any long trip.
 I suppose it might depend on how things are getting paid for. Since I was going in order to be a witness in civil litigation, someone else was paying for my travel expenses, and they had a pretty loose wallet. If you are paying for your own trip and your fare includes a certain amount of luggage it might be hard to justify letting that freebie go to waste and paying for FedEx.
Edit: I should probably add, I don't see constant internet access as any more of a problem than books. If anything my kindle (which is always in airplane mode) is a worse impact on my productivity than the internet.
While I understand lifestyles differ, I can't help but think that's a shame. Many of the world's most beautiful and inspiring places are remote. Do you not have a second-in-command you can put in charge while you're on vacation?
It was a pain. I got less writing done than I'd hoped, partly because I couldn't look things up. I enjoyed holidays more when I had a working Kindle Keyboard and could get internet anywhere. Next time I'm taking a laptop; there's too much value out there to be a luddite about it.
Remote, cold, feet hurt, sore, and no Internet access for 24-48 hour stretches (sometimes longer). But the pack weighs on me more than the disconnection, even after over 20 years of daily access.
I do something similar by provisioning Joyent VM's as a dependency of a build chain that requires a build to be run on those VM's.
The most recent TC release can persist your build configuration to VCS (say, a private github proj.), so you do get some level of vcs-managed build configuration.