Ask YC: how do you work for 8 hours straight? - <AUTHOR> I currently consider taking on another job, but to be honest, I am a bit daunted by the prospect of working 8 hours straight, every day. I have times when I work more, when I get into the flow, but what if I don't? Recently I have read more than once in popular blogs that 2-3 hours of real work per day are more realistic.
In previous jobs, I found 8 hours very hard to do. Maybe it is only my problem because I frequently don't sleep very well and on some days am almost too tired to work. No idea how other people consistently pull 60h work weeks, though. Except perhaps if most of the time is spent in meetings, which is not so taxing (many people doing overtime seem to be managers or team leaders, which might indicate many meetings).
Also, in all previous jobs I ended up surfing the internet a lot. I don't really like that, though - I want to give employers their money's worth. Or do I just have the wrong attitude towards employment?
I suspect surfing the internet is a bit like coffee, news sites are small little excitement spikes for the brain. But maybe I am addicted, and they say coffee makes you more nervous and less able to show consistent performance over an extended period of time. So perhaps if I could wean of the news while at work, working 8 hours would become possible? Or would my brain deteriorate completely (I should add that I usually work as a Java developer).
Edit: one thing I liked about consulting and billing by the hour is that at least if I went home early, I would just charge the client less, so I did not have to feel too bad about it. Maybe I am just not cut out for regular employment? <comment><USER2> Depends what you mean by straight. Without going to the bathroom? A good definition would be: without paging the problem out of your brain. I.e. you can go to lunch, but in a sense you're still working, because you're mulling over big questions related to the problem. In most kinds of work interruptions of that sort are net helpful.

Browsing the web, unfortunately, generally does page out whatever you were thinking about. I think it is a bad kind of interruption.

The way to work for long periods on something is to be interested in it. Few to no people have the discipline to make themselves work on something that bores them for many hours straight without paging it out. Probably none of the people whose work I admire do. Their trick is to work on stuff they like. That's not as passive as it sounds, though: you can often redefine problems to make them more interesting. For example, if you have an otherwise boring piece of software to write, you could make it interesting by using it as an excuse to learn some new language or library; or by seeing how few lines of code you can write it in; or by trying to make it very fast.

I've found one sure-fire trick to make the programming interesting is to design the software as two components: a language for problems of that type, plus some code for this particular application. Defining languages is always interesting (at least for me), no matter how boring the domain is. Plus it turns out to be a good way to structure programs anyway.

Another handy trick, especially in startups, is to motivate yourself by using competition. Kicking a ball into a rectangular net is completely boring by itself, but it gets interesting when someone else tries to prevent you from doing it. With sufficient resistance, you have to become an artist to get the ball into the net. At Viaweb we loved making our software better than our competitors'. Even Robert could get excited about cooking up some new feature that would leave them scratching their heads wondering how we did it.

<comment><USER3> Another relevant PG quote: <http://scrapbook.akkartik.name/post/7867532>

</comment></comment><comment><USER4> Dale Carnegie wrote about guys working in a foundry who, the experts calculated, should be able to carry 47 tons of pig iron per day, yet they were only actually able to carry 12 (or something similarly smaller than 47). Upon closer inspection, Carnegie noted that the workers took no more than a short break for lunch each day, so he advised them to sit and rest for a pre- determined amount of time each hour to renew their strength. As if by magic, the men were all then able to carry the predicted 47 tons per day, leaving employees and management quite satisfied.

Your brain is no different in its need for rest than your body. I've discovered that I need a break at about 3pm every afternoon, so I find a quiet place to lay down, close my eyes, and think about precisely nothing. After ten or fifteen minutes, I am ready to go back to thinking very hard. I've had co- workers who choose to sit at their desks all day looking very diligent rather than rest when they need it, and they are far less productive. (Of course, there are a few out there who don't seem to need to ever rest, and they're much more productive than I.)

You're not being paid to log hours; you're being paid to accomplish something. If you meet or exceed your employers' requirements for you, then they are getting their money's worth.

<comment><USER5> Unfortunately, it depends on the boss you have. Where I work, it is required that you work 42 hours a week. No hour less, and you have to be there at least at 10 and stay to at least 4. No excuse.

Even though I'm sure I would be more productive by working less hours, I just fit in, and try to split my work over the 8 hours as the others do, do more pauses and chit chat. At the end I feel a little depressed, because I stay so long at work, and the day is over. I also have problems working for somebody's other pocket, in that case.

At my previous job, I could come and go when I wanted. And when I was there, I was extremely productive. SHould have stayed there ;).

</comment></comment><comment><USER6> The biggest thing to keep in mind is that you will be transitioning into a world of "butt time". Your employer will care far less about what you do than where you do it. You could institute world peace and make your company a billion dollars from your arm chair at home and your boss will still call it vacation.

As a bit of advice for working in this world... You have no control over when you work, so you must regulate the density of your work in order to keep from burning out. What you would do in a single day at your startup takes people at "normal companies" many days or even weeks to accomplish.

Also, guard your time off like For Knox. If you are willing to "sacrifice for the team" your boss will gladly steal as much time from you as you are not willing to defend. Work ends at 5, anything further will need further compensation, be it overtime or extra vacation. Your boss asking you to work extra with no extra reward is stealing, pure and simple. Use more tact to say that to your boss, but make no mistake, this is what it is.

Lastly, try not to think too much. 90% of what goes on in an office is inane nonsense having nothing to do with the bussiness at hand. Its just part of the deal. Dwelling on this will only frustrate you. Get your zen on and roll with it.

Good luck.

</comment><comment><USER7> _I am a bit daunted by the prospect of working 8 hours straight, every day [...] 2-3 hours of real work per day [might be] more realistic._

I think part of the issue here is how you define "work". I probably spend about 3 hours a day actively writing code, but I would still say that I'm working 12+ hours a day -- the fact is that most of my time is spent coming up with ideas for how to solve problems and convincing myself that the solutions I've found are in fact the _right_ solutions.

Lawyers understand this -- they'll bill you for time they've spent thinking about your file while having a shower just the same as they bill you for time they spend at a computer writing up legal documents. Unless you're purely a code monkey who writes code according to directions and never thinks about what he's doing, there's nothing wrong with counting "think time" as time you spend working.

Edit: See also my comments from November about procrastinating: <http://news.ycombinator.com/item?id=81366>

<comment><USER8> totally agree, being a programmer is more than writin code. I have pulled a 90 hour week of writing code and it was very painful and I would never do it again.

I tend to pull an hour and then do something else unless I am in the zone and I can go up to about 3 hours and then break and come back to it.

8 hour days normally go like this when working with at clients place.

hour 1. opening up stuff, replying to email, grabbing a coffee, having a chat with co-workers(makes for a better working atosphere and you might learn something).

hour2. working on project, coding some, asking questions about the spec(if there is a spec, if not then asking questions that the end client or the account manager hadn't tought to ask)

hour3. repeat 2 but throw in a coffee and a chat and maybe a quick surf while you drink your coffee.

hour4. repeat 2

hour5. lunch time get up and move around people

hour6. repeat 2

hour7. repeat 3

hour8. start tying up loseends last coffee of the day etc send those emails you have been meaning to do, have a look at your bug list and fix a couple.

now you have done about 3 to 4 hours coding and plenty of other work.

</comment></comment><comment><USER9> first, find a job you enjoy -- the tech job market is good enough now where you can afford to be selective (at least in the valley/other tech hubs) -- ideally, something that you would find exciting enough to do even if you weren't getting paid, as the cliche goes.

second, i think it's common for developers to get the equivalent of writers' block when the upcoming task is large and/or poorly defined. some things that have helped with this:

\- tricking yourself to take on little pieces of the bigger project (google 'structured procrastination' and hamming's article on productivity); carving out explicit "next steps" (without dependencies) that you can start on now

\- writing down a plan or specs to at least get things on paper/into your editor to bring clarity to a jumble of random thoughts

\- reducing distractions; putting on headphones (esp. noise cancelling); stopping multitasking <http://www.joelonsoftware.com/articles/fog0000000022.html> ; also, turning off AIM (or putting up an away message plus hide windows) and your mail client's new-email popup/toaster massively cuts down interruptions

\- using rescuetime (to assess the damage and/or feel guilty about screwing around :)), noprocrast on news.yc or just making a commitment to yourself to wean yourself off of news/blog sugar

lots of people have written about productivity; <http://blog.pmarca.com/2007/06/the_pmarca_guid.html> and <http://www.paulgraham.com/hamming.html> are good starting points.

but ironically it's tempting to waste a lot of time "preparing" yourself to be really productive or trying to come up with the perfect system. i think there are natural ebbs and flows in levels of productivity; a lot of the battle is detecting when you're slumping and instead of beating yourself up, try to trick yourself into making that period as short as possible.

<comment><USER10> I think you are dead on; you need to find a job you enjoy. When I was a student I was lucky enough to do 6 co-op terms (internships). During this time I learned that your actual productivity is not being measured. The majority of your performance is measured relative to other coworkers, and simply the perception on how smart and hard you work. On one co-op term, I was highly regarded, but only doing what I considered 2 hours of work per day. However, I was doing all they expected of me and continually asking for more work, so they thought I was fantastic. I was able to do this by working smarter, not harder. Another co-op term at a small company I was doing 6+ hours of work (again, from my perspective) and I did not get a good review at all. This was because I was doing about half the work of the other programmers there, who were very senior and experienced developers. Additionally, there were no opportunities to work smarter, I just had to churn out a lot of code in a very confined way.

So, I quickly learned that a) your employer is judging your work on their perception of performance, not what you think b) in order to excel, you need to be in a position to work smarter

All of this brings me to the conclusion that in order to succeed you need to be set up for success.

</comment></comment><comment><USER11> 8 hours?!

I've been pulling 12-16 hour days, nearly 7 days a week for the last 12 years.

You have to love what you do. It has to be what defines you as an individual to pull that off with any kind of success.

It'll kill you though, I have more medical and mental problems than I know what to do with, all stemming from the damage my passion/obsession causes. But that's the cost and I gladly pay it. Why? Because it's what I am, it's what I do - and I'm pretty damn good at it.

How do I do it? Marijuana mostly. I don't drink caffiene (nor alcohol or any other types of drugs/stimulants). Caffeine causes peaks and crashes which make doing 16 hour sprints impossible, so I steer clear of that and I also minimize sugar intake but have noticed a semi-regular pattern of minimal sugar intake during the day - usually in a sweetened beverage or a fruit smoothie or eating fruit - although at 4am I will sneak a snickers.

I also tend to eat a lot of smaller meals throughout the course of the day, which helps keep me energized without making me lethargic.

Also, a few brisk walks during the day are good to clear the head and give me time to isolate my thoughts about what it is I'm working on.

It helps to start the day out with a list of things you want done, with the understanding that you can reshuffle/prioritize that list at any point, so long as you have a list.

But it really does boil down to the marijuana. It does a few things for me, cheif among them is that it sort of clears my brain and lets me really focus on what I'm working on. I'm disciplined enough at this point in my game that I can do this fairly easily. The other thing marijuana does is make me slightly lazy - which actually has the effect of me writing significantly less code to do the same thing, so I gain a LoC metric there. It also forces different perspectives when analyzing a problem so it's fairly often that I find holes in whatever system I'm developing that I might have overlooked otherwise.

Note, I'm not advocating you start smoking weed at work. I'm the boss at my company, so it's kosher, but most places - no way, you'll have to find other ways to achieve the same results.

Listen, if you aren't passionate about what you are doing, don't fine any thrill in it and are worrying about how you're going to pull of an 8 hour day, then maybe this isn't the right career for you?

<comment><USER12> I am sure it will kill you. But whats worse is that you are NOT LIVING. I am very passionate about my work. I consider myself a pretty good programmer. I put in long hours occasionally and wish I could code even more. But there are aspects of living on this earth as a human being apart from writing code. Trust me when I say it. YOU ARE NOT LIVING.

<comment><USER11> Well I find this slightly condescending and incredibly judgemental.

A. Who are you to tell me if I'm living or not. Furthermore, what's your criteria for "LIVING". Assuming the status quo; I'm hitting all the major tenents: I travel extensively, I'm married, I've a whole host of life experiences worthy of a book or a movie, I read, I enjoy film, I live in a nice house in a nice neighborhood in NYC, I eat great food. I have nice friends. That sounds like living to me?

B. If you also define living by including having an impact on other's lives, than indeed I'm living life to the fullest. No I'm not writing any life saving medical software, but I do write software that people use to express themselves creatively and know a number of the users of my software who have gone on to do some pretty impressive things because of what my software taught them about themselves; their capabilities, talents, etc. This is why I write software in the first place.

Now, could I do this extreme lifestyle if I was working for a bank? Hell no. If I was working at an advertising agency? Hell no. But guess what? My extremism has lead me to an oppurtunity to write software for myself and for my own company. Again, living life to it's fullest. Instead of helping others chase their business dreams, I am living my own.

So get down from your horse, dude. Because I don't live in the suburbs with my wife and 1.5 kids doesn't mean I'm not living life.

<comment><USER13> frankly, your description is deceptive or you're deceiving youself. From your own description, you're spending all your time at work and you're obsessed with that problem.

1/ you're not married. You're just the ghost of lovers. being married means something like _enjoying_ spending time with your precious other.

2/ you're not travelling : you're moving from one airport to the other, with a brief pause in office and hotel between them. travelling means learning the country you're in. Don't delude yourself, you're not travelling except on the surface.

3/ you have no friends, as the rest you have no time for them.

I know the pull of a (code) project, especially when you're the boss. It can become an obsession, and eat over your personnal life. But believe me, beyond 9 hours of real work, you're worthless. Many excellent, brillant coders underlined that for men and in the end, I have to admit they are right.

To be better, you must be open to the world.

</comment></comment></comment></comment><comment><USER14> You sound exactly how I was. I don't think that its so much that you hate your work, but the fact that you're at a job. For some people more than others, the conditions of a job (9-5 every day, don't choose your own work) just dont work. I used to love my work but hated that it was a job, so I quit.

My advice is to find the most self motivated person you know, quit and do a startup with them. Your desire to work hard along with their relentless persistence will be a great combo. Also, working 14-15 hours a day is a breeze when its for yourself.

Until then use this to block the net at work [http://thingsilearned.wordpress.com/2007/05/04/combating- int...](http://thingsilearned.wordpress.com/2007/05/04/combating-internet- addiction/)

Try skipping out on meetings as much as possible and work long but less days (your personal schedule) as much as you can. Push the boundary's, what have you got to lose?

</comment><comment><USER15> I'm part of a distributed team. Apart from daily scrums where we all sync up, we all set our own hours.

I have a wife and two teenage kids so I work nights as much as I can and sleep during the day when they are at work and in school. We see each other in the mornings and evenings.

When I'm in a serious mood I try and get three 4 hour shifts done with a two hour break in between each. If I don't get sidetracked I can get "in the groove" for one or two of these shifts. After a few days of that or whenever I feel burnout approaching I spend one day where the work shifts are swapped out for personal/family time.

If I can't be in a serious mood for whatever reason, I just let my "work brain" idle and let my life's "garbage collection" take over until I get back on track.

</comment><comment><USER16> "Maybe it is only my problem because I frequently don't sleep very well and on some days am almost too tired to work."

Something is very wrong and must be fixed. Now. Doesn't matter what your work or lifestyle is like. Life (and work) is a marathon, not a sprint.

I don't know if your problem is physical, emotional, psychological, or just plain laziness. It's up to you to find out and fix it. Until you do, I wouldn't bother working on any other problem. You may be surprised what you learn.

Figure out how to start getting a great night's sleep every night, and then figure out how to change the world. Keep us posted. Good luck!

</comment><comment><USER17> I think that 2-3 hours of work a day is more the norm than the exception with programmers. Basically it is hard to keep your concentration for 8 hours straight without some kind of break.

How many comments on /. Reddit and YC news do you think are written during work hours.

So basically I think that you shouldn't feel bad about it if you get stuff done. Better 3 hours of pure productivity than 8 hours of mediocre bugridden sloshing around..

</comment><comment><USER18> I don't. I work from about 10 AM to 2 AM, but according to RescueTime, the actual amount of time spent coding tops out at about 6-7 hours, with an average of about 4.5.

That's slightly more than when I had a full-time job (I averaged about 2-3 hours then), but seems fairly constant over a bunch of employers. And employers know this. My first boss told me, "Nobody expects you to spend the whole 8 hours working, just as long as you're getting _something_ done with the day. That's why contractors get paid twice as much hourly as employees - they can only bill for the time they're actually working."

<comment><USER19> That's why contractors get paid _four times_ as much hourly as employees. Twice would only just cover what contractee isn't paying for taxes and accounting/legal overhead.

<comment><USER20> Contractors _don't_ get paid four times as much as hourly employees. Oh sure, companies might get billed four times as much (though in my experience it has 1.5 to 2.5 times as much: I've seen invoices sitting on my boss's desk, and once even the consulting company mistakenly sent the invoice to _my_ address). Contractors probably get paid 1.25 times as much on average: the rest goes into some suit's undeserving pocket.

<comment><USER19> The contractor company employees don't get paid four times as much, but none of those factors apply to them: they have full time jobs, rather than billing their employer (the contractor company) for only hours worked, and the contracting company still has to pay for accounting overhead and taxes.

If you become an independent contractor, doing all your own taxes and client interface, you'll quickly realize that those "undeserving" suits are saving your sanity by doing all the people-handling and drudge work that you, as a hacker, would hate.

Also, in that situation, those suits pay their employees full time even when the contracted hours this week only add up to 18 hours. They bear the risk of having that happen, and in return, they soak up the profits when they get to charge the contractee for 60 hours worked in a week and still pay only salary to their own employees.

In the case with which I'm most familiar, the contract is for two days a week at $50/hr, and the employee of the contractor company gets ~$12/hr (here in the deep south, that's livable; he owns his own home). That may sound terrible to you, but on days they don't have anything for him to do, he still gets paid. It's a tradeoff.

</comment></comment></comment></comment><comment><USER21> Can you commit to and deliver results on a schedule?

Instead of focusing on having to sit at a desk for 8 hours straight, think about the kinds of results you can promise and take a project oriented approach.Instead of billing by the hour, consider billing for the result (which is more than halfway to productizing your efforts).

What kinds of projects would get you energized? You may be trying to fit yourself into a job and career where you won't be fulfilling your potential. I would echo a number of the comments that you should do something that you truly like. You may be more energizing by interacting with people, you might try a job--or consulting assignments--that are more people focused than about delivering code.

If you are not sleeping well: has this been true all of your life or only recently? Cut off coffee and other stimulants, find a way to get an hour of exercise in every day, and get up at the same time every day. It's possible you are depressed or suffering from sleep apnea. Obviously you should consult with a doctor once you have ruled out too much coffee, boredom, and any of the obvious causes.

If you were a co-founder in a startup with me, I would want to know that all of the web surfing had some application to the tasks you had taken on. I do think you have to distinguish between efforts and results, but if you want to be a product member of a team, you have to be able to deliver on your commitments. The key is you get to pick the team and make the commitments.

I hope this helps, I can confess that I sometimes have fantasies of how productive I was in "regular jobs" until I remember all of the pointless meetings, unproductive political constraints, and other meaningless activities I was required to take part in. But I am energized by what I am working on now, and find myself working from early in the morning to early evening and some weekends, but I take a lot of breaks and try and focus on results not hours.

</comment><comment><USER22> Consider that if you're more productive than average, it is very unlikely your employer will pay your salary proportionally to your productivity. Taking it easy and leaving early is often the only way you'll recover this otherwise wasted effort and get a chance to recharge. Often I'll put in 60+ hours one week to enhance productivity in a project at work, then spend the next few weeks coasting on my effort.

Of course, in my spare "coasting time" I'm usually playing with new technologies and tools, so its hard to say that doesn't provide value to my employer in the long run.

The important thing is to guard your time jealously, and avoid an employer that pries too much into it, or wastes it with useless meetings. Find an environment that cares more about results than warm bodies in chairs for 8 fixed hours a day.

</comment><comment><USER23> "Maybe it is only my problem because I frequently don't sleep very well and on some days am almost too tired to work."

If I was you I'd see a doctor about that. Motivation, focus, and energy are heavily influenced by your hormone balance and not sleeping well can affect that. You could have sleep apnea or another medical condition which is causing your fatigue. If you're not doing much exercise that wouldn't help either.

</comment><comment><USER24> Coffee.

Failing that, charge an on-site per-diem, or a higher on-site rate. Then the client will all of a sudden really not mind at all that you're doing nearly all the work from home, and you have much more flexibility with your hours and working conditions.

<comment><AUTHOR> That is an interesting idea, thanks!

<comment><USER24> It's really the bad clients that force you to become a take-no-prisoners mercenary consultant.

Other fun things (none of which is legal advice!):

\- Never, ever, ever, sign an indemnity clause. That's basically an agreement to go bankrupt if anyone ever sues them over your work. (If they can't budge on it, due to an evil legal dept, you should research whether indemnity clauses are enforceable against employees (not contractors) in your area. If not, you can mention that they can always hire you as an employee for the duration of the project -- at your consulting rate!)

\- Only fixed-bid for fixed-scope (change orders should always be hourly, and fixed bids should have at least a 100% fudge factor in your favor (same with calendar estimates). No, you do NOT mention that part to the clients. Some people recommend more than just doubling, but it's worked for me so far).

\- For jobs you don't really want, try quoting a higher rate, and see if they take it! (Eventually, you'll find out what your market rate is). Pad your rate proportionally to how much you DON'T want the job. :)

\- Never bid on a job from a position of weakness: there should never be a job that you NEED to have, otherwise you will get screwed.

\- Bill weekly. (Never call it a bill, always an "invoice").

\- Do not continue work when the client has more than a couple thousand dollars in delinquent balance due, until you're paid, or unless the client is a really good client, and you know they're good for it.

\- Never subcontract for someone who's friends with the client. They will be unable to maintain the naturally adversarial relationship between consultant and client, and they'll let things slide (such as late or delinquent payments) that they shouldn't.

\- More generally, avoid situations where you can't bill the client directly.

\- When logging your hours, always keep good notes of what you're doing. Clients like knowing what they're paying for.

\- If the client likes to call outside of normal working hours, institute a minimum 3-hours-billable for each off-hours call. Now, you can sleep at night!

\- Always be professional and courteous. Never burn bridges, no matter how tempting.

\- Emotion and drama are your enemies. Both your own, and your clients'. Especially keep emotion out of the picture when negotiating about money.

\- Go the extra mile to keep your best clients. Weed out the bad ones.

\- Don't put up with abuse.

\- Always negotiate in good faith.

\- Always under-promise and over-deliver! NEVER over-promise and under- deliver!

</comment></comment></comment><comment><USER20> I think this "2-3 hours of real work per day" stuff is a myth. Or maybe this depends on a definition of "real work" that only entails "heads-down" "in-the- zone" coding. Still I think it's too low. I'm 44 and just a month and a half ago I had to intensely focus 9-10 hours a day to meet a very aggressive deadline (PG you are so wrong about us older coders ;) It was exhilarating and while I wouldn't want to keep that up for months on end, I think 5-6 hours heads-down is definitely do-able. What about the other 2-3 hours to come to an 8 hour day? Well, there's analysis, documentation, email, etc. Some people like to do this sort of thing first thing, but then is when I focus best. Indeed by mid to late afternoon my brain is craving television, but I force myself to at least think about problems, even if I'm not solving them through code. And it usually pays off, with a solution through code the next morning. Anyway that's my experience.

</comment><comment><USER25> Adding physical movement doesn't hurt. Sitting at the computer for 8 hours is pretty boring if you think about it (and occasionally butt-cramp inducing).

I work on two computers that are spaced slightly apart, requiring me to frequently push myself from one to the other on my little rolly-wheel computer chair. Rolling is fun. Spinning is fun too.

</comment><comment><USER26> I've worked at several startups now and I have never worked a full 8 hours per day. There's always some internet surfing, phone calls (which might or might not count as "work"), meetings (also might not count), lunch, coffee or smoke breaks, and general BS'ing with co-workers. It usually works out to 3-4 hours per day at max. Any experienced programming project manager knows that a "work day" in terms of coding is never more than 4 hours.

With that being said, I have at times taken time off to work on my own projects and forced myself to work a full 8 hours. No stopping of any kind, phone and instant messenger off, email closed, no breaks of any kind. It was incredibly difficult. I remember I would choose a playlist with 8 hours of music and not stop until it was over. But it was something I still do only rarely. It was very productive, however, but not something anyone could do every day.

</comment><comment><USER27> I've done a variety of jobs, from classic intro-job retail to working in a computer tape library to scoring essays to teaching to, yes, actually, programming. :-)

In my experience, programming is perhaps the hardest of the lot to do consistently, all day, day in, day out. Some days I manage to really get into "hack mode" and crank out lots of good code. Other days I can barely focus and don't actually produce much. I really think a lot of it is the cubicle, etc., environment, as my days spent programming in an office were generally better than being in a cubicle.

Either way, I had no problem working and staying on task while sorting computer tapes. But serious programming requires a particular state of mind and deep understanding of the problem at hand. The harder it is to achieve that each day, the harder it is to be productive as a programmer.

</comment><comment><USER28> Go to rescuetime.com and get their tool. It'll help you know how much time you spend on things.

Now it's a game for me. I don't want to stop working until I've hit the peak for that week.

I work for myself though, so working more directly benefits me.

<comment><AUTHOR> I might use it, but I am running Linux, so no rescuetime for me.

<comment><USER28> I had the same dilemma. Then I got my shiny new MacBookPro. It took about an hour to setup an equivalent development environment. I was surprised it was so easy. I expected lots of builds to fail.

<comment><AUTHOR> Who knows, if Apple delivers on the 15th, I might switch ;-)

<comment><USER28> What are you hoping for?

<comment><AUTHOR> A neat subnotebook

</comment></comment></comment></comment></comment></comment><comment><USER29> I see no other options but trying to find a job where all that matters is whether you get stuff done, no when or where.

Life is too great for being wasted on some company's stupid playground rules: it is NOT okay to think "well, it's the same everywhere -- i'll just have to take it"! You deserve to embrace your talent in the best possible way. If you know you write quality code because you're a passionated and self-respecting coder, you have the right to excuse yourself off these bosses and companies who can't see your value beyond their time clocking schemes. You do no better at your work by adhering to these rules.

From what I've observed and discussed, programmers and intellectual workers seem to get something like 3-4 hours of real work done in an 8-hour day. If they're good. That sucks! Everybody thinks it's frustrating to be at the office when you actually cannot work as you need some time to think over your problem. You could do other, useful, personal, creative things while mulling on your problem and then when you're finished, just sit down for a couple of hours and effectively do a couple of days' work in that one sitting. You feel productive and you get things done. Both personal and professional. Everybody wins.

There are companies that understand this. Keep looking and when you find one, stick to it.

</comment><comment><USER30> Tichy - oftentimes as a consultant you can work offsite. There are of course those contract gigs where they want you onsite, but that sounds like it would be just the same problem for you.

I'm the same way though... consulting has been great, so far.

You have to build up a network though and get the word out that you are doing it. I've been lucky so far.

If things go well I'll have made $13k in a month, even though the eventual idea is just to do enough consulting to do a startup.

</comment><comment><USER31> I'm in the Navy and I work on average, 14 hour days. That doesn't include underway periods which are anywhere between 16 hour days and 22 hour days. I am saying this in complete seriousness and honesty. It sucks most of the time but the reason most people take issue with the number of hours they work is because of the lack of discipline. For computer work, I will admit to having "my cup of coffee" but I keep my Reader count low (done by reading when I get up) and on top of my email so there is little to distract me.

Also don't feel bad because programmers tend to work differently then the rest of the world, we work in massive bursts not steady streams. The best thing to do is to leave work when you are not "bursting" and go do something else. If you employer has a problem with it, explain to them how it benefits them this way, if they still have a problem with it, do it any way...It's better to beg for forgiveness then ask for permission.

</comment><comment><USER32> It's worth noting if you're fighting sleep or fighting attention span. If you have no taken care of your sleep/stimulant/nap issues, I wouldn't even start on your concentration and productivity issues.

For me, that means 8 hours of sleep and often a 10 minute nap after lunch. Once I have that down, and interesting problem can keep me going 8-10 straight.

</comment><comment><USER33> > I am a bit daunted by the prospect of working 8 hours straight, every day.

Try it fer 40 years. When I were a lad, we did 15 hours every day gettin' coal down't mine. Ay, the youth o'today wouldn't know an 'ard days work if it bluddy well hit em in't face!

</comment><comment><USER34> By doing something you truly love.

<comment><USER35> Then I'm basically limited to 15 minutes a day.

<comment><USER36> umm.... masturbating doesn't count as "work" :P

</comment></comment></comment><comment><USER37> Well, you don't really 'work' for all 8 hrs and then eventually a routine sets in...

</comment><comment><USER38> Caffeine and lots of it. Also, I set strick rules for myself at work to stay focusued on the job. Such as: no video games! And yes, it helps to love what you do and respect whom you do it for.

</comment><comment><USER39> i read reddit for 4 out of those 8 hours on the job.

</comment><comment><USER40> time flies when you love what you do

</comment><comment><USER41> I'll add to the chorus of "do something you actually like" but with a caveat: no one works 8 hour straight.

Sure, you're _there_ for 8 hours, but no one just sits and codes and configures and thinks. You get up. You socialize. You drink coffee. You surf the web. That stuff is important, too -- you're a human, not a robot, and you can't be effective if all you do is work. (Remember The Shining?)

</comment><comment><USER42> Oh this makes me feel much better knowing I'm not alone. It's tough work, exercise and walks are essential.</comment>


Ask HN: Why is tech recruiting broken? - <AUTHOR>

Nowadays it is almost cliche' to hear both startups and mid/large size companies in the software industry complain about how hard it is to find good technical people. I want to understand why, so please indulge me.
The developer's perspective is easy to figure out, we've all heard that one: company's mission is not exciting, the goal isn't clear, I'm being promised .1% equity of something that will likely be worth $0 anyway, tools are boring, doesn't let me telecommute, the pay isn't high enough, the location is unfavorable and much much more..
What about the company's perspective though? If you've ever recruited for a company, then please share your opinion from the trenches.
What's the key problem here? It's my understanding that most startups receive hundreds, if not more, applications weekly. You have access to wonderful resources such as angel.co/talent, GitHub jobs and StackOverflow jobs with hundreds of verified quality developers on there. Recruiters, if you can afford them, will try to poach quality developers from other gigs for you. These days even VCs will talent scout for you! Once again, what's the issue?
Thank you! <comment><USER2> The problem is that companies won't employ anyone who isn't perfect. They don't believe anyone is capable of learning, and if they do think someone is capable of learning, they don't want to be "paying them to learn". If you haven't worked at a company that looks exactly like this one, working on exactly the same technologies and processes then you are rejected.

<comment><AUTHOR> I can tell you from personal experience that very large companies, especially the ones that are no longer perceived as hot as they once were, have a rather low bar of entry. I can see however why a small business would want to be very cautious though. Say you're a 9 person business, the 10th guy you hire is going to determine 10% of the company's success. You want to make sure you don't screw up on that. It's a fine balance, right?

Is your opinion that startups these days are on the excessively cautious end? Would hiring more openly for a trial position and firing fast be a better approach?

<comment><USER2> The question is, wait six to nine months, have no-one in the job and don't get that stuff done, or recruit a smart person now who needs to learn stuff? Hire smart people with good fundamentals of computer science who have a proven willingness and ability to learn.

<comment><AUTHOR> It's a good point. The only case I can think of where you wouldn't want that is if you don't even know if you'll have enough runway in 9 months, but that's probably not quite hiring stage.

</comment></comment></comment></comment><comment><USER3> This is a big question that i face daily. here at our recruitment company, we are actual programmers that do recruitment. first, let me tell you, it does make a big difference in who we choose. When a coder starts talking about how they are using elastic search, AWS or even good old C#, we can talk to them about how the ins and outs and work out how much they actually know.

The challenge that we are facing is with the employers. Many of them that use a HR department rely on a "tick the boxes" approach that cuts out many many good coders. Others rely on "rockstar <insert brandname>" company to choose who gets in. maybe 70%+ of good coders dont make it through because of the above 2 hurdles.

Most of our clients spend 6+months trying to get people, until finally they work out that its the internal process that stops them employing, not the perceived ( and IMHO non existent ) skills shortage.

<comment><AUTHOR> What is your typical customer, if you don't mind me asking? Can smaller startups afford your services?

Also, do you consider culture fit at all? I read somewhere that because recruiters make their money on volume, their interest in small companies is rather limited. Basically, it doesn't make business sense for them to spend hours to get to know a small company's culture inside-out and then send them one-two candidates. You could be funneling dozens of developers to very large clients with very generic culture requirements in that time frame.

</comment></comment><comment><USER4> A lot to be said about difficulty in finding a culture fit, personality fit... basically evaluating the person as a whole vs their skillset.

Most people say they want a rockstar engineer (or insert other rockstar positions here). What they really want (or should) is to find someone who fits and can reasonably do their job well. Some times this means learning something fast, but other times, its a bunch of other nuances in between and traits a person may have about their personality or who they are. The smaller the startup, the more critical and true this is.

<comment><AUTHOR> People will occasionally hint at this. The impression I got is that startups often interview for high technical skills and hope that the brief interaction during the meetings gave them sufficient insight into the person's personality and culture fits.

Supposedly, it often happens that a few months down the line you realize that a lot of expectations and quirks weren't properly discussed and you get into sticky situations.

</comment></comment><comment><USER5> There aren't enough good developers on the market, demand is significantly exceeding supply.

</comment><comment><USER6> People doing the recruiting don't know anything about

1\. Programming

2\. Programmers

3\. What makes a programmer 'good'

4\. How to identify a 'good' programmer

5\. How to appeal to a good programmer

<comment><USER7> I'm an undergrad studying CS and Electrical & Electronic Eng. I'm keen to improve myself.

Just out of curiosity, how would you identify a 'good' programmer? What makes a programmer 'good'?

Cheers for your answers in advance.

<comment><USER8> If you've ever worked with classmates on a program, you probably already have a sense of what it means to be a good programmer. As you become more advanced and experienced, the differences between good programmers and bad programmers will change some... but not a lot.

You also may be interested in Joel Spolsky's views on what employers should be looking for in a programmer. It's at [http://www.joelonsoftware.com/articles/GuerrillaInterviewing...](http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html)</comment></comment></comment>


CSS vendor prefixes considered harmful - <AUTHOR> http://www.quirksmode.org/blog/archives/2010/03/css_vendor_pref.html

<comment><USER2> I guess PPK gets an auto-post on anything he writes.

No prefix leaves us in a situation where we have to assume each vendor implemented the draft spec properly. In the case that one of them doesn't, we're left either omitting it completely or writing conditional stylesheets for each browser.

An "experimental prefix", e.g. -x-border-radius, doesn't work either because we're left in the same situation as the above case. As on of the commenters on quirksmode.org pointed out, the gradient implementation in Webkit is significantly different than the one proposed by Mozilla. Using a unified prefix wouldn't help anything.

I guess one could say that we shouldn't be using draft specs in production code but that also seems counterproductive as it doesn't give us the chance to field test new functionality.

<comment><USER3> But what about having -x-border-radius (for those who don't care about the differences) and -webkit-border-radius (for those who do) as halo suggested? I don't see the drawbacks.

<comment><USER4> I don't see the advantages. Setting up that much formal convention just to prevent having -moz-border-radius and -webkit-border-radius both in the stylesheet next to each other? What do you win beyond the savings about 20 characters?

<comment><USER5> Personally, I can think of a few advantages.

Duplicating 2 or 3 lines may seem like a minor problem, but having to change those 2 or 3 lines every time you make a change quickly becomes a maintainence burden, especially when they're littered throughout your CSS. The extra burden such prefixes brings is greater than the amount of extra characters they add.

Not having to alter your code every time a new browser comes along that is identical to existing implementation is useful, especially since most of the time browsers copy each other's features or implement standards unchanged. This is especially useful since most sites using bleeding-edge features are either tech demos or test-cases.

A non-universal prefix also favours large players and has the potential to squeeze out less popular browsers even if they support the same feature. Even if Opera supports the same standards as Firefox, you can can bet that more people will use the -moz prefix than -o.

The "risk" is that your code will break in unpredictable ways, but the upside is that risk is known (since it's part of the "contract" from the prefix), manageable, greppable, and can be worked-around.

<comment><USER6> > _having to change those 2 or 3 lines every time you make a change quickly > becomes a maintainence burden, especially when they're littered throughout > your CSS._

You make a good argument for generating CSS via some kind of more programmable system.

> _Not having to alter your code every time a new browser comes along that is > identical to existing implementation is useful_

And what about those times when the new browser _isn't_ identical? I'd hazard that that's more usual with this kind of experimental new features.

</comment></comment></comment></comment></comment><comment><USER7> I don't see the problem. I _like_ vendor-prefixes.

Who cares about having 4 lines in the stylesheet instead of one for rounded borders? I'll happily pay that "price" as it gives me a trivial way to tweak for the individual browser peculiarities or disable it for certain browsers altogether (e.g. when a js replacement is needed because the impl is not up to snuff).

In my book vendor-prefixes are one of the few _sane_ ideas in the CSS space. We have seen the alternative after all: <!--[if IE]> \-->. You can't seriously suggest that's better?

</comment><comment><USER8> Border-radius has no unified syntax. Neither has gradients. Two examples that prove the thesis in this article (that _all_ vendor prefixes are bad) to be incorrect.

Having just one property to target multiple browsers that do not support the same syntax would be pretty harmful.

So yes, properties that have a unified syntax can do without vendor prefixes. Nothing new, see the w3c specs. Stupid browser makers copying over -o-* to webkit browsers however, should be considered harmful. We should target those.

<comment><USER4> _Border-radius has no unified syntax._

Exactly. Here is a table that illustrates this well. I didn't know there were so many optional arguments in the standard. This page is worth viewing both in webkit and gecko based browsers, so that you can see the "your browser" column. (Firefox does much better than Safari).

[http://muddledramblings.com/table-of-css3-border-radius- comp...](http://muddledramblings.com/table-of-css3-border-radius-compliance)

</comment></comment><comment><USER5> Perhaps there's a middle-ground solution - a universal prefix that denotes experimental or non-standard features that may be liable to break or not work cross-browser.

In the long-term (i.e. a major browser release), once the property is stable and has been standardised (or is a de-facto standard) then the prefix can be dropped.

This experimental prefix could exist side-by-side with vendor prefixes to allow for workarounds for broken draft implementations.

<comment><USER9> The problem is that unless two properties are actually going to work the same way, we can't use the same prefix. We have to be able to target individual, misbehaving browsers.

Its not just IE that's quirky - Firefox, Chrome, and Safari all have CSS bugs that have to be accounted for. Its hard enough to target them individually now, but under your proposal it would be nearly impossible.

But of course, this is not what the author is discussing at all. He doesn't have a problem with vendor specific prefixes in general, but rather feels they should be deprecated more aggressively once widespread adoption occurs.

</comment></comment><comment><USER10> I include this kind of rewrite in my webserver, so my CSS files stay clean. For instance,

      data = data.replace(/^\s*border-radius:\s*(\w+);$/mg, 'border-radius: $1; -moz-border-radius: $1; -webkit-border-radius: $1;');

I just have to change it in the one place when some new CSS tweak comes along.

<comment><USER11> I solve it with Sass, which lets me define "functions" (more like macros, really). <http://pastie.org/881370> is what I use for corners - just tweaking the macro definition as needed provides what I need.

In regards to the article, other people have touched on why we can't drop vendor prefixes just yet. Not all vendors implement a feature consistently yet. In the case of something like border-radius, the shorthand forms mean completely different things in different browsers, and the longhand forms don't have consistent naming.

Vendor prefixes serve a very valid purpose - the ability to say "we've implemented an interpretation of the CSS3 draft standard, use at your own peril" is wonderful, because you don't need CSS hacks and horrible rewrites and all sorts of other voodoo to work around problems.

</comment></comment><comment><USER12> His main gripe of making CSS more verbose than it needs to be can my solved easily with SASS:

        .my-container
          +border-radius(3px)

And the implementation: <http://gist.github.com/340185> Its easy to add more vendor implementations to this macro, each with their own quirks handled.

</comment><comment><USER13> I couldn't agree more. I can't imagine how many hours of clean-up it will take for all the webmasters to clean vendor prefixed properties out of their CSS files once browsers drop them.

<comment><USER14> I think ppk is wrong here. Completely wrong.

As mentioned in the comments of the article, this would mean the first to implement a new feature would be able to define how it works. Not a good idea. We need some form of consensus.

And also mentioned: some things do change. The definitions of border-radius for Gecko and Webkit are not the same at all.

</comment></comment><comment><USER15> I think, that vendor prefixes prevents us from getting into incompatibility nightmare.

If they were dropped for less stable css properties, web developers would start using css hacks again.

Because newer css properties don't have consistent behavior across browsers (border-radius don't work properly with border-style in firefox), and experimental properties can even have different syntax (for example css gradients in safari and firefox).

</comment><comment><USER16> We need something like jQuery for CSS. One, sane, extendible API/DSL that works the same on all browsers, with all the quirks taken care of behind the scenes.

<comment><USER17> <http://compass-style.org/> <http://sass-lang.com/>

</comment></comment><comment><USER18> What if we had 10 browsers or more?

Nightmare!

I am against vendor prefixes, but if they are needed we should do the opposite we are doing today, let me explain:

use border-radius everywhere

browsers that don't support it just ignore it (like html5 tags)

browsers that do, just show them

browsers with special implementation of it, THEN use vendor prefixes

So we only write one border-radius and if we care about that rogue vendor, then we just add an extra -?-border-radius

Personally I wouldn't care about rogue vendors.

Believe me, I am sick of writing five times the same style, testing, changing it five times again, and some time in the future, my code will be polluting a already established standard, so I am going to have to come back to change it again.

I got sick of it, so what I do right now is to have a second stylesheet only for vendor specific styles, so all I will need to do is just remove that stylesheet when the dust settles.

Still retarded...

</comment><comment><USER3> I agree that these are annoying for developer and somewhat harmful for traffic. However the real problem lies in politics. When browser representatives suggest a new standard and everyone says "fine, we like it but we must think about it" it makes sense to implement this standard in vendor specific way. That serves as a live example for all developers, standards committee and developers of other browsers, yet nobody can blame them for implementing new standard cowboy style and trying to get it become de-facto before everyone has agreed like MS use(d?) to do. The question is "when should the vendor prefix go?" Obviously right now it's happening too slowly so maybe the whole process needs to be improved and maybe there needs to be a mid-state for new standards - one that is not "in-draft" and not complete either ("release candidate", ha!).

</comment><comment><USER19> I love PPK's new writing style.

Most of the comments so far seem to be arguing a few specific details; I think that misses the point. PPK is arguing (in an over-the-top way, which makes it more fun to read) that convergence sooner rather than later is a good thing. For some of the more clearly defined properties (like border-radius), the time is NOW.

His characterization of the goals of browser developers seems to be right on as well. It will probably change again over time, as most competitions do, but today the top competitive advantages seem to be performance, stability and standards compliance. So, the mindset from the last generation of competition (differentiation) is no longer appropriate.

</comment><comment><USER20> <http://meyerweb.com/eric/comment/chech.html>

</comment><comment><USER21> News flash: using experimental, unstandardized features can be risky, and requires more work on the developer's part.</comment>


Fun with UB in C: returning uninitialized floats - <AUTHOR> http://yosefk.com/blog/fun-with-ub-in-c-returning-uninitialized-floats.html <comment><USER2> Can I just suggest that... forcing programmers to become language lawyers just so their language-lawyer compilers don't get overly clever and optimise away half their program is _probably a bad thing_?

<comment><USER3> Someone says this every time the topic of undefined behaviour comes up.

Ignoring the original portability concerns, there's a large of set of optimizations that are only possible if you can assume that no undefined behaviour occurs.

Accessing past the bounds of an array is undefined, and generally a bad thing to do. If the compiler decides that a block of code could only run if you access outside of the array, why not delete that code? Surely, it'll never run!

Even eliminating array bounds checking is an optimization that requires the assumption that you don't go past the end of the array. Languages like Java and Python pay a premium to ensure you don't do this on each iteration of your for loops.

<comment><USER4> > Surely, it'll never run!

Oh, the hilarious irony of giving language-lawyery, glib responses of "obviously, the code will not run" to users (who probably, you know, wrote code _with the intention of it running_ ) - users who are complaining about language lawyering optimizing compilers in the first place. It's like two people reading the same page in a different book or something.

<comment><USER5> Let's say I write a function that looks like:

        int ComputeStuff(int value) {
            if(value < 27) {
                long and complex computation specialized for values under 27
                return result
            } else {
                long and complex computation specialized for values 27 or more
                return result
            }
        }

Then I call it from somewhere else like so:

        int x = ComputeStuff(12);

Let's say the compiler decides this is a good candidate for inlining. Since the programmer wrote code _with the intention of it running_ , are you saying that the compiler should not take advantage of the fact that it knows the exact value being passed into the function in this case and can delete half the code knowing it will never run?

<comment><USER6> That's is not remove code due to undefined behavior, so is an apples/oranges comparison. If we keep your function, but the call looks like this:

        int value1, value2;
        value1 = compute_value_1()
        ComputeStuff(value2)  # oops, fat-fingered the '2'

Do you really think the author meant to not have ComputeStuff run? Since value2 isn't initialized, it could be optimized out.

Yes, in this case, you would get a warning, but it is illustrative of the kinds of things can cause optimizers to do very unexpected things to your code. And it is surprisingly easy to find the UB conditions.

It's worth reading through this three-part post called _What Every C Programmer Should Know About Undefined Behavior_ [1] from the LLVM folks to see how UB can screw with you, including removing NULL checks, eliminating overflow checks, and making debugging incredibly difficult to follow. It also explains why they can't just generate errors while optimizing.

1\. [http://blog.llvm.org/2011/05/what-every-c-programmer- should-...](http://blog.llvm.org/2011/05/what-every-c-programmer-should- know.html)

<comment><USER5> I don't think it is apples and oranges. Here's my next example:

        int ComputeStuff(int *value) {
            if(value == NULL) {
                long and complex computation for a NULL value
                return result
            } else {
                long and complex computation using the data pointed to by value
                return result
            }
        }

Then I call it from somewhere else like so:

        // NOTE: value must be non-NULL
        void DoStuff(int *value) {
            int pointedTo = *value;
            // do some work with pointedTo
            int computedResult = ComputeStuff(value);
            // do some more work with whatever
        }

Now, are you saying the compiler should not take advantage of the fact that it knows value is non-NULL at this particular call site and eliminate half of the code in this situation?

</comment></comment></comment></comment></comment></comment><comment><USER7> That seems like a very unusual way to define a function. I'd want 'ok' to be the return value, and the actual value returned to be via the pointer, since that allows for

        float c;
        if(get(v, &c))
         ...do something with c...

instead of the more verbose

        bool ok;
        float c;
        c = get(v, &ok);
        if(ok)
         ...do something with c...

<comment><USER8> I think it is a matter of being consistent. Both ways have certain syntactic dis/advantages.

The first one enables you to have the function call directly in the if statement, but requires you to define a variable beforehand.

The latter gives you the option to check the return value, pass a NULL, if you don't need it for example, and use the return value directly.

</comment></comment><comment><USER9> This is an interesting corner case but I'd like to see a practical piece of code that actually causes this issue when compiled and executed. The example code is quite contrived and compiler warnings should be raised.

Further, does the signalling NaN behavior happen with SSE (or NEON) or is this an x87 issue?

<comment><USER10> The default behavior in every OS with which I'm familiar (this is specified by IEEE-754) is for x87, SSE, VFP and NEON _not_ to trap on signaling NaNs. You have to explicitly unmask the invalid floating-point exception in order for this to trap. All that would happen with the default floating-point environment is that the invalid flag would be raised in FPCR.

IIRC, FSTP st(0), to simply clear the stack without using the result as discussed in the article, doesn't even generate #IA, so it can't trap _or_ raise invalid (it only generates #IA when the store converts to a smaller FP type (fun fact: this is so FLD/FSTP could be used to implement memcpy way back when))

</comment></comment><comment><USER11> Is this really undefined behavior? The C spec says (126.96.36.199) "If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate." The fact that the indeterminate value could be a signaling NaN is a feature of floating point numbers, not C.

<comment><USER8> The example shown in the article is in fact undefined behavior:

 _126.96.36.199,p2 If the lvalue designates an object of automatic storage duration that could have been declared with the register storage class (never had its address taken), and that object is uninitialized (not declared with an initializer and no assignment to it has been performed prior to use), the behavior is undefined._

<comment><USER12> The funny thing is, returning it just to discard it constitutes "use", apparently.</comment></comment></comment>


Research papers in the .NET source - <AUTHOR> http://www.mattwarren.org/2016/12/12/Research-papers-in-the-.NET-source/ <comment><USER2> The papers are great, a lot of research has been done in this area despite the closed nature of .net prior to the recent open sourcing. Too tough to summarize in one comment but I want to add a few things for anyone thinking of checking them out.

I firmly believe .NET poses a fantastic programming environment for anyone to build systems, applications, the back bone of companies on top of. I think its significantly better than Java and has received much better support form Microsoft than the Java eco system and the JVM has from Oracle.

Functional languages like F# are allowing startups to build systems quickly that can scale from 0 to millions of users and I think this whole eco system, now that its open, is due for a renaissance.

<comment><USER3> > I think its significantly better than Java and has received much better > support form Microsoft than the Java eco system and the JVM has from Oracle.

Several of these papers that you are giving as evidence for Microsoft's better investment are actually about research done into the JVM, by Oracle.

I would guess, but can't really prove, that Oracle invests more money into VM research than anyone else in the world.

<comment><USER4> You may be right about Oracle, but I certainly can't tell from the VM offerings they put out.

<comment><USER3> Do you really think the engineering in the JVM is that bad? I can't think of many VMs that have the technical capabilities that HotSpot or Graal do. The CLR doesn't even do basic speculative optimisations. Maybe Azul Zing or J9 are comparable in terms of the advanced techniques they use, but would you really put the Oracle JVM that far behind? I'm not sure there's any sound technical basis for that.

<comment><USER4> I don't believe the strengths of the JVM are due to Oracle's efforts.

<comment><USER5> Who do think pays the salaries of those engineers?

<comment><USER6> It's more that a lot of the work people admire was done before or close to the acquisition date and therefore probably should be credited to Sun.

That said, I'm not sure why things like speculative execution in the JVM context get such play as dark magic when it seems like the JVM and CLR are pretty neck-and-neck in terms of deliverable performance when we get down to the level where we're not affected by larger architectural differences.

There are a lot of different ways to get high performance code from a VM environment. But to hear many people tell it the JVM is the only competent one. I'm just not sure the evidence bears that out.

<comment><USER7> Evidence: JRuby, Clojure, Groovy are dynamic languages that have been successful on the JVM and that simply can't have the same performance on the CLR for obvious reasons. Microsoft tried investing in IronPython and IronRuby but failed. Furthermore a language like Scala can have a type-system that diverges from that of Java (e.g. higher kinded types) without taking a hit in performance.

It's not dark magic, it's just good engineering. And the evidence is there in plain sight.

<comment><USER6> I'm not sure I believe what you're saying is true. I'm a full time Clojure dev and let me tell you, if I give a damn about performance I avoid a lot of the cool parts of the language.

And it gets even more severe with Scala.

As Ruby should demonstrate, languages succeed because the community wants them. Not because they have specific performance characteristics.

<comment><USER8> Hi sorry for off topic question. But how do u feel about clojure ? I am a python developer and really interested in clojure. Do u think it's worthwhile learning ?

<comment><USER6> Could you define "worthwhile?" Learning lisp is great if you want to be exposed to new functional programming ideas.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Just for fun I searched for "pdf" and "paper" in the other popular .NET JIT runtime, and here's what I got:

        - SSAPRE: https://github.com/mono/mono/blob/0bcbe39/docs/ssapre.txt#L249
        - Dice, thin locks: https://github.com/mono/mono/blob/49c26ad/mono/metadata/monitor.c#L51
        - IBS Tree: https://github.com/mono/mono/blob/0bcbe39/mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryIntervalOp.cs#L10
        - Huffman tree: https://github.com/mono/mono/blob/0bcbe39/mcs/class/referencesource/System/sys/system/IO/compression/HuffmanTree.cs#L16
        - GC survey: https://github.com/mono/mono/blob/0bcbe39/libgc/doc/gcdescr.html#L13
        - malloc survey: https://github.com/mono/mono/blob/0bcbe39/mono/utils/dlmalloc.c#L1501

<comment><AUTHOR> Ah good point, I completely forgot about searching in the Mono source, thanks for doing that

</comment></comment><comment><USER10> This Midori project looks interesting: [http://joeduffyblog.com/2015/11/03/blogging-about- midori/](http://joeduffyblog.com/2015/11/03/blogging-about-midori/)

<comment><USER11> It sounds absolutely fascinating, but it's a little sad that it did not go beyond the research stage. Like building a flying car and then hiding it in a garage. I understand how difficult it would have been for Microsoft to turn Midori into a product, but still I would like to see what that would have been like.

<comment><USER12> I don't agree. I think it's one of the strength of a large corp like MS. They are able to separate research and prototyping from product development. You don't turn a research project into a product. You learn from it and incorporate it into your products

<comment><USER11> I think they could have turned it into a product if they had wanted to.

They had, however, a very, very good reason not to - it probably would not have been backwards compatible with Win32, so the huge amount of third-party software that exists today could not have run on it. And that - whether one likes Windows or not - is a very compelling selling point.

So things they learned building Midori will trickle back into the Windows/.Net world. I agree that that is what a good research department is for.

But still, it would have been nice to take Midori for a test drive and see what it would have been like.

</comment></comment></comment></comment><comment><USER13> As the first comment to Original column from Tomas Patricek pointed out, here is a link to research publications related to F#.

[http://fsharp.org/teaching/research.html](http://fsharp.org/teaching/research.html)

</comment><comment><USER14> Has anyone done the same thing for the patents? They won't be as readable, but I would assume there are far more disclosed inventions developed by the .NET teams than academic papers (and you'd have to search the USPTO database instead of the .NET sources).

<comment><AUTHOR> I did think about adding this to the post, but I thought it was long enough already. I only got as far as this google search [https://www.google.co.uk/search?tbo=p&tbm=pts&hl=en&q=ininve...](https://www.google.co.uk/search?tbo=p&tbm=pts&hl=en&q=ininventor:Microsoft&num=10#hl=en&tbm=pts&q=ininventor:Microsoft+.NET+CLR), so seems like there is a few</comment></comment>


The Facebook Founder Who Unfriended America - <AUTHOR> http://www.bloomberg.com/news/2012-05-17/the-facebook-founder-who-unfriended-america.html

<comment><USER2> Should we really blame individuals for 'evading taxes' when it is not illegal? Instead why don't we just give some respect to those who actually do still continue paying taxes (like Zuckerberg) who could probably escape more if they wanted to.

The real problem for the democratic welfare state is a global system that makes it easy to avoid tax by moving to a tax haven. That is not any individual's fault...

</comment><comment><USER3> its business, its not personal.</comment>


Why does stubbing your toe hurt so much? - <AUTHOR> http://www.wired.com/2015/04/stubbing-toe-hurt-damn-much/

<comment><USER2> tl;dr lots of nerve endings and large mapping on the brain</comment>


Ask HN: Why is LinkedIn's website so slow? - <AUTHOR> Since LinkedIn launched its new website, it has become unbearably slow — especially in Firefox, but also in Chrome. Even simple things, like clicking on the notification icon (which lights up for the dumbest things) takes many seconds to load a new page. Of course, checking notifications should probably be a dropdown instead of taking me to a separate page. But regardless, a new page load should never take this long.<p>How is it that such a well-known tech company can have such a slow website for its main product? <comment><USER2> My theory is that they have little incentive to improve performance. All of your professional network is there, and it's not like there's another website with nearly as many people on it for that purpose. So you will use it no matter how crappy the performance may be, because that won't negatively affect their revenue nearly as much as an e-commerce website.

</comment><comment><USER3> FWIW, doessn't take that long for me by a long shot; sub-1sec page loads across the site.

<comment><AUTHOR> I figured this had to be the case for some folks, otherwise it would have been fixed long ago. I'd be curious to know what your setup is. I'm running Mac OS Sierra on a 2013 MBA, connected via Comcast in the heart of Silicon Valley. My computer isn't a speed demon, but it's also not a slug. LinkedIn is by far the slowest website I visit with any regularity, and I have tried script blockers and such to no avail.

<comment><USER4> From here in Australia, on an i7 with 16Gb RAM, using the gigabit link in my office, I see multiple second loading screens with the circular "loading" animation in both Chrome and Edge. It's by far the slowest site I've looked at on a regular basis.

<comment><AUTHOR> You see a circular loading animation? For me, it's a horizontal bar with a blue bit that dances left-to-right.

<comment><USER5> I see the horizontal loading, and it is also very slow (30 seconds + in some cases)

</comment></comment></comment></comment></comment><comment><USER6> Because Microsoft owns it now.

All jokes aside, the important parts of the linkedin pages load in under 2 seconds for me. I'm using chrome without any extensions.

</comment><comment><USER7> What are you using to test it and examine all the different scripts that they are loading?</comment>


Helps finding a theme/design by listing just screenshots from all marketplaces - <AUTHOR> http://thethemelist.com

<comment><USER2> Great idea!

If only searching on your site brought up exactly the same themes as searching on Themeforest (eg: searching for "Landing Page" on Themeforest returns 150 results while doing the same on TheThemeList brings up just 6).

<comment><AUTHOR> that's probably because i don't scrape the full descriptions, just the tags. thx for pointing to it, will look into it.

<comment><AUTHOR> turned out the marketing section of themeforest wasn't included, now it is

</comment></comment></comment><comment><USER3> The site renders extremely slowly in Safari 5 on my MacBook Pro; especially the autoscroll.

<comment><AUTHOR> the rendering for masonry is pretty heavy, i know. quite like flash ;)

<comment><AUTHOR> forget to mention: you can switch off the scrolling by clicking 'autoscroll off' in the bottom right corner and get a normal paging which is more friendly.

</comment></comment></comment><comment><USER4> This is brilliant and I could have used it many times!

<comment><USER5> Second that. Not having to click-look-back-etc really does save a huge amount of time!

Although I have to say that I don't like the hover. I think it would be better if clicking enlarged the theme with the buy/demo/etc buttons on top.

</comment></comment><comment><USER6> Truly clever idea. Thanks.</comment>


Infinity:Battlescape – From a stunning 3D Engine to a polished space MMOG - <AUTHOR> https://www.kickstarter.com/projects/309114309/infinity-battlescape <comment><AUTHOR> This is about a 3d game engine, that has been developed for about 10 years. Most of the time by one person. Now he was building up a company called INovae Studios and wants this engine to become the game "Infinity:Battlescape".

In the kickstarter you can find videos of a working prototype that already shows of the beauty of this engine and how well it manages to handle the large scales in space.

<comment><USER2> Oh yeah? ... yeah looks cool indeed.

</comment></comment><comment><USER3> \- _real_ seamless planetary transitions

\- solar system scaled battles !

\- space combat with fighters an capital ships !

\- I guess that means strategy... like fight for resource and strategic positions ownership ...

This is going to be SOOOOOO great !

</comment><comment><USER4> I'm so excited about this game and the tech behind it! This needs more exposure! We need more games made with this kind of tech!</comment>


Uber 'Express POOL' offers the cheapest fare if you'll walk a little - <AUTHOR> https://techcrunch.com/2017/11/10/uber-express-pool/ <comment><USER2> From the comments: "I tried it out earlier this week after work, leaving from Mission/New Montomomery. Told me to meet at 5:30 on a street corner for the car. The driver was 20 minutes late, didn't know that the feature was in use. I was the only one in the car, but I was told I would be dropped off maybe a 10 minute walk away. We both agreed this was silly, and the driver just dropped me off at my place, which was nice."

</comment><comment><USER3> this article reads like uber just invented the concept of a bus stop, though I'll totally use this feature. In fact, uber should just stop at the actual city bus stops! I take the city bus all the time and I love the non- conversation rule the subway and bus have, but not uber. You have to make small talk with the driver and the other people you are sharing the car with sometimes! How about an app to just replace the city bus. It's exactly like the current Bus system except each driver uses their own van/shuttle and has a smart phone that can actually tell you exactly when the next bus is coming.</comment>


Evolution Strategies as a Scalable Alternative to Reinforcement Learning - <AUTHOR> https://blog.openai.com/evolution-strategies/ <comment><USER3> I feel like this is more an argument against the efficiency of flat (non- hierarchical, not model-based) Deep Reinforcement Learning than an argument for Genetic/Evolutionary Algorithms. As in, if you're not solving a task more efficiently than Evolutionary Algorithms or more difficult than they can handle, you're not doing something right. Similar to how Deep PCA and Deep Random Forests blew ConvNets out of the water on basic benchmarks like MNIST, but couldn't compete on larger datasets, indicated the proof we should require before getting excited about a new technique.

<comment><USER4> Not sure where you're getting this from, but CNNs are definitely still state of the art on MNIST. Papers often cite outdated CNN numbers; in fact the best published CNN accuracy numbers are probably lower than they could be - <USER2> MNIST for supervised learning is a pretty useless benchmark for computer vision researchers now.

<comment><USER3> My bad, I should have been more specific. The Deep PCA paper shows superior performance not on baseline MNIST, but on the MNIST variations.

I also agree that vanilla MNIST is pretty useless for Computer Vision researches and was trying (awkwardly) to support that idea by showing how these other non Deep Learning techniques performed equally well.

<comment><USER4> The Deep PCA paper shows no such thing. They've cherry-picked bad CNN baselines. The red flag for me is that the "state of the art" methods they compare to achieve > 1% test error on vanilla MNIST, which is totally wrong since CNNs routinely achieve <0.5 % test error (even by the standards of 2014, when the paper was published).

</comment></comment></comment></comment><comment><USER5> Policy search is very effective. This is not a new finding as this article seems to suggest in the abstract.

Variants of ES have been used for years ([http://dl.acm.org/citation.cfm?id=1645634](http://dl.acm.org/citation.cfm?id=1645634)). The article seems to ignore almost all the work in robotics, e.g. from Jan Peters' research group ([http://www.jan-peters.net/](http://www.jan- peters.net/) -> publications).

The good thing is that we have one more paper that justifies this research direction and a little bit more public attention.

</comment><comment><USER6> Great write up.

I had a similar example in my 20 year old book 'C++ Power Paradigms' in which I used a genetic algorithm to train the weights in a recurrent network. As a performance hack, weights were initially represented by just a few bits, and the bit length would gradually be increased, which greatly increased the search space. I never got this to scale past small networks, but I have thought of revisiting my old code since I have a lot more computing power available now, compared to 20 years ago.

</comment><comment><USER7> I'm not an expert but for me it's seems that the proposed approach doesn't compute the value function . By optimizing directly the policy function aren't we losing some key ingredient for generalization? I mean could this algorithm be used in a fully non deterministic environment ? Like human vs machine?

<comment><USER5> I am not sure at the moment. I guess the main problem of ES in a complex non- deterministic environment is that it would average over multiple local minima that occur in one generation which would result in a non-optimum solution. There are policy search methods that address this problem (e.g. VIPS [https://scholar.google.com/citations?view_op=view_citation&h...](https://scholar.google.com/citations?view_op=view_citation&hl=de&user=GL360kMAAAAJ&citation_for_view=GL360kMAAAAJ:IjCSPb- OGe4C) , hierarchichal REPS [https://scholar.google.com/citations?view_op=view_citation&h...](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=PxgVi0cAAAAJ&citation_for_view=PxgVi0cAAAAJ:u5HHmVD_uO8C)).

Temporal credit assignment is another problem: the policy is updated after a full episode and there is no way to use the information which step was responsible for which reward. Policy search usually works well if the value function is very complex and the optimal policy is simple.

</comment></comment><comment><USER8> > we were able to solve one of the hardest MuJoCo tasks (a 3D humanoid) using > 1,440 CPUs across 80 machines in only 10 minutes. As a comparison, in a > typical setting 32 A3C workers on one machine would solve this task in about > 10 hours.

So using 80 times more machines makes you 60 times faster (assuming those are the same machines) "while performing better on 23 games tested, and worse on 28"[0]?

[0] The paper for this blog post [https://arxiv.org/pdf/1703.03864.pdf](https://arxiv.org/pdf/1703.03864.pdf)

Asynchronous advantage actor critic (A3C) [https://arxiv.org/pdf/1602.01783.pdf](https://arxiv.org/pdf/1602.01783.pdf)

</comment><comment><USER9> "A Field Guide to Genetic Programming" ([https://www.amazon.com/Field-Guide- Genetic-Programming/dp/14...](https://www.amazon.com/Field-Guide-Genetic- Programming/dp/1409200736)) is one of the better books I've read on the matter (but I've yet to read anything by Koza). W. Langdon's webpage ([http://www0.cs.ucl.ac.uk/staff/W.Langdon/](http://www0.cs.ucl.ac.uk/staff/W.Langdon/)) has a lot of great information.

<comment><USER10> Evolution Strategies is not an example of Genetic Programming, and that book by Langdon doesn't cover anything directly relevant to the linked article.

<comment><USER9> You're right, I'm sorry.

</comment></comment></comment><comment><USER11> Reading the code; I dont get get: 1\. How to model the different actions

2\. Tie future awards to action at this timestep...

Can anyone help with better nitty-gritty explanation ?

<comment><USER10> The example code inline in the article just illustrates the basic idea of Evolution Strategies (ES), not their new work in applying ES.

The behavior of agents is determined by a "policy function". This function takes in inputs (e.g. what the agent sees) and outputs actions (e.g. what the agent does). The policy function has a set of internal parameters that determines the precise mapping from inputs to outputs.

In their work, they used a neural network as the policy function. The parameters are just all the weights of the network.

In a simple version, you start with some random weights for the NN. Then you make many copies of the network, each with a slight random variation made to the weights. For each of these altered networks, you use them to control an agent for a while, and see how well the agent performs during that trial period. Based on how well the different variations do during their trial runs, you adjust the weights of the network a small amount. You adjust the weights to be more similar to the variations that did well. Then you repeat the process indefinitely (generate new variations, test them, etc.).

<comment><USER11> Very good sir ! Makes more sense now ! Thank you.

</comment></comment></comment><comment><USER12> This is a fantastic summary of both RL and ES (know as genetoc algorithms too). Kudos to authors!

<comment><USER13> While they're in the same general family of black box optimization algorithms, ES and GAs are not really the same, and in fact were developed independently. The historical roots of both are actually quite interesting.

<comment><USER12> Thanks for correcting me, I appreciate it! This is a nice summary of differences: [0].

[0] [http://stackoverflow.com/questions/7787232/difference- betwee...](http://stackoverflow.com/questions/7787232/difference-between- genetic-algorithms-and-evolution-strategies)</comment></comment></comment>


TBray Response: Sun Should Stop Sucking - <AUTHOR> http://kirkwylie.blogspot.com/2008/11/tbray-response-sun-should-stop-sucking.html <comment><USER2> Sun want to sell servers. They can either become a commodity box-shifter on razor thin margins, or they can make their products better so customers want to pay a premium.

To make their boxes better, they'd have to come with pre-installed server software, all the normal stuff you'd see on a web server, and tightly integrate the OS / file system / database so that (e.g.) MySQL is running very fast.

Kirk Wylie is right that no-one cares anbout Solaris anymore. If they'd open sourced it ten years ago, things might be different. But today, Linux is king on servers. I use Ubuntu on the desktop; I use it on the server too out of convenience -- I know that i can install new package on both systems in exactly the same way using apt-get, I know that the diorectory structure is the same, I know that I can test a feature on my desktop then port it to the server without getting wierd incompatibility problems.

The only way I'd consider using Solaris is if it worked exactly like Ubuntu, i.e. make the Solaris kernel a plug-in replacement for the Linux kernel in the Ubuntu distro. Fortunately, such a thing exists: [http://foss- boss.blogspot.com/2008/11/nexenta-can-you-say-so...](http://foss- boss.blogspot.com/2008/11/nexenta-can-you-say-solabuntu-part1.html)

Then, in order to be a one-stop shop, Sun should get into the hosting business, setting up datacenters around the world running their hardware/software solution. They could even do a system that automatically mirrored a web server at different locations around the world to make it more resilient.

<comment><USER3> On servers, Solaris is better than Linux. DTrace, ZFS, Zones, resource management framework, RBAC, service management framework, among other things, are all better. Solaris already has most of the Linux userland available. A lot of it is even installed by default; it just isn't in the default PATH. If you change your default path, you can get access to a lot of the inferior Linux tools that you are used to.

Yum and apt-get are better at patching and package installation than Solaris tools. However, the experience on Solaris isn't so bad that the whole OS has to be thrown away because if it. Besides, when IPS is released Solaris's package management will be better than both Yum and apt-get.

<comment><USER4> > "Solaris is better than Linux."

That's a very blunt statement of fact.

Yes, DTrace is great. ZFS has a lot of greatness if you overlook the bugs production systems have had (see: Joyent) to fix still (systems down for a week while they hand-fixed the FS - Yeah, fun stuff). Zones are cool, but has its drawbacks (and advantages) when compared to something like Xen.

> "A lot of it is even installed by default; it just isn't in the default > PATH."

Uh, you know that when people talk about "Linux" they really mean "common GNU/Linux distributions such as Debian/Ubuntu/Fedora/RHEL", right? You realize they mean more than gmake and gfind and gcc, right? Sorry, Solaris has absolutely nothing like the apt repositories available on Ubuntu (I know they're working on this, but that is still the not-so-stable-or-bug-free OpenSolaris, and it still isn't anywhere close, and we're talking about today, right?). Can I pull down svn, git, mercurial, bzr in a simple command? How about lighttpd, nginx, haproxy? What about a recent vim and emacs? Recent memcached, python/perl/ruby client for it? Those are all basic and well known, that isn't even the hard stuff. What about something a little more specific? PostGIS, GDAL, Proj? I can grab all of those on Ubuntu in a few seconds.

And of those you can compile from source yourself on Solaris, you'll find many a quirk because the project maintainers tend to run either a flavor of Linux or FreeBSD.

Yeah, Solaris is "better than Linux on servers", and my time isn't worth anything.

<comment><USER5> _I can grab all of those on Ubuntu in a few seconds._

You're absolutely right, but when it's time to do something _serious_ \- in the Cal Henderson, irony laden, finger quote sense - you'll recompile them just the same.

<comment><USER4> I will?

Sorry, I've never bothered to recompile svn or python or many other things that my Linux install comes with. And I've use them every single day. For money. To feed my face hole.

Yes, when the time comes I _can_ recompile anything on Ubuntu, but you know what? I'll take their already existing package, add patches, and easily create a .deb I can distribute among all the machines I use. Based on the existing package, with existing Ubuntu patches added that fix existing problems for me. Rather than going from scratch all alone in Solaris land.

<comment><USER5> For the purposes of this discussion nothing you've mentioned falls under the _serious_ banner. I mean no snark at all in saying that - just that those with half a dozen 12 CPU boxes packed with nearly 200Gb of RAM tend to be cutting their own path.

</comment></comment></comment></comment></comment></comment><comment><USER6> There seems to be some Sun-focused FUD and Linux-focused fanboyism flying around here and on Kirk's blog. Obviously, that's no way to evaluate competing solutions. We need facts. We need apple to apple comparisons of hardware and operating systems, where we can get them.

Of course, every /serious/ business can and should get into the details, but for the sake of argument, I invite you to compare a couple apples from the barrel: Sun Microsystem's Sun Fire X4150 (used by Kirk's site), and Dell's PowerEdge 1950 III.

They support /very/ similar hardware options (rack units, CPUs, memory, network, internal storage, out-of-band management, power, expansion slots, etc.), have roughly the same price depending on options (~$7500), and run roughly the same major software (Linux, Solaris, VMWare). Based on that one example, I don't see how Kirk justifies decrying Sun.

I could go on with more hardware or a light comparison of Solaris vs. Linux, but you get the point. Stop with the hyperbole and try presenting facts in a digestible format.

<comment><USER7> After pointing out that the author of the article is too biased in favor of Linux to do an honest comparison, you then base your substantive critique on the argument that Sun hardware really isn't more expensive than the X86 hardware web shops use to do the same job.

My question is, do you actually believe that?

</comment></comment><comment><USER8> I wonder if the high prices are something we "normal" guys simply can not understand. Maybe they just trigger the "reassuringly expensive" button at companies that don't care about money. Or there are some complicated tax evasion schemes or whatnot at work, that make it mandatory to waste some money.

I've witnessed it for years in the Java world where every application had to run on Bea Weblogic and Oracle, when Open Source applications would have been available and actually were more suitable to the task.

Also, it seems to work for Apple...

<comment><USER9> "Also, it seems to work for Apple..."

I see irony here, in that I'm old enough to remember when Sun was killing because everyone needed high end server hardware to get on the web and so Sun could charge a good premium, and Apple was getting killed because they were trying to sell a premium product into a market that had been commoditized by the PC.

Interesting how things change. I'm not sure what the equivalent of the "Apple strategy" would be for re-establishing a premium brand in the server space.

<comment><USER10> Correction: everyone _thought_ they needed

<comment><USER11> I was around during the dot-com bust, and this little piece of revisionist lore always irks me. Something called "Linux" existed in 1998-1999, but it is not the "Linux" you know today, and when stacked up against Solaris running on Sun hardware, it didn't really work. People wanted to run their entire back- end on a single system, and that single system pretty much _had_ to be a Sun E10000 running Oracle, because nothing else could scale up as high. The LAMP- stack scale-out style of system-building had not been invented yet.

<comment><USER10> I agree with you that people liked scaling using a single big machine back then, and Sun had the biggest and best machines (and still does to some extent).

The problem is more that a ton of those people didn't actually need to scale.

<comment><USER12> No-one _planned_ not to need their servers...

</comment></comment></comment></comment></comment></comment><comment><USER13> Sun is just a bunch of really smart developers surrounded by a bunch of fairly bozo sales and marketing folks, and headed by no one with a real vision.

They might as well give up.

"Without a vision, the people perish." (quoting scripture)

Sad, too, as I remember the early Sun quite well (at the 10-15 people phase), as they were a neighbor of ours in Mountain View, and we (Imagen, later QMS) swapped early laser printers for early Sun workstations.

<comment><USER14> Misquoting a mistranslation of scripture, unfortunately. (The actual proverb seems to mean something like "without prophecy, the people cast off restraint", which is both less poetic and less sensible.)

</comment></comment><comment><USER15> I think Sun should offer Sparc chips at half the price of Intel chips.

</comment><comment><USER16> everyone keeps talking about what sun should or should not do. no one talks about how they will actually do any of it. sun is barely surviving; they don't have the money to do much.

</comment><comment><USER17> Sensible response.

<comment><USER18> Is it?

The rebuttals don't seem to align at all with Tim's statements... And the "What Sun Could Do" seems to boil down to: sell more hardware and storage... Doesn't seems like a killer strategy to me.

<comment><USER14> Maybe they don't _have_ a "killer strategy". They've been struggling for quite a while. It seems pretty plausible that the best they can hope for, for now, is a "survival strategy".</comment></comment></comment>