If it were me, I'd probably try grabbing a coffee/tea/beer with him outside of the office, if possible (or, if you have your own private office, then that'd work too), and just talking with him about the situation, peer to peer, and try and understand what's causing this behaviour.
Just try to be tactful about it. Even broaching the subject may be a bit awkward, but if you can figure out a way to discuss this with him in an amicable way, it may be worthwhile.
It kind of sounds as though he's in a very stressful position. Maybe it's just the stress?
It could be something simple. Maybe it's something you're doing or not doing that irks him somehow. It's also possible that it could be something completely outside of you and the company, and he's just taking it out on you inadvertently.
Consider empathizing with him and try to figure out what's going on. Odds are there's actually a reason. Once you figure out what the root of the problem is, you're more likely to be able to figure out how to make things better.
If it's something you can do to help, you can try and resolve the issue. If not, just try to come to an understanding that there's no hard feelings; that you'd like to at least remain cordial, and even friendly, if possible...
In my humble opinion, getting HR or your/his boss involved as mentioned below/above may work on the surface, but you'd likely just be forcing him to suppress whatever it is that's upsetting him... not sure how well that'd go in the long run. At this stage, I'd go for the "talk with him" route. But maybe that's just me.
If you talk with him and it doesn't help the situation, then at least you truly tried getting to the root of the matter.
I dunno, just a thought for your consideration. I hope this helps somehow.
Disclaimer: I've never been in this situation before... this is just my two cents on the matter.
> Few days later, I would be given a curt apology, reassurance that this wouldn't happen again, and Jerry would ask me to forget all about the incident. Jerry would then treat me as if nothing had happened at all, and would back to being polite and professional. Later, the process would repeat itself.
This indicates he is aware of his poor behaviour, but it seems he hasn't given any reasons. You haven't stated whether you have talked to Jerry directly about this, if you haven't I suggest this would be a first step. Whether or not this is successful, analyse what his response was. It will give you a deeper idea of what kind of sociopath you are dealing with.
HNer grumps said below to weigh the risks. This is a very difficult problem that I have dealt with myself, so I would say from my experience to tread carefully. Before doing something, you need to second guess how other people will react, and prepare accordingly.
You mentioned that he makes over the top requests, such as indirect communication via your boss. One idea I would suggest is to bow down to all his requests, no matter how silly (unless it is dangerous or illegal). It sounds like your job is very fast paced and results are demanded on time. Eventually his behaviour will have an effect on the system, especially if he holds a critical position, and it will be noticed.
Shitty behaviour in the workplace seems to be a growing problem (I've seen several articles regarding this trend in the last year or so). Would anybody know of any forums or websites that deal with this? Has anyone come up with a hack to solve this problem?
If your boss knows how Jerry treats you (and that you're uncomfortable/unhappy about it) and he's unwilling to do anything about it you might want to consider talking to your boss's boss. If neither is concerned with how Jerry treats his co-workers it might be time to update the resume.
You boss will hear this and make sure things get under control. the last thing he needs is a lawsuit
I really don't know what the right solution to that is, because every case I had they kept the abusive employee but fired me.
I was nice, professional, and asked the abusive employee to please stop that behavior as it had made me feel bad, and asked management to look into it when he or many others refused to treat me like a human being.
In 2001 the stress from that hostile environment was so much, I got stressed out and developed a mental illness and then went on short-term disability and as soon as I returned I was fired.
Ever since I could not hold a job, because if an employee noticed I was mentally ill, they would abuse me, and if I complained about it I would be fired.
Sadly most managers feel that the employee who is picked on should be fired just because they are complaining about other employees. In fact in some cases the abusive behavior is rewarded by promoting the abusive employee or giving them a pay raise and telling them in front of the other employees what a great job they are doing.
Sometimes this abusive behavior is done on purpose to get rid of a coworker they don't like, so they 'skirt' the rules and policies and do whatever it takes to make you quit or be fired. It is called office politics for a reason.
One credit card to rule them all.
-I made a wilderness survival game for 7DRL 2013. http://humbit.com/rogue/ It's not for everyone, but it did make a "Best of 2013" list for roguelikes.
-I made my own static site generator in PHP that uses S3/cloudfront. Because why not. The result is a fast blog I think looks great. http://jere.in
-I made Autumn.js, a library for hashing keys to colors. https://github.com/nluqo/autumn
-I just finished up (and am desperately looking for feedback on) http://letspaste.com/ a gaming screenshot site. I think this is a really neat idea, but I'm not sure if anyone gets it yet. It did teach me about a few JS libraries though: packery and hopscotch
My goal for 2014 is to start writing things people actually need/want and to get off of Dreamhost ASAP (yea I know).
have a look
and here is an example of something i've been messing with this all semester:http://precis.gopagoda.com?url=https://news.ycombinator.com/...
None of it is brilliant or groundbreaking and almost none of it has made me a dime.
I also have two semesters of Java and C++ projects which should probably never see the light of day and a forum/HN clone in Laravel which does work but has been put on the back burner for months and months, and my own site which is currently running a half-arsed attempt at a custom PHP framework.
I am going into 2014 strong as I just released an Android application that I will continue to improve in the coming months...
For me: I re-built Namecast (https://www.namecast.net) this year. It allows you to manage your DNS using Git and GitHub.
1) This http://www.youtube.com/watch?v=KGg1567fzTY almost posted anonymously). Deal with it :)
2) If you have a family or a partner. Just because you are at home does not mean "can you just put on a wash". Build rules into engaging with the family. You are working. You are not to be disturbed. If you choose to 'come out' of your office and engage with the family then that is your choice. Emergencies are acceptable interruptions ;)
3) Make an office. The kitchen table is not a great space. A spare room, an office in the garden. Some place where you can just be professional. Avoid having the office in your bedroom. You need a room you can lock.
4) Exercise. Seriously this is huge. Too easy to slob out. If you get up and work at 6am, then go to the gym at 9. Do something. Make sure people you work with KNOW this is your routine. Make it a routine. Get out of the house and do something. Do not buy an exercise machine and stay locked in the house. Clear your mind, stay fit, and go out and see the world around you. Don't like Gyms? Go running, swimming or, my favourite, cycling (it clears the mind and you can easily cover 10 miles while solving a difficult problem).
5) Get a dog :) Best decision I ever made. Get's you out and walking. You meet other people and mine keeps my feet warm. Oh and she's very good at solving technical issues. Sounds mad, but sometimes just talking about a problem to her makes it work for me (and makes me look less stupid when I have to discuss the problem with work colleagues).
6) Eat well. You have the time to make great food. Use it. Learn to cook great food.
7) Pomodoro method. Some like it some don't. (I'm not a fan.) I prefer things like coffitivity. If things start going south, try it. It's a decent rule system.
8) Skype. If there is a group of you working together, just skype each other and carry on working.
9) Socialise. Suddenly this is huge. Find local interest groups. Go to meetups. Get involved. You won't realise it, but you can get your head down and 3 months later you haven't seen anyone recently, cos y'know, work. Join clubs. Do stuff. Give yourself a reason to not be working in the evenings.
10) Monthly team days. Once a month get together and have a hackathon. Go get drunk. Be a team.
11) Use trello. I mean REALLY use it. A complicated example here http://community.uservoice.com/blog/trello-google-docs-produ... but build your own work flows that work with your team. Don't be afraid to tear down your process and start again AND most importantly, EVERYBODY buys in. Don't be the only person using a project tool. You will fail.
12) If you end up doing a 16 hour day, recognise you've done two days work. Have a reward. Go see a museum. Have a long lie in. Finish early and go for a ride. See (1) ;).
13) Have fun. Be comfortable in working on your own. Give it 6 months. See how it feels. Don't like it, then move on.
14) I may have mentioned this...exercise. Get out and do some every day. No excuse.
15) Requirements management. It's a pain to do, but clients try and be sneaky. Avoid fixed price unless you KNOW exactly what it is they want. Most don't and even those that do, change their minds. Your fixed price contract MUST include a change in requirements clause and what happens when they do. You will invoke it.
16) If your client is haggling over local sales tax....walk away. Imagine the pain you will go through haggling over signing each feature off.
17) Have payment milestones.
Right must go walk the dog :)
On the contrary, I find that my work habits are a lot like yours -- and I think that's a good thing! Sometimes I will be possessed by a coding demon and crank out work for days (weeks?) on end. Other times I will putter around watching TV or brainstorming ideas.
For me the whole point of being self-employed was to NOT have to show up to an office (or home office) and work 9-5 every single day. A creative human brain is a rare and marvelous creature, and we understand very little about how it works. I think the best thing to do is to let it run around and work when it feels like working, or read a book when it feels like reading a book. I personally find my creativity withers away under a strict work regimen.
If your work is not creative and you're just grinding it out for money every day, then by all means, follow the advice in the other posts. But if your work requires imagination and making unexpected mental connections, then don't worry too much about "efficiency". As long as you're thinking about something related to work most of the time, over the long run your real productivity will exceed that of all those poor saps who measure output as a function of mindless hours in front of a computer.
Embracing your "lazy" side requires a certain amount of courage, but if you can make ends meet while doing it, you'll be happier and end up doing better creative work. In any event, don't worry too much about how most people say they do things. Do what feels right to you. Good luck!
First and foremost, boundaries are necessary. This is both for you and for the people around you. You don't have to explicitly work 8 hours in a row every day, but whenever it is that you choose to work every day, disruptions should be completely closed off.
This means if you have roommates, they need to know that when you're working, you're not listening and impossible to distract. For me, this has proven far more difficult with significant others who have lived with me. I have lost a couple long term relationships with women who did not understand this, and the woman with whom I'm now engaged not only appreciates this this very important invisible wall, but helps me maintain it.
Same goes for other outside distractions. It would be weird if your friends dropped into your 9-5 job and sat on the couch, cracked a beer and started playing video games, or if they called your office line every 20 minutes to try to convince you to head out for whatever might be going on. This same limitation needs to be set at your home. If necessary, maintain a separate lines of communication between work and personal life (phone, IM, skype, email, etc) to make sure that while you're working, you can concentrate on only communicating with work associates, and the opposite is just as important - when you're enjoying your life, leave work to your office space.
And if your home office is in a distracting neighborhood (as mine very much was when I was living in Brooklyn), turn some music on, wear some headphones, find a coffee shop, or rent some office space somewhere quieter. Depending on where you are, it's not difficult to find a company that happens to have an extra desk or two and is willing to rent one out at a fair price.
Give yourself a great office space that you look forward to spending your days in. Mine was a corner of a room that was sometimes also a bedroom and sometimes also a living room. But it was the most well kept at all times. Three monitors, a quiet and fast computer, a comfortable chair, interesting art on my wall, a great keyboard and mouse, a relatively clean desk, a decent coffee maker, great stereo system, studio-quality headphones, high speed expensive internet, and a giant roll of paper with some markers that I could brainstorm or play with whenever necessary.
I've read some other great responses here about exercise, and eating right and so on. I agree with all of the above, but I didn't bother with such things until the past 5 years. I never exercised, I worked stupidly long hours (occasionally 36 hour days), I ate crap, I partied at all hours, and I'd never set a schedule. I began changing a lot of that in the past five years or so. I now limit myself to 16 hours in a day (but usually keep my limit to 8) and I exercise more and I eat better. But I do those things because I turned 30 and realized 9 years of random debauchery and no exercise do not do much for ones health and figure. I'd be a liar if I told you I did that during the most crucially defining portion of my remote career.
As for the Real Motivation. All of the above and all the advice in this thread, and all the advice I've read elsewhere (and mostly ignored) about remote working have no competition with this one single point. What has motivated me more than anything in the world: Challenging Work at High wages. I always needed at least one of the two or the project would definitely fail, but having both ensured that I'd always find the time, energy, and space to get the work done well, efficiently, with great communication. The office space didn't matter. The noise didn't matter. The schedule _Definitely_ didn't matter. I was unstoppable provided I had Work that I couldn't possibly tear myself away from and a sizable check at the starting and finish lines to help keep my life in order.
I think that's actually really natural, and mimics the patters people were in before industrialization.
Even when I was doing corporate work, that's very much how I ended up actually getting things done. Sometimes it takes hours and hours to wrap my head around some API and make the mental connections, at which point I'll just keep coding until I run out of juice (typically the point when I realize I'm just making errors, coding in circles, and resorting to random edits). The annoying thing in the corporate world is that you can't just spend most of the next day in bed, or on a hike. Instead, I'd work extremely hard one day, then slack off and browse the Internet the next two days, and maybe fix some trivial bug for the sake of a logged checkin.
In my current system, I would say my most valuable habits are:
1) Cardio. My goal is to do 15 - 30 minutes of HIIT every morning. In reality, I end up doing it a few time per week. :-) Honestly, nothing gets me energized and motivated like doing consistent cardio. Two weeks of 30 minutes every day? No depression, constant motivation, sex drive, etc. Incidentally, forcing yourself to do this somewhat uncomfortable act regularly is itself a way to develop discipline.
2) Pomodoros. Once you start forcing yourself to work in focused intervals, you start to realize that you don't actually work that much every day, which is rather liberating.
3) Task estimation. I break down tasks by the number of anticipated hours, then check off every Pomodoro (effectively 1/2 hour) next to the task. Ineffective estimation has been both massively demotivating and very eye-opening. My estimation and attention to detail in analysis has improved significantly from forcing myself to do this. It's also easier to force myself "into the mood" for coding when I'm actually reasonably sure that I only have to do 1.5 hours of work, then I can go play.
4) Block all attention drains in my hosts file. HN, Reddit, etc.
My recommendation: embrace flexibility.
Man-made time constraints are no longer part of your world (outside of deadlines). Technology no longer requires that you are chained to a desk. Shake things up to stay fresh. Don't let yourself think 9-5, 5 days. Your life is now 24x7, 365 and you are in control of how you use those hours.
That said, there are some spot-on recommendations here by others based on my experience:
* Exercise. I've taken calls on 50mi bike rides and from roadside taverns. Helps to have a buddy you can draft off during the calls.
* Nutrition. Laptop on counter. Work. Cook.
* Standing desk. You'll find yourself moving around a lot more rather than slouching in a chair and never leaving your monitor. On that, if you have the means, spread devices around your house. Mix up your screen time.
* Get up early. This one took some time, but is perhaps the biggest thing you can do. It jumpstarts everything.
* Sunday night scheduling. I believe it was Tim Ferris' 4-hour workweek that started this. Sunday night, write down what you want/must accomplish over the next week. When it's done, it's done. Doesn't matter whether it's Tuesday or Sunday.
* IM. IM. IM. Some see random IM conversations as interruptions to be avoided. They aren't. They are your watercooler, your vent, your muse. Embrace them.
Good luck! It's a great adventure.
1. Find a co-working space and go there to work.
2. Failing that, mark the start and end of your work day in some semi-formal way. When I was managing a team of people working from home I instituted the following policy, which seemed to work really well: when you decide it's time to "show up" for work, send an email to the team saying, "I'm in", and a one or two sentence description of what you're working on that day. When you're done for the day, send another email saying, "I'm out" and another one or two sentence description of what you actually managed to get done. Just that little bit of structure made a huge difference. If you don't have a team, then collect a group of other self-employed-working-from-home people to be mutually accountable to. Even just sending such an email to yourself might help. The act of actually writing things down activates different neural pathways than just thinking about things and so makes a difference in your mindset.
1. Establish a standard daily routine. Follow it every day, Monday thru Friday, without exception. This is the key. This is what you must do every day, whether you feel like it or not. Weekends can be different.
Mine (yours should be whatever works best for you):
06:00 - work out 07:00 - breakfast at desk, email, internet 07:30 - start work, short break every hour 12:00 - lunch (at desk or go out) 13:00 - continue work, short break every hour 17:00 - start nightly crons, LOGOFF! 17:00 to 20:00 - dinner, family 20:00 to 22:00 - my time, including logging back in
3. DO NOT surf the internet, text, chat, or use the cell phone (except for work)! This is absolutely critical. If you break this rule, you will never have a boundary between work and !work.
4. Before you go to sleep write down exactly what the first thing you're going to work on the next day. The rest will follow.
(EDIT: Check out all of the responses in this thread. Most of them are excellent. Especially note all of the things that are repeated.)
1) Set written goals: quarterly, monthly, weekly, and daily. I have a pre-printed "form" that I populate with my goals. Then I check them off at the end of a period (day, week, etc.), grade myself, and make notes about what worked, what didn't and what I learned. Save these in a binder so you can see your progress, or lack thereof.
2) Use Pomodoro or HoursTracker or some other app that works for you. Observing how many (few) hours I was productively working was eye-opening.
3) Reward yourself. The idea is, work shouldn't stretch on "indefinitely" - then you have little psychological incentive to complete.
4) Separate your workspace from your living space, even if it is only a desk that you use solely for work.
5) Use StickK or some other form of commitment contract.
6) Use SelfControl or other internet-limiting app. Watch out for blocking Google URLs though - block youtube, and you can end up blocking Google Drive.
7) In the beginning, overinvest in setting up systems and tracking to discover what really works for you. Getting a good system going will easily pay for itself in efficiency gains.
Why? It's repetitive and time consuming. It also doesn't do anything for your testosterone level.
If you're a guy, you have to keep your testosterone high and that means short burst of high intensity exercise.
That's the #1 priority. It will increase your willpower and ability to cope with stress. It'll also lessen the pain of social isolation.
You're going to be socially isolated no matter what. Working at a coffee shop doesn't matter because you'll most likely won't spend your time talking to people.
Testosterone will also keep you from packing on the fat, which is really easy to do when you work at home.
My solution to this is eating healthy and stimulants.
Caffeine and nicotine patch will reduce your appetite significantly. I feel no desire to snack between meals.
It will also keep you focus and motivated. They're much more sustainable in the long run than prescription stimulants.
Lastly, take fish oil and vitamin d3. This is not optional. Most people's diet don't contain enough fish oil, the inflammation will bring on depression and sap your mental strength. Same for vitamin d3, most of us aren't exactly outdoor creature.
As you have noted, the lack of an external structure is a big one. Here's what I do...
First, I map out a long-term timeline, which is generally a season (spring, summer, autumn, winter). I identify goals, objectives, events, etc., and map them out in a simple open source PM software package.
Second, each week -- usually late Friday afternoon or Saturday -- I take the broad project plan stuff and create a more detailed plan for the next week.
Finally, at the end of each day I write a very detailed list of things I am going to do the next day. This includes work stuff, but also anything else: chores, exercise, etc.
When I get up in the morning, I look at my list for that day, and tackle it. Round about 5:00 pm I review the list and make the next day's list, and at 5:30 I treat myself to a Manhattan and some good music. Then it's dinner and whatever.
I also journal my work-related stuff in iPython notebook, and I keep an accounting of my hours in an Excel spreadsheet.
All that keeps me focused.
It's also important to provide yourself some relief. When you first start working like this, you realize how much time is spent at a normal work place not really working. In a normal work place there are meetings, water cooler chats, and so on. So it's important not to think that you must be productive for eight solid hours a day, because in most work environments you aren't. I plan on some reduced amount of productive time, and factor in what I call buffer time. After, say, 90 straight minutes of work, I might take a 10 - 15 minute walk around the neighborhood just to clear my mind and get my blood flowing.
That's what works for me.
TL;DR: Make a detailed daily list of things to do, and do them. Balance the list, and reward yourself at the end of each successful day.
I get up and go to work at the same time every day. I take time off for lunch, and I quit at 6:00 PM every day (assuming I don't have any pressing deadlines).
That's not to say I don't allow myself any benefits of working from home. I'll take a long lunch with a friend every now and again, but I try not to let my routine slide over an extended period of time.
It's also important to set a precedent early on about what disturbances you're willing to tolerate, if any. I handle distractions the same way I would at an office. If it's an emergency, I deal with it. If it's not, I politely remind the offender that I'm in the middle of work and then I get back to it.
As far as temptations go, I think it depends on what your vices are. That being said, controlling your environment is the easiest way to limit your temptations.
For me, internet browsing was by far my biggest time-suck so I used an app called "Self-Control" to block access to sites I waste time on. I don't need to use it anymore, but it helped a lot in the beginning.
I also used to do crazy stuff like unplug my electronics to keep myself from watching TV or playing games. Taking the time to plug everything back in was usually enough to remind me I shouldn't be doing this right now.
Really, It just takes a bit of experimentation to get the ideal routine down. Took me over a year, but now I'm super productive.
#1) Recognize that the reason you are looking at other projects is because you feel free or unleashed from your full-time job and now all of the creative restrictions that you had are now gone. So, this is you acting up because NOW you have the chance to do something that you want to do, even though you still are busy with this new remote gig. You are dreaming, which is great. This is normal, and from my experience almost never goes away.
#2) Recognize that the work you are getting paid for now is your #1 priority. Dreams come second. You still have a boss, even if your boss is your friend. Anything you do outside of this work, your friend could care less. Do not lose insight of that.
#3) If you do start a new "side" project, make sure you finish it. I ran into many issues where I would start a new project, get people involved and then never finish it. It was by far the worst feeling I've ever had in my life.
#4) None of these tactical schedules that people mentioned below will work if you don't know why you continue to do browse new projects or sit down and watch multiple seasons of sitcoms. This took me about 8 months to figure out, so you have some time to go :). What is your longterm goal? To make money enough money to live comfortable or to become Oprah successful?
#5) Get help right away. By help, I just mean other people that have been through a similar situation and that you can ask for honest feedback from. Obviously this HN post is a fantastic start. Find someone you can call up directly.
If you need more insight (or anyone else on this thread), my contact info is in my profile.
Start by cutting out the truly wasteful things, like watching TV. Throw your TV in the trash (seriously), or first thing every morning get out of the house and go work in a library or coffee shop for five hours or so.
The other things you mention are part of the creative process - browsing other projects on github or wherever for ideas, brainstorming, working on other projects (eg decluttering your todo list).
If you break your main project down into component parts and estimate it, that will give you some baseline/benchmark as to the rate of progress you should be making on it. Assume a 9-5 workday and no more than 5hrs of actual work on the project per day. If you're roughly keeping up with that by working odd irregular hours (16hr sprints, 2 days off, etc), then you're in good shape. Otherwise it will give you an idea of how much more you need to reallocate to your main project.
Once you work on something big structuring the day with all good things like exercise, good food, socializing comes by itself and you won't need a dog or any other mumbo-jumbo, though Pomodoro comes sometimes handy just to get started and getting shit done since some procrastination always happens.
This is my experience from working home for the first years of my company (which was the most productive time of my life).
I now rent a desk in a shared office, and I work regular hours. I work 9-4 four days a week. I leave my laptop at work, so I can't do anything except answer the occasional email from home (when the kids let me).
It makes a tremendous difference. When I'm home, I often think of something I want to fix, but since I can't work at home, I have to wait until the next day. When I arrive at the office, I'm already eagerly waiting to get started and most times don't even think about checking HN.
(It doesn't always work. Sometimes I still have trouble focussing, but that was the same when I worked a "normal" job)
1. I can easily predict what the end goal of any of my current project is ... and it is less than what I want for myself. So I procrastinate the inevitable. As if delaying it will somehow miraculously make it worthwhile after some time has passed. Waiting for an epiphany to salvage the fait accompli?? I am not sure. This is all of course subconscious. I don't like where my current project is leading me to so I watch sitcoms or come to give unsolicited HN advice. (Not really)
2. I subconsciously avoid facing my burn-rate. Burn-rate is a function of time and can be both direct financial (material) as well as opportunity costs. Facing it is single most terrifying thing for me. My unfounded fear is that it paralyses me. On the contrary.
The solution to 1 is to write down a single page or picture of where your current project fits into your bigger goals. If I can see this type of plan clearly for my current (boring) project and its global context is something I am easily reminded of regularly, I galvanise into action - no matter how boring.
Promising a deadline to your client is also a good way to work towards it. Nothing like a nagging email or phone message asking about your progress to get your arse into action.
The solution to 2 is to keep sight of your overheads by again writing a single page of your costs (burn-rate) as a function of time. And there's always a burn-rate. Planning for 3-6 months in my case seems sufficient. Make a poster of this and stick it where you can't miss it.
Hope that helps you too.
1. Define your working hours and stick to it. Setup alarms and go to work at same time of the day every day.
2. Designated working place - If you are working from your home, try to setup a place in your house that you will use only for work. Don't use it for anything else. The way it worked for me was when I got to that place, I used to switch into work time mode and when I got out of it, I will switch back personal time mode.
3. Log your hours - Use something like toggl to log your hours for yourself. Track your working hours and if you are falling on the short end, you will make up for it by working on weekends. But eventually you will try logging consistently your work hours.
In the end, its matter of creating a habit.
Seriously, it's extremely easy to kill yourself working from home. An office provides certain boundaries that are not available at home. Defining these early in your at home career is important if you don't want to bum yourself out.
I've done the on-call / pager thing, and although I work in an office environment with flex time, I've been stuck working in the house due to blizzards and such, so I have some experience with this. Also lots of on line classes.
It might be a total drag, but break down the project into "couple hour" pager / cell phone / emergency feel of tasks, then knock out exactly one task, then go live for a little while. Exercise, or cook/eat, or socialize or whatever, then "pretend" you just got a page and have to work the next task.
I've been on call before, so social issues WRT working at home have not been an issue. You're not "working at home" you "got a call from work"; no one else need know "the call" was just another regular project mismanagement conversation or watercooler gossip.
No need to simulate it down to the point of random alarms on the phone, but if you have to, then do it.
1) Changing places inside the house (or moving out to the garden if the weather allows it) sometimes really helps me to beat the monotony. I do have a special workplace reserved though where I spend most of my time.
2) Exercise has already been mentioned. Running works best for me, because it is done outdoors and therefore kills two birds with one stone (three if you have a dog).
3) Another thing that has made a big difference for me was starting a regular meditation practice. I have since noticed that it makes it much easier for me to control my focus and handle distracting thoughts. And there seems to be at least some evidence that I am not alone in this:http://news.harvard.edu/gazette/story/2011/01/eight-weeks-to...Intensive Meditation Training Improves Perceptual Discrimination and Sustained Attention: http://pss.sagepub.com/content/21/6/829.abstract
4) Include relaxing activities on your daily agenda. Letting go is important for your wellbeing and therefore your work performance. Make room for it and allow yourself to enjoy it without feeling bad about it.
I always went out for coffee first thing. While I was out my apartment would magically transform into my office and I would come back 20 minutes later ready to work.
I know a guy who always put on a suit and tie even though he was at home because it got him into the right frame of mind. Whatever works. You might say the whole point of working from home is NOT wearing a tie. But if you can't find a way to work well from home, you will eventually have to admit failure and go back to working from an office.
Tell you what though: once you find your start-the-day trick and you feel you are working productively, you'll have to find a similar reverse-trick to get out of work-mode at the end of the day.
For many, this can be as simple as having a partner who looks out for you and checks in on you, making sure that you're not playing games or whatever distractions tickle your fancy. It could be having a close friend or associate who knows you are a self-worker and who takes a regular interest in your life and actions.
Without another human being around, its very difficult to be self-disciplined. This is just one of those quandries of life - things get a lot easier when you've got someone, anyone, impartial or otherwise, with whom to discuss your daily progress.
The best advice I can give is that when you find yourself unwilling to do the work, break the work down into concrete, bite-sized steps. Then do the first one, then do the next one, and you'll get it done. If you can't do one of the steps because you're blocked, figure out the steps to get unblocked, write those down, and do the first one.
The other thing I've found that helps is to set a clear schedule. The rhythm of the office helps get things done. I still wake up to an alarm at 8, I have a coffee at 10 and 2, and lunch is at noon. My wife comes home around 6, and I try to make sure I'm done at 6:30. I occasionally break all of these rules if I'm in the zone and really getting a lot done. If that happens, I give myself more time off later/the next day to ensure I'm always on a sustainable pace.
If you're already stuck in a distraction quagmire, try to recognize it, and set an alarm for 30 minutes. When the alarm goes off, go back to work. If you still can't work, go take a walk and try again.
One of the things I did in addition to having dedicated work space and clear boundaries was to assign projects on a per-day basis. Most of my contracts are longer-term grant projects where I'm committed to 10 hr/week or so.
Monday = local hardware projectTues = DirectTrustWens = Dignity Healthetc...
I make sure the companies I'm working with understand what their dedicated day is, and have a clear time line of deliverables. This gives me enough urgency on a day to day basis to prevent falling into the trap of "taking care of it later."
I also have a set time for general email first thing in the morning, in addition to break times where I can cook, clean and work on dinner. I know some would say that's a horrible break, but I'd rather do it mid day that at 9pm (as I would when I commuted).
The other thing was removing the tv in the office. I was surprised and how distracting it was, considering I never paid attention to it. I now use use music as background/white noise.
And I can't recommend a pet partner enough, just lock them out during concalls least you earn a reputation of being "that cat lady in policy."
2) Try to get up early in the morning as always (if that's an issue for you)...just having a less slackish schedule helps a ton.
3) There's tons of self help stuff out there but I think the two that help me get stuff done the most are:
- Get some notebook and every day write down the date and one big item, two medium ones and a three small ones you want to get done for the day (1-2-3) if in doubt make it LESS. Get into the habit of markering the stuff you work on and crossing it off when it's done.
- Seinfeld method (google it) for stuff you want to do every day. Basically get a calender sheet for the month, print it, hang it somewhere and put down an X when you've done what you wanted. Try not breaking the chain. You can actually practice discipline by doing some random task each day like this (I did it with "go for a 10 minute walk").
Hope that helps, being self employed is a skill that can be learned (imo). The way I look at it wandering off and getting interested in other stuff is my main problem. Everytime I "catch myself" I note it and pat myself on the back for having done one "rep". This can be reading a book and thinking about something else and not remembering what you just read or randomly checking hacker news or clicking on your mail client.[my experience comes from being a poker pro for a bit which is even worse than other self employed jobs because you don't work for anyone and the time you put in directly maps to income...and if you put in bad time it often maps to negative income :D]
Don't listen to this once. Listen to this Once every three days. If you manage to put in your life 1/10 of what is discussed in this audiobook, you'll see radical changes taking place very very quickly.
I listen to this at least 1 every month by now, while running. I have bought the audiobook two years ago. I still listen to this and keeps me up-to-speed when I feel like not doing things I should do.
* Sleep ... 7.5 to 8 hrs, no more no less
* Wake up at 8/9 to maximize hours of sunlight
* Lift weights 4+ times per week... the four hrs you spend in the gym will be made up for with 10 hrs of productivity throughout the week
* Healthy diet (high protein, low carbs, low sugar, fresh food)
* Avoid HN
* Start working right when you get up
* Answer emails / do other menial tasks when tired
* Get rid of all notifications: phone silent/vibrate, no Gmail/fb/twitter notifications outside of the platform itself
For this to be helpful you need to be very conscientious about using it. When you are clocked in you shouldn't be doing anything but project related work.
One disadvantage of this is that it's easy to forget to clock out.
I still have my ipod on do-not-disturb mode so that occasionally I can press the power button and see if there are any gmail notifications, but most of the time I can tell from the subject line that I can safely ignore said emails. If it's important I log in to gmail (with gtalk turned off) ust to answer the important email and then close it again.
Here is a possible routine.
1) Wake up at 7 at the latest
2) Take a shower
3) Get dressed
4) Eat breakfast
5) Read mails and news
6) Join #startups on freenode to have some company
7) Say good morning to everyone there (I am blackwhite)
8) Start working
9) Have lunch
10) Back to work
11) Stop at anytime between 5-7
12) have dinner.
13) Procrastinate some more or do some more work.
14) Get to bed at 12 the latest.
Rinse and repeat....
1. Set a timer for 25 minutes.
2. Work until the timer goes off.
3. Take a short break, 5 minutes or so.
4. Repeat :)
What I did was determine how many hours I wanted to work total, usually 40 hours. Then I'd shoot for 80% efficiency, so I'd try to work hardcore for 32 hours. Divide 32 hours by 25 minutes (32 * 60 / 25), and I'd work that many blocks of time.
I found it really helped me focus. It also helped me separate my work time from personal time. It also... well, it helped a lot.
You can play with the numbers to find a pattern that works best for you.
1. Get out of the house to work, at least occasionally. I find I'm often most productive working in a coffee shop or at a Panera Bread type restaurant (no waiters, free wifi).
2. Don't quit immediately after finishing off a feature. Start working on a new feature and then quit for the day. This one is big. Whenever I do this, I find my mind continuously returning to the new problem and coming up with ideas on how to solve it. At that point getting back to work the next day is easier than not.
Finally don't stress out too much about what hours you work. Sometimes I work in the morning. Sometimes I work at night. I work around spending time with my son, which is what makes me happiest. That's the best part of being self employed - having a flexible schedule that let's you maximize all of the activities you enjoy most.
What works for me:
1) Create a separate work profile on my mac.
2) Block sites you think are not helping you in your work but eating into your time.
3) Write down just one big action item for the day (has to be done today)
I'm a student working for different tech companies remotely. From my year long experience, all I can tell you is you need to have a routine with :
a) Not more than 50min work at a stretch (even a 10 minute break will do)b) Limited working hours (you set the limit)c) Workout (running, working out, dancing | something that works out your muscles)d) Social life (with your partner, friends, meetups etc)
Make short todo lists. Get your work done early in the morning(before your family gets up) and keep noon time for meetings and extra work that does not require focus. Evenings are great for working out.
Best of LUCK :)
1) Having a minimum realistic goal for the day. By having that realistic goal, I find it much easier to get started, and end up achieving more than I set out.
2) Proper cardio exercise - I find just a 5k run really clears my head, makes me feel good, and relieves the physical boredom of essentially sitting down staring at a screen.
3) Breaking up working time into one hour slots (roughly), and having a decent 10 minute break to stand up, have a drink or whatever.
Have a separate place in your house where you work. No browsing cats there. You may try coworking space or rent an office with a friend.
There are 3 main drawback while working remotely:- Communication (we are wired up that face to face communication is the most efficient) - Interruptions (e.g. screaming nephew)- Human interactions (going to lunch with someone, discussions about tech)
I will only emphasize that never think you are working from home. Always assume you are working as if from another building than your own home. And always act as if you are in that building.
The moment you realize, you are in your own home, it would get harder for you to stick to the 'normal business routine'.
It also gave me "colleagues" to talk to, so I wouldn't be as lonely as I would be if I worked from home every day.
That worked for me
Unplug the web.
Fire up your editor.
However, I must add that when I tried to use Scala in the real-world, it was considerably more complicated due to implicits, CanBuildFrom, and other "invisible hands" (not merely synactic sugar, mind you).
Introduced me to some new ideas about learning, and solidified some ambiguous thoughts I already had. Much fun.
Going beyond "just" videos and multiple-choice quizzes, the MITx folks built/assembled an impressive array of mostly web-based tools (e.g. a 3D molecule viewer, a molecule editor, a simplified version of genome viewers used by actual biologists) to support the learning enterprise.
Here's a glowing review that (unlike my scribblings here) starts to do the 7.00x experience justice: http://okazakifragments.wordpress.com/2013/05/29/the-best-mo...
I'd like to use it more, but we have so many layers of legacy Perl code, that it's difficult to replace single components because of their dependencies (rewriting anything worthwhile would mean rewriting 4-5 libraries also).
Also working on a flat-file blogging system with an online editor, because flat-file is the middle ground between a static-site generator and a traditional database-based blogging engine.
If you are doing a targeted bugfix (i.e. not with a shotgun) you already know the test you have to write: a test for the bug. Try to first write the test and then make it pass (also know as fixing the bug), so you know that the test will spot a regression on future runs.
If you are working on a new feature, try to isolate the core logic of the feature and test that. If you can, test it in isolation from the rest of the system and integrate it after you have achieved some semblance of correctness.
If your code base has parts that you only touch rarely and you know (or hope) are reasonably solid, leave them for later. The highest risk for breakage tends to be near the spots with the most code churn, so put your tests there.
Also remember that tests are code and they must be maintained as you would maintain the rest of your code. Writing tests for implementation details that have no real impact on program correctness won't yield you much value when weighted against the cost of their maintenance.
If you are after the most "value per test" think about it this way: The most valuable test you can write today is the one that will catch breakage tomorrow. So, think of the code most likely to break (or the one that will hurt you the most when it breaks) and test that. The first time that test unexpectedly goes red, it will have paid for itself.
If you have a hard time convincing colleagues to go along with this, then you'll just have to go ahead and start writing tests over top of a real database (or whatever your data layer is.) They should see pretty quickly how tedious it is to have to maintain a test db, and the benefits of being able to mock it out.
In my opinion, one of the big concerns is isolating the business logic into its own layer that is as loosely coupled to the data access and view layers as possible. Data access and rendering errors are relatively easy to spot in QA/UAT. The errors most likely to make it through black-box testing are related to business logic, which can be dizzying in any app that's been around long enough. It's important to distill the business logic into a single layer where each business rule can be tested individually without the possibility of interference from the view or data layers.
Good places to start adding tests would be wherever there is critical business logic or areas of code that used very frequently. If you could spare the time, try adding some tests everywhere. But if you can't, add tests to all new functionality or areas that are being updated for bug fixes at the minimum.
Once you've got some tests in place, use a build system (i.e. Jenkins) and have your units run every time there is a check-in to source control. Possibly create some build tasks using Gradle and have your unit tests run at compile time for Java.
They work because spammers often don't target specific sites but just run generic bots.
As soon as you throw something, even trivial, in the way, the spambots give up.
It wouldn't work for a high-value target of course.
If Indian Railway is a high-value target, then maybe they're just trying a 'dumb' solution and keeping an eye on spam to see if they need to put something cleverer in place.
<span id="txtCaptchaDiv" style="background-image:url(1.jpg); font-weight:bold; font-family:Modern font-size=12">67839</span>
The Indian Railways runs one of the largest ecommerce sites in India - a site that has seen a consistent YoY growth over the last few years since its launched. Last year, they are believed to have earned a revenue of nearly 100M USD.
The guys who built their reservation system have very good engineering chops - in fact these systems hit peak load of about a million queries (every day) during 10 AM - 12 noon (IST) when users and reservation agents try to access the site irctc.co.in from browsers / mobile / reservation counters etc.
The "captcha" was not even in this page a month back. The "PNR Enquiry" for which this page is intended is a feature that can be accessed through SMS & also from the irctc website. This is possibly the least visited page in indianrail.gov.in
I have been an active user of both irctc.co.in & indianrail.gov.in over the last 7-8 years and have seen how these sites have grown.
What is more important is that national security can precede legality at times and trying to stop the NSA from using a particular software becomes moot once you consider that an adversary can do the same actions to undermine software. This means the NSA will have justification to ignore any clause of no use an hunt for exploits and may probably comply with a legal clause of no use as a regular user.
On the other hand you shouldn't look at the NSA as the bad guy. Remember that a security/spying agency is controlled by policy. If policies are bad the actor acts badly. Put your energy in fixing policy instead of beating down the NSA. I'm starting to feel sorry for an agency that acts on orders from the government at large.
Seems to me a bit like putting a sign on your front door that says "no burglars, please."
_Dream Machine_ in particular tied together many strands that I had previously explored separately; it's a far-ranging, incredibly well-researched work that covers the development of interactive (and, eventually, personal & networked) computing from its origins at MIT's Whirlwind and Lincoln projects, leading, in big part thanks to J.C.R. Licklider's long-term research (management) vision, to the development of the ARPANET, and, maybe even more importantly, the formation of an "ARPA community", where many of the big ideas were first brought to reality and explored in depth (at BBN, SRI, Utah, PARC &c.).
All in all, it's probably the best history of computing-as-we-know-it-today and a clear recommendation for anyone with just the slightest interest in the idea history of the field.
_Computing in the Middle Ages_ is a very personal account, supplying the critically important perspective of someone actually working in the trenches in the time-frame covered by _Dream Machine_.
Severo Ornstein co-designed the ARPANET "Interface Message Processors", essentially the first routers. It's also a wonderful history of the LINC (by Wesley Clark et al.), a remarkable (and remarkably forgotten) machine and the direct philosophical fore-runner of all "personal computers".
It is a great book written by one of the great computer scientists of our time. It tracks the evolution of code and computing from morse code and braille on to number systems, early processors and even into how processors handle this information. When I hire someone for nearly any position, I buy them this book.
*Don't let the title fool you, this is not some discussion about high level languages, this is the down and dirty stuff.
The Unbound Prometheus --- a history of eastern europe technology and its social impacts.
From The American System to Mass Production --- Hounshell, a history of the development of the assembly line, and in particular the forerunners to Ford's mythologized mass production line (which, in many elements, surpassed it, and demonstrate that it was not particularly unique except in marketing)
America By Design --- Noble is a very circumspect, controversial historian of technology.
The Protestant Ethic and the Spirit of Capitalism --- classic on the controversial idea that protestantism was responsible for capitalism and the resulting technology
Does Technology Drive History -- collection of essays by the founders of the field of science, technology, and society.
Civilizing the Machine --- technology's interaction with American values and how those developed concurrently.
Major Problems in the History of American Technology --- a collection of original documents and essays interpreting them in a historical basis, ed. by a founder of the field.
The Tentacles of Progress --- how technology lends itself to imperialism, and furthers exploitation, even when other nations fund the development of infrastructure in developing nations.
The Machine in the Garden --- possibly the single most important book on this list, the one that turned my life upside down and which I think about most regularly. It posits that America's idyll of a tech-free natural scene is actually a balance of technology and nature, and is a artificial nature propped up by machine, and demonstrates this history of this tension in American life from Shakespeare to Jefferson to Thoreau to the modern day. It completely turned my conception of the perfect life upsidedown.
Digital Apollo --- a history of the computing history of the Apollo program, especially the tensions in the software development sides between good management and perfect programs.
Science and Corporate Strategy, DuPont R&D 1902-1982 --- if you're interested in the development of big chem, or in the history of companies having R&D departments, this is the book for you. The DuPonts were very well-educated, many being MIT alums, and the chemical company they built was innovative in many different ways --- this book is a interesting discussion of the society and the technological pressures that drove and still drive innovation.
First one up is Command and Control - which is a history of american nuclear weapons/nuclear weapon accidents. It spends most of its time building a narrative around a single major incident but the meaty sections are all about how the technology was invented and deployed and it's a gripping read.
Second one - just wrapping it up now - is The Box: How the Shipping Container Made the World Smaller and the World Economy Bigger, which is a history of the shipping container. It sorta reads mostly as a pop econ/biz biography of Malcom McLean but it's really about the power of technology to reshape how we live.
Jon Gernter's 'The Idea Factory: Bell Labs and the Great Age of American Innovation' - very cool story about the formation of Bell Labs and covers the Transistor, Satellite comms, the laser, and a ton of other stuff up till, but not disappointingly not including Unix.
John Markoff's 'What the Dormouse Said: How the Sixties Counterculture Shaped the Personal Computer Industry' - what is says!
Ted Nelson's 'Geeks Bearing Gifts' (or any of his YouTube Computers For Cynics videos) - awesome, curmudgeonly alternative (but accurate) version of computer history.
Michael A. Hiltzik's 'Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age' - as someone else mentioned, really great history
Ted Talk: "Jeff Bezos: The electricity metaphor for the web's future"http://www.ted.com/talks/jeff_bezos_on_the_next_web_innovati...
Mokyr's books aren't exactly about the history of technology: they're at the intersection of economics, technology, and politics.
Another good choice: Steven Berlin Johnson's Where Good Ideas Come From.
The topic of his essay was: what should scientists do for the benefit of society now that the war is over?
Atomic Awakening by James Mahaffey
Atomic by Jim Baggott
It's of course only one technology, but a technology from which very broad uses have sprung.
weaving the web by berners-lee 006251587X
the master switch - tim wu
the soul of a new machine - tracy kidder 9780316491976
dealers of lightning
"How We Got Here: A Slightly Irreverent History of Technology and Markets" by Andy Kessler
"Expanding on themes first raised in his tour de force, Running Money, Andy Kessler unpacks the entire history of Silicon Valley and Wall Street, from the Industrial Revolution to computers, communications, money, gold and stock markets. These stories cut (by an unscrupulous editor) from the original manuscript were intended as a primer on the ways in which new technologies develop from unprofitable curiosities to essential investments. Indeed, How We Got Here is the book Kessler wishes someone had handed him on his first day as a freshman engineering student at Cornell or on the day he started on Wall Street. This book connects the dots through history to how we got to where we are today."
Kurzweil also talks about history of technology when he talks about accelerating returns.
It's useful to think way back imho... for example, language is a very early example of a technology.
[ During WW2, silicon valley was a hotbed of ] [ research in radio and sensing technology. ] [ It's longish but an interesting history lesson. ]
pg's suggestion is probably a little different--pick a subject that holds your intererest rather than slogging through the entire history (there are also a couple of technology-specific history books here): http://www.paulgraham.com/raq.html
It's important to know how far in advance stuff in research labs can be from everyday life. The trappings of the computerized office of the mid 90's were bouncing around Xerox PARC in the 70's.
A very comprehensive view an lots of great stories in James Gleick's _The Information_:http://www.amazon.com/Information-History-Theory-Flood/dp/14...
A great look at the people involved in the early years of personal computing, including Stallman, Gates, Wozniak, etc. Apart from the technology, Levy discusses the basic philosophy and motivations of the personalities involved.
Also, Walter Issacson is working on a new book on the history of the internet
You may also be interested in the forces in society which make technological progress possible and which kill it. Mariana Mazzucato wrote _The Entrepreneurial State_. David F. Noble wrote a couple books.
Also anthropologist David Graeber's essay _Of Flying Cars and the Declining Rate of Profit_ (http://www.thebaffler.com/past/of_flying_cars) ; you may prefer his talk "On Bureaucratic Technologies & the Future as Dream-Time" (http://www.youtube.com/watch?v=-QgSJkk1tng). His video makes the interesting point that since the 1970's, we've focussed on bureaucratic technologies like IT (we fill out forms on the net all day), instead of more imaginative technologies. To compensate, we're good at merely simulating imaginative technologies, like in movies.
Funny, that. Since I've been writing code on a daily basis since I was 7 years old.
But the thing is, before around 1996, "Computer Programmer" was a kinda lame job in quite low demand with no real career prospect that fat bald guys did in the basement of some Fortune 500 company making a sad corporate salary and basically not having anywhere near as much fun as, say, a Mechanical Engineer. So that's what my degree is in.
Of course, anybody who's Engineered his way out of a paper sack will know that even in the early 90s that took several thousand lines of code and (back then) quite a few hours queued up on the VAX waiting for your models to run.
Now imagine you're living large in your felt cube, several floors up from those poor programmers, then suddenly somebody shows up with a ten billion dollar sack of cash saying "Hey, anybody want to double your salary?" and that the only requirement to do so was to be able to cobble together a Hello World program that output a few angle brackets.
So yeah, hey, sign me up. I'll work with technology.
Pretty smart move, looking back on it nearly 20 years later.
Once the company started to become profitable I started to get excited about all the possibilities and then I realized that my love for spending more time solving hard problems once and then repeating my newfound solution over and over again with minor tweaks or improvements was perfect for having a career in software.
I sold that first company and I've spent very little time as an employee but I've started three companies now and have been fortunate enough to have sold my first company and been a part of two of the best accelerator networks with the other two.
It was so liberating, because I always thought I was destined to be a thinker and not a maker.
Fast forward 5 years, I am now building a tech company (big data on social graph) to implement my economic ideas.
...or you just had no one to talk to at the moment? :)
The user interfaces and interfaces between the devices do not seem at all intuitive to me. And learning those particular tech intricacies does not pique my curiosity; I just want to use the tools. So I just hand the devices off to my young kids, nieces and nephews and say "show me how to do blah-blah".
His email was broken because he changed his email password and instead of changing the password stored on his phone setup a second account to the same email box. Yeah that was a fun one to try and figure out.
As you well know, an AppleID consists of your email. But I spent more than 10 minutes explaining to her how her Apple password was NOT her Hotmail password, as she was using her hotmail ID for her AppleID.
Funny enough, a few weeks later, I was teaching a web course and showing students how to start a site from scratch off of Amazon S3. One of the students didn't have an Amazon account and had the exact same problem: trying to use her email account password to log back into Amazon
If she's interested in biology, you might consider "Animals in Translation" by Temple Grandin. It's more about animals than about technology, but it touches on how understanding animals affects the low-tech systems that you use to handle them.
For interesting/easy intros to why some math skills are important, look at Darrell Huff's "How to Lie With Statistics" or John Allen Paulos' "Innumeracy" (or "A Mathematician Reads the Newspaper").
I haven't read any of them, but I hear Petroski's books recommended.
For a great short read that touches on architectural engineering, law, and ethics, look for Joe Morgenstern's "Fifty-Nine Story Crisis" which appeared in the New Yorker in May 1995. It's about how the structural engineer for the Citicorp tower realized its design was flawed, after the tower had been built and occupied. You can find it on the web.
Some of these are not overtly about "learn this technology", but to me they all sell the idea of technology and science as both central to our lives and interesting.
That's great that she's interested in biology. I'd like to gently suggest that if she "isn't very enthusiastic about computers or technology", you should instead try to nurture her demonstrated interest in art, biology, and other science.
I know absolutely nothing about art, except that I apparently have no taste. So I'll refrain from making any suggestions on art books.
TL;DR: Skip down to the third section for the "technical book" suggestion.
Here are some suggestions of books on general science, biology, and chemistry (in no particular order, these are some of the first ones that come to my mind):
"The Structure of Scientific Revolutions" By Thomas S. Kuhn
"The Diversity of Life" By Edward O. Wilson
"The Beak of the Finch: A Story of Evolution in Our Time" by Jonathan Weiner
"Hen's Teeth and Horse's Toes: Further Reflections in Natural History" by Stephen Jay Gould
"Life on a Young Planet" By Andrew H. Knoll
"Galpagos" By Kurt Vonnegut (Fiction, but related) (I loved this book, but it's not for everyone I suppose. A couple of my friends didn't like it.)
"Napoleon's Buttons" By Penny Le Couteur and Jay Burreson
"The Lives of a Cell: Notes of a Biology Watcher" By Lewis Thomas
If she's interested in learning a lot about cellular biology in beautifully exhaustive detail, buy her this textbook:
"Molecular Biology of the Cell" By Bruce Alberts, Paul Walter, Alexander Johnson, Julian Lewis, Martin Raff, Keith Roberts
This book is huge. And it is wonderful.
---Read this suggestion if my other suggestions aren't good---
So you want a technical book? And she's interested in biology?
Buy her a copy of:
"The Principles of Biomedical Informatics" By Ira J. Kalet
This textbook is incredible. It teaches you some fundamentals of many different flavors of bioinformatics. (Different flavors, because, as the author acknowledges, bioinformatics can mean many things.) You can learn how to work with amino acid sequences, protein modeling, medical imaging, probabilistic biomedical models, and more!
Since you have SICP and LoL on your bookshelf already, you might love the next part. The entire textbook is a cleverly accessible primer on how to build applications with Common Lisp. Whether you're a greybeard Lisp hacker or a repl-noob, you'll like this book if you are interested in learning about bioinformatics.
I've had the first edition for quite some time. Recently, I think in the past few months, a second edition was released. Someone gifted me the 2nd ed, :) but I haven't really compared the two.
I was going to suggest Gdel, Escher, Bach when you mentioned she was interested in art, and were hoping to find a technical book for her. Then I saw that you already had tried that one. I'm going to leave the suggestion anyway because these types of threads are wonderful for finding great books.
Any links to your company and your competitor, so that we can compare you two
Had low expectations and lost money but the conference was insanely valuable.
First because we had the chance to talk to customers for days straight. We refined our sales pitch, heard objections and concerns, learned about new features people cared about and more.
Second because everybody really rallied around the conference deadline and we got so much work done to prepare for the conference it really skyrocketed our momentum and productivity.
2. lesser the features your product has more customers love it.
3. taking an office space is much larger expense than it appears at the start thanks to travel time, travel cost, utility bills, eating out at restaurants, etc. work from home as much as possible.
Make an informational website.
Basic "5 page site" with marketing information and documentation can be a great source of drip traffic.
Make sure the "download" link is on every page and within reach.
The whole concept is similar to marketing an app, albeit on a different store. Somebody else might know about how to get featured, and much like the app store, that also certainly helps your numbers.
If I type "your extensions name" into Google, it's feasible to cover the first page in properties related to your extension:
1 chrome store link
2 your marketing site
3 prominent app/extension review
4-6 social media pages
7 - 10 get creative
I'm kind of kicking myself for not doing more chrome extension work. We consume such a variety of information and Chrome has huge flexibility in working with that info...seems to have a lot more potential usefulness in our day to day lives, and plus, you don't have to learn a new IDE and language
you just have to be clever
we have chrome extension w/200 users
As an experiment to this end we developed Omniref  entirely in public, just to see what would happen. We never hid the thing, even when it was horribly broken (we even had organic search traffic before we were ready!) It made no difference. What works is getting users, one at a time.
The bottom line is that product/market fit trumps everything. Better to just put the product out there and try to get one daily user as soon as possible than to worry about "launching". It's not as gratifying to the ego, but you learn more, and that's the whole game.
We launched it on Facebook, Kongregate, and Armor Games.
Only one in a million products can truly spread on their own (minecraft, reddit, google...). The rest are often really good products, that can make money, but require unique ways to get users. For us, this meant giving up a percentage of revenue in order to get promoted on various platforms.
One thing is certain - it is nearly impossible to launch an effective web game by itself on a stand-alone site. Our game makes money, but there's no way we can get any decent return on marketing investment if we tried to roll our own. The traffic we received from posting the game on reddit was totally insignificant compared to the traffic we received from partnering with websites that already have users.
I haven't launched any "applications" recently. But I don't think it's much different. Most engineers severely underestimate the importance of proper marketing and user acquisition. If your entire plan is to launch a product website, post it on reddit and hacker news, and see where it goes from there, it's not going to work. This doesn't necessarily mean your product is not viable!
I would recommend not just launching a website and hoping it gets traction. Consider porting whatever you're building to multiple platforms, and consider all of the app stores that you can put your product on. They will promote your product for a percentage of the revenue. And don't feel bad about giving up that percentage - they're providing a valuable service. They're doing the marketing for you.
My launch didn't go 'well' to the standards that I constantly see on HN. I got < 10 users and a lot of those were existing beta testers.
Now I'm 2 months in and I have been getting a fairly consistent number of new users each day, however its dropped in the past couple of weeks (I'm blaming the holiday season).
Here's what I've learnt so far:
- SEO is very important for discovery
- Keep your product evolving to fit the needs of your current users
- Keep current users happy
- Be ultra responsive to support enquiries - this is key to keeping happy users
- Adjust your pricing model based on feedback
- Get your site linked to on other sites even if seemingly unrelated - I get a bit of traffic from a design site that has my site in a list of 'beautiful, flat landing pages'
It would have been nice to get a whole slew of users on day 1 but realistically this doesn't happen unless you have an existing captive audience. It does dampen the expected meritocracy that comes with developing your own product.
There are a lot of things to launching/marketing a product, but it always comes down to hustling and marketing hard consistently over a long period of time. Think 3+ years to be an "overnight success"
Edit: This wasn't meant to sound mean or directed to you personally. I meant this as a general comment towards the idea of a 'launch'.
As several others have mentioned here, I was not focused on "launching the product". I was persistent about creating a solid and valuable product, and making it available for the entire world. I researched everything I could about building websites, particularly performance and SEO. The project was a learning project for me - it was technically "launched" since the moment I bought the domain. I continually iterated after learning new things about the web, and after coming up with new ideas. The growth came from a steadily increasing SEO presence and Social Network presence. I never once saw a code or feature iteration cause an immediate flood of attention, even when I gave them a little nudge on social networks. I will admit though, that I never attempted an all out launch of anything.
The project is mainly a fun site, but it has become one of the best tools for creating animated GIFs and memes on the internet. There have been a few big spikes from various press events, or Reddit frontpagers, but the true value has come from continually making the product better and slowly gaining the trust of the internet.
I'm certainly much newer to this than many people here, but my first big project now makes enough profit to support me fulltime, if I were to choose that (I work at another company as well). The site is imgflip.com if you're wondering.
1) Some kind of press release (TC, Show HN, blog post, etc)
2) Get at least one user
3) Iterate features and establish that the users actually need the product (would they be upset if you quit?)
4) repeat 1-3
I launched my subscription tshirt service (https://www.startupthreads.com/monthly) on Hacker news and got a little press but it grew after finding companies each month and finding ways to reach new customers. After iterating a bunch you find out what works, as you'll never have the perfect launch strategy to start.
In terms of what's most attractive to an employer, it really depends on the company. What should matter more is where you see yourself in five years.. if you have no interest in backend coding, by all means focus on Angular, but if you want to branch out from front-end development, Rails will get you quite a bit farther.
As a full stack dev with experience with both Angular and Rails, and recently been interviewing, I think Angular will serve you better over the next few years.
Beyond everything else I've just said, I've recently started programming with node-webkit (I'm making an IDE) which further expands your horizons to installed apps to desktop environments.
Plus you will have the skills and knowledge of how to plug your front end design into the backend systems.
Both Rails and Angular are MVC frameworks but I suggest that Rails is easier for a beginner coder to learn, especially if you already have a high level of comfort with HTML, CSS and jQuery.
If you don't speak french, I would recommend Saint-Lucia :
-the people are kind and welcoming
-life is cheap
-you can rent some remote house on a hill where no one will bother you.
-activities are within the usual island-vacation-pack : beach sports, volcano trek, museum, golf
First thing that comes to mind is the Cadillac Hotel in Venice Beach, CA. Fun, sunny, laid-back area, easy to get to, lots to do. Close to the Getty. Not too expensive. Biking/rollerblading at sunset is wonderful.
The Santa Monica library is also a great resource and alternate place to work if you are tired of coffee shops and hotel wifi.
The UAE (Dubai in particular) is all kinds of awful, though.
FYI, wifi is now a bit cheaper on some cruise lines. Last time I was on Royal Caribbeans they had an unlimited wifi package that wasn't so outrageous.
Aside from the natural water part (it is in the middle of a desert) i think sitting by a pool would make a great place to work. Most (all?) of the pools have outdoor music, wifi, people watching, etc... Mandalay Bay has sand but they've since started a Day club which I don't think would be very good for the life span of your laptop... If you got a cabanna, it wouldn't be so dangerous.
I have worked in the lobby of a vegas hotel in a pinch so it's not bad...
The only problem with my plan, its not exactly cheap to stay at a vegas hotel...
As for outdoor wifi, often just making sure I'm in a spot with LTE connectivity is sufficient to live with tethering to a phone or my ipad to do basic net things like access repos, web pages, and occasionally download packages.
Weather was great, nice beaches, fairly nice people (Costa Ricans are nicer).
The PINs were skimmed by malware in the POS devices.
Changing your PIN periodically is not a bad idea.
 - http://os.inf.tu-dresden.de/L4/overview.html
 - http://www.ok-labs.com/products/okl4-microvisor
 - http://homes.cs.washington.edu/~bershad/590s/papers/towards-...
--- Low level ---
Highly reliable, flexible, and securehttp://www.minix3.org/
Filesystem that's intuitive, easy to learn, and makes sensehttp://www.gobolinux.org/?page=at_a_glance
Declarative configuration managementhttp://nixos.org/nixos/
Support applications and drivers written for windowshttp://www.reactos.org/
Update software silently and instantlyhttp://www.codinghorror.com/blog/2011/05/the-infinite-versio...
--- User level ---
Amazing basic applicationshttp://www.apple.com/osx/apps/
With Unix, runtime provisions effectively end where C picks up. C is "good enough" to build applications on, and it can be written portably, most of the time. But there is plenty of reason to challenge the idea that we need a baseline of C. There are benefits to having richer data types built in, to having garbage collection, and all of those typical higher-level programming arguments. And if it's done at the OS level, the whole OS may also benefit from that - it opens up more options for organizing data, for configuration interfaces, and for communicating between processes. The system is likely to be more stable and more secure as well.
The downside is also known - losing lower-level control, losing lower-level performance. But each time our hardware situation morphs, there's an incentive to abandon the lower-level stuff to get better portability. So in time, as hardware usage changes(not just in terms of devices and their internal HW management, but also the increasing complexity of our networks) we're likely to incrementally adopt the higher-level paradigms.
Later, I realized that Mac OS' Automator/Applescript might have been an attempt to do something like this but it feels somewhat half-assed. Given something like this is probably impossible to bolt on later so you'd have to design the OS from the beginning to allow for this.
I'm speaking out of my rear end, but it seems like that's where we're all headed in order to achieve the security/configurability/reliability/simplicity/etc that we all want. As examples, I point to sandboxed mobile/browser/cloud/game console apps as well as config sandboxing such as VirtualEnv and .Net's dll versioning. Might as well drop the half-measures and go all the way. Skip DLL/API/browser version hell and just ship a complete OS image that has been configured and tested to work reliably for the app.
It's my understanding that the Xbox One has basically implemented this already. Game discs contain an OS image that runs as a guest OS on the Box. In addition to improved security, this should greatly reduce the back-compat test burden as future Xbox OS revisions come out.
This is not the ideal situation. Ideally, big companies like Microsoft or Apple would enable the right individuals to innovate in this area, unfortunately they are very bad at this. They do not know how to select these individuals, and even more importantly, leaving aside the rare likes of Elon Musk, the notion of radical innovation is rather contradictory to the institution of big business in our era.
Current OS have a hard time dealing with such heterogenous systems so they decided to start from scratch: The entire OS is structured as a distributed system with a dedicated mini-kernel running on each core of the processor and potentially also your network card etc. They even disallow shared memory between the core kernels and solely communicate through a message passing system.
If you are interested in their approach check out the Barrelfish website: http://www.barrelfish.org
And here is a great overview of the architecture: http://www.barrelfish.org/TN-000-Overview.pdf
BeOS had some of this, but the core ideas have not been explored as fully as they might have been.
An OS kernel by definition is a small layer of hardware resources management/abstraction software. Has hardware changed? Yes and no. The most prominent changes are multi-core CPUs, ubiquitous networking, a lot of peripheral devices, support for OS virtualization, but generally hardware architecture is not that far from 70s when Unix was invented. From the software side: the beauty of programming is in its abstraction power and most of software progress is advancing at levels abstracted far from OS (html5/virtual machines/language environments/etc). So, I don't see a burning need for changing the underlying service layer. Microkernels are nice, language-based systems are nice also, but their time has not come yet, the inertia of existing code base is huge, so the incentive to depart from it must be also huge.
I agree that user-space level organization may be more consistent from modern point of view, but it's not clear where to head. Ideas are welcome, but power of organic evolution also should not to be underrated.