The office room itself is largish, with 1.5 sofas, and a small table for tea. I have two desks - one sitting and one standing. My sitting desk is for writing code only. My standing desk is for everything else (meetings, email, etc.) My code-desk faces the sea so I can look out at the blue for inspiration if I need to. Above my standing desk is a whiteboard for notes/todo/etc. I have a small closet with a printer and supplies. I have to shield my workhorse machine from the sun sometimes so it does get too hot in the summer. In the English winter (10 months out of the year), it makes for a nice natural cooling system :)
-- EDIT -- here is a very poor quality photo: https://twitter.com/binarymax/status/460012757317074944/phot...
My office is full of books, plants, my LEGO projects, and other miscellaneous toys and distractions. The walls are decorated with classic covers from Byte Magazine
I have one window with three bird feeders to my right. I can also look into my backyard (through another room).
Here are some pictures:
Under the desk a UPS, NAS (18TB RAID6), the WiFi plus a single powerful workstation (16-core, 192GB RAM, SSD for main drive, 6TB RAID0 scratch disks).
On the desk some books, a bottle of single malt whisky, a playstation (dusty and not wired up) and a scanner. A single large monitor (high quality). A desk lamp with halogen bulb.
My home office is just a corner of a room, with all the tools I need nearby.
It is slightly messy, I tend to have mail opened on the desk, and small things around it.
It's comfortable, a place I enjoy being.
But it's also a work zone... my viewing of videos and entertainment is on a television purposefully not visible from the desk. Meaning I must leave the work environment to enjoy entertainment with others.
I'm not fortunate enough to be able to create a study room that could be an office. Space is limited, but the ideal would be a comfortable library space, lit well enough (but not enough to harm the books), and quiet.
All work is done on my 27 iMac, while watching the curious life of liveaboards in the marina outside and looking at the Manhattan skyline
(Sorry for the poor pics, had to shoot against the sunlight coming in)
My desk is also somewhat home made and doubles as my hobby project studio for song writing and recording. Behind my chair (not visible in the pic.) are a 10" sub woofer and a larger white board. I have a tiny bike mirror over my right monitor to avoid a bad shock when someone stops by my desk while I'm deep in a project. The tiny red button on the left corner of my desk is to engage/disengage the sub woofer. Most days my dog sleeps on the rug by my chair and amazingly I have never rolled over him.
My desk: http://i.imgur.com/OfYjTgX.jpgHer desk: http://i.imgur.com/vI4GR7H.jpg
That's my home office, I live on what used to be a working dock in the north of England but was filled in and used for housing so it has a nice feel, I love it because I'm 200ft from a massive river (great for thinking walks http://i.imgur.com/ibfcLn2.jpg, not so great when a massive storm surge nearly topped it in Dec heh - http://i.imgur.com/P2DRT0h.jpg).
I can't stand working in a mess, I have to tidy both offices before I can settle down to do any real work and I've found as I get older I need more quiet to work properly I don't seem to be able to tolerate distracts as well as I could, I'm lucky in that while I'm starting a business and money is tight the North East of England is very cheap to rent in so we still have a two bed with a spare bedroom for an office :).
http://i.imgur.com/yB0IN1e.jpg is my work office (which feels like home sometimes!) rented in an old Victorian building the council run, high ceilings and lots of space and light which is nice.
We also have a puppy that likes hanging out in the room and is a great source of distraction.
I took an old door, nailed an edge around it, and varnished it. Got two trusses from Ikea for pretty cheap (~$30 each), and two "night stands" that work really well as shelves.
I have an absurd amount of desk space and I find it great for working. My desk is messy, but I'll get a picture up in a sec.
Edit: Heres that photohttp://i.imgur.com/eAY7xZC.jpg
The view is amazing, but I've crammed it with cheap functional desks and chairs and shelfes/tables. The walls are painted a nice purple, but the rest is all about "while we're not making a bunch of money, we can't have nice things".
Do mind that our equipment ( Computers, screens, (3D-)printers etc) is all up to date, no savings there, obviously.
I alternate between:
1. An amazing caf on the beach - warm, sunny, coffee (and beer!) on tap2. The garden - if it's the right time of year, Wifi is lacking so tend to stay more focussed3. Barstool in Kitchen/Stood up working4. Dining room table - white wall behind, good for video calls5. Lounge6. Trains
I'm fortunate enough to be able to work with just a laptop, no large screens/mice/speakers/headphones/paper etc needed, so I don't feel that I'm without stuff if I'm not at a desk.
One of the nice things about this arrangement is that the corner is really deep. At one time this let me use a big CRT. Now it just lets me shove lots of USB drives and so forth out of the way. I have a few computers but I really only use my Mac Mini most of the time.
Most of the remaining wall area is file cabinets and bookcases. Truth be told a lot of the paper volume in the office is essentially "legacy" paper though I have cleared a fair bit of that over the years. If I were starting today, I'd probably make more of an effort to have as much digitized as possible. As it is, a lot of the older material just isn't worth the effort.
I used to do most of my computer work in my office. Truth be told these days, I often just work on my laptop in some other room. Not sure why I changed but I find I like moving around unless I'm doing some task that's a lot better on my desktop setup.
When I move, I might switch to retina displays on arms for my primary systems, but 32 is more tempting than 24. Standard-definition displays still work great as big consoles, too.
I use a costco wire shelving unit + a couple of boards as a standing desk with a monoprice 27" ips monitor and a macbook pro. I have one shelf set up to keep the monitor and macbook at eye height and another lower one with boards for keyboards and mouse plus a drafting chair for when I want to sit. Also there is one shelf on top and another a couple of inches bellow the keyboard shelf for stability and storage and the whole thing needs to be against a wall to work well.
It works pretty well but I find myself missing a sitting desk for days when i'm too exhausted (from climbing and skiing mountains) to stand all day. Not sure if I will purchase an adjustable or just set up two works stations once we've moved. Either an arm to move my main monitor or a second monoprice is cheaper then any adjustable desk i've seen.
Also a comfortable chair usually with a cat curled up in it, view of the mountains and a closet full of climbing and skiing gear.
also worth checking out lifehacker which features a lot of setups too:
I also created a physical Kanban board to manage day-to-day tasks, it's right next to the standing desk and I enjoy its omnipresence because I can always see the big picture of my work. (also the mere exposure effect kicks in :) )
Here's a picture, it's small, it's simple, I love it:http://www.patrick-wied.at/misc/img/standing_table.jpg
it's nice to finally have a decent space to work in. Having a comfortable spot that I enjoy being in has definitely improved my productivity.
My goal is to eventually work from home.. maybe 2014 will be my year :)
Not that they write better code, they're just prettier :D
I try not to keep lots of books or anything in there. I have a separate library room for books and various curio (the actual home office designed for the home, but is just a hair too small for my current setup plus my wife's plus my books).
And then there are the boxes in the corner, because we only moved here 3 years ago. Oops.
This is my corner.. http://www.watsonswander.com/assets/2014/02/TAW55485.jpg
So, I have a nice home office but I don't much use it because I prefer working in different places around our house and outside, weather and available shade permitting. I use my office mainly when I need to plug my laptop into a large monitor. Otherwise I like to use a light weight lap desk and roam. About once a month I will work out of a coffee shop.
Edit: I do a few days a week from home, with a fair amount of video conferencing. White board is critical to get me out of my chair to draw out what's in my head.
I often work from a chair in the living room or the dining room table as well. Or I go out to libraries, a hackerspace, McDonalds, sports bar, Barnes and Noble, etc. to work.
I do have a low-power, mini server stack out in the family room, next to the big TV. A Raspberry Pi, two Pogoplugs, a DDWRT router, a pile of hard drives.
I use a flat desk, which I extended on both sides so its more wide. Under left side of it is chassis & UPS, under right are routers and subwoofer. On far left side on the desk you can see laptop, and on right one various stuff that form one mess :) Also there is a white light lamp that forms nice soft backlight in the background (it's not that strong as it is in picture). This summer I plan to move, so I plan to get a new setup, a better desk and a better cable management.
I work sometimes from my desk, sometimes from a standing standing at the other side of the room by the window, and sometimes from neighborhood cafes.
I posted pictures of my setup to /r/minimalism a while ago. Note that I have since failed to keep up this system perfectly, but often my desk does look like this. Seeing what I posted has inspired me to deal with loose paper better, which is my main cause of clutter.
It's only slightly less insane than my work office.
Although I use a laptop, I stick to a mouse, touchpads drive me up the wall. Generally speaking, I prefer my hardware ugly and robust, as opposed to sleek and fragile.
I usually try to keep my office pretty simple and clean. White parsons desks, aeron chair, cinema display and retina MBP.
I also have two Lifx bulbs in the lamps that I'm hoping to use for visual notifications when they open their API.
Mine is in one of the smaller rooms of my house that I work out of once in a while. I belive the table top is the Ikea Gerton (http://www.ikea.com/us/en/catalog/products/50106773/) that I bought a few years ago. Such a simple desk and loads of room. Pretty heavy too.
* Motorized adjustable standing desk from the Ikea (Linak legs; whole thing was under 600), in standing mode. Yes, fixed standing desks are not going to work, you need to be able to alternate between standing and sitting throughout the day.
* On the left, Synology DS213j, TP-Link TD-W8970 ADSL2+ Modem router and Meissner 750VA UPS to keep my internet connection going during Eskom (South African electricity supplier) power outages / load shedding (tested, works a treat! with laptops charged, I can continue accessing internet for a few hours of no power. Telkom exchanges have their own power supplies)
* Cheap laptop with IPS display (see http://wp.me/p1dVx9-6k ) connected to Samsung external LCD. You're seeing Emacs on the left with Zenburn theme, and Intellij IDEA 13 on the right with Darcula IDE + Solarized Dark editor themes, everything still on Ubuntu 12.04.
* My corner is indeed quite cluttered, but comfortable to work in. :)
I don't like to have anything else in the room, when I want to rest I just get out of my desk, for a coffe, a nap or answer my cellphone.
No TV in my apartment.
I thought it would feel cramped at first, but it doesn't.. Allows me much greater focus, and everything is in arms reach.
The desk was custom built for the office so not sure if we will take it with us. I love wood working and would love even more to create this myself someday, but my skills aren't there yet :)
Despite all that, I think the best part is that my gf (who is half my age) hangs out on the couch next to me.
Question: How does your office look?Answer: It looks nice.
Question: What does your office look like?Answer: It uses XYZ colour scheme and has lots of tables and chairs.
Question: What does your [ideal] office look like?Answer: I wish it had....
[For background: I am not big into being pedantic about 'correct' grammar, but areas where small mistakes do create hours worth of confusion, sometimes magnitudes of effect more (particularly within global collaborative environments).]
pros: you get to meet talented people and they will work in your space.
cons: your rent might not be that financially rewarding.
You've got to give this a try, the quality & accuracy of the leads produced go above and beyond what you'd think possible.
7. The Pain of Unfulfilled Dreams can be worst ache you will ever experience.
10. Ordinary People attain extraordinary success - you can too!
11. Overnight success happens only in fairy tales, trashy novels, and bad movies.
13. Always expect the unexpected because the only certainty is uncertainty.
18. Self-pity costs nothing and it is worth just as much.
19. You can be a victim or you can be successful - You can't be both, however.
53. The most creative shortcut to success is to reevaluate what success means to you.
73. You can't always get what you want, but you can get a lot more than you think you can.
Source: Ernie J. Zelinski, 101 Really Important Things You Already Know, But Keep Forgetting: How to Make Your Life More Enjoyable Day-by-Day, Year-by-Year http://www.amazon.com/Really-Important-Things-Already-Forget...
If you try to never fail, you're trying to never be wrong and that's impossible because of human nature. After trying to never be wrong (and failing) for a long time, the result is depression. And a very depressed person starts to fail at almost everything.
Ironically, trying to never fail leads to failing more frequently.
1. Failing and correcting (iterate!) is better than never failing.
2. Problems are targets for your skills, and they are not always your fault.
3. Prioritize, always! Solving the most important problems first buys you time to solve the less important ones.
4. Too much pressure is an enemy of success. When under pressure, the brain switches to life-or-death mode, so it mostly shuts down rational reasoning... the exact same brain functions you need for solving problems and be successful!
You always have to play your hand to the best of your abilities, even if you get dealt life's equivalent of 7-2 off-suit.
I'm not even sure how I managed to go so far without realizing it. It's never happened to me before. Brutal.
Chin up, get back on the saddle - you're learning through your failures.
1. First, look at the person. Remembering someone's name helps a lot if you can remember one thing about them. A lot of people don't have a very memorable face, but most people have something about them that's unique: do they stand with hips forward, wear velcro sneakers, have a beard, walk with a limp, have working-man hands, crow's feet next to their eyes, a specific hairstyle...? "That guy, Nick" becomes "That guy, Nick, who's tall and thin and has a really easy-going smile who holds his head back on his shoulders a bit and tends to wave his hands when he's talking." Now Nick's a unique person to you.
2. Listen to the person. Remembering someone's name is even easier if you can remember two things about them. Why are they at the event? What do you have in common with them? What gets them excited? Don't try to remember their life story, instead pick just one thing that stands out for you and associate it with the physical person and their name. "That guy, Nick, who's tall and tin and has a really easy-going smile who holds his head back on his shoulders a bit and tends to wave his hands when he's talking, especially when he's talking about Python. He does some geocoding work that I don't really understand."
3. If you really really want to remember someone, make contact with them. Not necessarily physical contact (like a handshake, not my favorite thing), but join in on the conversation, make eye contact, have a couple of words back and forth.
This also trains you to pay attention, and as others pointed out, inattentiveness is probably a big part of why it's so hard to remember people you've met. It's easy to just glance at someone and not commit anything to memory, and that's probably what happens most of the time.
Finally, when there isn't stuff going on, I'll spend a few seconds going through everyone in my head. If it's less than an hour since I've met them, I can usually work out any details I've forgotten. I have a kind of mental yearbook, and I go through it: "face & name & bio, face & name & bio, face & name & bio, face & ... blank? Wait, their name was Dave something, he liked embedded systems programming, he had a common last name, oh yeah, Dave Smith..."
It's the pop quiz effect: you're more likely to remember something longer if you've had to recall it at least once since committing it to memory.
edit: Oh, and don't be shy about forgetting something about someone! Being stressed out because you can't remember someone's name can make it a lot harder to remember the next person's name. And, odds are, they don't remember your name either, so being up-front about forgetting can put them at ease too. "Hey, we met just a while ago, we talked about ______, I can't for the life of me remember your name though."
The secret to remembering people's names is to actually care about them. This is why I can never remember people's names. :)
Imagine you've been told that your favorite programming language has some new useful features, recent examples in multiple languages include lambdas and list comprehensions. Guess how long it will take for the new feature's names and syntax to be permanently branded onto your brain cells -- ten milliseconds?
People who actually care about other people have the same reaction to meeting someone new who they might like or find useful as a professional contact -- that person's name is instantly and permanently branded onto their brain cells.
But if you've spent your professional life in abstract pursuits -- mathematics, science, programming -- it's very hard to make a transition to giving people's names enough importance to remember them. But guess what? People from the humanities have the opposite problem -- they can't remember an equation or a scientific fact for more than a few seconds.
A professor of ichthyology once said, "Every time I remember the name of a student, I forget the name of a fish."
Bob: I'm Bob. Nice to meet you!
Me: Hey Bob, I'm Hans. What brings you to the conference?
I think most of the time I reflexively say some appropriate greeting without thinking too much about it. By using the person's name, I force myself to insert something new into an otherwise mechanical response.
This isn't a technique I read about somewhere, it's just what my brain has been doing at least since I was 7 and learned how to read and write.
Typically when I try to remember someone's name, I'll see the first letter of their name in my mind and it's enough for me to recall and say/write their name. Other times if I'm having difficulty remembering their name, given some time (5-60 seconds typically) I can generally recall their name by reading the image of their written name I originally memorized. Often this reading is more of a hint towards a the concept of a common name I know of (like Alex, John, Maria, etc) meaning I don't need to recall and read it letter by letter. While if it's a more uncommon or obscure name (like Agnomemnonas, or Urania) I generally have to recall and read it out letter by letter.
Personally I think it ties into the fact that I memorize everything in a visual and three dimensional way.
I tend to have conversations about how people remember names, specially with new people I meet, and as far as I recall, I've only met one person who memorizes names in written form in their head. However a lot of people I've met tend to not remember people's names till they see them written on paper/screen, so they'll try to write people's names down at some point if they don't get a business card with the person in question's name written on it.
Alternatively before parting ways, I'll try to say their name again for good measure or be honest and ask them for their name again and let them know I have a terrible memory
However, that only works with 5-10 people, not a large group.
For example, if someone's name was Mike, I would picture them singing into a mic (say, at karaoke). Then, if you can't remember their name, try to recall what you imagined them doing. Once you get into the habit it is fairly quick and doesn't disrupt introductions.
"Yeah, Ellen and I were just talking about the merits of [subject here]"
Best of luck!
If you have to try to pay attention your not doing it right
Failing that, what you're probably looking for is something along the lines of a simulated HSM (let's call this an SHSM).
Decompose the system into four distinct services:
- The front-end application, "Mint" as experienced by normal users.
- A minimalized subset of "Mint", with Mint's chrome and UX, dedicated to the acceptance of credentials or secrets from users. Ideally, this is running on a separate instance.
- An SHSM system that exposes nothing but a simple remote API for sealing and unsealing secrets. Seal: secret->token; unseal: token->secret. The SHSM is on separate hardware, unshared by any other service.
- A backend system, hardened and carefully assessed (but not as hardened as the SHSM) that performs the operations that require the secrets and stores its results where the front-end can get access to them.
This design needs to recognize that:
* The minimalized secret-accepting front-end can be compromised and, if that happens, an attacker can "camp" n the front-end and collect secrets regardless of what else you do. That's why you segment this functionality from the main front-end.
* A serious flaw in the rest of the front-end might transitively give an attacker a pivot to owning up the secret-accepting front-end; this could be direct (for instance, if both share a database) or indirect (if the minimalized front-end renders attacker-controlled content accepted in the front-end).
* There needs to be a diode-like relationship between the secret-acceptor and the SHSM; the SHSM must allow the secret-acceptor to seal a secret in such a way that it can't later unseal it, else it's serving no real purpose (an attacker that compromised the secret-acceptor would be able to unseal all secrets).
* The SHSM itself must be locked down to exactly the minimum set of services required to perform the seal/unseal operation.
* Ideally, the security of the SHSM asymptotically approaches that of a real HSM; for instance, a hardware-augmented root-of-trust might be used to make it difficult for an attacker that (improbably) gains code-execution capability to instantiate their own SHSM process to decrypt secrets.
* The backend service, which might have unlimited access to the secrets stored in the SHSM, is itself a prime target of attack through clientside vulnerabilities (this is why you want to segment it off from the SHSM). Some combination of rate-limiting, anomaly detection, privilege, and user-permissions (a system might be designed to prevent the unsealing of a secret without some action having happened in the front-end within a window of time).
None of these problems are easy. You might plan on spending somewhere between 4x-10x the amount of time designing, building, verifying, and monitoring this system than you would a system doing something similarly complex with non-secret data.
I'd store the clear text passwords encrypted with AES-256 CBC mode (still works right?). Next their would 3 databases, on 3 separate servers (hopefully physical ones). Server 1 passwords + salt, server 2 key 1, server 3 key 2. bcrypt(Diffe-hellman(key1,key2), salt) = AES standard key.
Basically I wouldn't. I couldn't sleep good at night storing financial data.
If you're integrating with a financial institution that cant give u this. I'd go with paginated hash of the passwords stored in the data file with keys hashed in filed on the file system. I'd store the hash for the pages in a physical dongle attached to a server, with hardware discovery.
You could paginate the dongles daily too... There are some off the shelf dongles that do this quite nicely.
I've used https://www.privateinternetaccess.com/ while traveling abroad. It has worked quite well.
Judging from your story, your situation is pretty clear: you're being squeezed-out. Sadly, it's not uncommon. Though he might not be asking you to leave right now, framing it as in a few months is just an effort to (i) get some additional benefit out of you, and (ii) give them the time they need to break you.
There are two possibilities right off the bat: (i) the CEO is involved, which is likely given the difficulty involved in squeezing-out a shareholder + 50% co-founder; (ii) the CTO is working alone, hoping to push you out the door and benefit in some way from the resulting vacuum. In either case, you can't move forward without speaking to an attorney. And don't you dare think for one second that you can "just talk to the CEO first."
Already, you're talking about things as an employee rather than an owner. That's your first mistake. An employee might be able to be kicked to the curb, but you're not just an employee. You've already made a significant investment into the company, and from their perspective, an ideal/successful squeeze-out is one that deprives you of that ownership interest entirely. Most of these efforts are successful because they manage to position the person being targeted in a position where they just roll over. Ideally, they force the person being squeezed out to choose to quit rather than actually be fired. It seems like that's the CTO's goal in your situation.
That said, there are few programmers, in my opinion, whose work is so bad that there is zero potential for future improvement. Considering the costs of pushing you out, you'd have to be doing a hell of a lot more than just writing shit code to justify termination. Given that they want to wait until after additional fundraising rounds are completed, I doubt that your involvement with the company is nearly so problematic. Besides, you already stated that there's been a clear improvement in your code.
I was in a similar situation, once. I was foolish, stupid, and trusted a friend I've known for years. I did the development work, partner A brought his business skills and industry contacts to the table along with his money (and a third partner, B, as well). Did the work, but during that time, there was no sight of their money. One of the earliest clues I was going to be screwed was, when discussing fundraising, A mentioned his own deferred pay. Something I thought slightly peculiar given that he was supposed to be investing his own, significant funds along with B. Plus, I don't believe that he actually did any measurable work during the time period that would justify it based on what I knew at the time. Investors are rightly finicky about deferred salaries, and the bar is pretty high to justify them.
When we were at the end, I found myself being squeezed-out: in the end, they apparently figured that it'd be cheaper to outsource to some ridiculous "startup in the box" type of company rather than deal with my deferred pay and the long-term consequences of a third founder's ownership interests) even though doing so would delay things by a couple of months. They even managed to time things well: the weekend of my grandmother's funeral, after A had been told about it, they dropped their little bomb on me. The only good thing was that they walked away without getting a single line of code that I'd written.
My parting was anything but on good terms. Eventually, I wound up not pursuing the matter in court--talking it over with my attorney, it became quite clear that the legal fees of fighting them would be ruinous. That partner C was a shyster of an attorney, and all evidence suggested that they'd just try to wait out the expensive clock rather than consider settling. After all, the cost of doing so would be pretty minimal. Litigation is uncertain and expensive. Painful though it may be, you never ever litigate on principle. Not if you have any brains at all.
Even though I would have likely prevailed given the facts, I would have come up horribly in the red when it was done. A pyrrhic victory and no more. Choosing not to go down that route was one of the harder decisions of my life, made all the more difficult by the knowledge that they had, quite literally, taken even my grandmother's funeral away from me.
Oddly enough, I'm probably better off for it now that I have some distance and perspective to look back. When they launched, it was unobserved and uneventful. Even now, they're unknown with almost no traffic and engagement. They've also made a number of bad mistakes that I had identified--often through trial and error--that I had told them about. It was a submarine rigged for silent running, deep and quiet, that's never bothered to surface for air. All of partner A's vaunted experience and extensive media contacts in the industry proved for naught in the end. Eventually, they'll simply wither and die on the vine. Had they not squeezed me out, no doubt I'd still be hanging on trying to turn things around. After all, who abandons a friend? It was quite the learning experience, albeit an incredibly expensive one.
Luckily, you can avoid that sort of experience by acting now to protect yourself. Document everything, save all of your emails, chat logs, download and archive all Github comments on everything that you've worked on, as well as everything else you can. Make sure that you're also grabbing copies of emails off any servers/accounts they might have access to. Even though it will create problems if there's any litigation, there's a high likelihood that they'll do something foolish such as delete them.
You have a lot going for you right now that'll help you. First, you're obviously still needed to help their raise funds. Second, investors are scared to death of founder disputes. If any potential investors even sniff the possibility, they'll run and never look back while your current investors will raise holy hell, even if the CEO+CTO were able to find some fig leaf of justification. It also implies a deviousness that will scare investors; if they're willing to screw a friend and risk such a serious dispute, then it's also possible that they'll wander into similar situations in the future. Particularly in the early stages, investors and VC firms don't have to put up with that sort of bullshit.
This gives you an absurd amount of leverage: you have the ability to single-handedly kill their fundraising efforts now and in the future. You need to call your attorney and start using it. At the very minimum, it'll put the breaks on any plans they're currently working on. At best, it'll help you move forward as a company without having these sorts of problems lurking about in the shadows.
Does he want me to leave the company or does he want me to stop writing production code for the product?
If its the first one, there is likely a personal issue between the two of you that needs to be resolved one way or another.
If you think the second option is what he is really trying to communicate, then I would look for other opportunities to contribute to the company. It sucks to grasp your own limitations and admit that you might not be a good enough coder to contribute to the product at this point, but this is a critical time for the future of the product. Any technical debt acquired at this phase of development is going to be very costly to pay off later since you are developing the core of the system.
However, you are a founder of the company, and I am assuming very passionate about the company's mission as well as financially motivated to see this thing through. There are tons of jobs that will need to be done as you guys grow, and each one of those is an opportunity for you to contribute above and beyond what a new hire off the street could accomplish. A lot of those jobs can also take advantage of your coding skills to either automate processes or utilize your deeper understanding of how the product works to better support it.
This is of course assuming that you guys have the cash in the bank to pay you for this work, if that is not the case then the situation is a little trickier and you will have to explore other options.
Regardless of whether there is any grain of truth, the CTO has lost confidence in you. Not just a little bit. He has asked you to leave. The rest of my advice assumes the CEO (your co-founder) has quite a bit of confidence in the CTO. If that is the case, I'm not quite sure you can come back from having the CTO asking you to leave, nor am I certain you should.
I think it would be advisable to talk to a lawyer to see how you can cleanly and professionally leave on your own terms. Save the emotional stuff for friends and your alone time. You will no doubt need to grieve (this was your baby). But I think it would be better for you to be proactive about leaving and professionally extract yourself from this situation. That said, make sure you know your rights and what your contracts entitled you to in such a situation.
Once extracted, take your hurt pride and prove them wrong.
You are a co-founder. That counts for a lot. I am also assuming that your equity stake is significant.
First of all, deal with this right now. Don't wait for the 3-6 months. You are basically being told that once they have raised money, they will find a way to get you out. Right now, it's a fishing expedition between the CTO and the other founder. Will you be a nice gentle person and go along with their approach or are you going to turn into an attack dog.
You likely have tremendous leverage right now due to this funding round coming up. They will not want to rock the boat. But this is exactly when you should be doing it as I don't believe the "we need you" bit means anything other than "we don't want you to fk up our funding round coming up".
At the end of the day, if they really want you out, they'll find a way to do so. The main thing is that you got to get on the offensive and make sure if you do end up leaving the company, you've left on the best financial terms possible for yourself. Make them pay. In fact, throw out a number you are comfortable with and have them pay you out from that in the next funding round.
If you approach this as "what's best for the company", you have already lost because that's not what this CTO and your other founder are approaching this from.
EDIT: You should provide some more detail on the equity position you have and how formalized it is (ie. proper contracts). Being a co-founder isn't about just writing code. As others have said, if you have significant equity, you have a lot of power. Don't underestimate this.
On all my share option deals I specifically ask for an instant vesting on a sale/listing event (i.e. we get acquired or we make IPO, I don't need to wait any longer), and when requesting it I normally get asked for an agreement to do a work-in on acquisition - it means the acquiring company is not obliged to, but may, have me work on their team for a year or two post-acquisition so the stuff inside my head doesn't walk on me becoming rich overnight.
However, this is not standard to my knowledge. I have always had to ask for it. Did you? Maybe it was put in place by your employer, maybe it wasn't.
So, read your paperwork, ask your boss, go and seek out professional guidance with your paperwork in tow if you need to.
Good luck, and (hopefully!) congratulations!
It all depends on what your stock option program says. Both of the times I worked for someone else, all options automatically vested on a liquidity event. A liquidity event being the acquisition of the company. This seems pretty standard so it may be the case for you. I don't want to get your hopes up because it depends on your stock option program
That being said, the first acquisition I went through, the acquiring company purchased the IP and not the company. The board of directors declared that this didn't count as a liquidity event. Therefore, none of our stock options vested . We all still received 6 figure retention bonuses in cash and stock from the acquiring company that vested over so many years.
tldr; It seems pretty standard in the industry that your options would automatically vest on an acquisition. Even if they don't, it's likely that the acquiring company will offer you some kind of bonus to continue working for them.
Otherwise, if you're lucky, you might get a job at the acquirer with a salary bump.
What does your employment agreement say? Depending on the terms you'll have either 0%, 0.2%, 1%, or some other amount. Really hard to say anything without knowing what's in your employment contract and the types of stock you were issued.
> Its a cash-stock deal. Do I get any cash out of this acquisition?
Again, you'd have to read the terms of the deal. They might pay back the investors at a multiple, and split up the rest to the employees. And it's possible what's left for the employees could be very little, nothing, or a lot. It's really hard to say without any information.
If I were you, I'd read carefully through all the employment forms you signed. And if it's overwhelming, you should have a lawyer read them over to gain a bigger understanding.
Just know that 1% equity doesn't necessarily mean 1% of the deal. It all depends on the terms and the class of stock issued.
You can also now negotiate market level salary or a loyalty bonus to stay and ensure smooth takeover/handover. You are likely to get more this route than via your equity if you have 1%.
1. What was the strike (and market cap/valuation) when you got your options?
2. What was the acquisition price per share? How many shares are outstanding?
3. How much did you get diluted when they raised money? Include liquidation preferences.
4. Is there any accelerated vesting clause on acquisition? Can they fire you and you get nothing? The fact that they haven't tried firing you to cheat you suggests your options aren't worth much.
Lesson for next time: When you are offered options as part of an employment agreement, ask for a written contract and ask for details! Even if you do have a good written agreement, you can still be ruined by liquidation preferences given to new investors after you join.
However, you implied a question about single/double trigger. If your contract mentions single trigger vesting, it _typically_ means that some/all of your equity vests on a sale of all or substantially all of the company. Double trigger vesting is similar, but would require a second event (usually your position being no longer available, e.g. if you were CTO and the acquirer didn't need two CTOs) to trigger vesting.
Same with a 7-page term sheet. Read every word! There is no such thing as "standard".
This year we're doing 7 screens, and I've got two other offices at our company wanting to use it.
I've also been using them a bit as test servers, instead of virtual machines (so no slowing my workstation down...).
I've also a couple of them (while they're not at conferences) as web displays, showing asana jobs for the team ( https://github.com/danthedeckie/asana-view ) here, in our team room.
I've just started helping to set up a friend's one as a time-vault/time-machine for his and his wife's mac.
I have a few ideas that I'd kinda like to pursue:
* An LCD display that shows the local transit times, so I know when to head out to catch a bus/train* An LCD display that shows my weekly mileage (running) and other relevant stats, maybe for other people I follow, too* An LCD display that alerts me if it I missed a phone call or text.
I guess the first step is figuring out how to hook up an LCD to my Raspberry Pi... :)
FM Stereo transmitter (I needed a signal to test my rtl2832 SDR indoors).
Home automation. This is the only project that has any 'unique' work, the others were just "follow the examples".
I'm converting a mobility scooter into a semi-autonomous robot but, nothing impressive to report yet.
Great source of inspiration here-
I realized all the games are a lot harder than they felt when I was a child. Can't get past the second person on Mortal Kombat 3... but Super Mario World is a lot of fun.
The process is described in my blog at http://blog.tafkas.net/2012/10/03/gathering-and-charting-tem...
Simple thermocouple with an Adafruit breakout board (MAX31855), and an existing Python driver.
Also serves up a Nodejs static page that polls for a new temperature every 5 seconds.
I'm struggling to find the time to get this going, but it's working okay right now. https://github.com/CanadaJ/heat-of-my-meat-node
Working on:-running electric sheep -portable pi
- A semi-real time (with less than 10 seconds delay) pet monitoring system
Blogger mapped to your own domain would be a good place to start. It is easy to export content out of blogger if you change your mind.
There is no such thing as "ideal" but there is "ideal for you", of course. I recently settled (again) for Wordpress for my personal blog. It was a combination of "I already know it" and "I can pay $50 for a nice template that isn't overused and accomplishes what I want without any fuss". It is ideal today for me for those reasons. That may change though...
The team at Asana have used it to scale as we ll http://eng.asana.com/2014/02/scaling-asana-com/
Another thing, many startups use Tumblr because they like it not to be hosted on the same server, so that if your website goes down, your blog will be still up. Tumblr has social features, auto posting to social networks, and all the features listed above except the fact that you're hosting your content on Tumblr servers. Which I don't think should be a problem.
If you focus on being enthusiastic about the position rather than negative about their site, you should be fine.
Hands-down the most well informed and capable support i've dealt with
They also had all this shit custom software that made lotus seem alright.
Also the main business software is a Java webapp that is less than 10 years old but looks, feels and works like it is from the 90s.
EDIT: I wanted to add a desktop flash app for editing web content. This is what sucks the most, it is mostly unusable (for example, you have to create a image object -db record- before you can load a picture) and you have to do a remote desktop session to use it (yes in prod).
Gmail to me now is only 10% to 20% better than what using my ISP for mail with Thunderbird used to be before Gmail's invention. (As opposed to when it first came out and it was "Oh wow!" better than any competitor.)
I am still confused why they took a decision to change well set MS SCCM into an product that doesn't satisfy half the need...
It seems what you want is to start a startup , but regardless I would suggest you pressure yourself to do the opposite: to try not to have ideas, and to try not to start a startup. Don't pressure yourself to pick an an idea. Stop setting up expectations because they limit creativity.
The more general underlying principle is that constraint is no less important than freedom. Constraints unleash the imagination and are key in creativity. Limit yourself to less, and you start overflowing to a new direction.
The more specific advice is:
(1) Continue keeping a journal of your thoughts, but write in the morning, preferably as soon as you wake up. Don't leave this for the evening. Besides helping get the negativity out, it helps unearth fringe thoughts at the time where your critical self who can kill them isn't awake yet to do so. Shoot for writing for at least 30 minutes.
(2) Let thoughts pull you in any direction they want, and give them time to do so. By time I mean three things: (a) make 1.5-2hrs of time for yourself to "play" with thoughts like that uninterrupted from the world, (b) give yourself (what seems to be) at least 2 weeks for these thoughts to develop, because that's enough time for the subconscious to displace bad thoughts with better ones  and to grow fragile thoughts (which you might even not be willing to admit to yourself) into stronger ones, and (c) when (NOT IF) you get stuck, pursue other interests, because besides relaxing you it removes the expectation to come up with a solution, which then frees your subconscious to have thoughts it wasn't allowed to have before; thoughts tend to drift back to what you want to pursue on their own.
(3) Since you are still incubating , there isn't a focused session yet where you should go in "closed mode" shutting the world out. What you want to do at this stage is gather material to feed your subconscious. So play. Indulge. With constraint: your goal is not to create something; it's to play. When an idea grows enough it will pull you on its own for (what seems to be) longer than 2 weeks, where the idea shuts the world out for you.
Also understand it's important to have and trust a process, and this one appears to be well documented . As John Cleese said, creativity is not a talent; it's a way of operating. But faith is a key ingredient here .
I'd be happy to learn what you discover. And if you want to start a startup, better to solve problems you have yourself.
P.S. I'm also sorry to say I disagree with the comment in  (closed now) on confidence. It's important to lack confidence to some degree, because that's a sign you are tackling something slightly beyond your reach. The real danger is that if there is one person around you who makes you feel defensive you lose the confidence to play and then it's goodbye creativity. So find people who are equally willing to play with ideas. Just as you need confidence to take decisive action -- to move into "closed mode" and execute when you are sure you got it all right -- you also need to not have confidence when you are gathering material because you don't know what all the options are yet. If you are confident from the beginning, you should be alarmed. Keep yourself honest.
 - https://news.ycombinator.com/item?id=7537091
 - When you say you are scatter brained, you probably mean you are displacing weaker thoughts with stronger thoughts. So you are already doing part of what you should be doing.
 - You seem to be between 1 and 2 in http://www.brainpickings.org/index.php/2012/05/04/a-techniqu...
 - The brainpickings link from  is full of links to related research.
 - https://news.ycombinator.com/item?id=7537566
 - Robert Greene described this process as:
When it comes to mastering a skill, time is the magic ingredient. Assuming your practice proceeds at a steady level, over days and weeks certain elements of the skill become hardwired. Slowly, the entire skill becomes internalized, part of your nervous system.
The only real impediment to this is yourself and your emotions - boredom, panic, frustration, insecurity. You cannot suppress such emotions - they are normal to the process and are experienced by everyone, including Masters.
What you can do is have faith in the process. The boredom will go away once you enter the cycle. The panic disappears after repeated exposure. The frustration is a sign of progress -- a signal that your mind is processing complexity and requires more practice. The insecurities will transform into their opposites when you gain mastery. Trusting this will all happen, you will allow the natural learning process to move forward, and everything else will fall into place.
Perhaps you need to think a bit about your life theme, what you should concentrate in and how it unifies your ideas. This subject comes later in the book and my advice for you is to read the book from the beginning as it would give you lots of food for thought and might help to give you focus in your life as well as to your ideas (and what you worry about).
Regarding what do to with the multiple ideas, relax, you can't embrace the world. Focus on the ones that have a deeper meaning to you.
It is easier to provide the list of things that are worth worrying about than it is to list the things that are safe. There are a lot of as-yet unbroken ciphers and constructions. So, here are the things to avoid:
* Block ciphers in the default mode ("ECB").
* The Dual_EC random number generator, which virtually nobody uses anyways. You weren't going to accidentally end up using it. Or, for that matter, any other PKRNG (random numbers produced by public key algorithms).
* RSA with 1024 bit moduli (or below); RSA-2048 is your starting point. Conventional DH at similar key sizes will be an issue too, but there's a "means/motive/opportunity" issue for RSA-1024 given its prevalence.
* MD4, MD5, and SHA1 aren't backdoored, but are broken or weak. But: all three are survivable in HMAC (don't use them, though). SHA2 is your best all-around hashing bet right now.
* The NIST P- curves. There's no evidence to suggest they're backdoored, but (a) the rationale behind their generation is questionable and (b) they have other annoying properties.
So far as I can tell, you are now fully briefed on the "distrusted" crypto.
Don't build your own crypto. Use PGP for data at rest, TLS for data in motion, and NaCl for the rare in-between cases.
It's believed that any elliptic curve algorithm that doesn't have a transparent process for choosing the curve points may have been backdoored by the NSA choosing points that they already knew how to factor. If you use those curves, then you're revealing your secrets to the NSA but not to anyone else, because the discrete log problem is still (mostly) just as hard as it ever was.
Specifically, the elliptic curve random number generator in NIST SP 800-90A is believed to have been backdoored by the NSA. For obvious reasons no one has any hard proof, just very strong circumstantial evidence.
You can continue to use SSH2-RSA with decent size (2048 bit as a minimum) keys & AES. Those are not believed to be breakable at the current time, although as ever you can never have absolute certainty in these matters!
 Schneier: http://www.theguardian.com/world/2013/sep/05/nsa-how-to-rema...
 Snowden: http://www.theregister.co.uk/2014/03/10/snowden_a_few_good_d...
You should avoid at all costs anything that has been standardized by NIST without going through years of reviews by international cryptographers. Dual_EC_DRBG is a clear example of crypto construction which falls into this category.
This is my general rule of thumb.
However knowing which ciphers one should use is not enough! You absolutely need to know HOW to use them.A basic and superficial example is AES in ECB mode, which is semantically secure as long as you use a key to encrypt one and only one single block.Another one is, for example, after how many encrypted blocks a key should be rotated, based on the underlying cipher used.
Once you have learnt how to use the basic building blocks of crypto you are then NOT supposed to write your own implementation and instead use existing ones....there is a small problem with this....they are broken or they either not implement all the necessary crypto constructions you need. OpenSSL is an example of broken crypto implementation, and instead NaCl does not have TLS implemented.
So this is a short summary and my personal opinion of why crypto is hard. On top of all this there are not enough experts out there which have the time to review crypto implementations or new and old constructions, and we are living a historical period where we desperately need crypto to protect our privacy.
So my final suggestions is to take some of your spare time and go through Dan Boneh Crypto 1 at Coursera: https://www.coursera.org/course/crypto
It is worth every single minute.
Once you have done that, I would also suggest you to take the Matasano Crypto challenges: http://www.matasano.com/articles/crypto-challenges/
Finally I want to thank everybody who have taken their time to create and maintain both Crypto 1 course and the Matasano challenges.
Barring some major advance in breaking crypto (which is entirely possible) it will probably stand for a long time to come.
Is it only classical cryptanalysis on the cryptographic algorithm? Or do you take into account the programming mistakes (not necessarily related to crypto) of specific implementations? Or do you allow side-channel or fault-injection attacks, which will be able to break most algorithms, if they are not implemented with specific countermeasures?
In anyway, it is a very difficult question which doesn't have a single definite answer.
For instance, an hashing algorithm can be used to securely store passwords, and must therefore be slow, or to find duplicate files, a task which greatly benefits from speed. If you use a fast hashing algorithm to "securely" store passwords you might as well use a compromised algorithm since the security is nonexistent in both cases.
I think the same applies to crypto algorithms: it doesn't matter if the building blocks are individually secure if you don't know how to put them together in a secure fashion.
Ciphers to prefer ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256
A pretty good source/guide:
You'll need apache 2.4+[I think], or nginx. And possibly fresh certs to use DHE/EC.
A quick rundown of a fairly secure setup:
Cipher Priority list:
Generate the cert and private key:
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout serverkey.pem -out servercert.pem
Generate the DH parameters:
openssl dhparam -out dh2048.pem -outform PEM -2 2048
How to List Elliptic Curves:
openssl ecparam -list_curves
Note: Generating DH parameters is gonna take a while. If you are implementing this on a slowish machine like a Raspberry Pi, you might want to use a faster machine to do the DH step, then copy file the key over.
All encryption is breakable. You aren't choosing an unpickable lock, you are picking how good of a thief it will take to rob you.
A 4096 bit encryption might make it really expensive to attack you, but those old numbers about "it would take a computer 40,000 years to crack" don't matter much in a world where that just means you spin up 160k instances in the cloud for 3 months.
That's a Dollar amount that makes cracking YOUR bank account not worth doing. But if it were the Nuclear launch codes for Russia's arsenal it would not be undoable.
It appears that you see her as liability rather than asset. First, change your outlook toward your wife. If you can't value her properly, you are not going to value anyone else either. Startups require lot of sacrifices not only from you but also from others involved. Spouse and family do the most sacrifices to achieve entrepreneurial dream of a family member. Putting them down is not going to get you far. Learn to respect what others bring to the table.
I will suggest you forget about being "entrepreneurial" and focus on salvaging one project "Your wife, your marriage, and your relationship". Once you recognize the positive qualities of your spouse then talk about growing the family or becoming entrepreneurial.
ed: Apologies for being rough in my response. The OP just touched a raw nerve.
Having kids is awesome if you're (plural!) ready for it. It also doesn't mean giving up on your dream. I work 4 days a week, I take care of the kids 1 day a week and the weekends, and work on my startup while commuting and on some evenings. It's perfect like this.
Whatever you decide, good luck. Shoot me an email if you ever want to chat about parenthood and startups!
I am really troubled by the fact that the first thing you mention about her is that she isn't "as intellectual" as you are, not to mention the other negative things you said about her in your post. I think those are all things that you need to pretty quickly determine whether or not they are a big deal to you. If they are, then this marriage is in for a rocky future.
Also, please don't have kids to try and fix your marriage. Get your troubles reasonably sorted out before you even think of bringing children into that environment.
I'm in pretty much the same spot except that my wife and I had multiple children last year (yes at the same time). A few pieces of advice:
- Having children will test your marriage like nothing before. If you are not happy now, consider that you are going to be even less happy in the future. The children will bring you boundless joy, but don't expect that to make your marriage better. Just my experience there.
- Now that I am able to get some sleep again, I find that the quality of my ideas has improved. I have a lot less time to work on them, but the dream is not gone. I also found a job that allows me to work from home and provides a good pay with equity.
- Your salary will suddenly feel like it is not enough. But it is. Consider what your parents raised you on and what sacrifices they may have made. My mom raised three of us while learning english and going to college. It wasn't easy. She made a quarter of your salary after getting a degree.
- It is overwhelming, but like any test, you will find out who you are in the process, for better or for worse.
My wife has gone through that couch potato phase. I think that you have to get her to find something that will break the depression she is possibly going through. Help her to become motivated.
You are not alone.
Having children, on the other hand... it would be great if the same were true there, but unfortunately biology dictates otherwise; this really might be your last chance for that. Besides it seems like this is also the time when your wife needs a break from the office grind. Maybe she'd feel like getting back to that in later years when children are grown up.
So to be honest, it sounds to me like she's right, this is the best time to have children, and think about the startup game at a later date.
By contrast, biological clock can stop her from having kids in about 3-5 years. She's likely wired to ramp up focus on wanting this. Shut up and make babies.
I now have two children. I kind of wish I had had them earlier. When you are younger you have way more energy.
this holds true at any point in your life - whether you are a 20 year old doing a ramen startup or a 30 year old with kids. If you have the financial nest egg to be able to maintain a lifestyle at 70% of your original, you should do fine. Now, the way to achieve it is harder - this means that even when you are earning, you are proactively saving a lot ... which means not buying that latest gadget that your coworkers are buying.
This is very, very hard.
In short - dont worry... if you can save.
A) Wife is going through a lot of stress as she has been let go and if she wants to work again is going to have to accept a significant demotion.
B) Wife is in her mid-30s and is rapidly approaching an age where she needs to have kids (if she wants them).
As a bonus, you will quickly develop the ability to survive on far fewer hours of sleep per day. That'll come in handy when you're starting new ventures in the future...
I might not be the typical user, but since you're trying to embrace an international market, you might want to add support for Bitcoin as a currency.
I see that this is a service that helps you create advertisements, but I don't see anything about where the advertisements go.
I'm a newb when it comes to the online advertising space. All the acronyms (PPC, CPC, etc) and economics that power the whole thing make me avoid placing any ads because I can never get an intuitive feel if my money is being wasted or not.
Edit: Some more thoughts... If you do add a section for site owners who are wanting to place advertisements on their page, make sure to focus on things like the ability to control the CSS of the ad so the fonts look good.
Does anyone know if Google might accidentally see ads like these as being linkspam?
What your site does and how it works can be more informative.. 1) I have read it top to bottom three times but still unable to get a clear picture out of it.. A short video of how it works could be included...
2) Make the user's feel they will get more incentive for using the service..
3) create some extra pages, a blog would look good, and along with some pricing details would be more nice to have..
I really like it.
Banner, video, graphic ads are annoying.
Many users intrinsically ignore them, others have ad-blocking software.
This will work.
Publishers will love it (if the CPM's are high enough).
User's will engage with it.
Websites will look less spammy.
"I had an idea. I went out on my own to try it out. It didn't work out, but I learned a lot along the way."
Then just be prepared to talk a little about the things you learned, and how they helped you grow as a professional.
No employer worth working for is going to ding you for taking a risk like that -- even outside SV! Seriously! -- as long as you can make it clear that you really were working on something during that period, rather than sitting on the couch eating Cheetos.
I would, however, be concerned that you'd take off as soon as you found a VC to buy into your idea and give you a few years of runway. So you'd have to alleviate that concern (within reason, of course).
"I worked on a mobile startup, right before iOS got big; J2ME games. Yeah, I think we sold maybe 50 games once? Anyways, stayed in college, no harm done."
"I tried a startup. After a year, it imploded in not-quite-glorious fashion. Still dealing with the fallout from that, but I learned a lot about business and product development."
There's no shame in failing, and anybody worth working with will appreciate your experience--that is, if you learned anything.
As these things go, however, I find Hacker News to be far more civil than one would expect for an internet forum with no real barrier to entry. You can't let the perfect be the enemy of the good.
There are times when being judgemental is absolutely right - there aren't two sides to genocide or sex slavery. Likewise, downvoting nonsense is perfectly fine regardless of the form in which it is presented. Indeed it is one of the cornerstones of Western moral traditions [see Plato's Giorgias and consider in light of Socrates crimes and trial]. http://www.gutenberg.org/ebooks/1672
How we disagree matters, but it also matters what we disagree over. Sure HN could be better. But it pretending that all opinions merit equal consideration is horseshit. One If the biggest problems with the internet is contrarianism for the sake of contrarianism.
Could it be better? Yes, certainly. But it's much better than Slashdot or (so I hear) Reddit. It's even better than The Economist, which until recently was my gold standard for a mature, non-judgmental board.