- iwantmyname for domains, a suckless register
- digital ocean for testing (vps)
- chicagovps.net for long term services (vps)
- pagekite, localhost for the world
- Xero (accounting)
- Stitch Labs (Inventory/integration)
- Shipping Easy
- Adobe Creative Cloud
- CrossWorks for ARM
- EAGLE PCB (PCB layout - the real good stuff is all 10k a seat)
The better question might be what would you buy given more resources.
* New Relic
* Rackspace VPS, CDN
* Amazon S3
* Digital Ocean VPS
* Experimental VPS's from Cloud Shards, BlueVM, etc (whoever is cheap at the time I'm looking)
* Hulu Plus
* Amazon Prime
* Canvas by Instructure - Learning Management System
The average house price in London UK is $771,360, so lot of people own houses worth more than $1 million. The median house price in New York is $548,500, while "The median price paid in June for a new or existing single-family home or condo in San Francisco hit $1 million for the first time, according to a report released Wednesday by DataQuick."http://www.sfgate.com/business/networth/article/1-million-ci...
You can become a millionaire by working hard at something and investing wisely, and a multi-millionaire if you're exceptionally good at your trade (or lucky). Becoming a billionaire looks a lot trickier, but I suspect you're less likely to do it while working for somebody else.
This is why finance is such a lucrative area. In finance you leverage money to make money as opposed to using your time to make money, property has a similar effect. Starting a company is another good option simply because you begin to make money by trading other people's time.
Playing follow the leader is rarely a way to make a lot of money.
I know that is a sucky answer but I am assuming you mean all billionaires not just the completely self made ones.
Also for most people making a few million is enough to solve the money problem. There may not be any further desire to get rich.
However if you do have that desire and it outweighs other psychological constraints (avoiding fear, pain, change etc.) and that desire can last decades then it is possible to get from well off to rich.
I've worked at three of the major league firms you list, and interviewed several hundred engineering candidates between them.
If I was to give one bit of advice, it would be to focus less on getting the perfect solution to their questions, but instead, talk through your thought process and explain why you're doing certain things and not others.
The most difficult interviews to evaluate are those where the candidate goes all quiet at the whiteboard, and then panics when they assess their own performance as poor.
I've recommended hiring plenty of people who were excellent communicators and logical thinkers, even though they didn't successfully answer the interview question, but they walked me through their thought process, and I could see that they're just getting tripped up on something.
Think about a handful of the coolest problems or bugs you've ever worked on and be able to explain why they're cool. Have a good understanding of common data structures (trees, tries, lists, hash maps, etc), and their big-O complexity. You've got to be pretty excited about something to get a PHd in it, so let that excitement come through in the interview.
Your communication and energy level, especially excitement about your chosen field, are as important as the technical questions.
As for study, I highly recommend the index page of this book, Elements of Programming Interviews, as a reference. It contains a catalogue of questions, whose complexity exceeds that of CTCI or PIE. Here are the links.
For the entire book, http://www.amazon.com/Elements-Programming-Interviews-Inside...
For just the index page, http://elementsofprogramminginterviews.com/pdf/epi-toc.pdf.
My advice is to spend some time and practice interview questions: go from the problem, to the idea of the solution, AND WRITE DOWN THE IMPLEMENTATION in a piece of paper (or screen).
The last step is the key. Many people I interviewed knew how to solve the problem, but then had no clue on where to start when writing down a concrete solution to it. This is not a matter of being not technical, it's really a matter of practice.
Also, in those large firms, nobody cares that you already know a bunch of languages. It's better being able to demonstrate that you know one of those well. Part of the assumption is that if you know one well, you can learn the others if needed.
Please change the "pls" in the title to "please" while you can edit it. If you are asking people for help, at least show that you value their time and write "please" and "thank you" with all the letters. (I think that "CS" and "PhD" are fine.)
And if you can not implement singleton under pressure, there is possibly some underlying reason. Concentrate on that reason.
I study pretty much all my free time (time not spent with my wife). 2 hours a day reading papers, books, etc. I don't think studying more will help.
I can't post on github. Employment agreement says all the code I write belongs to my employer and can't be opensourced without jumping through some hoops. Won't make this mistake the next job I end up at.
I think I can move laterally without too much grief. I.e. get another research job. I have experience in systems and clouds. Lots of research groups would want someone like me.
Now that you have done that, here is a bit of feedback. You seem a little scattered in your thinking. This isn't the biggest problem in the world. You need to just hide it a bit and look less scattered to your potential employers. Here are a few ideas:
First, you have a PhD. This tells a potential employer very important details about you. As an interviewer I care very little about your thesis, about your advisor, and about which papers you are current researching. I DO care that you spent a significant amount of time solving problems. You found a problem, you stuck with it, and you solved the problem. Again, I have my own problems, I don't care at all about the problem you solved to get your PhD, just that you did! You have a HUGE ability to stick with things, this is an asset. Practice getting this out during your interviews. Make sure they know this is a skill they need within their organization and that regardless of the challenge, you will conquer it.
Second, you have a lot of languages. There is nothing wrong with that, but tune your resume and your interview towards the one this potential employer needs. You mention that you study a lot. Spend that time studying the needs of the person you are interviewing with. Know a lot about their product, about their environment, and about their history. Be ready to talk to them about all of these things. Defend your "mini thesis" about this organization every time you walk into an interview with them.
Third, practice confidence. I know this is easier said than done. I am not always confident in myself nor in my abilities. But I practiced and I show confidence when I walk into an interview. This helps a lot. Control the interview by asking questions, talking about what they need, knowing what to say when you get stuck, and showing your skills even when you feel nervous or scared that things aren't going well. Over the years some of my best jobs came from interviews that I was SURE I bombed miserably. Use your study time to practice these skills for a while. Never call yourself half as*ed again. Ever.
Finally, practice interview questions! Google "interview code questions" and practice one a day. Practice them in different languages. Really understand why you use some of the techniques that you use. You have an AMAZING ability to study, learn, reason, and defend your ideas. Use these skills to your advantage. You will do well!
Final Note: interviewing is a numbers game. You have to interview with a lot of companies to get where you want. You are already playing it well. Keep interviewing because you only have to pass that one best interview to get that one best job that you have been looking for. You can do it!
What's the magic here?
Why constrain yourself? One thing I always try to instil into my teams, "learn to program, do not learn a language". If you focus on becoming a good engineer/architect, you'll be able to pick up any language and use it easily.
Are you trying to program something specific?If so, does that platform (iOS, Android) have a specific language you need to use or can you choose the stack (web)?
Are you trying to learn how to program?You mention you don't have any specific platform interests so are you just looking for a good starter language to learn?
Here are my opinions:
Python: A really strong language to learn as your first. Powerful, good external packages. Strict syntax means you learn how to do things the right way
Java: Used everywhere and can be applied to almost any project. Verbose but has solid performance and ability to segregate tasks and concerns.
Ruby: Rails (about the only reason I can think to really use Ruby).
C++/C#: The father of modern OO programming languages and his sexier grandson that took the best parts of everything before and placed a Microsoft sticker on it.
PHP: Wordpress and Facebook still run on this aging server side language.
And then from this list you have a ton of variations on each like Scala and Clojure falling out of Java. Go is out there as well. Objective C became Apple's Swift.
I think the best way to start is really C++ or Java. Learn the fundamentals, data types, algorithms, performance tradeoffs, OO design and fundamentals. Take those skills and carry them over to any other language or application you want to work on. Even the ones that aren't strictly OO like JS.
- Rails for Ruby- Laravel for PHP- Angular for Front End
this is all from me according to my understanding of stuffThanks
Pretty much a lot of stuff (front and backend) can be written in JS.
If you want to get up and running fast, and keep it that way. Go for Heroku with S3. Enabling S3 file uploads is pretty straight with most rails plugins. Expect to spent money on everything: storage, dynos, database, mailing, S3, SSL, etc.
If you are on a tight budget, go with a VPS. But keep in mind that _you_ will need to setup the server, install ruby and a database server. Setup something like capistrano for deployments. Make backups. Secure your server. It's very time consuming.
So, as with everything, it's a trade-off.
Thanks all for advising on DigitalOcean, I think I'll go with them :)
Also, if you need to expand because your system is the new Instagram, they can support all the way up to managing your own instance.
Other good books in similar genre
An Anthropologist on Mars: Seven Paradoxical Tales : Oliver Sacks http://www.amazon.com/An-Anthropologist-Mars-Seven-Paradoxic...
The Brain That Changes Itself: Stories of Personal Triumph from the Frontiers of Brain Science: Norman Doidge - http://www.amazon.com/The-Brain-That-Changes-Itself/dp/14915...
Received this book as a gift from an elderly relative and felt obliged to give it a cursory read. Quickly became engrossed. Thoroughly researched with tons of anecdotes make MacArthur come alive.
Permutation City - Greg Egan
Revival - Stephen King
Glasshouse - Charles Stross
The City - Dean Koontz
Predictable Revenue - Aaron Ross
How We Got to Now: Six Innovations That Made the Modern World - Steven Johnson
The Idea Factory: Bell Labs and the Great Age of American Innovation - Jon Gertner
How Doctors Think - Jerome Groopman
Frankenstein's Cat: Cuddling Up To Biotech's Brave New Beasts - Emily Anthes
Zero to One - Peter Thiel
The most strict of all was when I was writing code for an air traffic control system. Every single line of my code was reviewed a minimum of three times. We spent almost as much time reviewing the code as we did writing it.
Mostly it depends on a) what level of quality you need, b) what are you currently doing for quality control, and c) what other alternatives do you have?
On a): What is your customers bug tolerance rate? What part of the codebase is this? Most people will be ok with a few application crashes or a feature not working in some edge cases but be irate if you corrupt their data. Are you just trying to MVP or prove an idea? Is the app going to be around in 10 years etc? Are you building a framework or api that is going to be a building block or a user facing app? Huge difference.
On b): If you are already unit testing then that's 30-40% of dev time. Add another 10% for integration testing and you are already at basically half the effort being quality control. Add another 25% of total time on top and suddenly you are looking at spending 60%+ of the dev effort on quality control. Is that a good use of time? Depends on a) and c) :).
On c): For example perhaps you would be better off getting rid of code review entirely and using the savings to hire dedicated QA people. Or perhaps formal reviews would work better. Or maybe more time on design or talking to your customers. I'd personally rate all three as more effective.
Obviously these % depend on the monitor or screen. Some screens are brighter than others. However most Dell and LG monitors are set way way too bright by default (something I call "showroom mode," essentially set to look nice, not work well).
30% is still plenty bright. Whites are still white, not washed out and gray (which happens around 10%).
I also know that it doesn't just have to do with taking a break, because drinking once from a large container helps more than multiple drinks from small containers.
I was just reading this guys blog post titled "A Programmer's Ergonomic Workstation" and he mentions he uses these amber tinted glasses called gunners
 http://markshust.com/2014/03/31/programmers-ergonomic-workst... http://www.gunnars.com/how-they-work/
Buy monitors with VA panels and lower brightness. Your eye strain will go away.
I googled it and all I see is that the Ukrainian government pointed the finger in their direction. However the Germans are blaming the Russian government's military forces in the region.
Seems like an organisation of Ukrainians and Russians, likely financed by Russia, fighting in the occupied/contested region of Ukraine.
Have to say if they did or did not down MH17, nobody can be too sure either way. However realistically it is hard to believe a rag tag group of "terrorists" could operate a modern anti-aircraft system such as the Buk missile system.
You could probably hire a facebook bot 'like' network to 'report' a photo. You'd have to message the right people.
Wrote an article about how I tried fighting ISIS using twitter bots:https://medium.com/@datarade/my-failed-attempt-at-fighting-i...
I suppose you could complain to, e.g., the US FBI about Facebook knowingly providing material support to terrorists.
It's not your web browser, it's your ISP. It sounds like your ISP is hijacking NXDOMAIN to serve ads. If you have Tomato or DD-WRT you can fix this.
If that doesn't fix it, you probably have malware.
You can just not use them if you dislike them.
However if you then run the test a second time, but make the "old" site the alternative, you might find it too sees a small measure of improvement and thus you could bounce back and forth between A and B until the end of time.
I am not a statistician so I won't try to give you advice on what a statistically significant result is. However many /many/ articles have been written on that topic, and many products have been designed which you can slot your data into to see if the 'B' option is legitimately better.
I have seen statistically significant differences in outcomes in A/A testing.
A/B testing has value but being sure to A/A test may temper your expectations and/or point at problems in your setup before you get too far.
I think the other side of the market is isomorphic to this: any publicly available list of jobs is disproportionately filled with positions which qualified talent has seen, evaluated, and rejected as unsuitable.
[+] Citation: http://www.joelonsoftware.com/articles/FindingGreatDeveloper...
What the 0.05% equity package indicates is that the founders probably have an unrealistic expectation about how much their venture is worth at this stage. I've seen this a few times in nave, young (23-25 years old) first-time founders that don't have significant amounts of experience working in start-ups and/or technology in general. This trivial amount of equity is a huge red flag, not only because its present value is negligible (guess what the risk-adjusted rate of return is on a start-up run by first-time founders?), but because it indicates that the work environment will likely be unpleasant (hellish hours, frequently changing requirements, no clear vision -- common in companies run by first-time founders).
Also, keep in mind: if these founders are foolish / nave enough to think they'll be able to hire a credible, valuable engineer with this package (they won't), they're also likely foolish / nave to get screwed by their investors. Founders are only at the bottom-middle of the start-up hierarchy: VCs are above them and LPs are above them.
People that are insecure about what they bring to the table.
Pre series-A the risks are still huge and the stock should be priced accordingly. Say the founders think a pre series-A company is worth $2M and they offer 0.05% equity you could enter negotiations asking for 1% more if you feel like it (and walk away if it goes below 75% of your counter opening bid) if you can defend the position that there is still a 95% chance that the company won't make it unless they have you on board.
Otherwise price the stock at 0 and ask for a market conform salary.
They'll move. An offer is just an opening move, nothing more.
When it's all said and done, most of these startups will settle for a few offshore contractors or hire remote people who live in cheaper parts of the country where $90K goes a lot further.
The tried and true "solution" to this problem is to import a number of H1b visa holders from other countries who are willing to work for the lower salaries and accept the lifestyle choices that it imposes in the Bay Area. For many of them, $90K in the Valley is still an upgrade from where they are coming from.
For those of us with a decade or more of experience, it's best to focus on the post Series A startups that have the money to pay. However, many of these jobs involve cleaning up code written by those inexperienced folks who accepted less pay in the early days.
I had a similar experience recently. all the "startups" expected me to take a 30-40% paycut vs. the larger places, essentially because they expected me to be excited about their company.
Which is weird, because if the startup doesn't get really big, even if it does okay, nobody is going to care it's on my resume. But the large companies? especially the large companies with a reputation for high standards? they look good on the resume.
Another funny bit is that the same thing, as far as I can tell, is true of contract positions.
What irritated me is that I was going through headhunters... e.g. they were already paying 30% extra for the headhunter - if they just gave me that, I'd have been happy, at least for the first year.
The other thing was that they were weird about money. I talked to one startup and (after an 8 hour interview) they seemed super excited. the person who would be my supervisor gave me his email, and man, I thought I was in. "how much are you looking for?" I named a high number, about 10% higher than I expect to actually get, because that's what I always do. Let them talk me down. I even mentioned my bottom number "a guy who has been working for me for most of his career just landed a job at $x" - but nope, the mood immediately changed; I was hustled out the door and the company went completely dark. no response to the official or the personal emails. I finally got some bullshit answer from the recruiter, where he read back the "why you shouldn't hire me" things I give companies before any interview.
The solution? I ended up getting a contract gig at the large advertising company in mountain view. I'm pretty happy with how things worked out; It's closer to where I live in the south bay, it looks way more impressive on the resume, and I need three people to sign paper before I do overtime.
Startup founders are trying to go (even more) lean and cheap out on salaries, relying either on inexperienced new grads, the insecure, or on a "rah rah go team, the company is priority #1" culture of self-sacrifice. Don't play into it.
1. The definition of an "experienced" developer is subjective and varies widely. Startups with younger management may (incorrectly or not) apply senior labels to candidates with fewer years of experience and lower compensation expectations.
2. Anecdotally, I have seen startups in SF/NY take advantage of the lower earning expectations of candidates who are relocating into those metros and aren't prepared for the sharply different cost of living. There are places in the US where $90K goes much further and is a more competitive offering, especially for those who are willing to take less cash for the opportunity to work on something exciting.
3. "Developer" is a huge category. Some technical skills are far more scarce than others.
Many startup CEOs would like you to believe they are the only ones doing interesting work, but there are plenty of larger organisations that are still fun to work for, and more likely to value you as an employee.
"As long as we're on opposite sides of the negotiating table, I am going to do my best to get a fair share of possible upside from your company, and a decent salary. When we conclude this negotiation fairly, we'll be on the same side of the table and working towards the same goals."
"Now, I want half a percent and $110K."
Keep in mind that your BATNA (best alternative to a negotiated agreement) is to say, "No thanks. Good luck." They need to hire somebody: time is money at their stage of business. You don't need to jump into their job.
But don't have this conversation at all unless you think their business idea is worth five years of your life.
Yes, that looks wrong. Equity should be 10X more (0.5%). Whether it's a good deal for your situation or not is a different discussion, but at least that would be more in line with typical deals.
And not all corporate jobs are boring. Find one that fits what you like to do.
If startups aren't willing to provide the means they don't deserve good engineers.
In terms of equity, since you mentioned that you are the breadwinner for your family, why are you sweating the equity? A lot of folks here will no doubt suggest that you negotiate for more equity, but equity won't pay your bills. If cash is your biggest concern, negotiating around equity is pointless.
It sounds like you want a very early-stage startup job with BigCo-like pay, meaningful equity and reasonable hours. For the most part, this is a dream.
It's really hard to find good data for these boundaries, especially for Orleans Parish in Louisiana. This is the only place I've found good data for Orleans (though, it's not free): http://www.maptechnica.com/us-county-boundary-map/county/Orl...
It's not the $100,000 in salary over three years you didn't get in exchange for taking equity after a deal which made the founders rich if not wealthy. Significant equity aligns your outcomes and interests and gives you a seat at the table when liquidity events are going down.
Significance is more of a sliding ratio. 0.5% is significant if the founders each have 6%. 10% is significant if they have about 25%. There should be only one qualitative step between stakes, and that step should reflect the size of the company.
A final tell on significance is if the ownership structure is relevant to the discussion. Significant equity alters it in a...wait for it...significant way. It signifies that the offer is about more than a hiring decision. If the next programmer passing the interview process would get the same offer next week then the equity isn't significant. Gates and Allen wanted Ballmer, nobody else was going to get 6% with an option to 8 because there was nobody else.
In post series A startups, there is already some 'proof' of success (generally in the terms of growth), so salary offerings gets high and stock options get low than a pre-series A startup.
Stock options/grants are tricky because of dilution and preferences. The 2% can mean many things. How much the company plans to raise in the future? Even if it's not planned, circumstances can change overnight, and company may need to raise.
It seems you have a connection with founders, so it probably won't hurt to talk to them about this issues.
In the end, it all comes to how much risk you are taking, and the compensation you are getting for it.
Reading: Patterns of Enterprise Application Architecture, Martin FowlerSo far so good. The first bit is overview, good contrasting examples of when to use what pattern. I've slowed down now that I've hit the actual patterns.
Planning: Clean Code, Robert Martin.Recommended by a coworker.
Getting More by Stuart Diamond
Classic Myths to Read Aloud by William Russell
The Power of Positive Dog Training by Pat Miller
Reading: Dover's abstract algebra paperback
Planning: Cambridge's Demosthenes Selected Private Speeches
Recently finished: Just Mercy by Bryan Stevenson, HIGHLY recommend it. He details the work he and his team at the Equal Justice Initiative have been doing for death row inmates without proper representation, many wrongly imprisoned for decades. Depressing but inspiring. Never go to Alabama.
Next up: Amory Lovins' Reinventing Fire, which has been on my list for a while. Saw him speak a few years back and got inspired. (I've no connection outside sharing the same name)
An example CV structure I quite like is http://kelly-dunn.me/ HTML and PDF version).
For example, my Citi credit card uses "accountonline.com" as the login page. With things like that, "googledrive.com" seems less suspicious.
So to anyone building for the web: please use a single, canonical domain name!
Couldn't the app try to login, detect the 2-factor, and ask you for that in the response?
Some links to check out:
Hack Design - hackdesign.org (free)
Design and Aesthetics course on Treehouse - teamtreehouse.com (25 USD / month)
Design Lab's Design 101 - trydesignlab.com/web-design-course (299 USD, six weeks. You work through the couse with a professional designer from mostly well-known Valley companies and startups, who you send assignments to and they give you feedback. Check out their profiles pages of students, so you can see the feedback received by other students, it's a good way to learn. I'm looking to try it in the near future).
Nathan Barry's books on design - nathanbarry.com/books (39 - 249 USD, depending on if you want the videos and supporting materials too).
The best way to learn design is looking at existing designs and what works about them or what doesn't work. http://www.awwwards.com/websites/clean/
Design is an iterative process. Do you rough out ideas on paper before starting to build them? Paper prototyping in the beginning can save hours/days of work down the line.
If I wanted to get that "eye" I guess I would look at successful websites, learn about design and what catches/pleases readers. How readers see websites in general and what is appealing, then just try things.
I cant recommend taking my advice but that's what I would do if I wanted to increase my design knowledge.
Codeschool has a Fundamentals of design course, but I didn't take the course myself. But judging by the quality of their other content it's probably good material: https://www.codeschool.com/courses/fundamentals-of-design
360 megs is a rounding error on anything made in the last 7 years.
I'd recommend these args which save memory:
-server This slows startup time but payoff is greater optimization.
-XX:+AggressiveOpts Flips on a variety of options that increase performance.
-XX:MinHeapFreeRatio=1 Lets the JRE give as much RAM as possible back to the OS.
-XX:MaxHeapFreeRatio=2 Lets the JRE give as much RAM as possible back to the OS.
-XX:+UseSerialGC Old-fashioned 'stops the world' garbage collection, but it's the best GC for guaranteeing least memory usage.
Literally every company needs a web presence, and it's quickly getting to the point where the usual crappy UX just isn't cutting it.
It also happens to be as hard or harder than most other types of software engineering. You have to stay on top of trends, keep building your skills. You don't deal with algorithms much, but your OOP needs to be on point if you hope to build something maintainable for the web.
Most of the potential talent has a subtle disdain for web work, everyone wants to be a game dev or do stuff that's math-heavy or algorithmic.
So giant shortage of good web programmers.
The demand for web-devs might be artificially high right now, as most normal people have not yet discovered that they do not really need a programmer to build their website. I think Squarespace / Wix / WP etc, maybe with a custom design, should cover most websites.
I've been doing back-end web programming as a freelancer for a few months, but it's really hard to find good clients, so I'm moving to something else.
More seriously, it's because web developers are in high demand, so there are going to be more postings for them; having a proper web presence is absolutely vital to modern businesses nowadays, and that requires developers to establish that presence. Hacker News is also run by YCombinator, which specializes in funding startups - a market which tends to lean very heavily on web development, since many of those startups are based on web apps - and therefore will already have an inflated quantity of web development jobs by that virtue alone.
There are plenty of other tech jobs, just not necessarily in the startups that YC focuses on.
The former will need to do several hundred writing jobs per year, while the latter may only need two. Thus, 99.5% of writing jobs may be for journalist stories. Any novelist looking for commissioned work will not want to sift through 200 posts to find even one relevant listing. So people posting such jobs would probably get better results on a site that explicitly excludes the noise.
In short, there are more "lightweight" postings because the people who solicit them and do them need to secure new work more often. If you can make 20 websites in the same time that you could build one enterprise application, you will probably see that job advertisements are 95% for websites and 5% for business software.