The standard advice for getting better rates (you'll see all over HN -- and I can tell you that it's what I do personally)
1. Charge by the week, not by the hour.
2. Sell the business result, not the app's features.
3. Your cover letter should reference how your portfolio projects delivered (profit, cost saving, risk reduction) to the client.
4. You need to convey that you are the low risk choice -- money to you definitely turns into an app for them.
It's a Market for Lemons.
And competing in the race for the bottom will cause you to get lost in the noise. Some small number of clients will prefer higher rates and take the gamble -- and upon a happy conclusion of a project, will seek you out in the future.
Eliminate the middle man, contact directly to prospective clients. There are a lot of opportunities for mobile devs.
I think we're incredibly close to battery-less consumer electronics.
They're able to gain insights from data that the older generations in this space didn't have the skills to do.
Way more interesting to me are advances like Amazon's QuickSight  which is geared towards business data. You can just upload stuff (CSVs, ERP databases, etc.) and, perhaps, gain some insights. As they build intelligence around similar business data sets it should improve over time.
Next big thing, perhaps not. But definitely something to keep an eye on, at least in my space.
My go-to example would be the intersection of brushless motors and cheap IMUs from phones making the drone revolution possible.
As more operations and products come online, data platforms will become standardized. The skills gap will be bridged, through AI / Machine Learning and more data-literacy educational training.
I actually expect mobile device sales to slow down as the number of connected devices per person grows. We won't need to always carry fragile expensive lil' phones anymore -- we will be able to communicate, connect, work with information, and engage with applications in new unexpected ways.
"Experience Design" and "Data Management" training will be necessary...
I've seen the notion of electronic assistant as an obvious next thing for some time. "Bring up that pdf file I was reading yesterday."
I wish the Sync interface on my car was more conversational than it is - it's much like a verbal menu today.
There is no way we will keep communicating with AI through text or speech.
A new communication paradigm will be the next big thing.
I have no problem following regulations and paying for licenses. The problem is getting blind-sided by it. I still don't even understand if I need a RoHS certification to ship in my home state of California. Is there any resource you found helpful ? Thanks in advance.
I graduated from a moderately-ranked undergrad program with a 3.0 in Computer Engineering (the HW-centric flavor of CS), going on 6 years ago.
After graduation, I wanted to get into the embedded field, but was discouraged by the employment options (hardware hadn't yet made the comeback it has been making over the last 3-5 years... 'old' players like Intel still dominated, which wasn't particularly attractive to a bright-eyed 21 year old).
In the interim 6 years, I've been doing iOS development, and believe I've amassed a CV that speaks well to my dedication and work ethic (and is moderately accomplished, at that!).
My question is... how far off am I from being a viable candidate for embedded job opportunities? What kinds of projects/side-work would you like to see to prove that I 'still have it' and/or could sufficiently think on my feet, and get back into embedded development?
FWIW, I have resume experience at Apple, Microsoft, and Google (I actually was hired at Apple out of college to do hardware QA but, once I realized the path from QA to embedded development would be a near impossible feat, I quickly moved on to iOS development).
Thanks! And good luck with your respective products!!
Would you consider sponsoring our community or the contest? We are operating with a budget under 1000$. Both money and products would be awesome :D
 https://2014.spaceappschallenge.org/awards/#globalwin Next Vision (Space Helmet)
Mostly I feel like a software guy that's a bit of a hardware wannabe and it feels like I'd never get to the point where I could build a legit product, and would love some guidance on how to ideate in this space.
This way you are not selling the product you shipped them, so I'm not sure what are regulations regarding this strategy. The product would be clearly labeled as prototype version and not fit for end use.
Bonus points for complexity: The product is intended for children age 6+.
Did any of you attempt any influencer marketing? (celebrities or connectors on Instagram, Twitter, Facebook, Snapchat)
If so, how well did it work and did you pay them (if so what was the model, commission, or up-front payment). Would you do it again?
And another question for the business side of things: where is the line for consumer products that are not meaningful to crowdfund? niche-ness? complexity of installation? does it make sense to crowdfund what is essentially an B2B product?
- Getting early prototypes out there has kind of been decremental for us. Even the smaller bizs are willing to pay higher for a more "field-tested" device. Which seems like a recursive problem ;). Should one spend more time on getting v1.0 done ?- Is there anyone who you'd recommend to handle global shipping and taxes? The way that Pebble had tied up with distributors in different places depending on your country, etc.
(We are building talking posters. One's with BLE play prerecorded messages, and you can interact with them, and the one's with WiFi are connected to the Internet and are more interactive.)
- What is the best way to get traction on the product before launching the campaign?
- How much money you need to set up a good marketing Kickstarter campaign ? Is it needed to use a good PR agency ? (Any suggestions about a good PR agency ? )
Thank you so much!
How happy were you with the experience so far? There are a few up and downsides as drabie had mentioned before.
Taking all of that into account, would you use Kickstarter again if you had the choice again?
Seems like an enticing option, my main concern is how much of the Kickstarter market might I miss?
Are people who buy on Kickstarter a subset of those who buy a finished product, or is it an entirely separate group?
I can see pros and cons of both ways, and I know a lot has to do with my specific market (niche time-lapse), but would love to hear any comments or insight. Thanks!
I'd like to talk to someone with experience interfacing with factories in China about how the current approach could be replaced. Any suggestions?
Also, if I developed this tool-chain, what is the best way to attach to the market?
How worth it is it to integrate with these platforms? Should new IoT devices "cover all the bases", or is it not worth the extra cost & development?
Currently I'm doing an IoT project and I think I may just skip all those platforms. The HomeKit app costs $14.99, a Wink base station or a Nest costs money... Personally I'm doubtful consumers want to pay those extra costs.
When should I be using which sort of funding?
Having no experience or expertise in custom hardware design, how would you recommend finding someone who could handle design and production?
Did you rely on qualitative feedback (by real people or usertesting) or on quantitative results (A/B conversions testing on ad copies and landing pages)? Or did you just go with your gut?
Where do I find people's problems to solve that can be addressed by HW?
How do I get started with hardware? I'm a software engineer trying to break into the hardware field. What resources can you recommend for someone in my shoes?
One day near the end of his life, Mr. Picasso was dining at a caf in France when an American tourist, and fan of his, approaches him. Bewildered, the tourist asks for a photograph, to which Picasso agrees. They get friendly, and before long, the tourist asks for a sketch. Being a big fan, and a man who's clearly done his homework on art, Picasso agrees, pulls out his fountain pen, and quickly sketches a portrait of the tourist on a napkin. The tourist, amazed, thanks Picasso and reaches for the napkin portrait, but Picasso moves it away, and without skipping a beat, says, "that'll be 15,000 francs." The tourist is shocked. He says, "but that doodle took you five seconds!" Picasso smiles, and replies, "no, it took me five decades."
You never hear about the work that goes into success, even the overnight success stories. Overnight success stories don't happen in one night. The easy answer is there are no easy answers. Keep working, keep pushing, and keep believing in the chance and the opportunity of the day before you. That's way more than many others on this planet ever get, so make the most of it.
In reality, it's not like that. Ideas don't grow on trees and many, many people fail multiple times before they succeed. There's no book on how to do it; there's no 1 way and what works for abc company didn't work for def company.
Find a day job; make some money.
Find an idea that your passionate about; code it - submit it somewhere (here is a good start) - show people / get them using it / get feedback. If your not passionate about it; no one else will be either.
Stick with it long enough / until you can determine if it's going somewhere or not.
Rinse / repeat until you find the success you want.
Don't try to do big things. Do small things completely and with great care -- and celebrate those tiny victories.
You see, you never know where those tiny projects are going to eventually lead.
Google started off with a guy thinking "hey, what if you were to think of the world wide web like a graph -- I bet you could get better search results by ranking pages by the degree of incoming arcs".
It was actually a relatively small idea.
So just take some baby steps and see where they lead. And don't worry about stumbling and falling -- babies suck at walking.
Even the ones who will eventually win marathons.
Hang in there, do what you can now, and plan on what you can't right now.
Reading HN does that, mainly because all the shiny stories float to the top. Also stuff you work on never seems as shiny as something new you hear about (even if if yours really is cooler) mainly because you live your stuff 24/7 and all you see most of the time are the bugs you have yet to squash.
Yeah, you probably are. So fix that. Step one, learn to code (better?), and get a development job. Do that for a bit, save some money, then figure out step 2. You can't change the past so don't let it unduly influence what you'll do next.
My workaround? Comes from recognizing the following:
(1) In many ways, our "system" (not just the tech meritocracy cult, but our whole consumption-oriented society) is strongly predicated on promoting feelings of inferiority, "coulda-shoulda-woulda" and anxiety generally. It's it's main oxygen source, in fact. So whenever I feel myself feeling beset by these pangs and impulses, I try my best... to deny the system its "oxygen" by questioning the validity of these pangs and impulses. And looking instead for other sources of validation / motivation.
(2) More drily, there's a huge selection bias in all of these success stories. We nearly always hear about the winners, only very seldom about the failures. And even the "big" winners, talented though they are, might have been only "so-so" winners had it not been for certain twists of dumb luck.
Not to mention the legions of "so-so" winners (e.g. that total schmuck you know who just got a $30M B-round) who might otherwise just be regular devs, perpetual grad students, or slaving away at an investment bank right now, had they had the tragic misfortune of being born a few years later, or earlier.
(3) Finally, so some extent maybe I do suck, at least at this game. Or maybe I don't? Either way, a healthy amount of self-doubt isn't a bug, it's a feature -- and nearly omnipresent amongst people who are in any way trying to achieve their potential, and question the limits and rules set by others (as nearly any biography of successful people will tell you).
As such, when viewed properly and used properly, this kind of self-doubt can not only not be a straightjacket -- it can be an invaluable energy source.
 : https://www.youtube.com/watch?v=VRPZL5ZZuU8
Ruby: anything written by _why (if you can find the source) He once gave a whole presentation on the splat operator and it's bizarre uses that gave me goosebumps. A true artist. The code twists and contorts ruby in unimaginable ways.
JS: anything written by TJ hollwaychuck (express, mocha, etc...) Express is so simple but powerful, when you read the source you can't help but wonder where the rest of the code is.
Python: anything written by Kenneth Reitz (Requests, legit, records...) This guy can lay down some serious Python and gets things done. He writes the batteries that python should have had included.
Does "beautiful" means "the code is clean"? If so, the Quake source code is "beautiful", while Duke3D Build engine is "ugly".
Does "beaufitul" means "the code is clever"? If so, gcc, ffmpeg and ODE are "beautiful", and Google's Ninja is "tasteless".
Does "beautiful" means "the code is modular" (I mean "open-closed" here)? If so, VLC is "beautiful", and everything monolithic is "ugly" (gcc, Linux, systemd, LLVM, ...).
Does "beautiful" means "the software performs flawlessly"? If so, the Duke3D Build engine, Quake's engine, and Portal's physics engine are "beautiful", while VLC is "ugly".
Does "beautiful" means "the software embodies a clever concept"? If so, "grep" and "xargs" are "beautiful", and the Windows Batch interpreter is "ugly".
Does "beautiful" means "the software is easy to use"? If so, the Windows calculator is "beautiful", while Mathematica and vim are "ugly".
Does "beautiful" means "the software can be twisted in lots of interesting ways"? If so, dynamic language interpreters are "beautiful", while static language compilers are "ugly".
My point is, any piece of software can be seen as "beautiful" or "ugly".
We have meaningful objective attributes at our disposal, like "simple", "clever", "fit", "robust", "fast", "small", "user friendly"... let's use them!
The game itself has an amazingly beautiful vector style. The engine is remarkably tiny, 20kb. I decided years ago if I ever find time to build a game I'd like to architect it like "Another World".
1) Configured via a special DSL (Varnish Configuration language) that gets translated into C, compiled and loaded into the Varnish process via a .so. Perfect combination of expressiveness and speed. You can even inline raw C code in it!
2) Heavy, good use of virtual memory. Varnish allocates quite a lot of gigabytes and leaves it up to the operating system to decide what should be in RAM and what should be on disk.
3) LRU garbage collection of cached objects requires a synchronized priority queue. Varnish people transformed the decades old idea of implementing a heap in an array that every CS graduate knows and came up with a faster, paging-aware solution (http://queue.acm.org/detail.cfm?id=1814327).
Mike Pall is a demigod.
I think that bloat is the enemy of beauty, so we're probably likely to find beauty in software that does a few things well.
The idea of collapsing a volume manager and file system into one was very innovative and led to substantially more functionality with less code (although some called it a "rampant layering violation" ).
ZFS is a joy to use, dead simple, and arguably the most robust file system out there.
What makes them beautiful? They're very straight forward and clearly communicate what they're doing, and how.
And the parentheses in their language of choice softens the visual display of the code -- while the semantics of the language cause the shape of the code to communicate quite a bit about how the machine will go about executing it.
There are no surprises.
In terms of conceptual beauty, it'd be hard to beat Screamer (https://github.com/nikodemus/screamer).
What makes this beautiful? The way it makes a hairy problem seem simple and straight-forward.
If you haven't seen the video it's remarkable:
At the time I had never heard of Binary Space Partition Trees. Beautiful concept for a monument of a game.
It's very rare in a programming language that I can click through to the implementation of a function and actually understand the code I get through the wall of error checking and coercion and OOP gobbledygook to even make sense of what I'm looking at.
But I've never had this problem in Haskell or Clojure. Haskell because that awesome type system makes most of that boilerplate unnecessary, and Clojure because for good or ill, the priority seems to be on clarity of code and letting the Java type system kind of catch a lot of the obvious errors.
Racket, on the other hand, much as I love it, when I go looking at it's internals most of the time it's practically unintelligible to me.
The way it displays and organizes complex data, better than other standards like CSV or XML. Or the things that use tables.
When I first started programming, I had two favorite ways of storing data - INI and arrays. INI for its elegant key/value style. Arrays were just natural because of the way computers think.
I spent months trying to mold these two things together; how would you actually store key-value things within an array? Do you make an array of pointers that lead to key-value objects? (I used C)
JSON is just this beautiful thing that lets you store data however you want. It's beautiful because it doesn't get in the way. Not only that, but it's a data structure you can understand just by looking at it; you'd have to squint to understand raw XML or a SQL table.
It's clearly explained code that's shorter than you would have thought. Norvig showcases his expertise in manipulating both the basic data structure of the Python language, and a deep understanding of the underlying problem and methods for solving it.
I'm not saying my code is particularly readable to anyone but me, but functional style is something that 'clicked' when I fell into it.
LLVM. Being able to fully represent general code in a simple, well-defined, readable text-based format is a far bigger achievement than you would think until you look at what it took to do it.
In OpenGenera, everything displayed on the screen is typed and can be retrieved as an s-expression (like in a web browser):
I happened to dig into its source code for something and eventually found myself amazed at how the entire base is beautifully laid out. It's no nowhere near being naive. It's almost a simple programming language implemented in python. A compiler of sorts with its own abstract syntax tree and stuff. Yet the code is very readable, straight forward and just taught me how to write good python.
 corrected typo.
Beautiful software: Java Virtual Machine (the code? could be entirely un-beautiful ;)
In terms of his ideas, watch "Always be composing":
And he offers some great thoughts about queues and backpressure in "Everything will flow":
- Starts in a sec. - API is the program, the GUI just an interface. - Free but very professional - Shortcuts are ergonomic.
On the other hand, the ideas, algorithms, or the protocols on which software is based often seem beautiful, elegant, or brilliant, at least to me.
A few examples I can think of are: Google PageRank algorithm, Bitcoin's protocol and the block chain, the TCP network protocol, the BitTorrent protocol, Dijkstras algorithm, etc.
Does one thing, does it well with large responsive colorful UI that still displays everything you need to know. Is minimally invasive (debit card instead of bank account verification). Uses your existing contacts, so everything "just works" by default.
quicksort  =  quicksort (x:xs) = quicksort [y|y<-xs,y<x] ++ [x] ++ quicksort [y|y<-xs,y>=x]
My implementations in Literate CoffeeScript:
Here is what the author said about it (and code in general):
"Its an art form, like any other art form I would spend time rewriting whole sections of code to make them more cleanly organized, more clear. Im a firm believer that the best way to prevent bugs is to make it so that you can read through the code and understand exactly what its doing"
The same can be said of the PostgreSQL source.
: http://www.fmod.org/: https://github.com/fmod/ue4integration/blob/master/FMODStudi...
Just read through the design, it's very simple and extremely modular. It learns the lessons from previous related systems and applies them in the new system.
(winner of the 20th International Obfuscated C Code Contest)
Nevertheless once you run it, you will have a sweet surprise.
Jumping right into IDE to solve a problem is a way to end up with bullshit, like to write down the contents of undeveloped and undisciplined mind.
"My code is my documentation", or auto-generated "documentation" is bullshit for the same reasons.
Take a look at the rasterizer, for example: http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree...
This book might help.
H&P is great, by the way. It was that book and "Cathedral & The Bazaar" that made me quit a Microsoft-only job and go open-source.
The interface between the physical world and the digital world. They are the lenses of computers as much as its magic.
A tiny self-interpreting compiler and virtual machine. The beauty is in how amazingly minimal and yet functional it is.
It has every feature but takes 5 minutes to learn. And it (mostly) seems to do the most reasonable thing every time you do anything.
(plus: there is a working free model and a really useful paid upgrade.)
1. a. whitney2. ioccc.org winners (djb, etc.)
what makes [some] software beautiful?
the ugliness of other software.
most software is large, slow, complicated and bug-ridden.
this makes small, fast, clean software written by competent programmers "beautiful".
taste varies. what is too terse and "obfuscated" to some is pleasingly succinct and manageable to others.
right now there's another post about yann lecun on the front page. he once wrote a lisp-like interpreter that compiles to C called "lush". of all the lisps i have tried i think it's one of the more "beautiful" ones in it's design.
 https://github.com/baskerville/bspwm  https://github.com/baskerville/sxhkd
If you mean code, Smalltalk or LISP
shameless fanboy here
edit: other comments seem to be from a source code perspective ?
IMHO, the most beautiful software are always games and entertainment titles... After all that is the purpose.
Office 2013? It's very useful! I use a classic menu template and got rid of the ribbon, since the functionality is the same, but in my preferred format. Beauty does not come into play with office...
I can use it for creating beautiful PowerPoint and excel spreadsheets.
Code is never 'beautiful'. It's either concise, well-written and formatted well, or it isn't.
The thing is, when I am drinking, I can manage the pain of things that will never be okay, even though I must endure them. I don't advocate alcohol, but waking up screaming every morning isn't always an option. And I get to say "basically an alcoholic" because that's a euphemism for "functional alcoholic" which is a euphemism for "alcoholic," but because I can still do my job around people in their 20s, nobody complains, so I don't have to begin the regime of psychoactive drugs that don't guarantee any less liver damage than the alcohol. I can only hope I make it to my 50s, and in my 50s, I will not give one thought to what anyone thinks, because making it to 50 means I survived remembering my dead loved ones for 30 years, and that's good enough.
It sounds like it's not an issue for your business if he's killing code three sheets to Moby Dick and you can't spare a salaried employee to walk him home. If you care for him, as my family cares for me, you will do what they do, and say, "Are you okay? I wondered because you're drinking a lot," and he might say, "No, I'll never be okay, but if it's a problem I can work on it." Or he might say, "Yeah, I'm fine," even though he's not. Point is it doesn't sound like it's a professional issue, since you haven't fired him for drinking on the job, so his ability to code is a moot point. The question is not "How do I approach a talented employee who seems superhumanly talented when he's drunk but then we have to use unpaid company resources to manage him after hours?" The question is "How do I approach someone managing pain in a potentially long-term and self-destructive way?"
And that's not an HN question.
In alcoholism, an important concept is 'enabling', where you are making it easier for the person with alcoholism to continue with their habit. You are enabling your co-worker to continue drinking by giving him rides home, having interns walk him to the correct apartment, and allowing him to commit code while he is clearly under the influence.
Your manager should be setting the boundaries in the workplace regarding alcohol, but the best thing you can do as a co-worker is to be there as a friend and to listen. Take a break from the screen and step outdoors and have a conversation, because it sounds like this person is really struggling with a difficult chapter in his life right now.
To me it seems great that you are helping him by not allowing him to drive, etc. especially if he is a nice person, but I would think that this might be a a little off your reach.
I'm definitely not trying to discourage you but at least where I live, people take it very personal when you try to talk with them about issues/addictions they might have, so I might be biased, but as harsh as this sounds I don't think you can push him too much on this. His grief is probably (and understandably so) too much to bear.
The only thing that comes to mind is going to a psychologist/psychiatrist specialized in addictions and ask him for some advice on how to approach him.
In any case, good luck. It seems terrible to me that he has to suffer through this and it's really nice that you want to help him. Just be careful on not stepping into something you might not be prepared nor trained to deal with.
Anything you do is going to fuck him over. Don't believe someone at work (boss, HR) is going to turn his life into a disney movie of helping love and happy endings.
There are going to be mistakes that will let you know it's time to act. The first time you catch him doing a blunder that affects other people, take him aside and talk to him about it directly. Tell him you want him to enroll in some sort of treatment program.
After that, if he keeps causing negative outcomes for people, then you tell HR or the boss- which will get him fired, end of story. Don't let yourself believe some insane narrative like people are writing on here where the boss or HR will "help" him. He's just going to get fired. So, understand that before you make any moves in 'official' directions.
First, I'd want you to tell me about the issue (if I wasn't aware of it already). Have you told your boss? What was his reaction?
Second, after I was told, to be quite candid, I'd be put in a tough position. If this guy is getting loaded at work, people know about it to the point where they're giving him rides, IANAL but that's a huge liability. He does something while drunk and that's coming back on the company. And the problem isn't that I'm a greedy asshole who doesn't want to get sued, it's that if I get sued then you and probably a few other people are going to lose their jobs. Depending on the size of the company a suit could destroy it.
Third, all those things considered, I have to intervene to protect this fellow, you and your colleagues and the company. That doesn't mean fire someone, that means a serious come to Jesus with this guy with the goal being to find a way to get him through this. Underwrite counseling/rehab/whatever is needed.
So...lots of words to get to this: you gotta go up the chain. This isn't your responsibility, unless you are the boss.
> when he is drinking, he can code things that no one else on staff can do quickly.
> I and the others stand and watch in awe as he types so fast we can barely follow.
Impressive, but why are you all watching this guy? Don't you have work to do as well?
> We have to get him a ride home, help him walk to the door and have an intern walk him to his apartment so that he doesn't go in the wrong place.
Wow, that's crazy drunk. How does he get so drunk at work? Does he drink on the job? If so, how is he hiding it?
And after reading your description of how good he is at coding, I think you're exaggerating how drunk he gets. I find it unlikely that someone can write C++ with such proficiency, especially when they're too drunk to find their apartment.
Also, how do you know he won't be able to find his apartment? Was there an incident after the first time you dropped him off? If so, how'd you find out? Most people would be too embarrassed to tell that story to their coworkers.
> Then, a few days later, he comes back to the office like nothing has happened.
Wait, he writes crucial code and disappears for days afterwards?! What happens if you have any questions or issues with the code? Clearly you can't deploy any of it until he returns, otherwise you risk breaking production systems and having nobody around who's able to fix it. And is he paid during this time? Does he call in sick or something? This whole bit seems crazy to me. Why not have other people on the team spend a few days writing the code instead? As long as they can implement a hash table in under three days, you'll have better overall productivity.
Many of the details of your story raise more questions than they answer. If it was just a couple of discrepancies, I'd ignore them. But your story is permeated with them. I hate to be the one who says this, but my fabrication sense is tingling.
I have no doubt that there are alcoholic employees who need help. It's just that this story feels like it was written to maximize the degree of the dilemma (fire vs. help), not to accurately relate a story about an alcoholic coworker.
The guy will implode. The smart move is to figure out how to get rid of him.
From the first angle, I believe (and others might disagree) that you have an obligation to offer as much support to this person within your capabilities. Understand however that there is nothing you can do to change them - they have to determine that it is a problem that they need to fix. This person KNOWS that they have a problem. Hallmark of an alcoholic is denial - but rest assured they know that it's a problem.
So then how do you help? Well it all depends on the situation. Your team hovering over in amazement while they code certainly doesn't help as it just feeds the idea that "I'm at my best when I'm drunk." Which is clearly temporally bounded.
Unfortunately there is no single solution, and simply pointing you toward AL-ANON or AA is kind of the nuclear option in most cases. Also don't assume that this person cares about self preservation as much as you do. If they just lost all of their important connections, they are likely severely depressed, but my guess is that they are mostly LONELY.
You aren't going to solve that overnight, but it might be possible to find ways to reduce their loneliness. Ask them to dinner, go bowling, whatever it is that would be good. Depending on their personality this might work better as a group or as individuals YMMV.
Alternatively you could force the issue hard by letting them know that this is unacceptable behavior. This one is risky though because this usually further isolates the person and the outcome sometimes is very bad. In some cases it works, but you really have to know the person well.
On to the business side...
Your business partners need to determine what kind of liability this person is to accomplishment of the job broadly. Despite your Rainman like description, the fact that company resources (Even if voluntarily) are being placed on ferrying this person home for risk of life, is a major issue.
This can and will likely lead to resentment towards that person, which usually starts as a joke ("Who's taking barney home tonight" guffaw..) but in my experience turns into vitriol quickly ("I can't believe I have to help this asshole again"). In turn that will lead to trouble with team-dynamics and you can take it from there. No amount of rainman like coding can overcome everyone hating to work with you or the unpredictability of it.
If you or your partners need to issue an ultimatum to this person, that might help, but without other social support could also be isolating. This one has more eggshells on it because it's higher stakes.
If it were me I would offer this person a paid leave of absence, so they could go and be with other friends or family - or in lieu of that, find someone to augment their work and reduce their workload until they can get back on their feet, while keeping them in the office and socializing. Can your team afford that? No idea what your situation is, but if you value this person, then you'll figure out a way to do it.
Bottom line: Support, don't carry. Nudge, don't drag.
I worked with a dev like this. (It was his parents who died.) But he didn't make it to his mid 50s. He was out drinking, and someone else drove home - someone more sober than my co-worker, but not actually sober. There was a car wreck, and my co-worker died from complications from the injuries.
I get that there's an immense amount of pain. But sedating the pain with alcohol isn't the answer. You need to find a way to deal with it, just avoid it.
This is nice. You seem to care. That is a good point.
Talk to him and listen to him. Nicely, as a friend and ask him how he feels about it. The alcohol is there to alleviate a big pain. The pain will be worse if he tries to stop violently. Violent withdrawal put your body in bad state anyway. He may have tried and experienced it first hand and may be scared to try again. If he does share his experience, it means he has made a lot of work on himself already.
You can propose him attending one AA meeting (together or not). It is a nice beginning because they don't guilt people and they actually know what they talk about.
They will probably confirm HN is not the right place to ask for help, and that my advice were a tad wrong.
AA seems to work for some people. It does not fit others.
If it fails, well, maybe it will still help him begin to do the second step. There are other solutions.
I don't know your proximity. Just don't over-invest yourself and accept you might fail.
Helping him for the first step and talking to him is way more than most people do. So if you fail, don't guilt yourself.
FWIW, someone I know has written the best code I've ever seen while wasted and high on an edible.
I guess what I'm saying is that it'll take a friend to help him get through it. If one of your colleagues spends time with him outside work, perhaps they can help you understand what the senior developer is going through.
The other option is to cut down on alcohol in the office, but whilst that's the simplest solution it might cause other issues.
It was delivered as a live lecture at Stanford, with presentations by Sam Altman himself, as well as Dustin Moskovitz, Paul Graham, Adora Cheung, Peter Thiel, Alex Schultz, Kevin Hale, Marc Andreessen, Ron Conway, Parker Conrad, Brian Chesky, Alfred Lin, Patrick and John Collison, Ben Silbermann, Aaron Levie, Reid Hoffman, Keith Rabois, Ben Horowitz, Emmett Shear, Hosain Rahman, Kirsty Nathoo, Carolynn Levy, and Tyler Bosmeny.
My favorite presenter is Reid Hoffman, but all the lectures are awesome. If you're a startup founder, you owe it to yourself to watch them all...
They're by Gary Bernhardt of Wat fame, which is also worth a watch for its presentation style and amusing content:
There are some great tools which you can use in your everyday life to think innovative solutions to problems. The exercises were incredible fun as well.
Another course which I highly recommend is Learning How To Learn https://www.coursera.org/learn/learning-how-to-learn
I'm taking now for a diversion (just started) and expect to learn a bit about quadrotor mechanics, sensors & control systems.
David Malan in the best lecturer I've ever seen.
Sebastian Thrun (former leader of Google and Stanford's autonomous driving teams that won the DARPA challenge) teaches a class focusing on the basic methods in Artificial Intelligence to support autonomous vehicles, including: probabilistic inference, planning and search, localization, tracking and control, all with a focus on robotics. Programming examples and assignments apply these methods to building self-driving car like experiments.
Fascinating, funny and gives insights into many different topics like cultural differences and nationalism.
Walter Lewin's Classical Mechanics
for the content and the delivery
But it's getting harder. More JS frameworks that depend on JS to render anything other than an empty white page. Then you whitelist that site, and it needs a couple of other domains to render anything. Then you're playing "guess which domain hosts the JS framework", which is not obvious, then you can also go back and play "unwhitelist the wrong answers", which since we're probably talking about a page that takes ten seconds to render and fifteen to be sure it didn't render when I blocked that site is quite a pain.
Also cloudfront is getting more popular, and that's all but an opaque domain now when it serves JS.
I'm getting seriously tempted to throw up my hands and do a serious adblock switch. I don't think using somebody else's list of domains is ethical, for various long and complicated reasons, but I'm finding myself having to balance that against the fact that the advertising industry doesn't seem all that worried about ethics at all, so I feel like I may be bringing an ethics knife to an ethics gun fight.
What surprised me most from my time in adtech was the way companies used redirects to sync user ids, i.e. news.com/story loads an image from ads.com/user-sync-start?partner=data which 302 redirects to data.com/user-sync?id=123 which redirects to ads.com/user-sync?your_id=123&partner=data&our_id=456, which returns a 1x1 transparent pixel gif. If that bothers you, disabling third party cookies should make it impossible.
That said, I use adblockers for safety because ad networks seem like a great way to serve browser 0-days.
I'm not worried so much about safety (e.g., ads as a malware vector), but I know that happens. I don't have too much of an issue with data collection in of itself, unless a) the act of data collection impacts me (e.g., 1MB of tracking JS) or b) if your follow-on processes are sketchy and annoying (e.g., spam emails).
I have explicitly unblocked pure analytics platforms (e.g., Google Analytics), trustworthy ad platforms (e.g., The Deck), and a few "site optimization" libraries because some sites don't work without them (shame on them).
I totally get that ads are a revenue source. The problem is that you (as the publisher) need to convince me that your ad platform is trustworthynot annoying or malicious. You have failed that test in the past and taken advantage of me as a consumer. So you now need to earn that trust back. It's not that I don't value your content, it's that I don't trust your infrastructure. (And yes, from my perspective, a third-party ad network is still your infrastructure because you've chosen to use it.)
Neither publishers or advertising networks seem to want to care about sanitising the code they're letting be run in my browser, so screw them all. I'll sanitise it by blocking it.
It's not just that though. Browsing without adverts is a better user experience. This is just a side-effect of adverts, I'm afraid.
Now, I'm sure this probably fractures my license to read content on certain sites... But I'm selfish and detecting ad-blocking is possible. It's up to publishers now to decide whether or not they're really happy blocking 30-70% (demo-dependent) of their traffic.
In this manner I reach what I consider pragmatic tradeoffs.
Yet, ads have gotten so out of hand that I'm about to install adblockers partly for safety, partly for other issues. They track my information when I would not expect it. And I just had a simple news website suck up 2GB of memory. And on my phone, simple websites with 1K text frequently suck up 5MB for ads - and I can't easily predict and control that.
Edit: ADP now installed. And it says it doesn't block "non-intrusive" ads unless I ask it to - which sounds pretty good from my perspective.
But since more and more malware is now spreading through ad networks, I've taken it one step further and rolled out domain-level adblocking on my router (on the DNS level), mainly as a way of securing non-updateable devices like Android phones of guests.
Note that this means that I cannot whitelist ads for a specific domain, but since adblocking was never my primary concern to begin with, I consider that acceptable. I will always see ads if they are served from the same domain (or from any other domain that is not a known ad server), so there's a clear and easy way for publishers to get ads in front of my eyes, should they decide to give a shit.
The only ads I ever click on are ones I never meant to. Usually because the page loads so slow because of ads so content jumps under my finger on my phone.
I installed a hosts blocker on my Android phone after I found myself hitting a large number of sites which would popup ad alerts and then forcibly redirect to another site (where they'd try and get me to download and run an APK). This might be more prevalent in "poor" countries where the fill rate is bad, and so these kinds of scams end up being the only ads available and possibly aren't noticed by the networks.
Before this humungous amounts of JS and adverts blocked the screen, slowed loading times, tried to infect the phone, steal browser history data, and sucked down my data allowance greedily.
Try to explain to some non nerds or your parents what is happening on the last link ;)
Only very few pages are on my whitelist. E.g. Stack Overflow because they have good ads which are well-chosen.
Definitely enough room for malicious behaviour.
The advertisers need to figure out the latter in order for the ads to continue to be a viable revenue stream.
It's the best of both worlds for me. I'll see the ads I don't object to (those not served from an ad network), greatly reduced cross-site tracking, and the risk of exposure to malicious ad content is much reduced.
Occasionally you run into a poorly coded site that fails to render because facebook or twitter didn't return what it expected, but for the most part it's a good compromise between extremes of wide open and noscript.
Edit: In particular also annoying navigation elements like gigantic top bars that stick to the browser top. I have a Macbook 11" and this have made many websites way more readable.
Find me an example of any widespread attack from ads alone. Find me one major network (Oh wait, thats only adsense, FB, and bing) who allow anything malicious.
Dynamic ads don't allow custom JS, and you thinking they do is ridiculous.
Sucking data out of people? That is FUD if I've ever seen it. You mean, "collecting data"? Which some people have a problem with.
Your perspective is warped as hell, 80% of users don't care at all. The other 19% installed an adblocker and left it there. The 1% have noscript or JS disabled and are overly worried about security concerns and paranoid about data collection.
NoScript with ABE is pretty much what everyone needs but uBlock is there to block most of the non-JS ads (and save some bw) and from malicious js ads on the allowed ones but without enabling scripts most ads don't even run so basically uBlock is almost doing nothing (in at least a year it only shows 4% of request blocked so almost all the work is done by NoScript).
Still wishing someday to see NoScript on chrome.
I started blocking ads when I realized they are used to spread malware using sites like adfly, bitly(in the beginning) ... then I got used to pages without ads, it's difficult to go back from that.
I had an adblocker at work until someone pushed a corporate admin-managed Chrome on my machine and I can't install and adblocker anymore.
I feel safer online and site tend to function better since I've started using it.
And then make a webbrowser that uses a shadow DOM to remove the ads without the website noticing.
If people show me static advertising assets, I'm fine with that even if it lets them track me a little. If people try to run software on my computer I'm not comfortable with...that is a separate problem.
If you connect other mail accounts to Gmail/Inbox, Inbox will NOT warn you if it looses connection.When this happens in Gmail, you will be greeted with a big yellow warning.
My private mail server were down a day and Inbox apparantly never reconnected to it. Fast forward 10 days and I missed an important mail until it was too late, because I never noticed Inbox were disconnected.
I love Inbox and how easy it is to keep my mailbox clean, but due to this and also because I can't customize signatures to my different mail accounts, I went back to Gmail for the time being.The fact that it hides the signature also annoys me because I always HAVE to make sure it's there by expanding the [+] sign... I simply don't trust it :)
Don't use gmail....
Run your own mail-server, then your limits on email will be how much disk storage space you wish to purchase.
Email as designed is peer-to-peer technology. In fact, it was the first peer-to-peer system for the internet. Return to that world and all your troubles with the "central authority" (google) will disappear.
I found this out by breaking a recurring task on a site of mine, which had error logging set to email me. But the task was spinning through a a list of things to process, and throwing/emailing for each item (to a gmail label I only check occasionally). Then trying the whole thing again on the same (now somewhat bigger) list a minute later. It got up to a few thousand mails per minute before Google said enough.
I happened to notice it right away and put the fix in place, but it still took the better part of a day for things to percolate through and go back to normal. I don't think I missed any real mails from real people. They just arrived a day late.
* Build stuff you can show people.
* Don't get caught up in formal learning systems such as courses, lectures and classes. They are incredibly useful, yes, and certainly you should use them, but many people cling to them because they are easier than actually teaching yourself to code, and provide sense of security and accomplishment. When I point out to people that they haven't been actually coding, I'll often be told, 'well, this is how I learn,' and then they go on to show me how little they did.
* Don't fetishize the libraries and tools you are learning now. You will throw away many toolsets in your life: get used to learning new things as a permanent part of your job. I had one coworker who came through a bootcamp, and he tried just about anything to get us to add jquery to our dependencies, because he'd spent so much effort on it and felt so comfortable with it. He was more comfortable adding the entire jquery module to our app than bothering looking up the argument structure of the already included helper method from lodash: not because he was lazy, but because he was scared of the trouble involve in learning something. Neither you nor he can afford that.
>> decide what are of programming is in your focus i.e. mobile, embedded, web. Choose desired language. Here from my perspective, there is no language which fits for all solutions. Solution can be created almost in every language, but level of struggling with certain sub-task (functions/actions) might be huge.
>> Read a books about software engineering - how to write code effectively. This will teach you how to organize your code, how to write function, how to write readable code, how to write psuedocode.
>> Read a books about software architecture - here you can learn how to think about application, functionality, usability.
>> Learn basic principles like pointers, memory management, loops etc.
In parallel you have to write code regularly. It's much better to have real world problem which you are trying to solve. It's very important choose suitable level of difficulty. So do just small steps.
I can say programming task at universities are focused on certain aspect of programming or CS. If you are self-learner you have to keep motivated for a long time, so would be fine to have task where you can see and use results. So wouldn't try to solve university home-works. I don't want to struggle with matrix transpose if I don't it at all. I would rather create something which can help me verify my daily outcomes of current full-time job.
Or another (my personal) example... I am working with databases, documents, excel sheets, configuration files etc. I hate repetitive tasks. In case of I have to do the same thing at least a three times per week, I am trying to get everything automated, especially in case if it help me minimize effort, shorten time, reduce errors and typos, validate something, make better decisions.
It is also good points for my promotion in current or next jobs. HR and manager than look at me as "able to solve business/work issues through programming" than just "be able to program something".
(out-of-topic: it's good to have some hard number how you improved something, HR and managers loves story, numbers and savings, but this is another topic)
I now work for him. I guess it's networking in action.
Just keep doing what you like doing. If what you like doing is coding (and you can keep your work organized, do back and fix things, pay down technical debt as it arises) then you'll have no problem churn out successful projects -- and attracting people and job offers to you on that basis.
Write some more code.
Write code again.
Do it everyday.
Do it until you can't live without doing it.
http://slatestarcodex.com/2014/07/30/meditations-on-moloch/ Is a very interesting illustration of it.
More population, more pressure on all ressources, more conflicts.
... but, my solution would not be reducing numbers, or birth control, but more and better technology to get more land and ressources available.Also, rich people are usually not rich on childs, they can't afford to feed. So let's build technology, that makes everyone rich ...
Also, on your CV, nothing says you have to list your current role as Lead Engineer/Developer. You can easily list it as Senior Developer and describe your job duties honestly as the Team Lead. It would stop the non-technical resume scanners from ruling you out and in all fairness is exactly what you are, lead is a role of a senior developer generally. Most companies classify it that way, and even if your official title was Lead Engineer, I'd put Senior Engineer and describe the role accurately so that more companies have the box to classify you for (HR type thing). If they ever call for a reference at the company the difference between Lead and Senior is lost in the noise. I do not consider this dishonest as you aren't claiming you had a role you didn't, you were still a Senior Dev, just also had lead responsibilities. The people that get rightfully smacked (and are lying) are the ones that claim they were CTO/CIO and were really a Senior Developer or something else.
As an example, when I was at GE, there were 13 team leads on our large team and we referred to them as team leads. However, their official title was Senior Engineer. Some guys listed on their resume "Team Lead" others "Senior Engineer", neither was wrong. Hell, when we approved business cards for them no one cared whether they listed team lead or senior engineer either, just didn't matter.
I wouldn't apply for senior roles. I'd look for Principle, Architect type roles. Something that acknowledges your leadership skills but is also technical. I think a 'Senior Developer' role would definitely be a huge step backward in terms of career.
Personally I find the long term career aspects for someone that can manage a few dozen developers to be much MUCH brighter than a senior developer, so I have a hard time understanding why you'd want to switch.
I mean, your next role could be a VP type role where if you are smart with your $$ you can go and be whatever you want after a few years...
With regard to your future prospects, it's all about how you spin it. However, recruiters / HR aren't creative folks. They will look at your last job to slot you into your next job; if and when you want to switch back to management, that job is probably not going to come looking for you.
A very nice desktop replacement for me. So far I am loving this laptop. It is very fast and great as a development machine. I usually have MySQL, Tomcat, Eclipse IDE, Emacs, several Bash terminals and Chrome with many tabs open. Everything feels fast and fluid.
Weighs around 5.5 lbs and the power brick probably an extra lb. Not bad for a workstation class 15" machine.
The matte screen is good, but not amazing. The 1920x1080 resolution is perfectly adequate for a 15" screen. There is a higher end option with an IPS panel and G-Sync, but I didn't purchase that.
If I have one complaint, it is the battery life. I get 2 or 2.5 hours max on this laptop with light to medium use. I don't know if it is poor power management under Linux, but I think on Windows it uses Optimus switching for the dedicated graphics card. Since I use it mainly as a desktop replacement, this is not a deal breaker for me.
Speakers are loud and clear.
I have Steam installed and can run AAA games like "Shadow of Mordor" at Ultra settings with high frame rates. It is great for getting some game time when I travel.
If you are looking for a powerful Linux workstation which can also handle gaming this is a very nice choice.
Battery lasts for 5-6 hours. The laptop itself has survived intense use travelling through India, Sri Lanka, Thailand and Cambodia, including having the corner of the screen melted by accident in the Himalayas.
Haven't found anything lightweight that works better than Lubuntu out of the box (trialed Xubuntu, Ubuntu, Debian, ElementaryOS and some Arch flavours). Getting a dual boot up and running was easy.
My work is mainly fullstack, so I sit mostly between a terminal and a browser. An effective configuration with a tiling window manager is a must with this size of screen and being a TMUX/Vim user helps cut down the number of workspaces I need.
Couldn't recommend it more for travelling programmers!
Pros: "it just works" (mostly, nowdays, :)), it seldom overheats/has the fan turn on, it makes a good impression (read: 'dress for success'), I like the screen size, its got enough RAM for me to run a couple VMs, Unix/terminal power.
Cons: Price. Accessories.
I adore this laptop, it runs like a constant stream of freshly melted butter. It's so light I no longer have to worry about "lugging a laptop", and most times I pick it up and carry around with just two fingers. It has taken a few beatings filled backpack falling laptop-side-first onto a railing from a height of a half-metre, dropped/slipped from a sitting desk to the floor, thrown across a (small) room and (upon a failed catch) rolling on its side but there's no sign of damage, either in appearance or running.
I almost forgot! When I got this laptop, my typing speed jumped by nearly 50%! I was using a Dell Inspiron (from 2010) before, and although the keyboard on it is terrible for typing, the ThinkPad has really good keys and typing is just such pleasure on it.
I have plans to upgrade a few components as time progresses: bump RAM up to 16GB, replace either the smartcard reader or the WWAN modem with an M2 SSD, that's about it.
One con is getting used to the extra long battery life. I used to intentionally and lazily not pack the charger, which is actually quite light, and then after a long day find myself with low battery and no charger. Another is the small SSD this particular unit came with, but I'm planning on replacing that.
It was a rough Linux install, ( noapic edd=off use a new kernel, Debian has the iwlwifi drivers in nonfree, don't use uefi, touchpad in legacy mode. I used both "grub>" and "grub-rescue>" before it was working) but it does just fine for OS development.
The display has such a narrow acceptable angle of view that you can't angle it to get the center and the top and bottom all with a decent black point at the same time. But I use it for programming, so that isn't too important.
I'm really pleased with the eSSD storage. It is much nicer than USB or SD card and supports ext4's discard option.
The power connector is optimized to fracture the solder connections.
This is my "where is cheap hardware" excursion. I tried repurposing a Chromebook into a computer, which was great until it failed to sleep, ran down its battery, and lost the setting that let it "legacy boot" then ate all my data in the restore operation. On the road, away from Internet and any synchronizing. Grr.
Most of my work is at a proper desktop with as many displays around as are helpful for the task, and I generally use a MacBook as my laptop, but I needed to rotate the extended family laptops a little faster than I wanted, so my wife was sharing mine, but she doesn't share well and I found myself with a laptop deficit until Intel can get a Skylake processor into Apple's hands and then they feel like having a rollout.
There is no other better laptop to do programming or other development in the world!
The keys are soft and silent, has grooves in keys for smooth feeling. Touchpad is sensitive enough to be used without a mouse, I have the VERY important middle key, and left-right click, on 2 places
The build feels solid - despite being plastic, this thing is heavy, its not a toy, it cant be accidently moved on the desk while typing or connecting other devices. There are no stupid led lights everywhere shining up in my face, all the led indicator lights are soft white color. The screen can be tilted anyway, is not glossy. Overall the best computer to work on ever.
The insides are i7 quad core with 32gb of memory, dual graphics cards, an intel and nvidia for gaming.
Are these low-end machines being used as hobbyist or frontend-only web development? I can't think of any other explanation.
To answer the original question: Thinkpad X220. i7. Maxed out RAM. It's no portable workstation but I can push it just as hard without worrying about it overheating or failing.
For work I really use whatever workstation my employer provides me, but this is my main machine at home for entertainment and personal projects; I hardly power on my more poweful desktop.
Definitely the best machine I ever had: very light, still runs cool and completely silent when on battery power. It is not a speed monster, but it is still fast enough to browse even most complex websites (no webgl though). The screen is notoriously bad, but is more than enough for my needs.
I dropped it about 6 months ago, and it stopped working. After considering buying a replacement (you can get a refurbished x200 for ~100) I thought maybe it was time to buy a new machine, and was eyeing a new XPS 13. Then that evening it powered on again (probably a loose RAM). Never had a problem since
- Form factor is great for travelers. Since it's technically a tablet by TSA guidelines I don't have to take it out at security.
- screen resolution is excellent
- handles VS reasonably well
- battery life can be 5-6 hours with a local instance of tomcat and SQL running
- kickstand is kinda clumsy when I'm working in my lap
- high gloss screen
- loooong wake up time and it's easy to accidentally put it to sleep by hitting a button the side of the frame. This is my biggest complaint. It sometimes takes up to 10-15 seconds to come back up. This wouldn't be an issue but it is way too easy to accidentally put it to sleep. I've thought about disabling this button, it's enough of an annoyance.
Cost ~750 from Dell's refurb store and can easily see it lasting anther 3 years. Bargain!
This is my 3rd Macbook. I had a 2009 MBP, a 2012 MBP and now the mid 2014 retina. They're by far the best laptops I've ever owned. My only regret with my current laptop is I didn't max out the RAM when I bought it alongside the SSD.
When I'm at my desk it's plugged into a LG 34UM67 34'' 21:9 ultraWide monitor and I use a magic keyboard and magic trackpad 2.
Dell Inspiron 15 i5558-5718slv; i5-4xxx, 8GB RAM, 1TB HDDWindows 10: Nuwen MinGW, IntelliJ for C++, Java development respectivelyVirtualBox VM's: Ubuntu 15.10, CentOS 7
Pros: cost: $400; 1080p IPS screen; backlit keyboard!; reasonable battery life (4-5 hours?)
Cons: Windows 10 (I prefer Windows 8.1 (my last laptop)); slow HDD (planning to upgrade to SSD soon); fan is not silent
I know there's a strong case to be made for spending more $$$ on a better laptop since "[I] use it all the time" and I can easily afford it, but "parsimonious me" objects spending 2x-4x my $400 baseline price for a laptop that might perform 1.4x better.
This laptop replaced a 3 year old $400 Toshiba i3-3110 laptop with 8GB RAM; according to my benchmark (a clean parallel build of one of my C++ projects) the new is only 6% faster than the old. I think my upcoming SSD install will make a big difference.
And: I'm among the apparent minority of programmers who prefers and requires a keyboard with numeric (for me: cursor) keypad. This requirement "narrows the field" of candidate-laptops substantially.
I got this with 8GB ram and 500GB hdd, I can work on it for 5-6 hrs before the battery runs out but the charger is very light. This thinkpad weighs around 1.2 KG's and it's easy to carry and the keyboard feels great when typing.
If I have to buy a new laptop I would try Lenovo X1 Carbon (the 2016 one, with skylake processor )
EDIT: I got this on ebay for $380 with 2 years onsite warranty, so keep an eye on ebay listings.
However, I had an incident where I needed a quick laptop and decided to buy a Lenovo Yoga 900.
Now, two months into using it, I am actually surprised with my decision and it's working fantastic. I'm glad I bought it.
I even wrote up a review about the laptop (http://www.danylkoweb.com/Blog/review-lenovo-yoga-900-13isk-...)
I almost nothing bad to say about this machine, in fact I love it. I run Windows and Linux VMs through VMWare Fusion for work and for personal development. It's nice having one machine to handle all of these tasks.
The one downside is that the battery life can be pretty low depending on what I have running on my Windows VM so I find myself taking my charger with me everywhere nowadays.
Edit: I purchased it refurbished and saved about $400. No issues whatsoever. It was indistinguishable from New save for the packaging which was just a plain white box shipped from Apple. I have AppleCare and have extended it beyond the initial 1 year warranty that came with the machine.
It's pretty badass to type one shell script name that spins you up an supercomputer for a couple of hours.
The main issues I found with the X220 were:
- Heat and CPU Throttling with two 1080p monitors that can make it unusable
- Relatively high CPU usage by bad designed drivers and Lenovo applications (e.g: Synaptics)
- Completely terrible support for Bluetooth and USB 3 (e.g: Bluetooth headset unusable)
I love how ThinkPad can enable the workflow of working anywhere and when returning home, just dock it and the charger is already plugged in the dock so that you don't have to struggle with any cable when you're tired, it works out of the box.
I do essentially full stack work but sometimes I do drastically different stuff (security, pentesting, low-level optimization, science, etc...)
My next laptop would still be a Lenovo for sure. But I definitely look forward to Dell XPS capabilities.
Anecdote: A day, my ThinkPad X230 had better 3G coverage than my XIAOMI RedMi Note 3 phone. I mean, I had Internet on my computer, but not on my phone. That was funny.
Con:Crappy screen. Touchpad isn't great but usablelenovo is hard to trust
Pro:keyboardtrackpointbattery control with TLP utilities. connectivity, VGA, full size Ethernet etc. (try giving a presentation with circa 2003 projectors)
I got about $2000 stipend for a machine and looking for something to buy. the X260 was my goto but it's botched. no USB-C for example. 12.5 is a tad small, 13" would be better. 16:10 or had 4:3 would be awesome but not available. looked at XPS friends who have it hate the Touchpad under Linux.
Haven't had any major (or even minor) issues. I've enjoyed using the trackpad (and learning about it, sometimes by accident!) and the backlit keyboard is nice when I would use it outside in the evening. Light and very portable, far more comfortable on my lap than my previous machines. Only real complaint is the lack of a cd/dvd drive.
I do a lot with this computer, software development, PCB design, photo processing, CAD, and gaming(only reason for Windows). It's not out of the question that I would be running a full server VM, debugging a micro controller, and doing live data analysis at the same time. So I've come to appreciate power.
Even though this is quite a machine, I have performance issues in some applications. A lot of it boils down to the INSANE way that dedicated GPUs are handled today. Nvidia prime is the worst thing on my system. I like to describe it like this, using the Intel GPU is like driving a Mazda Miata, it feels fast and nimble but give it a load and it will just crawl. Switching prime to the Nvidia card is like driving a semi truck, it's not great at the little things but it can plow it's way through really intense stuff. DraftSight runs horribly on the Intel GPU but excellently on the Nvidia. But the window composition with the Nvidia card it terrible, lack of repainting the screen, vsync issues, and general slowness. It's very frustrating. My next laptop purchase will have to be something like a desktop GTX 980 in a laptop so I can avoid prime at all costs.
This may be resolved in a newer release of Ubuntu. I am version locked right now thanks to TI's 32bit Eclipse based IDE Code Composer Studio being a dependency nightmare on newer versions of Ubuntu. I'll find out later this year when they finally release a native 64bit version.
Pros: works nicely with Linux whatever kernel build is used, UEFI is optional and it can be manually configured without hassle acceptable battery life under light load (~5 hours) but dual-core i7 can perform reasonably well if the power draw is not a concern, a nice FullHD screen with fine brightness adjustment (I prefer my screen to have the same brightness as a sheet of paper next to it this is darker than many screens' minimal settings)
Cons: after third time warranty-replacing HDD I gave up and bought a similar one from a different manufacturer slightly too small at 13.3 inch a larger screen plus larger battery plus larger keyboard would be nice
I recently put it on the edge of a bed in a wrong way and it fell onto a plugged USB extension cable the cable apparently suffered more than the notebook, which is nice.
Pros: It's a great machine compatible with Linux. The price isn't too bad.
Cons: The battery is screwed in so it's not easily swappable. The 1920x1080 display is inferior to the 1920x1200 display on my 8 year-old Dell XPS M1530.
Unfortunately I chose a Lenovo X1 Carbon - I personally think this was a mistake - despite its build quality it is not very performant.
Pros: lightweight, solid and extremely fast. Battery is good enough for me.
Cons: LTE module is abysmal. People say it is awful even on windows, let alone linux. Keyboard is non-standard, but I got used to it (expect for functional keys).
Positives:* Great 1080p screen* Great form factor* No apparent incompatibilities with Linux* Keyboard is fairly good* Fast despite its fairly low-power CPU* SSD* Battery life
Negatives:* Track pad isn't great* UEFI* Some small dents appeared on the body of the laptop after only a few months (never dropped it or anything)* A small bright spot has appeared on the bottom of the screen
Although I have a few negatives listed I believe the positives far outweigh them. I have really enjoyed using this laptop for development.
As far as development goes, I have a dual-boot of Arch Linux and Windows 10. I primarily do Go and Python in Arch, and C/C++ in Windows.
I apologize in advance if the formatting of this post is messed up. First time posting on here. :)
Downsides: we have found nasty clang and gcc bugs on darwin only lately. Having to use dsymutil sucks, but if you use it it works as on Linux. ranlib sucks. A bit more integration needed, as on windows with similar gyrations.
* Power management and wifi are usable if you can live with needing a couple of tries to unlock and having to 'connect to hidden' to get wifi working. Battery life seems to be the same awake and asleep (not in a good way).
* Keyboard is 10% too small for adult hands.
* touchpad is constantly moving cursor while I type
* touchscreen support spotty, no touchpad scrolling
* typecover keyboard is unusable without a perfectly flat table (i.e. tough luck on trains, airplanes, your lap, or uneven tables)
* high-glare coating on the glass screen was a design mistake by MS, but on the bright side I can see people coming up from behind me. A normal solution to glare is to tilt the inwards of vertical, but the kickstand makes that impossible.
I loved that machine.
Now at work I'm stuck with a Latitude W series. While certainly powerful, it barely qualifies as portable. I hate it.
I'm considering getting a 13" MacBook Pro, for myself, whenever they announce an upgraded model this year.
I wrote a bit about it here: http://josephdaigle.me/2015/12/03/search-for-ultimate-dev-la...
Plus there is support for Adobe software and MS Products if you need to run those.
But the portabiliy and usability of the Dell XPS13 is hard to beat. It took me a long time to get the money together for it and the only thing I regret is maybe not waiting a couple of months for Skylake. But I have no speed issues, even with just 4gb RAM. It's faster than my desktop at home.
Ready to give up on it around 2 years ago, just seeming slower and slower, I installed a very minimal OS (Ubuntu, but the 40MB USB installer) then added Gnome 3. Great decision. The machine is now very pleasurable, far more than my work PC. I do most development remotely.
Low end Lenovos tend to have quite poor batteries, compared to higher end ThankPads or Macbooks. They seem good at the beginning, but degrade after just a few months.
Current: MBP 2012Works fine. Upgraded to SSD and 16GB ram.DVD player stoppped working.Trackpad needs adjustment and/or replacement.I run OSX and virtualize everything else.Would buy a MBP as next machine if I can upgrade (none of that soldered on parts).
Pros: Cheap, Effective, runs Linux without an issue [ I'm a fan of full disk encryption ], and reliable
Cons: Keyboard is a little small, Trackpad is slightly more annoying than others I've used
old 13" macbook air 2012 for weekend trips (this was my primary until it got a little too sluggish for daily use)
the air is still much easier to travel with which is why i take it when i don't need full horsepower on the road. the small difference in weight makes a huge difference when lugging it around. both are ssd.
Absolutely love everything about it. The charger, the backlit keyboard, the El-Capitan OS, everything. Everything about this machine is beautiful.
I think it is the best value for money if you are looking for a laptop.
The only thing I miss is my mechanical keyboard. But the trackpad makes up for it, to an extent..
Until I can afford a new laptop.
Pros:It runs 2 big monitors, 3 if you count the laptop screen.
More dependable in my experience than Think Pads.
I can get another one in a day if this one breaks or gets stolen.
Has NVidia GPU for running Cuda.
Simply it gives the expected performance, always.
In the past i had HP notebooks, they were good but not excellent.Mbp costs more that it should compared to other notebooks, but i think it's one of the best machine out there.
Is there really nobody that went for the 16GB RAM version who can speak about the experience?
Can anyone suggest a good laptop / setup for this?
I like it. I'm a back-end web developer(php, node.js, python) that likes using Windows. Everyone else at work is on Macs.
Love almost anything about it. Have about 6 hours of work without charging, it's lightweight and very comfortable for me.
Got a work machine to upgrade from my 2011 13" MacBook Pro, and the extra screen space really helps with multitasking, but it sure is a lot heavier than the 13".
Next one will be Thinkpad P... (in a few years)
However, this would've to include some kind of task review, escrow and automatic payment on successful completion to truly deliver. In other words, you'd have to upend to whole process of how software-related services are provided for the most these days:
- client looks for consultant who matches technical requirements (or often rather has a recruiter look for such a consultant)
- consultant works x amount of hours
- consultant bills client amount x
Therein lies the rub: In the market as of today it's very difficult to market and sell clearly defined and measurable software-related services, which is why most of those services are often still sold by the hour. This is non-sensical for the most part because what client wants is not hours spent but problems solved.
Measuring those problems and their solutions however, still is tough. Being able to adequately productize services it what it ultimately comes down to I suppose.
If you're willing to address these larger issues as a whole I'd be happy to hear your thoughts (contact info's available in my profile).
Well, it seems that your idea meets my needs well. IMHO, I would like you to remind that negotiation must be in private in most cases.
It might be a way to open commercial OSS to other markets, such as .gov, where standardized contract structures, SOWs, and procurement vehicles are complex to deal with.
For packaged software, resellers like SHI, CDW, EnPointe, etc provide a service where they take a percentage in exchange for handling the paperwork, etc.
Disclosure: I haven't looked since I last built something using Kafka six months ago, but doing a small-scale project I found it limiting that there was no straightforward, UI-style view into the state of my various servers, topics, etc.
It already has a web interface but there are a few things I would like to add/change. But now I see that it isn't what you're looking for.
Think of luck in terms of a surface area. Sure it exists but you can increase or reduce the size of that surface area with what you do. Dont let the thought of 'its just luck' dis-empower you.
More generally, why do you expect reviews when you say there are many similar apps? Does anything of importance stands out in your app vs competitors? The reviewers get bombarded all the time. Have you focused on getting the user experience to the point people promote the app for you. I'd say this is the focus and once this is happening to some limited extent then push the marketing once you have traction.
Also there is always pay to play. You could advertise to boost user number to get more feedback on the product and gain traction if the UX is a promo-table one.
- midi- output- melodies
What kind of person needs your app? What would they be searching for in the app store? I'm not a musician, but I guess you can learn to describe your app from the way that others (in app store reviews and blog posts) describe it.
This could be what you want. But think deeply about it
Make a list of artists (musicians in your case) which you think would like your app. Do some serious research to some contact detail for them. You then write to them and offer them the app for free, through a coupon code. Ask them for feedback. Write casually, like the indie dev that you are.
If they like your app, it's likely they will talk about it, and generate some buzz, which hopefully some blogs / sites will pick on.
And be ambitious with the artist list, send it to top people !!
So hopefully, Common Lisp.
Or barring that an AI that can perform valuable services that allow it to pay for its own server costs. Thereby making it grown up and gotten a job.
No Limit Poker is a pretty interesting problem, especially when it comes to reinforcement learning...can an AI learn to adapt to different play styles?
Both of these games raise an interesting question as it relates to how exploitable a reinforcement learning AI will be in games where high risk decisions have major impacts and there isn't perfect information. Will the AI learn to have a more overall conservative approach to guard against these plays or will it itself exploit them.
Can I tell you something which is much, muuuuuuuuch more significant than the $25 or so you're contemplating spending on tax preparation software? It's highly likely that you're running a sole proprietorship (Schedule C). I am not sure from your phrasing that you are aware that you are doing something which can be categorized as a sole proprietorship. It is to your advantage to characterize what you are doing as a sole proprietorship given some plausible assumptions about what your cost structure is, because you will be able to deduct all expenses reasonably required to run the business from the revenue of the business (the number shown on your 1099-MISC) prior to paying taxes on the profits only. What the IRS considers "reasonable and necessary" is not what most natural humans would consider reasonable and necessary.
If you do not feel like reading an awful lot in the next month, bringing every receipt and credit card statement you have from the last year to neighborhood accountant will cost you a few hundred bucks and save you, plausible, 10X that in taxes. This is the bread and butter for lots of small accountants and tax-preparation shops, and they're reasonably good at it. WSJ? Deductible, always, 100%. Phone bill? Guesstimate how much of it was for business? 60%? Good enough; let's find all twelve of them. Do you have any other phones? Think hard. Internet accounts? Same story. 40%? Great. You're in software? What's your computer? When did you buy it? 2 years ago? Did you deduct it then? Nope? OK, so we're going to depreciate it, that will be another $600 or so of which we'll allocate $400 to the business and $200 to you personally.
I thought I was pretty good at this. My accountants are much better. We both color within the lines; they were just aware of entire other coloring books that nobody had told me about. (Most recent example: the Japanese government is sending me a wire for $600 because this year, instead of filing as exempt from paying sales taxes because all the products I make are exported, I am filing a return which shows me paying $0 in sales taxes on all $0 of my Japan-source sales. What on earth is the difference? Well, if you're an exempt business, you can't claim back sales taxes you paid against sales taxes you owe the government. If you're not an exempt business, you can. If you paid more in sales taxes than your tax liability, the government wires you the difference.)
2. Usually you need some kind of process and task dependencies. What if there is a total bottleneck of "progrmmaing tasks" or "QA tasks" does someone go a week with pay to "work" for you?
3. what about benefits? Is this 1099 or W-2 work?
4. What about team based contributions? I help team mate X out with something is that a task? Do I get any contribution from it?
5. Who pays for training and education time? reviewing code?
6. What kind of rate are you targeting? What would my monthly pay look like?
7. what about strategic types of contributions. I know guy or I want to take sub market and run with it? or did you ever think about xyz? If your piecemeal-ing the work is there an allowance for that?
8. is there an opportunity to "buy-in" via time or contribution or even real money and get % of the profits or company?
9. how does the system evolve over time? fix problems? do "workers" have a say?
Sorry I'm really into the idea of marketplaces and using technology to build hyper-efficient eco-systems.
One idea to overcome this is: you work by small increments of features. You put each feature on the table and people bid the time to complete it. You assign the task to the one with the best reasonable estimate and with good track on the delivery - depending on the risk of failure. People that don't offer reasonable estimates can be replaced. The thing is that you know that without understanding the code, because someone else will bid less time and do it.
A variant is per-project, "last feature is free". After each feature, you pay the previous delivered feature, based on hourly time counted by the programmer. When you find the bill to be overcharged, you just pay the previous feature and close the collaboration. You might guaranty to pay a reasonable but fixed sum, in advance or at the end, to reduce the risk of the programmer to not be paid after too few tasks.
People should also have some stock or bonuses by global performance, otherwise they would not be also team players. And more than this, they should share a minimum motivation to be proud of the global outcome, for example because of how their work is making the world a bit better. Money if not always enough for people to really want to make it work.
I worked for a Fortune 500 company that began allowing people to work from home. They decided people working from home should do an extra 20% or 30%. It was a number pulled out of thin air and based on nothing whatsoever. The result: People began working 10 or 12 hours a day to hit that number. Then they had to make some changes to the program because this was in violation of labor laws.
So, my point is that if you have ridiculous expectations and want too much out of people, then what you propose is going to be a problem. But if you structure it well and hire the right people, this has a lot of positives to it.
I do something similar. I make money doing "gig work" and I can work where I want, when I want, and this works far better for me than my corporate job did. But you will need to be careful that you aren't expecting too much for too little, basically.
You could learn from their success
I assume by you posting this that you come from a more traditional setup? Office of a bunch of local people? I suspect the biggest surprise you will hit will be with
> No geographical boundaries. You can be anywhere on the planet. You can be traveling through India as much as I care.
If you get async communication down, you can work this. However for async communication to work well, I find you need to all be on the same page. If you start in an office with 6 people then go move apart.. you still have the same brain space and same goals. If you just hire 6 people in 6 random countries? You will all have VERY different worldviews and ways to work and end goals in mind. One guy may just want to make crap work. One guy may just paste stack overflow code. One guy may like to write really high performance code. One guy wants to write very concise code. etc.
So I think your biggest challenge will be getting all people on the same brainwave. Even with a meeting or two a year in person, what keeps you looking for the same goals? In person we generally hire people very much like us. Which is good from the same brainwave view, but bad for a diversity point of view. Your worldwide company will have a lot of diversity and unique ideas, but also a lot of people fighting and clobbering each other as you head for disparate goals.
So my best ideas is maybe start with 1-2 local guys, get a tight bond... and then use them to hire future guys, to try and keep the culture the same as you grow.
Focus on those specifics when hiring and not something like specific technology stacks. Once you narrow your talent pool to that philosophy and then narrow it further by tech stack you may end up with so few people to choose from that you will end up with people that match the tech stack but not the philosophy and they won't work out long term.
It's SaaS, which means web application, which means your tech stack really doesn't impact success||failure. So choose smart, agile learning people that match your work philosophy and they can learn whatever stack needed. You say "we" so maybe you already have a team - in which case they may not agree with your new philosophy or they may not want to change tech.
Make sure the compensation, HR stuff like benefits, etc. match this philosophy. By that I mean make employee contributions tied to something like profit sharing, equity, bonuses, etc. That can help motivate and enforce the delivery of value priority over hours worked (aka here's a salary for 40 hour weeks).
Also have legal/HR stuff figured out in case - employment laws differ by country and if someone decides to work/travel through Europe for a couple months, does that have tax/finance impacts on your company or employee? Do they need a work visa? How will internet be funded? How will pay be handled for work locations with different costs of living ... will it be "fair" if someone chooses to live in SF area and gets higher pay than someone in Belize?
These are all rhetorical questions but if you have this stuff figured out, people might want to hear the approach.
Reading this always feels wrong to me. Face to face communication is higher bandwidth than text or video.
But for 50% off I would get an ok to use their logo on your website and marketing materials, be used as a case study, get quotes/reviews to use from their CTO/CEO, etc . . . also note they can not disclose a discounted rate and maybe spell out that the discount will reduce 10% each year, and also that plans/pricing can change in the future.
As long as their subscription to your SaaS won't cause any profit loss with the discount I think it's a win win.
As far as strategy can you add plans or plan levels that will protect you from absorbing their high use of your SaaS or put in place a growth in price as they grow use your SaaS more?
Sounds like a win win, as long as you're not losing money on their subscription.
I'm definitely more likely to sign up for a SaaS if I see a big name logo using it.
Congrats, good luck.
The stakeholders at the customer likely don't have the authority to say 'yes', it's very likely they the request will have to go through their legal team (who probably doesn't care about whether the project is successful or not) and a marketing review, and while they may be happy to help you jump through these hoops after the deal is closed, they may not be able to get it into the contract.
*I deal with many Fortune 100 companies and work this into almost every deal, but it's rejected most of the time.
A discount of two months (17%) is very substantial for a one-year prepayment (your customer can maybe get 1% a year from keeping that money in a savings account). You'll need to evaluate whether it's worth it to your business to give them even that discount.
- If you're financing your company off credit card debt at 20%, than giving someone 17% off to get money up front would actually save you money.
- If you're suffering desperate cash-flow problems and need money tomorrow to pay your operating expenses, then it might be worth giving someone a steep discount to get money today.
- If it costs you $500 a month in expenses to provide the service, then a 50% discount on $1000 would wipe out all your profit.
If you're getting adequate revenue from your current paying customers to keep the company going, you may not want to give that kind of discount. The problem with giving them a discount is that they'll expect another discount when the contract comes up for renewal in a year. And they'll tell their friends that your company gave them a discount, so future customers might also ask for one.
If you do end up giving them a discount, you might want to negotiate additional terms that are advantageous to you, such as being able to say on your web site that this company is your customer, and being able to use them as a reference for other customers. That might be worth something if they're a billion dollar company with some name recognition.
> (Heres a replicatable strategy for making several hundred thousand dollars with a single email: start with a revenue base of $X million a year. Email all customers asking them to switch from monthly billing to annual billing, in return for some incentive you can offer, which can range from a month free to 15% discount to Hey, you can book the expense this calendar year, so that will save you money on taxes. Feel free to try this with any client or day-job of yours if theyre already at scale We made so much money the accountant/bank called us to complain will make for a great bullet point at your next contract/salary review.)
Determine what you think is a reasonable deal for any customer who prepays. Write it up as your new policy. Notify theses guys you can give them X off. If they have a problem with that, they are free to go elsewhere.
I really need to start collecting links, because I have read too many stories and stats on exactly this kind of thing, but I never know how to find them when this type question comes up. Do not let a big company make you their bitch. Set boundaries. Let them go elsewhere if they do not like it.
If they need your service, they won't leave. If they don't, they will, but that teaches you something about your market. Either way, you win.
Btw: two months is substantial, it's a 17.5% discount.
A discount because they're a startup and putting trust into you and your startup. If they do well, you'll do well. If you screw up they will be impacted.
Also, you may be able to learn a lot of from them and help more people love your product.
I'd counter with like 25 to 30% for one year and a bit more for two years. Try to find a win-win even if you have to get creative. Perhaps they allow you to use their name as a reference on your website or some other consideration.
These sorts of negotiations happen all the time. Enjoy them :)
Good luck with the SaaS, sounds look you have some momentum!
50% discount is my expectation. Lately, my place had been scoring those kinds of discounts even on hardware.
Just try to avoid the slippery slope of giving everyone such a discount (and I hope your pricing plans mean that this presumably large customer is getting a discount on an expensive "Enterprise" plan that's only sensible for larger groups).
- reference statement?
- mention on their blog?
- referals to other billion dollars startup?
- case story?
On my first day in the company which is in a different country from the one I am from:
- Cycled with the CTO through the city, he showed me where their old office was- Got my new computer and installed stuff on it- Ended installing the dev environment together with him in my machine
It was _really_ good :), still remember it!
In your case it may not apply if it's really your first tech hire.
I guess spending some time to give a tour of the industry, then of the share of the market you're going after, then of your product.
On day 1, I got a cubicle, a chair, and an ID badge.
On day 2, I got a trash can.
On day 3, I got a phone.
On day 4, I got a computer.
On day 5, I got network access.
Moral: If you're the hiring manager, don't be on vacation when your new hire starts. If you're going to be, make sure that someone is going to handle it for you.
Full disclosure: This was a decade ago, so I may have the exact details a bit off. It's pretty close, though.
What really sucked, and it's probably obvious, is the time when I had to search out all my information: where I was sitting, who to talk to to get ergo stuff (and worst of all when they required a doctor's note for whatever), who my manager and coordinator were, heck who my whole team was.
Not entirely on topic, but the same place also treated me like an anonymous cog: was interviewed for one project, told on my first day I would be on another, ended up on a third for two weeks, went back to another (didn't have anything to do), and then bounced two more times before they ended my contract a month early. Ugh, never going back there again.
New team members go through the board moving cards from "New" to "Done" as they research/answer the questions. In theory, once they're done, they should know all the major information needed to do their jobs. This is a win in both directions as it also forces us to write high-quality documentation. If the person gets stuck, they generally have a good idea who to bug (the most recent author of the page) for clarification.
For a first employee in that particular space, it would be a valuable exercise for them to start building that deck and the associated documentation. It might make the "time to first code contribution" take a little longer, but should pay dividends in reducing mistakes.
They should be given something to do, even if it is busy work initially, like reading whatever existing documentation you have on your setup. They should also be given the means and clear direction to do that work. For the next week or two, their official or unofficial lead on the team should answer questions and check in every hour or so on what progress has been made on the initial assignments, inevitably they are missing some password or permission or explanation of how things are set up at the company.
The key is to have everything ready for them, be open to questions, and helpfully check in every hour or two for the first few days to see how things are going. Usually I have 100 questions, but after question #30 figure I should pace myself before bothering the lead or manager again with yet another question. But if they approach me in a helpful, friendly, unrushed manner and ask if I have more questions or if I am stuck, then I will get all my questions out faster.
Since you are so small, you need to consider all the resources you don't have, likely HR, Reception, Admin Assistants, any history of what information to give a new employee, detailed knowledge of how your benefits work.
This employee will likely have questions, especially about benefits, and IT for several weeks. It's important to be patient in answering those questions, and treat them as high priority tasks, when you have to follow up, even though you're a busy startup.
Consider the background of this engineer. Are they coming from another startup? If so, they know the drill. But if they're coming for a larger established company, take time to emphasize with their transition.
Finally, leverage your strengths. Being small and informal is a strength, as long as your work policies reflect a high-trust environment. Working from home, doctors appointments, vacation and sick time -- these should all be approved quickly with ease, or not require approval at all.
Other things not specific to work environment should be ready to go. Their e-mail account, phone (if applicable), or any other virtual or physical materials used on a frequent basis.
As others have suggested, prefer something like a 75/25 social/engineering split for the first day. Introduction to team members and others, company processes, goals, HR stuff, go to lunch, etc.
Break the ice. New environments can be scary. Start a conversation with a joke. This is also good for the company, everyone remembers their first day.
Give them a face book with job and interests. This makes it easier for them to blend in.
1. Where's the bathroom?
2. Where's the fridge, etc. What are the typical patterns for people. Do they bring lunch, go out as a team etc.
3. If they are new to the area, tell them where to find all the normal things. Food, Grocery, Drug Store, etc.
4. Tell them when they will get their first paycheck, if the amount will be a partial amount tell them that. This gets looked over way too often. Tell them the pay cycle, and any benefits information have it ready and laid out. Being a startup you likely have little to no benefits, so remind them of that as many times stress of changing or getting a new job has people flustered.
5. Make sure you are ready for them, have all the documentation, legal requirements and stuff out of the way.
6. Make sure you tell them what to bring their first day so they don't feel unprepared and so you don't look disorganized.
7. For engineers, give them their machine and have them set it up. Make sure you have all the necessary access codes and have granted their accounts to everything they need before they get there.
8. Have 3-4 small tasks they can get started on, but tell them your expectations with them. If you have a lot of potential places they could contribute have a few ideas in mind and talk to them where they might want to fit in. That is awesome for most people.
9. Tell them up front, you are still figuring things out, so they shouldn't be afraid to ask questions. Make sure they feel comfortable asking questions. People who have been in startups are far more likely to already be asking questions, but just be prepared and don't get defensive etc.
10. Have fun, take them to lunch day 1 or 2. Make it their choice, sometimes day 1 is a little overwhelming and they may want to wait on lunch for a day or two so they can get the feel for things. It sometimes helps them to get away for 30-60 minutes the first day or two so they can gather thoughts, not everyone, but some people are like this.
11. Warn them of any land mines. I had a team lead one time tell me day one, look we all work really well together etc, but here are 3 things that a lot of people around here hold sacred. His point wasn't to say not to challenge them, but just to get the lay of the land first before I stepped in something unknowingly. This isn't typically an issue in startups as much.
12. Tell them where to park their car if they are driving. Or where they can put their bike if they rode in. etc. More important in larger cities, but really important.
13. Give phone numbers and email addresses in a list for anyone they are likely to need to contact. Don't rely on them searching it out in Outlook or some directory someplace. Print it out and hand it to them, or already have emailed it to their new email address.
14. Your a startup, have some sort of swag to hand out. T-shirt, mug, stickers etc. This isn't an absolute requirement but it makes people feel welcome. Yes, some people will say that's stupid, but usually these are the same people that will later say geez, they didn't even have X when I started.
I could probably go on, but this is long enough. Sadly I have learned most of these from being on both sides of the table. And you won't believe how much less stress you feel as a founder when you knock most of this stuff off the list and have it ready for them day one.
BTW -- Congrats on getting your first hire!