And whoa, hold on there, here's a topic that was posted just after the issue popped up in 2008:
Notice that the current bitmessage implementation has scalability problems (and they do not seem to care).
Consider a p2p message system like this one:Messages are divided in headers and bodies. Headers are less than 0.1kb and messages can be as large as you want. Headers contain a micro-message or they point to an id of a body or to a url. Like bitmessage, you have to generate a poof of word (POW) in order to send a message. The headers contain a 'to' address field. This can be partially filled out, or left blank.
Receive everything and hold everything (for a day). They help their peers.
They have a 'light' address. They make the first n bits of their address public to their peers. Then they receive only the headers where the to address is partially disclosed and the leading bits match. The more bits of your address you disclose, the 'lighter' your address is. This is also the way to scale for a few billion people. Bodies can be downloaded similarly or even with specific id. Mobile clients never send any content to their peers, nor do they retain other people's messages.
So far this is p2p. But nobody wants to be a peer of a mobile client, or they might want an excellent connection to one peer. This is where more central services come in. They accept payment for a connection and provide high-speed. They also accept the useless mobile/light clients. Also these services could calculate the POW for the light clients.What happens if one or all such services go down? Not much, because the services were just high-speed peers. The network can continue as a normal p2p network.
I have a lot more ideas on how to improve this design.
If you have an ongoing relationship with the VC then I would inform that person up front of the basic circumstances and say that you will present a plan of action for moving forward at the meeting. Be circumspect, as you have certain responsibilities towards your employee by law so you shouldn't disclose more than you absolutely need to (so as not to expose yourself to possible employment litigation).
(A negative answer is probably not what you were looking for, but I thought it may be useful to mention to WHAT I moved on to from TiddlyWiki).
But the idea was very cool, and I truly appreciate the "small is beautiful" design that it embodies.
The EFF and the ACLU are fine for what they are, but they've got too broad of a mandate to have the kind of focused impact you want. You can't be an effective mainstream advocacy organization when you're off defending unsympathetic people for principled purposes. That's an important thing too, but it's a different thing.
For people interested in effecting real political change, I seriously recommend watching this documentary on the Prohibition: http://www.pbs.org/kenburns/prohibition. One group of people got a nation that until (and during and after!) prohibition drank 140 million gallons of liquor a year to outlaw alcohol. The money wasn't on their side (the government made 1/3 of its revenues from liquor taxes and the beer makers had tremendous power), but they accomplished their goal by masterful politicking: http://en.wikipedia.org/wiki/Wayne_Wheeler.
"Under Wheeler's leadership, the League focused entirely on the goal of achieving Prohibition. It organized at the grass-roots level and worked extensively through churches. It supported or opposed candidates based entirely on their position regarding prohibition, completely disregarding political party affiliation or other issues. Unlike other temperance groups, the Anti-Saloon League worked with the two major parties rather than backing the smaller Prohibition Party."
Well, first of course there's a lot of us. Even having only a fraction, the NRA now has 5 million members. The EFF? I would be surprised to learn they had more than 50,000 (couldn't find a number in a quick search).
2nd, we vote, and many of us vote first and foremost on this issue. Especially since it's a good general touchstone, not that more than a tiny tiny fraction of national level politicians really give a damn about either issue no matter what they say most of the time.
3rd, there are many major elections where it's clear gunowners were a necessary if not necessarily sufficient part of the winning side. Gun control at the national level mostly disappeared in this century until Newtown after the Democrats suffered a string of catastrophic defeats from losing both houses of the Congress in 1994 to Al Gore losing by a whisker in 2000. That it was even close is telling, especially since Bush isn't much of a conservative or friend to gun owners, e.g. he officially supported renewal of the "assault weapons" ban.
(Note that it's in our cultural DNA to defy being told we can't or shouldn't have something, be it guns or e.g. drugs. But those are tangible, literally put your hands on them things, not like "privacy", the loss of which isn't immediately visible.)
On the side of the Stupid Party, every post-Reagan defeated Presidential candidate was, or appeared to be bad on gun ownership (Romney's actions were good, but his rhetoric was very bad). Again, the very narrow margins by which Bush won in 2000 and 2004 are probably also telling, bad rhetoric and very few good actions.
Now for some historical specifics that made a difference:
The biggest is how extreme gun grabbers are. While businessman Eric Schmidt is notorious for some creepy even if possibly true statements, I'm not aware of any national level politician who's willing to go on record saying we have no right whatsoever to privacy (whatever they actually believe).
Nothing compared to e.g. Dianne Feinstein's "If I could have gotten 51 votes in the Senate of the United States for an outright ban, picking up every one of them . . . Mr. and Mrs. America, turn 'em all in, I would have done it. I could not do that. The votes weren't here.", or Michael Dukakis' "I do not believe in people owning guns. Guns should be owned only by police and military. I am going to do everything I can to disarm this state."
Legislation stripping us of gun rights are much more in your face than e.g. FISA, and have much more concrete results (see below). Privacy is much more a Federal issue, although there have been a number of gun privacy atrocities at the state and local level. Whereas the nation frequently watches some state go crazy and e.g. tell you that you can load only 7 bullets in your 10 round magazines ("clips"), and arrest people on that basis. Plus hypocrisy, there are many many carve outs for the anointed, be they police or politicians, or the frequent discovery that a prominent gun grabber owns guns. And all the politicians with armed bodyguards telling the rest of us we don't deserve that level of protection.
Then there are specific atrocities, cases well known by gun owners of innocents brutalized or killed by abusive organs of the states. This became big a while after the national Gun Control Act of 1968 was passed, when the BATF had to find something to do for its Revenuers after sugar price supports killed the moonshine industry.
Our side can point to kittens killed ("I swear I am not making this up"), pregnant mothers who miscarried, people crippled for life, mothers shot dead while holding a baby (Ruby Ridge, in which the BATF was enlisted to try to force her husband to spy), and many many outright killed (Waco started out as a BATF "ricebowl" operation, they wanted some nice video for their first budget in the Clinton Administration). Plus a constant drumbeat of gun owners ensnared by "flypaper" laws in gun grabbing localities; even NYC has realized it's damaging their tourist industry.
And how could I forget Fast and Furious, just one of several Federal Government gun running operations that sent thousands of guns south of the border, resulting in 350 deaths and counting, just to generate better statistics for gun grabbing propaganda (that reason is now on record and any other explanation suffers an Underpants Gnomes logical error).
The very secrecy of our national security privacy problems makes the latter problematical. Ignoring that the targets of the DEA are seldom ones we can empathize with, that they launder the tips they get from the NSA means that as of now I don't think there's a single specific case we know of.
And one final general point: lots of public figures are willing if not happy to demonize gun owners of almost every sort, and gun organizations (we can see the latter in this discussion). That results in strong push-back from the targeted (again, it's not in our cultural DNA to take that lying down).
The problem is, it's mostly supported by individuals, not the industry. And there are a lot more individuals interested in gun rights than electronic rights. It has a budget that's a tiny fraction of the NRA's.
Other ways you can help EFF, like using their Amazon referral link:
Privacy? Not so much. But we do have the EFF. So donate!
So apparently no one at Hacker News knows about EPIC:
which is, more or less, what the original poster is asking for. They're not militant, I suppose. They don't have the same level of anger that the NRA manages to harness, don't have talk radio hosts promoting them, that sort of thing. But they do exist and are focused on this one issue of electronic privacy, and yet apparently are failing at their job of self-promotion, because no one on HN knows they exist.
Are they failing to do enough outreach? Is a different organization really needed, or does EPIC just need to do a better job of marketing itself?
So, in the case of Privacy, you aren't fighting your Representatives who can be bought to change laws. You are fighting the Court. That fight is much more of a long game. And that long game would seem to be better won through broader Civil Rights which are already under attack. Read the First Amendment and think of Snowden and the media. Read the 4th and consider the broadness of "unreasonable" and where it extends to property seizure laws. Heck read the 8th and consider how broadly solitary confinement is used as punishment in our prisons. Or how anti-drug and anti-marriage laws restrict personal choice. To me, protection of our broad Rights against the Leviathan is the issue of our time.
That said, the 2nd Amendment is also an ally in this fight. In contrast to Privacy, the right of gun ownership is explicitly guaranteed and the NRA is a partner in questions of privacy. We just need to help them realize that the national security apparatus could easily be expanded inwards to target gun owners. We need to help them realize that the technology to do so is already trivial for the Big Bad Government.
The NRA & the gun industry have successfully marketed a product, and the NRA has successfully marketed itself as the means of protecting customer's rights to that product.
Note, the NRA doesn't have to be the one that markets gun ownership as a positive - that can come from any number of sources, inside and outside of the gun industry. The NRA just has to give the image of being the political outlet to protect that right. Thus the media and/or possibly the gun industry can throw gas on the fire to show that guns are a necessity of American life and in turn because of it's perceived credibility on the issue people vote according to what the NRA says.
Now, presently I don't think either the NRA or the industry really has to do much work marketing guns. All they have to do is hold back the tide whenever a tragic event happens and forestall action when the willpower to change is present. Then, when election season rolls around, they just remind their members how to vote.
In the case of privacy there is #1 no product, and #2 no clear "defender" of our right to privacy. Further, given the nature of privacy, I don't think there will ever be a clear product or defender for/of that right. Without that, there's never going to be the approach that markets the product as a necessity or a group people will pay attention to when voting.
Just think about the ACLU - part of their mission is privacy. But yet I'm sure half the people who care about internet privacy don't even like much less trust the ACLU. EFF - majority of the population hasn't heard of them. It's just too sensitive of an issue to have a blanket organization representing everyone's interest.
Finally, as a side note, I think I would pay for an email service like this: free email, with conditional payments. Whenever the service receives and refuses a government request, it charges a very small fee (couple cents or even a penny - will wait till x amount has accrued before charging card). Then in turn, the payment fee goes to the campaign of a pro-privacy candidate or organization like the EFF etc.
The NRA does this and, like the ACLU, knows to defend the extremes. If we want the 4th amendment defended, then we need that type of organization.
If you hate the NRA, it's easy to paint this political stance as nothing but a move of pure-gun-lust...however, such stances set precedent for other privacy related rights. To put it another way, just because the ACLU defends pornographers, it doesn't mean the ACLU is doing it purely out of love for pornography.
edit: In any case, there will never be a "NRA for Privacy". Pause and think about it. What does the average person experience in terms of privacy invasion? Not too much, and not at a constant clip. Would that average person be able to discern between heavy privacy protections versus some privacy protections, on a daily basis? Not really, you mostly only know your privacy is being invaded when it's too late.
Compare that with how your life as a gun owner changes if, say, conceal and carry is revoked. Or AR15 rifles are banned. You experience that immediately.
Also, good luck getting celebrities on board. They are used to having their privacy violated as a matter of routine. For them to experience a real change in privacy would involve infringing on certain First Amendment rights (look up the difference between public and private figures)
In the past, naturally occurring inefficiencies helped to safeguard privacy. Privacy was free. However, now that the technology to collect, store, analyze, and distribute information is so cheap and readily available, we are seeing a massive loss of privacy.
As an economic externality, privacy can only be protected through deliberate effort. We will not get privacy unless we demand it from society. Therefore, political action is a prerequisite. Pro-privacy organizations will be essential in the years ahead.
People only like privacy as an optional concept; what they really like is sharing their personal information with strangers on the internet.
Just as the Rutherford Institute is more protective of individual rights than the ACLU is.
But you're right we need an organization for privacy.
The EPIC and EFF are not enough.
Google don't be evil? FAIL
We need a global charter for privacy rights.
If you are the only one that believes the person is incompetent but the rest of the team (including supervisors) doesn't believe so, then you've got to let it go. It's not your battle.
If you want to "thunder down" on the individual, go ahead, just don't do it in front of the person. Find a room in your house, and let it out. You'll feel almost the same as if you had done it in person.
People have long term memory for highlights and short term for details. If you "unleash" you could be branded as the person that torn down another colleague (a non team player, hostile, etc..) and the reasons for your outburst (regardless of how legitimate, wouldn't be really remembered). Depending on where the person is on the totem pole in the company you may even be putting yourself in danger of losing your job.
But, based on what you are saying, it almost seems you are talking about design issues with code and approaches on how to solve a problem. If this is the case and you think the person's solutions are sub-par, but they still get the job done, then you just need to chill. We love to think how something is designed/implemented is really important but at the end of the day if the car turns on and drives around, most people just don't give a sh*t that the engine is the best in the world. Keep your part of the code the way you and if it turns out that you end up maintaining/owning the person's work, then you can start refactoring or complaining that the code is subpar.
I mean, if it is possible for "imbecile" and a "poser" to get this job, there must be something wrong with it, your employer and its recruitment process.
Why waste energy, time and your life for problems like this one?
The way I would go about solving this problem is like so:Have a nice private chat with the person. First, ask him if he has any problems with anyone at the office. Then address those. Follow that by relaying your problems with him(in a nice, professional and calm manner). Work out with him how you would approach solving the problems you have with him. It could mean that maybe he might need to take a week off to brush up on whatever the language skills, or even that he might think it is culturally acceptable to lash out like he is.
Basically, work with him to figure out how to make the workplace a better place for both of you. Remember, if you fight fire with fire you only get burned.
Personally, I advocate this strategy: you must periodically get contacted by recruiters, yes? When they ask "do you know anyone who might be interested in this position," pause for a moment, and then supply this cow-orker's name and contact info.
Clearly, despite their incompetence, they managed to get their current job, so they should be able to get another one with the aid of a good recruiter.
Cry lots of fake tears when they announce that they're resigning and heading to another gig. Then, go out for drinks to celebrate once they're gone.
That's narcissism, not merely annoying behavior, and sometimes dangerous: http://arachnoid.com/ChildrenOfNarcissus
> My patience with the imbecility is at it's end and I'm ready to bring thunder down on this individual but is it ever okay for this to happen?
Confrontations don't work with people like that -- you have to get rid of them.
If you take a narrow focus on a particular cryptographic event (such as your encryption of a string with an RSA public key) then you miss the greater story about encryption: it's not just the individual cryptographic primitive that needs to be implemented correctly, it's everything else.
An RSA encryption like that does not stand alone. Keys must be generated, secured and distributed. The RSA library itself must be validated to ensure that it works correctly. The actual primitive must be used correctly (in the case of RSA don't use a stupid exponent as some have done). And the environment within which the encryption is used must be understood and secured (just look at the CRIME and BREACH attacks against TLS to see how something 'secure' can be broken because of something apparently irrelevant, in this case, compression).
The overriding reason that encryption is 'hard' is that secure computer systems have enemies and those enemies (attackers) will do _anything_ to attack the system. They will attack it based on timing, compression problems, flaws in the protocol, freezing the RAM to extract a private key, etc. etc. There's really no end to the variety of things you can try to attack a cryptosystem.
So, building a secure system may have encryption as a necessary condition, but it's not sufficient. So much else can and will go horribly wrong.
If you are interested in this hit the books and understand the history of cryptography. For example, look at how Vigenere was broken by Babbage, or the Venona ciphers, or Lorenz. These 'old' ciphers can tell you a lot about how people actually attack things. Then read about modern ciphers and attacks on them. Wikipedia has much. Read about TEMPEST and imagine other attacks possible in that way.
- Simply encrypting your message as indicated will not protect you from replay attacks. Someone could record your message and re-transmit.
- Simply encrypting your message will not assure that the contents haven't been modified, someone could patiently sit in the middle poking bits to see what happens.
- Most encryption schemes will require you to choose a block cypher, doing so requires some knowledge of the options and the data you're sending. Some handle large amounts of data poorly, others fail when you send identical messages.
- Most encryption schemes will require you to initialize them with truly random data, both an early version of Netscape, and Debian messed something up and provided far less entropy than they appeared. Relying on /dev/urandom on a machine that's just booted, or otherwise faulty entropy providers is fatal.
- Attackers can record your data and play with it forever, so even if a mistake or attack isn't revealed for years, they can still go back and decrypt your data. I believe the NSA broke the Russian's use of a One Time Pad because they re-used pages years later.
- Simply encrypting data doesn't provide assurances that you're communicating with the system you think you are, the initial contact is still tricky.
So there's more to it than a single function call.
http://nacl.cr.yp.to/features.html High-level primitives A typical cryptographic library requires several steps to authenticate and encrypt a message. Consider, for example, the following typical combination of RSA, AES, etc.: * Generate a random AES key. * Use the AES key to encrypt the message. * Hash the encrypted message using SHA-256. * Read the sender's RSA secret key from "wire format." * Use the sender's RSA secret key to sign the hash. * Read the recipient's RSA public key from wire format. * Use the recipient's public key to encrypt the AES key, hash, and signature. * Convert the encrypted key, hash, and signature to wire format. * Concatenate with the encrypted message. Sometimes even more steps are required for storage allocation, error handling, etc. NaCl provides a simple crypto_box function that does everything in one step. The function takes the sender's secret key, the recipient's public key, and a message, and produces an authenticated ciphertext. All objects are represented in wire format, as sequences of bytes suitable for transmission; the crypto_box function automatically handles all necessary conversions, initializations, etc.
Somewhat unique to security and cryptography are the number of subtle bugs possible. There are both problems of actual "normal" bugs (like the Debian entropy bug) and system level design errors (like CRIME).
NaCl/Salt tries to reduce the number of errors possible by using the library wrong (as opposed to eg: openssl that has a very (some say too) rich interface). But you could still end up writing the secret key to swap. Or doing something silly with the plain text. Or expose yourself to a buffer overflow in the part of the code that renders those cute avatar-images for your chat application.
The overarching problem is that you don't really get any feedback about whether what you're doing is right or wrong. For example, no cryptographer would use RSA like that, but that's not obvious just from studying the wiki article. Or from looking at the function output - it does turn ASCII into gibberish, as advertised, and that's where most developers will call it a day.
The moving parts are also treacherous. You're not just going to encrypt a string - someone is meant to decrypt it. Have you authenticated the ciphertext? Are you exposing a padding oracle? Or timing attacks? Are messages susceptible to replay? In crypto systems, these things are equivalent to locking the front door and leaving the window wide open.
In practice, most insecure crypto constructions aren't due to bugs in the implementation of RSA or AES. They're because of developers choosing inappropriate primitives, gluing them together incorrectly, or inadvertently exposing dangerous side channels.
Fortunately, there are libraries that can help. As mentioned elsewhere, NaCl/Sodium and KeyCzar provide higher-level interfaces that can abstract away many of these issues.
A given: all software has bugs. Usually, that doesn't matter a CRUD app will eventually get debugged enough to the point of usability. (Sometimes even maintainability.) We do not understand enough about programming to guarantee perfect execution in all cases, but no one gains any value by causing an obscure input case to cause a null pointer exception.
Whenever we use crypto, however, we inherently have code which protects something valuable: from forum passwords to credit card numbers to state secrets. This means that all the subtleties which break in ordinary code, but no one cares about, suddenly become important. Every interaction of input to memory to processing to storage (to network) must be scrutinized for places where a crucial piece of data may leak an encryption key, or perhaps just enough known plaintext of known cyphertext to mount an attack.
To repeat what others have said in answer to your more general question - solutions to "real world" problems include more than a single call to a primitive. So you need to find libraries that provide a higher level API, like parts of NaCL http://nacl.cr.yp.to/, Google's keyczar http://www.keyczar.org/, etc.
Even for simply encrypting a string with a password - https://pypi.python.org/pypi/simple-crypt which is what I talk about in the first link - I needed three things: key strengthening, the encryption itself, and an HMAC. Making those work well together was harder than I expected (at least 5 bugs harder...)
The results of this is things like the developer who used "1" as the multiplication factor, so to decrypt the data, you need to divide each block by 1...
1. For a high value target like Edward Snowden, there is a broad spectrum of attacks, and any operational weakness is fatal. There are many examples of these attacks described on this thread. Unless you know what Snowden knows, odds are you will not get it right.
2. BUT, if everyone had easy encrypted email and real time communication, the mass surveillance machine would be blinded, because the kinds of attacks that are used against high value targets do not scale up well.
It's also very hard to figure out if your encryption is bugged or not. I guess that for most us, once your method returns a hash, you expect that everything is secure.
On a side note, I wonder how many people on HN would claim to know the inside out of encryptions. (Not the difference between SHA1/MD5/bcrypt but the actual math behind derivations and how they work)
There's a massive market for easy-to-use encryption. Easy-to-use does not imply insecure in any way at all.
For example, a common mistake is to assume that by encrypting something, attackers can no longer change it. Or perhaps you'll use your standard equality operation to check whether a decrypted string matches some value, without thinking about timing attacks. Or maybe you'll just use AES in ECB mode.
From their homepage:
Crypter crypter = new Crypter("/path/to/your/keys");
String ciphertext = crypter.encrypt("Secret message");
disclosure: I'm a co-founder of LaunchKey
A good crypto library should keep your data safe for decades. We don't make the same demands (no bugs, due to no updates possible) of other software that often.
Also, proper key management is out of reach for most of us.
e.g. easiest to use :: SSH with password <<>> SSH with passphraseless keys <<>> SSH with passphrase-protected keys :: most secure
I think what we need, for email at least, is a completely new protocol that's end to end secure (as hard as that is). The problem though is that I don't think something like this can be done anymore, without "interested" corporations co-opting or talking it to death. The golden age of the internet is gone.
Stuck waiting for more "magical" design.
The problem is that they are selling a PROMISE to eventually send you a smartphone, and not enough people either know about the offer or are willing to pay $700 up front.
That said, this phone looks fantastic, so I hope that they are able to pull it off.
I'd love this phone and would buy it but not before it is actually made.
If you're the litigious or confrontational type, you might be able to spin this type of incident into a lawsuit or threaten them in some sly way to guarantee the job. I wouldn't do it that way or recommend doing that, but that's certainly an option for aggressive personality types.
The personal family stuff is just wierd.
Smaller towns along a world famous route, harkening back to American self-mythology, plus Independant stores who will be glad of the extra income and attention.
There you could own the industry.
Also, they did not create the electric car market, they only revived it. (See previous point.)
I think control of the EV market is unlikely.
But you're smarter than I [am|was], so my advice to you is don't listen to others who don't build stuff. Or in a more positive way, only listen to people who actually build stuff themselves. Why the Lucky Stiff said it best:
When you dont create things, you become defined by your tastes rather than ability. Your tastes only narrow & exclude people. So create.
Also don't drive by looking backwards. When I learned to sail my Dad told me that you could tell a good sailor from a bad one by the straightness of the wake left by the boat. I kept looking at the wake and trying to correct for the various wobbles in it, and that made it more wobbly. I got frustrated and told him it was impossible.
He took the tiller and proceeded to zoom straight across the lake we were on. He explained that the only way your wake would be straight is if you kept you eyes on your destination. When I asked how you could know your wake was straight if you weren't looking at it, he said "People with you can see it and will complement you on it."
It wasn't until I was much older (like 25) when it dawned on me he wasn't talking about sailing.
When I was 15, I did my first significant research, discovering a novel (and significantly faster) algorithm for computing GCDs of polynomials over algebraic number fields; but I was never fully satisfied with it, since it was only applicable to fields spanned by low-degree algebraics. My supervisor encouraged me to publish it nonetheless, and in hindsight I should have done so -- if nothing else, so that the two Master's students who extended it over the following years would have had something to cite.
In your case, you're interested in programming rather than mathematics or computer science, but the same principle applies: Don't hesitate to release something because it's "not quite perfect". If you've built something cool, release it -- you can always improve it further and do another release later.
Oh, and I'd give my 16 year old self one other piece of advice: Where girls are concerned, don't waste your time. Wait until your friends are partnered and decide they want to help you. It's much easier once you have a circle of friends who can offer help and advice and encouragement.
2) Stop being a coward. Always push yourself to do embarrassing, uncomfortable, or hard things, or you'll still be 16 when you're 21.
3) Gaming and computing is addictive. Don't waste precious life on it.
4) You're an idiot, and your unexamined decisions make you a bad person, though you don't intend to harm anyone. Find values to believe in, and use them to make hard or painful decisions with dignity. Foremost of those should be: treat your people well, even at your own expense.
5) Examine, accept, and embrace your feelings and your past, for better and worse.
6) Read more fiction to learn more about life.
7) You're a social animal. You'll never grow as much, or be as happy, as when you're surrounded by people.
8) Don't stop doubting yourself.
Very little of this has to do with programming or careers. But I don't regret not knowing C at 16 nearly as much as I regret all of the above. Learning to live well is so much more important.
Herewith some remarks:
1. You have ADHD and are prone to clinical depression. Both are treatable. Spending decades suffering pointlessly isn't necessary to discover either of the former or the latter.
2. Go find someone who can teach you Olympic weightlifting. You love it and wish you'd started much earlier. It will teach you important lessons about persistence. Plus you are one of those lucky blokes who can gain weight by frowning at a barbell, might as well take advantage.
3. Don't go straight to university. Take some time to grow up a little first.
Yours &c &c
Funnily enough, none of these are about a laundry list of technologies. When I was 16, people wrote web apps in mod_perl and DHTML was looked on as something you resorted to only occasionally.
(2) Try to get enough sleep
(3) Make a very conscious effort to get out of your comfort zone and try unfamiliar things, even if you only try them briefly.
(4) Understand and accept that sometimes it takes years before a project gives any substantial results, so don't get discouraged if a project seems impossibly hard and going nowhere at first.
* be aware of its own cognitive bias (there is a nice listing in wikipedia)
* studying is not a waste of time, is forming a culture to better communicate with others and gaining a toolchain that will prove useful. And is not something passive, teachers guide, but is your responsibility to learn in a way or another.
* the boring math proofs worth at the very least as a training for better, more rigorous thinking, no matter if you ever see math again.
Regarding programming, recommended them to play with Scratch when were younger, and probably would recommend them to play with python as the next step, if they were interested in programming, at least.
But if I really could had given something to my younger self, probably would be the Grays Sport Almanac 1950-2000
For a 16 year old, now, interested in programming computers, learn assembly language, even if it's just for a 6502 or Z80 . It will give you a feeling for how the computer works.
Also, learn how to learn. What you learn now will change drastically over the next twenty years (when I started college, Fortran was still taught, you had actual multiuser systems, and there was no such thing as a "webmaster," and Perl had just been released into the wild).
Another thing to keep in mind---there really is nothing new under the sun. Arguments about writing an application in Python over C++? Old hat (C vs. assembly). Languages targeting a virtual machine? Old hat (UCSD Pascal, and before that, various IBM computers from the 60s and 70s). It just takes new forms, which need to be learned (see previous lesson).
And one lesson that might be unorthodox---never cut-n-paste code. Take the time to type it out. That's how an entire generation of programmers who grew up in the late 70s/80s learned---by typing programs in (from books and magazines) by hand. It's hard to see how this helps, but it does. It forces you to look at a program as you type it in, to see how it's constructed. No, really. In fact, if you read up on successful authors, you'll find a good portion of them actually copied (long hand, or typewriter, or computer) entire books by authors they liked.
Never be afraid of trying something out. It may not work, but now, you'll know a way of not doing something. Or why a certain approach won't work. Or will. You might surprise yourself. Don't let your lack of knowledge keep you from trying something, because you might in fact do something that so call experts said couldn't be done.
Oh, and keep this quote from H. L. Mencken in mind: "No one in this world, so far as I know-and I have searched the record for years, and employed agents to help me-has ever lost money by underestimating the intelligence of the great masses of the plain people."
That's all I have for now.
 Personally, I'd lean towards CPUs made by Motorola, as they're a bit more sane in the assembly language department, but really, any CPU assembly language will help. Well, maybe not the Intel 80x86 family. The 8086, 80186, 80286, 80386, 80486, Pentium ... it's just an insane family of CPUs.
I'm 68 and I know exactly what I would tell my 16-year-old self:
1. Learn more math and science, and don't delay -- the longer you put them off, the harder they are to absorb. Math and science are the real deal -- nearly everything else is contentless opinion, much more heat than light.
2. Try to minimize time and energy spent on dating and sexual behaviors -- they're the most overrated waste of energy ever invented.
3. Learn how compound interest works, and avoid as many discretionary purchases as possible. "Compound interest is the eighth wonder of the world. He who understands it, earns it ... he who doesn't ... pays it." -- Albert Einstein
I literally spent decades recovering from bad decisions made when I was young, all having to do with the above points. If I were able to confront my 16-year-old self today, I would kick myself down the stairs.
I talked about writing code more than I wrote code and that was a dumb mistake.
Also, if I could do it all over again, I'd make it a point to really work with C/C++. I feel like moving to any other imperative language is pretty easy if you have a firm grasp of that language.
I would also not learn Objective-C, but that's more of an opinion than anything.
I'd love it if you'd shoot me an email at zchlatta (at) gmail.com. I'm always interested to talk to other passionate people.
I did design, got offered a front-end dev job, and learned HTML/CSS within 1 week after failing for 2 years.
Then I did HTML/CSS, went to a hackathon and had to dive into Rails to finish on time, and I didn't "learn Rails" but I learned a TON (and won 2nd place!)
Took up a job doing more traditional ColdFusion and XSLT sites - learned a ton in 3 days. I was also forced into learning SASS/SCSS - learned a ton within like 2 weeks.
Keep going. Get in over your head. Take on the projects that you're not sure you can finish, understand it's okay to walk away from them (jobs, too), but try your hardest not to.
Also, take CS101 at your local college ASAP. It'll get you off your feet wicked quick.
2. Sleep around more
3. Try new stuff, but it's ok to say no to somethings
4. Make enough money that you have 6 mths savings and a few months lying around to invest - when an opportunity arises it will hit you that day and its great to just say yes.
5. Don't worry if you can't do all this now - time your life in decades not weeks.
6. Sleep around more. Seriously. Don't be a jerk about it but just have fun.
7. See 6. :-)
EDIT: dmunoz beat me to it.
2. Actually play with putting together hardware. The era of building your own PC is coming to an end and you should experience that before it's gone.
3. Life advice: Treasure your older relatives while they're still alive and tell them that you love them. Try to capture as much family history as you can and write it down.
2) Don't panic about needing to learn everything at once. Take your time.
3) Learn how to finish things, even if that means taking on smaller tasks than you'd like.
IT is one of the few jobs where you can travel/work easily. So do it.
Sounds super lame, but I've always suffered from from self-doubt and anxiety - especially as a young dude. If I knew at 16 that I was just about to fall in love with computers, get into university, travel the world, have a string of great jobs, then become my own boss, AND marry an amazing girl... I would be pretty fricking happy.
Work out a little, girls like muscles.
Deciding on what experience will likely increase % of you working with high quality people on hopefully, meaningful work. Check out one of gazillion on going opensource projects that interest you.
Read books, learn to find good books, repeat
and of course do allow some balance in life, not everything should be about being 100% productive man.
2. DO something with your skill
3. Be well mannered.
4. Be very careful what you put on the Internet. When I was young, I barely put my real first/last name anywhere, and the word 'avatar' meant 'cool picture of something I like, because there is no way I would put a picture of my face on the internet'.
Where did you get this info?
@pycoders @jessenoller for python related stuff, and @zeeg for python and startup insights (he's behind getsentry.com)
@nntaleb @neiltyson for my daily dose of awesome science/math/logic.
@wilw @pvbrett @deadmau5 for some celebrity/author/music nerd fixes. @deadmau5 is worth following alone for the pictures of his awesome studio setup.
A pretty good tactic i've found is to find someone who's interest's align with your own and see who they are following.
But if you're interested in web development and design, check out http://uptodate.frontendrescue.org/ for some good pointers on who to follow.
I also get less entertaining, but more actionable, advice from @patio11 and @orangethirty (both regular HNers). Patrick also periodically retweets the posts of others you may wish to follow.
So far I follow 4 people: Barack Obama, who tends to say the same thing over & over. Kim Dotcom, who talks about privacy issues & retweets interesting stuff on that. My email provider who almost never tweets. And a guy from my local hackerspace who barely ever tweets, too.
At one point I followed @TheWhiteHouse, but it was just BS, so I stopped.
I'll be interested in seeing where this thread goes, since I'm also interested in finding interesting people to follow- thanks for asking.
Depending what you're interested in, some favourites of mine are: @SciencePorn, @GaryVee, @TheStalwart, @AntonKreil, @GSElevator, @DavidBrent, @Cmdr_Hadfield, @FootyGif, @Digg, @GaryLineker
I always say how Twitter gets much better after following more people.
You shouldn't have a problem in Ontario, but don't be afraid to look further out (Vancouver, Alberta) for those kind of jobs.
I just looked down to see you took a Science and Business course...as someone looking at CV's I literally have no idea what that means...what can you bring to an organization? What can you produce or create?
You say you consider yourself a junior rails developer, what have you built? How do you plan to utilise your course in your future work?
1. Attend, and present at, local meetup / groups.
2. Find a "buddy" and collaborate on side projects. Keep them open source, and publicly visible, on both your github accounts
3. Contribute to open source projects
4. Blog about your adventures in ( tech or sector specific task )
5. Apply to consulting companies (they are usually hanging around the local meetup groups)
6. Attend sector specific or technology specific conferences
7. Work Pro bono (as long as you can show the result to others)
Most of this has more to do with building a portfolio, and a personal brand, than actually finding a job. But, that part usually pays off like investing.
I think the other thing that can help is to understand that the world has changed. There's now two paths to a sure job: be world-class excellent at one thing, or be pretty good at 2-3 things. The first one almost certainly isn't going to happen; by definition, you're more likely to be in the 99.99% than the 0.01% of graphic designers. But what if you're a better-than-average graphic designer, can speak fluent German, and are pretty good at online marketing? Now you're some company's ideal employee.
and took the Science and Business course at Waterloo/
It's better that they don't use encryption than it is for them to use it incorrectly (insecurely) and give them a false sense of security.
This "idea" comes up year after year after year after year. Occasionally, someone says they'll build a better mousetrap. Always, nothing comes of it.
PS: Zuck does not care about your privacy in the least. You are not his customer, you are his product. Advertisers are his customers.
The biggest challenge is to get grandma / soccer mom and the girl next door to care the tiniest bit about encryption and privacy.
It's the cold hard truth, the overwhelming majority simply don't care. They don't understand why they should care and they don't care enough to learn why they should care.
With things like this, the average person continues ignoring it, until he feels directly threatened in the near future. Anything more than that and they start to think "meh...who cares...maybe another time"
Imagine in 1990 someone told you "in 20 years time people are going to be spying on themselves on a daily basis and providing detailed information about their lives to their government, they will login to a computer system and will enter what's on their mind, what they've been thinking about, who their family is, where they work, with whom they've had relationships with, what they like, where they have been, what events they have attended, their gender, sexuality, birthday, religious and political views and albums and albums of photos of themselves and those who refuse to spy on themselves will be rather alone, disconnected and viewed as rather weird for not participating in these wonderful activities".
Who would've believed that? To an spying/intelligence agency that sounds so good that wouldn't even be capable of imagining ever seeing it as a reality.
Yet here we are, 23 years later, and it sounds all too easy "Facebook", "Twitter", "LinkedIn", "Social Media". The population has been brain-washed to accept, adopt and love these tools with their cute names and logos and seemingly innocent appearance.
Before NSA and PRISM revelations you could call me a delusional, overly-negative, cynic, techophobe or conspiracy theorist. But not today. Today we know for a fact what is happening, and we know that's just the tip of the iceberg that we know about, and just like pre-PRISM times, there's probably a lot of nasty crap that we are not aware of until the next Snowden reveals it.
It all makes sense now.
I wouldn't count on Zuck though, he kind of lives from facebook being unencrypted.
The private key should never leave the users machine and should definitely not find it's way to one of the worlds biggest eavesdroppers.
One concrete suggestion:
Develop the following habit. Whenever you are confronted with an unpleasant task X, there is a moment where your mind starts searching for other, more pleasant things to do. This is the moment where you have to implant the habit of asking - not yourself, but an imaginary judge:
"If I defer task X, will it become easier later?".
For some tasks, this may be true (e.g. taking out the trash is easier when you're heading outside for work anyway). For most, it's not.Use this question as an arbiter and follow its verdict.
And when you completed an annoying task, rejoice in the feeling of relief and accomplishment (maybe not the task itself was hard, but overcoming the unpleasantry was), and remind yourself of this feeling the next time.Rinse and repeat.
One more abstract suggestion:
You have probably heard it a thousand times from your teachers, parents etc. - "You could accomplish so MUCH, if just you would STRIVE for it..."You believe it yourself, talking about your "full capacity".
But it's not true. Or at least it's the wrong perspective, allowing for wishful thinking.
The current state you are in - that is your full capacity. More you do not know, because more you have never tried. Or, more drastically: More you do not have, because more you have never proved.
Maybe that's even the reason you are not improving your chore-handling abilities after all (if you allow me this unfounded speculation): You are afraid of hitting your limit (a.k.a. failing) to soon, realizing that you're not that capable after all.
Luckily, there is no such thing as a fixed, inate capacity. Your capacity will definitely improve when you start taking yourself seriously and stop generously sparing yourself the chores. Prove it to yourself what you really can do.
It always risky to advise a person you never met, so take this with a grain of salt. Hopefully it's useful to you.
I have one piece of advice - one technique that I got from a cognitive behavioral therapist that helped me. It's pretty simple:
Pick a task you don't feel like doing. Set a timer. 10 or 15 minutes. Work on the task. Do not worry about the end result, or getting to a "good stopping point" or anything. When the timer stops, stop working on the task. Play another game or watch another YouTube video or something. When you feel like it, set the timer again and repeat.
The trick is that if you aren't worried about finishing the task you want to do, you can do the work without that feeling of discomfort and dread that makes you want to stop and distract yourself with something else.
The first time I did this technique, it was actually with dirty dishes and not work. I used to let them pile up because I just couldn't deal with it. I set a timer for 5 minutes and washed the dishes. It was a carefree experience. I walked away at the end, but then something funny happened - I soon wanted to go back for another 5 minutes. Pretty soon I finished the whole load of dishes and it wasn't unpleasant at all.
1) don't waste cognitive energy on silly tasks (games, arguing in comment threads, etc.)
2) practice exercising willpower - it's a muscle, you can train it to be better. Start by forcing yourself to complete a routine every morning (the trick with habit forming is to not give up after you miss a day.) examples of habits to form below.
3) look into mindfullness meditation - this can help you identify distracting thoughts as they arrive and practice ignoring them.
Meditating is a good habit to form as practice, and it will also help you get better at habits. You could also exercise on a schedule (and record when you do, including how heavy you lifted/how fast you were running). Eventually, with a stronger willpower-muscle, you'll be able to choose the fruit salad over the cake, even when you've just spent your 7.5 hours a day coding.
I've not found pomodoro to work for me as an easily-distracted person, it's better when you're prioritising work tasks (e.g. 25 code vs 5 email) and even then, 25 mins is too short for good programming "flow".
This is a hard problem, everyone has trouble with it. Good luck!
 http://seriouspony.com/blog/2013/7/24/your-app-makes-me-fat (HN discussion: https://news.ycombinator.com/item?id=6124462 )
 http://www.amazon.co.uk/Mindfulness-practical-guide-finding-... (US edition: http://www.amazon.com/Mindfulness-practical-guide-finding-fr... )
I dont think you are lazy; I think you are afraid to fail.
Thus far in your life, you've had it easy. SAT's, Valedictorian, probably started programming when you were 12. You have seen your peers struggle to no end with this stuff, yet you've always been able to skate by, and still be better than most. At 21, to be making 130k a year is god damn impressive, not so much for the "money", but for what the money represents; knowledge and your skill level of your chosen craft.
The problem is, again from my perspective observing from the outside, you don't start something because you are afraid you are going to fail. You are afraid, that for once in your life where things have always just come naturally to you, that you will try something new and just fail miserably at it.
I don't think this is a matter of laziness; I think that you just think it is laziness, so you casually write it off as such without really examining the root of your problem.
I could be wrong, but I have seen this before. My sister sounds a lot like you; the oldest child (already the family favorite from that fact alone), perfect grades her whole life, captain of the cheerleading team (I shit you not), Valedictorian, great SAT's, accepted into some art school. She is very smart, makes 40k a year as a copywriter for some mucky-muck agency in LA. She talked to my mom about starting her own (my mom's suggestion) and her response was (surprise, surprise!) she doesn't want to be a failure because she knows most businesses fail.
Then, on the other hand, you have me. I am the only boy in my family (3 sisters), ADD, suffered from bad grades while being surround by 3 straight-A sisters, arrested at 17 for making a drug deal (long story), in some ways, the "black sheep" of my family.
I started an eBay business in high school, which made some money. Started a business in college selling hempseed oil skin care products, flipped inventory, invested the money into a side project/start up. Outsourced the development. Got interest from Nordstrom's, Whole Foods, Landry's, and Black Angus Corporate (I think a PE firm owns them) etc. Realized I loved this so much, told them I had to put it on hold, dropped out of school, and enrolled in General Assembly WDI in Santa Monica (was accepted into Dev Bootcamp, my mom got cancer, stayed closer to home, long story) and will resume operations once I can build the site from scratch myself. It's a B2B site .
What I am trying to say, is don't be like my sister. Your "perfectionist complex" seems to be the problem. I have failed, been called every name under the sun from my own family, and everything else in between, yet I keep going.
Failing is not that big of a deal; in our industry it is a badge of honor if done correctly. Don't be that guy, who in 20 years, regrets the things he has not done, instead of the things you have done.
My advice for this; fail. Fail hard. Go out and pop your "success cherry", and get the fuck out of your comfort zone. Stay humble, stay hungry, keep hacking and go change the fucking world man. Stop feeling sorry for yourself and just go do it. I mean really....what do you have to lose?
As someone in a rather similar position (my life has been fucked up in so many ways from procrastination), one tip I can give you is to get rid of this mindset.
I feel horrible whenever I waste lots of time, looking back on how I spent my day, thinking "what the hell is wrong with me?" But the thing is, that attitude feeds much of the procrastination. I am an odd mix of being a total perfectionist, and really lazy, so it turns out that whenever I'm faced with a task that I don't really want to do, I'm quite adept at rationalizing ways to avoid doing the task. I think about possible roadblocks, or pretty much anything that would keep me from attaining my sought-ought perfection, and knowing that I'll have the same strong negative reaction later on that I always do, I just won't do it.
If you beat yourself up over procrastination, you're just subconsciously teaching yourself to not even think about whether you're procrastinating or not. Whenever you try and shift from unproductive tasks to work, it's much easier to just stay with the short-term dopamine kick of reading the internet or whatever, rather than dealing with harder decisions about what you need to do in the long term to be happy. Yes, this is backwards. Your subconscious is not very rational...
So, from my point of view, just do everything you can to recondition yourself to not hate working, and to not hate procrastination either. Just try to feel the bit of fulfillment you can get from writing code or whatever, basically just getting your shit done. Have patience with yourself, infinite patience, and know that it takes lots of work to get where you want to be, but it's worth it. You're the only one that can do this.
BTW, if you're like me, a perfectionist to the core, consider that this comes from a deep-seated insecurity, a part of your brain that tells you that you'll never be good enough. At least, that's the way it is for me, and it's been that way since my childhood, as far back as I can remember. On this front, I'd just try to evaluate your emotional well-being in the most balanced and unattached way possible. Get help if you feel like it. As others have mentioned, meditation can be amazingly helpful here, and exercise too. Unfortunately, they're both quite prone to being procrastinated on.
Paraphrasing pg, going in to work and wasting 90% of your time is like getting uncontrollably drunk at lunch. It's very bad habit/behavior/addiction. So first of all, take it seriously.
Here's some things that work/have worked for me, in no particular order. They all interact and work best in bunches. None have cured me. All have helped.
1. meditation - many meditation practices develop your ability to prevent your mind from wandering. Letting your mind wander is a big part of procrastination. It also helps with patience which is also important.
2. Recognize the impulse and address it - This is very complimentary to meditation. You sit down to do a task, then your mind looks for some sort of procrastination (reading, games). Recognize that feeling and feel it. Don't fight it, just experience it for a few seconds. Then place your hands flat on your desk. Your feet flat on the ground. Straighten your back. Breath deep 5 times. The impulse should pass. Tweak this as you like as long as you recognize the impulse, experience it & have a little ritual (sitting straight, breathing, etc.)
This sounds like hippy dippy bullshit said out loud, but it doesn't feel half as lame when you do it. It is very effective.
3. Collaboration - If two people are at a computer, procrastination does not go on for hours. More generally, try to seek out work less procrastination-inducing.
4. Do work in small batches - Take 5 minute breaks every hour. etc. This increases the feedback to you that you are procrastinating.
5. Talk about it.
6. Accountability mechanisms - Your ability to hide is an enabler. Try timed screenshots sent to a friend. Twice daily 2 minute confessional phone call to a friend. Mirror your screen someplace it can be seen by everyone. Coaching sessions. Lots of options. Quirky is ok.
7. Drugs - ADD medication (eg ritalin) can help.
8. Sleep - Less Sleep = More Procrastination. Maybe you need more sleep. Maybe you need 10 hours. everyone is different. Try getting 10 hours for one week and see if it helps.
Don't delude yourself into thinking that you're "talented" or "gifted". You're a product of your history: if you spent a significant portion of your life playing DOTA, you're a DOTA-head. In your case, you seem to have spent it trying to get people to view you in favorable light. It's as simple as that.
You're missing the big picture: if you spend 3 hours writing code, and 8 hours playing games, which activity do you enjoy more? Why is that? If you pick up saw and find that you're absolutely terrible at sawing wood and cut yourself multiple times, would you enjoy that activity? OTOH, if you go out and play football (or something you've been practising for years), and manage to score many goals for your team leading to victory, would you enjoy the activity?
Your discontentment arises from a simple mismatch between what you want to do and what you are actually doing. You apparently wanted the $130k job with 3 hours of boring work, and to get by in life (or did some alien drop you into this world while you were unconscious?). What is this sudden crisis about not "changing the world"?
I have nothing to say of any significance, and the only "answers" I have are tautologies. Maybe you can try attending some inspirational talks, reading self-help books? No, I don't mean that with any condescension whatsoever; figure out where you want to invest your time and invest it there.
There's no such thing as your "full capacity". What you're doing right now, that is your full capacity. Either accept that you're at your limit or actually do something to prove you're not.
What changed it? Probably some of it was age. Your outlook on life and what's important changes as you get older. I spent a fair bit of time talking to people 10, 20, 30, and 40 years older than me, and while I usually didn't agree with them, I did remember their words. After 10 years I was rather shocked at how my outlook had changed. Now it's coming up to 20 and I've definitely changed yet again. How do you achieve the wisdom of age without actually having to spend years aging? Beats me! But I sure learned to appreciate it regardless.
Another thing that happened is I started taking on harder and harder things. It didn't matter what, so long as it was difficult enough that it would take me years to master. Boxing, welding, classical guitar, open source projects, running a business. I just kept adding things on until I didn't have enough time to even breathe. Then I somehow managed to find the time to get all these things done. And then I piled on more, until I finally reached the point where I literally did not have enough hours in the day to get everything done. Then I dropped some stuff until I felt comfortable again.
Now I no longer have time for video games or TV (except for the odd time when I'm taking a sanity break, which is maybe once a week for a couple of hours). I have shit to do and a daily routine that gets it done. I had to organize my life because I had too much stuff to do! Now I deliberately carve out time to be with friends or do something crazy. Otherwise I'm busy at work, practicing one of my hobbies, or I'm at home on a Sunday, deliberately doing nothing all day because I've scheduled a "do nothing" day.
So my advice to tackle procrastination would be: Fill your life with so much stuff that you can't afford to procrastinate (It's even better to get into a few things you can't get out of easily). You'll figure out how to organize yourself. Then you back off a bit to get some balance back into your life.
There are also certain lines of work that would work better. You're probably never going to fit into a software developer role if you're expected to spend 1-3 week sprints delivering chunks of functioning code. You would probably excel at a top-tier customer support role where you dug into hard problems and diagnosed other people's code.
One thing that's helped me is to keep a very visual record of progress and become a widget-cranking machine. Break everything into discrete tasks that are either done or not done and put them on PostIts or index cards and plaster them all over the wall where you can see them. Mark up the completed ones and keep them around and visible.
Another thing that helps me a lot is to get away from electronics. When I have a document I need to review, I print it and go somewhere without my laptop or even my phone. I'll also pull out a Moleskine or even some printer paper and go somewhere electronic-free to try to dump all of the things I'm thinking about. Sometimes I'll even write out a bit of a journal entry just to clear the junk from my head.
You could listen to Merlin Mann's podcasts and read his writings, but he's got the same problem with no real solution. Some of his talks with David Allen (Getting Things Done) and his 'To Have Done' talk helped me a bit: http://www.43folders.com/2005/10/16/43f-podcast-the-to-have-...
You could find a way to move into working for yourself and build product, not service, business. Then nobody except you will notice or care if you work 3 days a month.
Most people associate ADHD with kids who struggle in school. But highly intelligent people can have it too. It still holds them back from reaching their potential, it's just that their potential is much greater.
Here are some things to ask yourself:
* Do you also procrastinate non-work things such as buying gifts, paying bills, calling people back?
* What is your home like: Do you have a lot of half-finished projects, "piles", or chores that never get finished?
* Are you always running late because you are busy doing other things, or underestimate what you need to do to get out the door and get to your destination?
* Do people tell you that you frequently interrupt others when they are talking?
* Would you describe yourself as a risk taker and more prone to high adrenaline activities? How the friends you keep?
* Are you only able to focus with the help of caffeine, guarana (eg, Vitamin Water Energy), or other energy drinks?
* Do you use nicotine to relax or be more focused? (If so, please stop and see a doctor.)
* Do you use alcohol, not to get drunk or for the drink itself, but as a way to unwind or slow down at the end of the day?
This is a good book: http://www.amazon.com/Driven-Distraction-Revised-Recognizing..., which reminds me of another question:
* Do you buy/start a lot of books, but rarely seem to finish them?
Read enough of the book to see if this resonates with you. If it does, the next step would be to talk to (a) your doctor if you have one, or (b) find a psychiatrist in your area who specializes in ADHD. The book can help you find resources.
Edit: Just to be clear, this list is NOT meant to be diagnostic. Although I happen to have an MD, I am NOT a practicing physician no one should assume they have ADHD based on any list like this. I would only say that if many of these things hold overwhelmingly true for the OP, then it might be worth learning more about ADHD and finding a professional to begin a conversation.
Yes, ADHD and meds sparks a lot of cynicism in some people. However, one reason I recommended that book is that the authors present a balanced approach to meds. One of the authors has ADHD, but doesn't find that meds make much of a difference for him (they reportedly are ineffective for 25% of adults with ADHD). But they have helped many of his patients and his own son.
Knowing that YOU audit things is nice, but I also want you to be audited by a 3rd party in some formal context (SSAE, ISO27000, whatever).
You guys are apparently really early, but if I'm going to build a HIPAA app, and you're the ones holding my data, we're going to have to sign a legally binding flowdown agreement: that's not usually compatible with 'click to sign up' style stuff. Have you had a legal team look at how that process is supposed to work?
Are you actually hosted on AWS (I know the marketing page is Heroku, but I understand that doesn't mean the actual app is)? Have you signed a business associate agreement with your cloud provider, if you're using one?
In fact, there's no mention of legal anything anywhere on your site (SLA, ToS, etc.) I assume some of this is behind the customer signup link? It really needs to be out front - anybody doing HIPAA has (as you should know!) pretty intense legal/regulatory issues to make sure are contractually guaranteed.
And, beyond all that, and this might just be me:I have no fucking clue what your system provides? It looks like it's an HTTP data store, but that could mean a million things. Is it more like S3 or something like Redis?
That said, the site is good looking! If you want to put out 'rapid start' type stuff, you should probably have significantly more api and other information out on the public page (assuming it's behind the signup link).
* The spinning gear for 'Rapid Setup' really distracts me. Animation is good when used well (perhaps to direct people to the sign up form?) but this looks like it is not well thought out.
* The features panels have blank space underneath them. It looks weird and incomplete. You should make their heights consistent and the height should be set to that of the tallest panel.
* The scrolling threshold for the menu banner appearing is too high - it feels unnatural. I think it should appear earlier. Is there another site that uses the concept that feels more natural, so you can copy their timing?
Sorry, no comments on the actual product as I'm not in your target market.
I signed up and am really interested in hearing more such as what the time line looks like. In short, my company is a group of clinicians + developers.
www.aqua.io may or may not be doing the same thing.
So, honestly, if you can't do a top MBA, or even a MBA in person period, don't bother. You'd be better off reading a bunch of books and networking at a ton of local events.
If by "works" you mean "has a familiar and mostly-polished interface", then I would agree. If you like Mint so far, go with that. To give a comparison on the "other end" of the user experience spectrum, try Crunchbang. It is the same underlying ecosystem as Mint (Debian), but builds itself out of a handful of more minimal components. It's my go-to dev distro because it's just enough to get work done in, and nothing more.
If you've tried "the big common ones", then you've hit 90% of the mainstream options. If you need something special, unique or custom beyond those, you definitely would have identified those needs in your post.
I recently got a Macbook Air (the new 2013 one) and it's working out pretty well. Rather than deal with a desktop Linux OS I've got everything running in VMs and either work through them or cloud based remote servers.
For casual computer use (web browsing, email, etc) I use native apps. For software dev I use a combination of SSH to VMs/remote servers and native text editors accessing shared filesystems (mainly sshfs).
I still much prefer my desktop (a real keyboard is always way better) but at this point my laptop is tolerable enough that I can roam around and actually get work done.
It's Debian based with minimal extra bullshit, has a super-friendly config script right out of the box on first boot, and uses OpenBox as the WM. Very snappy and minimalist distro.
If you're selling into an enterprise that requires RedHat, Oracle etc, then possibly CentOs for cheaper development costs as compared to developing on RedHat itself. Those are in the RPM world.
So many other ways to slice this pie, depending on what you need and how involved you want to be with your disto as opposed to whatever it is you're doing.
- Package management: DEBs were sooo much easier to deal with than RPMs.
- Hardware support - usually everything just seemed to work or there was a forum discussion with a solution on what to do about it.
- Good variety of included packages.
- Excellent support forums, even if you are doing non base Ubuntu stuff there's probably a discussion a 'google' away that covers whatever issue you have.So, even tough Canonical does not-so-pleasant things to the UX, you can easily find ways to fix your experience and back to developing.
If you have similar positive experiences with Mint, why switch? Figure out what you are missing or looking for first.
Take this example, some years ago I tried Debian, SuSe, Mandrake, and a few others, ended up using Gentoo and it is still my distro of choice, I won't say it's the best for everyone, but so far has been the best for my needs.
Then all the windows managers are a mere apt-get install ... away.
The only thing that irks me is the driver support for laptop peripherals. Still can't get MBP to run as cool and for as long on battery with Linux as with OS X. I've given up on VmWare as it seems to churn the CPU even doing very little.
Anyway at work I run Ubuntu 12.04. Mostly because I find it to be a little more forgiving than Debian out of the box.
At home a run Debian Sid. I ran Wheezey for almost a year and when it was released as stable I switched to Sid. My only real issue is the lack of the full Firefox.. Right now I'm pretty sure I have the one installed from a mint repo. Ice Weasel just isn't the same. For example when using outlook it would set my spell check to Bolivia Spanish. Despite the default being English.
I've been using ArchLinux for a while, but have been slowly moving to stock debian.
You don't want to waste time setting up X.. resolving dependencies.. making things 'work' that should 'just work'.
So, whatever solves that?
Personally, I've gone for the latest available release of Ubuntu where possible, although recently i've started using OS X and shelling into a linux machine to do any necessary work that requires it. I find OS X provides a decent *nix underneath and with the addition of http://brew.sh/ - makes it a viable choice for me over a Linux set up.