skysight-inc/HackerNews huggingface dataset:
I've worked as an engineering consultant for 10 years. Here's the best algorithm I've come up with.

1. Guess how many hours you think the project will take to complete. (This is hard.)

2. Guess the highest number the client will agree pay for the project. (This is also hard. I find that saying things like, "Do you see this as a small $5000 project or a more substantial $50,000 effort?" is useful.)

3. If that results in an acceptable hourly rate for you, propose this as a flat fee to the client. Otherwise, figure out how to make the project smaller or leave.

4. Do the project and bill the client with an invoice that makes your hourly rate clear. (If the project takes longer than you expected, give the client those hours for free. If the client tries to add more stuff to the project, refuse to do those things under this contract.)

5. Now you've established an hourly rate with that client. If you did a good job and the client is reasonable, you can now do future projects on an hourly basis.

Eventually, you will want to raise your rates, which is hard to do. I've found it easier to just make higher flat estimates, and then finish them faster, making my effective hourly rate higher. The key here is that people balk at $XXX per hour, but they'll often pay $XX,XXX at that rate if it's for something they need.

There's definitely the risk with this algorithm that you will charge too little and work too long. I think the hard truth is that even "hourly" projects are usually charged a flat fee, plus or minus a few percent, because most clients aren't lying about their budgets. If you estimate a project at 100 hours at $150 per hour, they will expect you to complete the project for something very close to $15,000. If you end up saying, "Well, that was just an estimate. It actually took 200 hours, so you owe me $30,000," they might pay, but they won't hire you again, which makes your hourly rate terrible because you have to spend free hours finding a new client.

I think the right knob to tweak in doing work on a project basis is often quality. If you've agreed to do X for $XX,XXX, the price is defined with great precision. The project is not. You should strive to deliver the best results you can, but you can omit the engineering polish you'd like to put in-- finishing on time and on budget is its own kind of polish, and one that people who hire consultants particularly appreciate.

Edit: I should add that putting free polish on a project is often the best sales work you can do.
You can do that with TuxRacer, if you just want to play with the idea. http://tuxracer.sourceforge.net/faq.html#newcourses
You see it whenever someone talks down science using an implementation of science as a medium.
Author of the article here. I'm very big into retrogaming and emulation. This is the first in a series of articles I've given myself as a writing project that seeks to take a slightly different spin from most retrogaming reviews. I'm concerned if the games are still fun in a modern sense, not comparing them to other contemporary games.

While it's fun to try and put on the nostalgia hat and try and get back into the mindset of the day the game or system was released. I'm trying to balance that against a modern viewpoint.

(I'm also planning on reviewing other entertainment media, like movies and television in a similar way).
Virtually disappear. I haven't had a significant memory leak issue for years, and I program almost exclusively in C++.

Scoff if you like, but consider you may not know everything there is to be learned about the craft.
I rather thought that this is exactly the attitude he was parodying - calls to defund seemingly frivolous research, things that have no immediately obvious applicability to the general public such as the space program, etc.
I'll repeat my comment from a different thread:

"I've never really agreed that numbering should start at zero (or at one), I think people use indices way too much and it gets in the way of clarity. I much prefer whole array or list operations with no fiddling with indices and off by one errors. I like Haskell's array API, for example. You can index by whatever is natural in each case and you can always get the whole list of valid indices for an array x by using "indices x". I think that's much nicer, and it's also what D is doing: instead of having a(n implicitly paired) starting and ending iterator to indicate a range of positions like the C++ library does, D's library uses a range object. Basically I'm saying you can represent a range of indices as a pair of indices, one pointing to the first valid position and the other pointing past the last valid one, but that's an implementation detail you don't need to expose, make a range abstraction and you'll be happier."

"I should also point out that mathematicians don't number at zero unless there is some advantage (the default is to start at one), but more importantly, the preferred style in mathematical arguments is to avoiding fiddling with indices as much as possible (since it's so easy to mess something up working at such a low level of abstraction)."
I find it hard to believe that you really think that the tiny hit-target for the enter button on an american keyboard is a good thing. It is one of the most frequently used keys.

If you think hitting the huge left shift button is hard then imagine how hard it is for someone used to a British keyboard to hit enter on an american keyboard.
IMO Super Mario Brothers on the NES is the oldest 'home' (console or PC) videogame that is still legitimately fun to play

That's exactly one of the questions I'm trying to answer in the article.

That last time I physically played an Odyssey I must have been 5 or 6 years old, so I wrote this looking for reviews by others, as well as other source material.

Turns out that in this case, most modern gamers don't like the system. In the edited reviews they describe it in rather unflattering terms.

But I linked to a behind the scenes video I managed to find from one of the reviews and the players, while going completely off script and not really playing the rules of the various games, had what appears to be an outrageously good time with the system. That combined with the video from the Smithsonian and the legacy of how much the Odyssey just got dead right with respect to defining a gaming console is what made me give the system rather than individual games such a high score.

Individually, I have to agree with you, there are many many old games that I loved as a kid that simply aren't fun today. I'm trying to suss out exactly where that line is and what defines it.
Yep. Hot code loading is something I do every day in Erlang and couldn't live without :)
Thank you, RTM and PG!!
Also, :wq always writes; :x only writes when the buffer is modified (like :up | q).
That is the first time I've seen WebGL: what a mess.

Don't get me wrong, I'm certain there is a segment of this community and the web-dev population at large that is thrilled by its standardization, but yikes.
To be completely honest I stopped reading when I saw the picture of a man with a big automatic weapon.

Well known person or not, advices and weapons do not go together.
Entrepreneurs especially are prone to the ups and downs of life, as they have enormous stake in their startup
Like when Sarah Palin decried fruit fly research in a portion of a speech where she was talking about the need to fund autism research.
I'm in Buenos Aires, Argentina and HTTP requests to that IP don't work either with or without my US proxy, so i'm not sure if that IP is correct. According to reddit the point was to block www.leakymails.com which is at 216.239.32.21. Let's try that:

$ host www.leakymails.com
www.leakymails.com has address 216.239.32.21

NO proxy, open chrome to IP - can't connect

with US proxy, open chrome to IP - google 404 page (normal - presumably because of no host header)

NO proxy, chrome to http://www.leakymails.com - can't connect

with US proxy, chrome to http://www.leakymails.com - works

So probably the google article left the 1 off of the last digit; .21
And that's why change requests were created. Also, be sure not to make the scope fungible, because the last thing you need as the worker is for the client to say "oh, we don't want that functionality any more, we want this instead, that should be the same effort".
Right, it makes sense when dealing with machine code and when making the compiler do extra work for you (converting one-based to zero-based indexing) would be too much work for the compiler implementer or is too slow (like on machines back in the 70s and 80s) or it would abstract too far from what is happening underneath the hood, possibly leading to errors.

But like many features of programming languages and operating systems (case-sensitivity, global menu bar, python's colon...), zero-based indexing is something that made perfect sense in the context and time in which it was originally designed and implemented, but it's really no longer necessary in most cases today, and only survives because of tradition and blind cargo cult-like copying of what others did before.
Funny you mention joysticks vs. modern controls. I find that I love d-pad like controls, but loath joysticks. I find I have more fun even with older games if I play them with a d-pad. However, I almost can't stand analog sticks and would take a proper joystick over one any day. I wonder if it's a function of the first set of controls we grew up with?

FYI There's an MSX reddit that's looking for members and discussion.

http://www.reddit.com/r/msx
Maybe 4 years at Microsoft is enough to tell if you have what it takes, but I doubt it. If you work elsewhere you can find yourself moving backwards if you're surrounded by poor practises, particularly early on in your career.

My programming wasn't much cop to begin with and declined in the first 4 years of my career. After 8 years it leaped forward when I read Code Complete (by Steve McConnell). Only later on, when I was maintaining other peoples code rather than writing from scratch, did I realise the pain I had been inflicting on others earlier on.

Another leap occurred when I found myself as the most senior programmer in a (small) company - when the buck stops with you, you're forced to stretch. My every day programming has also been improved by my attempts at architecture.

Its taken me about 15 years to feel reasonably confident and I can't be the only slow learner out there. So although I disagree with Jeff Atwood that you either have it or you don't, I suppose he does have a point - it was largely non-programming tasks that were the break-throughs.

It can be tempting to write-off a junior programmer as having no hope but I was that guy once and I came right eventually - there is hope for everybody.
> Twitter has, to my knowledge, only ever stated the number of accounts, rather than the 7 or 30 day actives.

I can't believe a VC sticking $100m into a social network like twitter doesn't demand very detailed breakdowns on user metrics.
Thanks for the HTTPS-Everywhere ruleset!

I've been using HTTPS-Everywhere for a reasonably long time now (a couple of years?) but this is actually the first time I've added a rule...so if anyone else falls into that boat: all you need to do is save the YCombinator.xml file (linked above, from Mike's GitHub) into the HTTPSEverywhereUserRules folder in your Firefox profile folder, then restart Firefox.

Hopefully that'll save someone else from having to look it up ;)
Seems like overkill to me.
> I learnt that it's in my interest to make a consolation point toward people with opposite opinions in public places

Well, you've just been shown the opposite. By dismissing your own argument - by claiming it is just a matter of random, arbitrary preference - you kind of write yourself out of the conversation. I guess you are less likely to offend, but you're less likely for anyone to listen at all. You may as well have not spoken in the first place.
2..13 2:13 2->13

Again we fall in the trap of endless discussions about bitheads, numheads and charheads.

The bithead will always think in zeros and ones, he is a hardcore c or c++ programmer, and his brain is damaged beyond repair. Avoid all discussions with that kind of specimen.

The numhead accepts both conventions, he is a python or ruby programmer, practical and gets the job done, he may ask why that weird convention but still goes on using it since it solves all his problems as it is.

The charhead is a vb or js programmer by luck, not by choice, he will never understand why we start from zero and will curse everytime he writes a for loop.

I've been in the three camps luckily escaping without any brain damage (I believe) and after 20 years programming I still prefer to count starting by one, like any human being.
Yeah that was the very first thing I noticed, and I have to admit I stopped right there since there was already a typo on the very first lesson
How Discovery Will Drive Transactions
If you don't like your outcomes, change your responses
I should also add that I think this algorithm doesn't solve the problem mentioned in the blog post-- the situation of a seasoned designer working on long, open-ended projects. I think that requires an excellent record of desired results and a trusting client.
That seems to be how they intended people to use it, but that doesn't seem to be how people are actually using it. From what I've it looks like people are using it much more like LJ (or a similar type of blogging network) rather than like Facebook. That is essentially what it does, after all!

Plus, who's actually taken it up? Looks like internet people mostly... who will want handles/pseudonyms. So they put out a service, but they misguessed who would use it and what for. :)
Short haircuts for thick hair| short haircuts for 2011| short haircuts for women
Whether your hair is short, medium or long, these haircuts for thick hair are some that will make the best of your hair type. Thick hair can be a blessing or a curse and that primarily depends on how your hair is cut! You will suffer, fighting your hair daily when your haircut is not compatible with your hair type.
After almost ten years of contracting work as webdeveloper, I have set some simple rules for myself:

* If project is described, specced and scoped well: fixed price.

* I can spec, scope and describe the project with the client; never for the client: most simply don't read piles of specs, misunderstand wireframes and so on. We then have a specced project, which allows me to offer it fixed-price.

* In all other cases, I won't ever work fixed price, because one thing is guaranteed: the noneexisting specs will shift, the wireframes in the head of the client will be "different then you understood them" and you will go over your allocated time, on your own money.

* A middleground solution would be to give a fixed price for the well-known territory (setting up a set of servers, installing, say, Drupal with some wellknown modules) but move over to hourly rates for all the (as yet undefined) custom work.

To sell this to clients, I simply give them a vast discount on hourly rates: after all, the client is carrying the risk.
If a client does not understand this, then I bail out of the project: I can simply not afford to carry the risk of
a) Not getting payed for several months, because of a delay of several months.
b) With every additional 100 hours, seeing your "wage" drop another few dollars. I have had projects, where in the end, I worked for less then I would have made, had I spend these hours working in the MacDonalds. You can explain a client that having their developers carry such a risk, will bring themselves the risk that at a point the developer will simply quit (without pay): leaving the client with a huge amount of wasted time and still no releasable project.
Fright night 2011,megavideo
fright night 2011,megavideo
Ed is trying to influence Charley that Jerry is actually a vampire failure, but when it disappears Ed and Jerry the test sample that is, Charley will be the only real person who may have the answer
What are the top mistakes you make when trying to change your behavior?
Real Christmas Trees Sale Aldershot
A helpful way to think about this, especially when working in languages that have an array slice syntax, is that arrays are like rulers for measurement.

Like a ruler, the array has markers (ticks) going from 0 to N, and the array elements are stored between ticks. So the index numbers simply refer to points, while the array elements have a "one-dimensional" extent.

With that mental model, starting at 0 falls into place very naturally.
Christmas Tree Packages Aldershot, UK
Is That Review a Fake?
I feel most people just aren't emotionally intelligent enough to know how to talk to a depressed person. When they talk to a depressed person, part of them is still thinking about their own lives, what they would do, prior experiences, etc.. but they don't get it.

You really have to know what it's like in their situation. What they faced in the past. What adversities they had to overcome. Why they have that negative mindset. Part of the reason they're depressed is because they feel no one understands them. They feel alone in their thoughts. Listening is key, as is truly being present, understanding first, then responding.

But I think it really shouldn't come down to a scenario where you have to talk to a depressed person... We're such an isolated society. Men, especially don't like to have meaningful conversations with each other - it's taboo. We rather talk about women, or sports. We may be surrounded by many people, have 24/7 access to social networks, but we don't feel connected. Bottling up emotions is not a healthy thing.

Lastly, the only people in this world who really care about you are your parents, and possibly a significant other, maybe siblings too. That's a very lonely harsh truth. I get this feeling sometimes when I sit next to a co-worker, or even a stranger in the train. I always think to myself: this person has no value whatsoever to my life. And I can never have an impact on his... He doesn't care if my startup fails or if I can't find a wife. The fact everyone lives, and dies by themselves really does make me depressed at times.
Ok, why shouldn't we use HTTPS? To me it seems silly that the vast majority of traffic isn't atall encrypted.
The note is really about the best way to specify a range/sequence of integers, not why we start from 0 as an index.

But it is an excellent example of thoughtful reasoning to choose between multiple (seemingly arbitrary) design options. I think we all benefit when language (and API) designers are as thoughtful as this.
"None of this addresses my point, which is that computing is an essential skill."

My first example of something people do that some make a priority and learn to do well was wearing clothing and being stylish. Members of this community have ready access to dress stylishly but I'd wager few do. Somewhere some stylish people can't believe they do that in the same way many people here are suprised people don't know ctrl-f.

Different priorities.
This is a great article, but Firefox chokes on the <?xml ... ?> block at the top, and switches to ISO-8859-1 encoding.

Go View -> Character Encoding -> Unicode (UTF-8) to have the Arabic examples render correctly.
All right, but apart from the sanitation, medicine, education, wine, public order, irrigation, roads, the fresh water system and public health, what have the Romans ever done for us?
a whole packaged deal at https://github.com/astrails/dotvim

tons of extensions and custom bindings. good README.
Well, HTTPS adds latency due to its handshake, and of course it uses more CPU, especially on the server (unless a dedicated SSL offloaders is used).
Had to go to pick up some other stuff and I didn't see any there, but that's a good point. I kind see why people do that, but it's still sleazy (and probably against their employee rules).
And yet on the flipside, it should prevent interception of login credentials or page-content filtering.
Wordpress Initialization
This is great, thanks PG! Only problem for me is that the theme i'm running will no longer work but that's okay, i'm sure they'll update.
You're vastly oversimplifying. In physics and finance, the "initial time" has always been t_0, not t_1. This has absolutely nothing to do with machine code, or with "blind cargo-cult copying". There are intrinsic reasons for doing it this way, which I'll leave for you to ponder yourself, ideally in a quiet room in a lotus position.

Traditions are not always arbitrary. Don't dismiss them until you're damned sure why they've survived, especially when you know for a fact that quantitative fields filled with high-order geniuses haven't bothered to scrap them. "Cargo-cult" thinking is a pernicious influence, but it's exceptionally rare that it's the complete explanation of anything.
Maybe Argentina should do what China does and block anything that resolves to ghs.google.com

By blocking ghs.google.com the blocking country won't be subject to any write ups on an official google blog.
Nifty report of HN's HTTPS: https://www.ssllabs.com/ssldb/analyze.html?d=news.ycombinato... Grade C it seems
Think Python - Python Programming Language
That's what happen when you tie yourself to a company whose business is to tax away income from a movable source. Economics is about learning the rules of the game, not changing it. If it could be changed, than the economists would look for what can't be changed. And then optimize for that.

As if it is good thing the company moving to a no tax country. From the point of view of the company's clients, it actually would, since it would mean that its products have the potential to be the cheapest of the market.
Nasty. But it's the same for substring text offsets, array indices etc in Postgres.
That's exactly what I did - loaded the machine with some odd shaped component, again and again, as fast as I could. And somebody looked at what came out for quality control, then that was packed onto a pallet, and forklifted to somebody who loaded that stuff into another machine, or to a truck. Otherwise, robots (or dumb machines) have always done the lot.