But for your own general longer term career development, SICP is a very good bet. But SICP wasn't really designed for home study so it will be hard going. Personally, I would be very impressed if an interviewee made it halfway through SICP by themselves. I have tried multiple times and never got very far before .. er ... reprioritising.
If you want to learn more functional programming, I highly recommend learning Haskell with Learn you a Haskell (http://learnyouahaskell.com/). This is a much easier start to functional programming and get you productive quickly. Haskell will force you to really learn functional programming as there isn't an easy imperative backdoor (not to say you can't write imperative code in Haskell - see (http://www.haskellforall.com/2013/05/program-imperatively-us...) for example, just its not particular easy how to get there). My current project is writing a web app in Haskell and its a very interesting experience.
If you want to learn functional programming, but still be attractive for jobs, then I would recommend learning Scala ideally with the 'Functional Programming in Scala' coursera course and then working through Odersky's "Programming in Scala" book. Scala is a JVM language so it can interoperate easily with Java code, and I've seen companies in London using knowledge of Scala as a signal of a good quality Java developer. It is also (successfully in my view) a multi-paradigm language which can be used both as a functional language, and as an imperative one without feeling too much like a compromise on either side. Though in my view, its harder to learn functional programming properly when you have an "easy out" back into the imperative world.
Also, check out communities you can join such as (http://lambda-the-ultimate.org/) or Haskell Cafe or local Meetups with others interested in functional programming.
It's education. If you want to stay 20 years in this industry, you have to invest in your education. Don't worry, just do it. Solving the problems would make you a better problem solver.
"I feel that most prospective employers don't really care about that, though."
That's right. Most prospective employers don't care. Don't work for them. If you have to, read my last answer.
"In otherwords, is SICP worthy of a CV bullet point."
Yes, really good developers would appreciate the effort. Employers won't care but the senior developer taking your technical interview may appreciate it.
"I should be focusing on more practical projects before looking for a first job."Yes, you must do that. Nothing beats showing a perfectly operational website. And depending on the profile you are targeting it can be a Android game or Web game or scraper or anything. Don't worry your github profile yet. Once you start building stuff it will come alive.
You can also check out https://www.udacity.com/ for some practical courses. They are taught by awesome people and are free. All these courses focus on a project to teach you basics of computer science. And you get real world skills.
1. Building a Search Engine - Introduction to Computer Science - https://www.udacity.com/course/cs101
2. Building a HTML5 game - HTML5 Game Development - https://www.udacity.com/course/cs255
3. Building a Blog - Web Development - https://www.udacity.com/course/cs253
4. Building a Browser - Programming Languages - https://www.udacity.com/course/cs262
5. Building blocks of any non - trivial software project - Design of Computer Programs - https://www.udacity.com/course/cs212 .
All the best learning CS, building things and contributing to the world.
I wouldn't let this point of pessimism stop you (it's not stopping me, I'm taking Machine Learning now). As others have indicated, this will probably let you pass job interviews others can't. But in my experience with regard to the job application process, it will likely be something they ignore, and I would try to get them to talk to you about it in another fashion (bring it up in the interview, cover letters, etc).
Note that this is from an US perspective, I know the ideals behind a CV and a resume are quite different so you may want local advice. However, if I were making a CV for an academic position in the US, I'd probably still leave it off.
(define (cons x y) (lambda (m) (cond ((= m 0) x) ((= m 1) y)))) (define (car z) (z 0)) (define (cdr z) (z 1))
SICP is not a functional programming course - changing values and creating state comes in Chapter 3 [2nd Edition]. It is a course in the creative use of wishful thinking.
SICP will serve you well in interviewing, and don't worry so much about OSS projects, most people aren't involved with OS S when they are just out of school (I think older programmers make the best OSS contributors, but that is a personal opinion).
1) Open source one or more useful projects. Smart people will use them, fork them, etc.2) Have a referral program, and make sure it's easy to use. A lot of companies have a program that gives employees $1,000 or more if they refer a candidate, but not a lot of companies make the referral process an easy one. Build a landing page for each position. Include a little information about the company and the job. That way, employees have something to share on their social networks and via email.3. If you're looking for awesome and nothing else will do, consider allowing remote work.4. Set up a company page at Work for Pie (shameless plug) or Coderwall or similar. It'll help developers get to know your team and culture much better than a simple job description.
Are you listing for a Jr. position, but expecting Sr. level talent? Is your compensation package in line with the caliber of candidates you are seeking? Are you rejecting applicants because they don't match your skill requirements exactly? Smart people can learn new things pretty quickly.
If you have a budget, then the answer to your question is to advertise everywhere!
We focus on behavior more than data. So you can implement your logic in your browser. This doesn't mean we don't support data storage, we do, but our platform focuses more on what you can do with the data, more than just exposing the data through an API.
Additionally, we provide a Scheduling mechanism, which allows you to run applications at specified intervals using cron-like syntax.
Let me know if you need more information, or email me at email@example.com
It's entirely possible that somebody will call you into an office and tell you that you're not a team player. It's possible that they'll explain how it's crunch time and everybody's pulling together and it's unfair to the other people on the team if you don't pull too and how you're letting everybody down.
It's also possible that after telling you these things enough times and writing them down, they'll fire you.
That's fine too.
There are worse things in this world than being a talented developer on the job market in the Bay Area. If your company is silly enough to fire you for working the hours you agreed to work when they hired you, that's a shame. But you'll probably find yourself with a better job a week later.
More likely, though, you'll find that they deal with it. Better still, you might be able to convince a few of your co-workers to also make life a priority. Who knows, six months from now you might have an entire office full of people working sane hours. It's definitely worth a shot.
Some will tell you otherwise, but my feeling is that 12-hour days can't (and shouldn't) be maintained for more than short bursts. If you're doing 60+ hour weeks every week, you're going to be less efficient...or you're going to burn out. If someone is pushing you to work that much, then you really have to question why you're there. If you're the one doing the pushing, well...stop. Change your priorities. Work will always be there tomorrow, and you can be successful on a normal schedule.
(that said, long hours are somewhat normal at the start of a new job when everyone is bright-eyed and trying to prove themselves. everything in moderation, including moderation.)
(also, yeah, a lot of people here do online dating.)
Find another job, where you can have normal hours, and can have time for friends, fun, and hobbies, and creating an app, or open source project/whatever rocks your boat.
Life is too short to spend every minute of it making somebody else rich.
Make dating and gym time something that you actually care deeply about (instead of - "hmm, I guess those are things I should probably do") and watch your schedule restructure itself.
I know this sounds simplistic, but it really is that simple.
You're 20 (something), you will learn and grow, you will need less time to bring 12 hours of your current work value to your startup. Just make sure to start at filling the time before you get there, otherwise you will feel lost once you do (and thus fill your time with even more work, leading to burnout). Add some pressure by taking breaks - try to work less, deliberately, while keeping up the amount of work you turn out. You will end up more satisfied with your work.
Eventually you will find that only the stuff you do outside your work - getting outside and being with people - make you really productive.
(And yes, as others have said, 12 hours sounds like you're already being burned out. Not really a healthy start in any shape or form.)
Glory isn't real. The harshest lesson of success is that the "feeling" of success is extremely brief -- hours, days -- if you ever feel it at all. (Most don't. So they keep trying to hit higher and higher peaks in order to feel something, but the feeling comes from inside, not from outside, so no achievement will cause it to arise.)
If you are 20-something and you want a partner, or a family, you better work on that now. If you want to live life on your own terms, you better start on that now. If you want to live a healthy life you can't waste time.
So many "young people" I know think that they have time. They're waiting for real life to happen. Well, you don't have time and real life is now. What's 20-something? Then 30s. Then 40s. Then what? When's the good stuff going to happen? Never, if you wait for it.
Maybe try doing 9-9 on Tuesdays and Thursdays, if you can keep up with that rhythm, and then do 9-6 on Mon-Wed-Fri. That'll leave you plenty of time for social life and working out.
And then, you have the weekends too.
As far as dating: meetup.com can be good for finding like minded individuals, otherwise stuff like Nightlife at Academy of Sciences, gallery openings, etc. are great for meeting random new people from a different world (as a person in tech, I could never date someone from tech). OKCupid always works as a last resort.
At first I felt like I was letting the team down or whatever, because I was used to a) spending a lot more time physically in the office and b) judging other people by how early they left. However, I'm in a much better place now- I realised your brain doesn't just stop when you leave the office anyway, so you are still "working" on things really when you are not there, and you will feel better when you are there. 8-10 hours (I do 8-6) is still plenty of time to get a lot of work done! Personally I also felt a lot better letting my team lead know that I have a class every day at 7pm, and that I feel it has a reasonable priority in my life. Though sometimes things like production issues or late calls do come up, this made it easier for me to be out the door when I need to be.
Just do not fall for the myth that the right guy(#) or the right job will just come along. You have to go and find it. The clever part is maximising the surface area you have "out there" whilst keeping a quality reputation.
I suggest the following:
1. Decide roughly your ideal company / man (see (#) below)
If you cannot write a paragraph about the ideal that really knocks your socks off, then you do not know what you want.This is then the time to sample many different types and determine which suits you best.
2. Be aware of the local landscape - Angellist is good here as is OKCupid. However nothing beats meeting people face to face. Go to networking events. (Both kinds)
Whilst this may seem a little light hearted please remember this one important truth:
The best dates / jobs will come from mutual acquaitances able to connect you both. So this means expanding the people whom you know - spending all your time in one office with one set of people will limit the fish you can catch. So attend networking events, of both kinds, and remember its a sellers market.
Its your twenties. Have fun.
(#) broad assumption that you are hetro, but if not its still a sellers market it seems.
If get a two hour lunch break where I get to go to the gym, my afternoon will be more productive and more than make up for the lost hour.
Stand up from your desk and go to a party/pub to meet people.
Schedule your gym times; and if you have no time to go to gym that evening - then go anyway. You'll be better off that way.
If you say, I will make time.. then it is even more important to make time for yourself first (In my opinion)
Online dating is very popular in SF, however it is not the only way to find a partner. I never felt comfortable with it, and it took me time but eventually found a person I like.
Finding a good partner is a hard, especially when you are in school anymore. It will take time.
Even if you work 9-9 three or four weekdays a week, that still leaves at least one weeknight for meeting up with someone for drinks/dinner/social activity, plus weekends. I find that's more than enough time -- I generally have drinks with my coworkers Friday after work, have a social activity with friends on Saturday, and brunch or something on Sunday, and leave Sunday evening for chores.
I feel like I have a pretty full and balanced life, but of course ymmv.
Find a gym near the office, and get into a routine where you can go, workout, shower, and be back at the office in 70 minutes. Do it 3 times a week. What's the worst thing that could happen? If they dislike what you're doing, you'll hear about it before they fire you. Then you start looking.
Same thing with dating. Leave work at 7 for the date. What's the worst thing that will happen?
That said, you have to be good. People won't rock the boat with talented employees. If you're not good, it's tougher. And yes, people use online dating too.
Like most things at a startup, there are cycles. Sometimes work is 9-6, sometimes its 9-9. Consistency is uncommon, especially at the earlier stages. While you might not have time to date at the moment, you probably will later.
A few points:1. 9pm is the perfect time to grab a quick bite with friends and head out. There are a ton of great bars / spots which offer a casual environment to be with female / startup / life friends, eat drink and meet guys if you so choose. Ping me for recommendations.2. The internet (and especially OK Cupid) are great for arranging lots of dates with little effort. 9/10 of the people you meet will be boring or not click, but 1/10 will surprise you. Everyone uses it now, especially as a filler for in between relationships.3. SF has a great friends-of-friends atmosphere. Go to parties.4. Learn to love a busy schedule. You can easily cram more into life by going out after work, still getting a good nights sleep, and going back to work the next day. If you're only working M-F, it'll be the most active time of your life.
To answer your real question, I suggest friday to sunday as "not working day" don't think anything about job even deadline is short, just hangout and do what you like.
For dating people, is good to have partner that understand fully your workload, because understanding is important key to successful relationship.
Don't go to gym just for work out, running 15-30 minutes a day it's the best to keep your health, you can run with your partner or friends.
I've been with my girlfriend since before my career so I can't comment on dating so much, but we do find that we have to set a day aside every now and again where it's just us and no other distractions.
As for dating, I'd squeeze that in by leaving at 8pm instead of 9pm and on the weekends.
Work will not run away anywhere. It will wait for you. So use your time wisely, you have only one life.
Most of the people work, so they can earn, so they can live good enough. I think that you, like many others, went off a little from that track.
Now, taken over time, these topics will form a natural chain, networking with my present interests and previous topics of study. I might move from studying 'neoliberalism' to 'Margaret Thatcher' to 'Ronald Reagan', and onwards.
As this example suggests, autodidacts will quite naturally get stuck in topic chains, studying subjects that share a particular outlook, an outlook they take an interest in (be that outlook political, economic, or otherwise).
As such, autodidacts will inevitably study a syllabus that reflects, supports, and reinforces their current inclinations. Or, put more pointedly, there is no obvious mechanism by which self-learners will come to grapple with divergent viewpoints or challenging disciplines.
There is cause for confusion here. I am not claiming that self-directed learners will consciously choose to ignore alternative perspectives, only that this pattern naturally results from the way an autodidact studies. If I start reading the work of some libertarian political thinker, the thinker's intellectual predecessors or successors is the next obvious topic of study. The starting point lays a train-track into similar material.
(Similar anxieties have been articulated by Eli Pariser about the social Web. Pariser argues that Google's powerful filtering algorithminformed by previous searchesskims off content that challenges a searcher's current outlook in order to return better search results, meaning that users browse the Web within an intellectual bubble.)
Additionally, I do not argue that well-organised and broad-minded autodidacts cannot escape this trap. Only that it is difficult to do so. Firstly, this pattern usually takes place without the learner's awareness, meaning they cannot take remedial steps. And, secondly, it is easy to imagine a learner ceaselessly kicking divergent perspectives into the long grass; "I'll read one more liberal thinker before I crack open Hayek".
But, importantly, universities disrupt this pattern.
Unlike critics seem to believe, universities comprise more than a succession of uniform courses on bland topics. Instead, they are the pooling point for a generation of young people from disparate backgrounds with divergent politico-cultural perspectives.
This vibrant academic social fabric provides the natural environment for informed, critical dialogue and the exchange of ideas and opinions. And, it is through such exchanges that our ideas are challenged, deconstructed, and rebuilt.
Of course, I am liable to an accusation of idealism. Firstly, for believing that university is any more than a stopgap between high school and work for young people to drink, party, and have sex. Or, for believing truly socially mixed universities exist. I do not deny that second-rate party schools exist, nor that the West is diseased with economic inequality. But, these are not essential to the university system. And, I am optimistic that our governments are taking proactive steps to rectify both problems.
Taken together, I worry that self-directed learning lends itself to an arrogant self-belief in one's opinions and a lack of regard for the complexity and nuances of politico-cultural debates, and that the platform universities provide for open interaction between peoples of different socio-economic background has been largely ignored.
(Note: from an article I wrote way back when)
My wife taught online for UoP. They used NNTP and a book. No video. No interactive games. It worked because it recognized that the sizzle was the degree. It worked because they weren't trying to sell it to established institutional interests - e.g. department heads and professors and administrators who want to make sure that streaming video can go on their CV.
Seriously, what is wrong with putting up some nice readable-at-own-pace lecture material that is hyperlinked and indexed correctly so that I don't have to rewind videos if I missed something?
I think most of these problems can be overcome, although probably not by translating traditional instruction and educational ideas more or less directly to MOOCs, but by exploring new ways of instruction, teaching, studying, and learning. I fear, however, that this will not happen (soon, or at a large scale), and MOOCs will become the poor mans' only educational opportunity, creating an educational/learning divide between those who will have access to small-scale quality instruction and those that have only access to MOOCs.
For governments and schools MOOCs make it easy to implement 'education for all' while cutting costs. For example, I could imagine high schools to stop offering advanced placement classes or some subjects locally, but instead offering access to MOOCs on those topics with some local supervision by people not schooled (and payed) as teachers. Similarly, I could imagine the government giving free access to MOOCs to all, while, at the same time, cutting on general scholarships.
Almost all Coursera's coursers have weekly deadlines. If you got busy for a couple of weeks during the course time you will fall behind. And the chances that you would get busy are quite high given that some of the courses last for more than three months.
However, that shouldn't stop you from trying. Its really easy and cheap to validate your idea. Sign up as a reseller at Rackspace, Intermedia, Apptix, etc. Now go get customers- direct customers are good, but channel is king in email hosting space. You want to build a partner channel of IT consultants that go into small businesses and do managed services. Theyre already providing IT, selling your email is an easy upsell and extra revenue for them.
If you can get a ton of resellers/consultants, spending money on your own infrastructure becomes slightly less risky.
* A polished email client with consistently designed mobile, desktop, console, and web apps.
* Spam filtering and email classification 
 Especially this.
there are many others
http://karmurl.com/ - trade feedbackhttp://blogoscoped.com/archive/2008-11-25-n66.html -- buy feedback for $7
I'm a bit older-ish (27) and from my experience, trying to keep your ideas to yourself is not really productive. Ideas are dime a dozen and the best way to get feedback is to hand it out to people (even unfinished hacky proofs of concept will do).
You could always go to family and friends, but there are two problems with this approach:
1. They may not be tech-inclined in which case they won't really "get" it.
2. They are your friends and family. They will, 90% of the time, give you positive reinforcement. Trust me. Nobody loves you as much as your mom does ;)
Finally, I just want to say that random "idea advice" is generally pretty worthless anyway (even from random people on the internet). You won't see any genuine feedback until you have customers, not just some guy flipping through a couple of your pages going "I think the sign-in button should be bluer" or something to that effect. I would urge you to finish an alpha version and test it on a couple of potential/real customers. That's the absolute only way you'll get any poignant advice.
I just want to add that a co-founder should bring something very real to the deal, not just a critical eye (you know what they say about opinions).
Why not, instead of finishing the code, make a video, or at least a nice landing page demonstrating what you intend to build?
Next... and this is what I've struggled with. I've created a ton of "proof of concepts", that is, things that pretty much work and prove that you CAN do it. Well, the problem is that you feel so awesome and smart from creating those things but that ISN'T the hard part. Actually creating a stable solid product is the hard part, what makes you a good developer. Unfortunately, it's also just a lot less fun.
To do that, start with a customer profile. Answer the following questions:What is the problem? How is it solved? What is needed to implement the solution? Who can implement it (are there any barriers like equipment, technical expertise)? How do you reach them?
Once you know who to contact, it is a great deal easier to find them. Contact those people. Listen to what they say about the problem. Ask yourself does my code address this problem? If not, fix the code, or call a different potential customer (actually, do both).
Document what people say. You'll learn what the real pain point is, you'll learn how other people have dealt with it, and you'll learn whether you are contacting the right potential customers.
If your product does address the problem, ask the person to buy your solution. You can offer a discount rate for being a trial customer. Get their feedback. If you can sell it, as is, to 1% of the people you contact, then you have a business (which is a whole new set of problems). If not, restart at an earlier stage. Maybe the code doesn't solve the right problem, or maybe you pitched the wrong customers?
It should be a creative learning process, and you seem to enjoy that already. If you want to bounce around more ideas, feel free to get in touch.
I'm only a few years older than you and on a similar path, so you can start with me if you like. (Also: put your contact details in your HN profile so people can reach you!)
Two things to know:
(1) We've got ~4800 people involved in these now and we're doing it largely "by hand", so we can't promise not to occasionally screw up.
(2) A small subset of people seem to have email addresses that both our own mail server and our mail client insist are spam sources, and we never see their mails.
If you're having a hard time getting a response from the "official" address, just mail me.
I actually did this backwards from the OP where I was doing freelance work but now I have a salaried job. My wife also has a full time job.
I just had to get that out there as lots of the time I feel very alone and think no one else is in my situation.
Thanks for sharing your story. I will check out your website later when my daughter is napping :)
Every few months back it all up to some external drives and store it in a safe deposit box, or use a service like Iron Mountain.
Text went away. Pictures and icons appeared.
The thumbnail pictures of the people in my chat list got bigger, their names stayed the same size, and all indication of their online/offline/idle status completely vanished. And half the people I talk to regularly disappeared from the chat list. A lot of my friends were perma-invisible, and not it won't let me see them. Great.
I feel like they want me to scroll through the news feed like I'm reading a glossy magazine full of pictures, but I don't want that -- I want text.
I had hoped that changing to the one-column layout would make things better, but all the posts feel like they have a width of less than 80 characters.
3) (Not really a blog, but so great) http://lwn.net/
4) (For entertainment) http://thedailywtf.com/
app stack, os, config, or code?
Submit the answer back for HN to discuss if you want.
Three scenarios in which it would be potentially unsafe to keep a versioned password database, from worst to least-worst:
* Had they used AES-CTR with a fixed key and nonce --- a surprisingly common design, unfortunately --- then every save they did would create a chunk of ciphertext encrypted under the same keystream as some previously versioned chunk. This is fatal to the security of AES-CTR; it is a failure mode that keeps me from recommending AES-CTR. (Similar problems exist for the other stream modes).
* Had they used AES-ECB --- ie, the default mode of most AES libraries --- every repeated chunk of 16 bytes would be evident in the ciphertext of the database, and, worse, the versioned copies would likely create variants of that data at different offsets. Combined with known plaintext (maybe there's some in the KeePassX headers?), this could set up an attack, albeit a very elaborate one that would require lots of changes to the database.
* Had they used AES-CBC with a fixed IV, instead of generating it randomly every time the database was updated, they'd have the ECB problem on first blocks of each message. Messing up the CBC IV is a very big problem in online systems where attackers can take many thousands of bites at the apple and adapt their inputs in response to what the target does, but it's less of a problem in offline systems like KeePassX and would have been a mostly theoretical problem.
The bigger problem with KeePass is that it doesn't see to do a good job of deriving keys from passphrases (as documented, it uses salted SHA-256). Maybe that's changed since their security page was authored, but that problem would keep me from putting a KeePass database on any machine I didn't control.
>For both algorithms [AES/Twofish], a 128-bit initialization vector (IV) is generated randomly each time you save the database.
>This allows multiple databases to be encrypted using the same key without observable patterns being revealed.
I'm no crypto expert, but I think this also covers multiple versions of your kdb file.
Would the ePresident be fixed for their term of office (no upgrades whilst in post)? Could you ask it questions as a citizen before voting to know how it would respond for any given parameter set? Would it be programmed according to the Three Laws?
Perhaps all parties could submit an ePresident candidate and each could get a vote on all actions based on the proportion of the population who voted for it.
No: it would be government by engineering which is wrong. States are not machines.
I think it's because no one fixed it yet.
It is an open source project, so there is something that one can do about such things beyond complaining.
Way to get volunteers to fix it.
There are two sides to these transactions. The vast majority are violations of local laws and everyone knows it. The AirBnB model allows one jackass to force jackasses and worse upon those living nearby.
I have no sympathy for anyone who struggles using their service. Stay in a hotel. They are designed for that. My neighborhood isn't a place for you to throw your party or sit on the hood of your car drinking at midnight or send your brats outside to play throw rocks at cars so you can get some Sunday morning booty on the sly.
First place, the host accepted (so we were billed) but 20 minutes later she sent a message to say she had to cancel because someone her husband knew died. She never cancelled the booking, it took several days of me complaining to airbnb before they agreed to cancel it themselves, so we could get a refund.
Stupidly I didn't learn my lesson and tried to book another place through airbnb later in our trip. It was only after they had authorised my card for $1100 for the stay that I got a message to say "you need to provide more information" - I don't have a LinkedIn or Facebook account, so my only options left were to upload a photo of my drivers licence add then they wanted to verify me by my card, so they charged < $1 and said I needed to tell them how much they charged (from my transaction history). They gave me 11 hours to do this - my banks visa transactions are about 2-3 days delayed.
When I emailed them about this, they suggested I create a video.
I never did stay at any of their places. One of their phone support staff tried to tell my refund was taking so long because "Austrlaian banks can't believe we want to give your money back".
I will never (attempt to) use airbnb again. The fucking around is simply not worth it.
Both times when airbnb let us down, we stayed in a short term rental, organised directly with the owner over the phone, both times at late notice because of airbnb.
The second time we stayed, he left a bottle of wine for us. It's not a huge thing, and neither of us are big wine drinkers but it was enough to cement that place as somewhere we will go back to whenever we are in Melbourne.
Turns out hotels were cheaper and less hassle.
However, as some people in this thread have already pointed out, you need to stick to certain rules of a thumb:a) always check response rate and average response time to weed out any sloppy profiles;b) BEFORE you place a reservation, write a host introducing yourself and telling a bit about the purpose of your visit;c) after the host OKs you (or makes a special offer through the system), go ahead an make the booking.
Of course, the optimal time to book is 1-2 weeks before you arrive, do it earlier and hosts' plans might change, do it later and they might simply miss your message.
The person who's home you are staying in wants to know it safe to have you there. Big deal?
Obviously the issues with Facebook/LinkedIn should be resolved, but if these were down it is absolutely 100% responsible of AirBnB to expect people to verify their identity through whatever means necessary. If you are not happy with that, use a hotel.
(If you are talking about a Google I/O launch, well... don't give up yet. You never know when a project will join the Nexus Q and Google Reader.)
Your product will naturally evolve as a result of interactions with your customers, so to some extent your products will diverge naturally anyway.
I researched this for a long time (more than a year). What I gathered from it was that a lot of the programs out there are focused on teaching people how to code. They have students go through exercises in a sort of robotic manner, and don't take into account that different people learn differently. From interviewing past students, the general feeling about all of the programs is that they simply don't teach much about how real world programming really is. Few teach source control, none taught best practices (and how to avoid getting fired for a git mistake). They also didn't cover design much. People are simply being taught a lot of Rails magic. But worse is that people were not being taught how to break problems into steps. Which is the basic skill you need to program.Very few people managed to get jobs as programmers, because they would struggle with the most basic tasks.
With that in mind I created Protocademy. It is a program focused on building things, and leaning how and why things are built. Its designed to take a beginner to a point where they can tackle building an API or a CMS (which are the most common jobs these days). The program does not focus on one language or one framework. It uses various. But most importantly, it teaches how real programming is done. The challenges we face every day, and how we overcome them. It is a program that runs for 6 months. Yes, twice as most other programs. Due to how much learning there is. You really do need 6 months to teach someone how to do these things. It costs $99 a month, but its going to increase soon due to some improvements being made (like students getting their own VPS to hack with).
I apologize for writing all of this, because it may seem like I'm trying to pitch you the program. No. I simply mentioned it to share my findings, and what I'm doing to fix them. If you have any questions, my email is in my profile. Good luck.
Every program will be different but I suspect a lot of the results will be the same given how fast the time frame is for them to go from non-programmer to programmer.
It also depends a lot on your prior experience. Have a solid math background? Then you'll probably have a slight edge overall.
There are a lot of programs out there in all parts of the country; investigate your options.
however, if we want to become outstanding developers, the only option is to work harder, smarter, and enjoy the process
The only time I didn't use them was a weird edge case recently where I needed a multi-domain certificate, and NameCheap did not support those, so I purchased direct from GeoTrust.
Google issues its own, GitHub uses DigiCert(http://www.digicert.com), Hacker News uses Entrust (http://www.entrust.net).
In general, Verisign (http://www.verisign.com/) will be the most expensive and presumably the most widely supported, but there's no need to pay up for it when DigiCert will work just as well.
It is even totally unimportant if your provider is "insecure". If any of the commonly trusted CAs is hacked it affects the security of your service as well as if it's the CA you use.
Therefore I would go with StartSSL (https://www.startssl.com/). They are trusted on all important plattforms, are free for one subdomain per domain and very cheap otherwise. You only pay the verification of your identity, unlimited domains, wildcard etc. then. I haven't seen any cheaper one. You might get some competitive prices if you combine the use of single subdomain ones through SNI, but I wouldn't prefer that over a inexpensive wildcard one.
What is the worst that can happen? If the revocation servers go down, the browser just shows a small warning symbol, but everything still works. If your CA gets hacked and untrusted in common browser, you have to buy a cert somewhere else ... this is the risk of every CA and a new cert is just minutes away ...
There is no way to determine who is more secure against hacks etc. If they are trusted where you need them, they are all equal.
The cheapest SSL options there ($20 and under) offer NO verification of the applicant of the certificate. Thus, you could be a scammer for all they care, as long as you control your site (even a phishing site) they've give you the "domain validated" certificate.
Stick with either EV (green bar, extra assurance) or a high-assurance only shop like DigiCert, Symantec, Entrust, or GlobalSign. It'll also show your users you care about trust and identity assurance online.
a. whether you want a certificate for a single hostname, several hostnames, or a wildcard;
b. whether you want extended validation or not; and possibly
c. what country you're based in.
Perhaps other factors as well.
Michael Hartl's Rails Tutorial was what I used when picking up Rails. http://ruby.railstutorial.org/
railsguides.com has some pretty great videos on using different rails libraries.
If you're really not a fan of the Ruby syntax, maybe something like Python with Django would suit you better.
If it's missing the Visual Studio IDE that's giving you trouble you might want to check out the RubyMine IDE (made by the same devs as the Resharper VS add-on).
An intelligent guess says this has something to do with what you are seeing.