skysight-inc/HackerNews huggingface dataset:
OK, but how on earth would you know if FB employees are fairly compensated or not? I have only a single data point but a friend, surely between 7 and 12 years experience in the industry, is earning a base around $150k w/ a Sr Engineer title. Now, I have no idea what his equity grant is specifically but a $150k base is, IME, competitive for somebody with that level of experience. I'm closer to 15 years myself but that is more than I was making with similar experience and title.

My take on this is pretty simple: There are very few labor markets I've heard of that are as liquid as software engineering talent in the bay area. If Facebook was paying below market rate salaries and trying to use their equity grants as justification, I think they would face a lot of difficulty recruiting top talent. Because the companies Facebook competes with ALSO have the equity card to play. And in fact, until recently, you could argue FB equity was not nearly as attractive as some of FB's major competitors. Specifically, they were underperforming publicly traded competitors like google, apple, linked in, and netflix, and they are at a disadvantage compared to non publicly traded companies simply because the potential upside is more limited. As an engineer you'd probably make more money in equity joining Twitter today than FB. Facebook's stock has plenty of room to grow, but to what? Possibly it will double in the next year, and triple in the next 5 years. Possibly. Compare that to the under-$20 strike price you'd get joining Twitter today and it's not as attractive.

All that said, I bought a few hundred shares of FB in the mid $20's and still see it as a good investment.
It was at a magnet school, as were the C++ and OOP classes. The class was self-paced. I was the only student. We only had about fifteen three-hour lectures before the prof basically said, "and that's all I got." Book was about 1k pages. Drained it. Totally forgot the title, but it was definitely a university text on MIPS and microarch. There was a class in OS's, data-structures, and probably some others that I could have taken instead. I had long been trading AMD and other tech stocks and naturally had a huge preference for anything hardware. Data Structures would have gotten me closer to writing meaningful programs faster. It's not clear that had I focused more on high-level programming, especially with scripting languages, that I would have had the willingness to approach lower-level tools and programming languages over the years. My time at the helm of scripting languages has made it very efficient to tool around with various highly abstract constructions in OOP, API writing, and also making money. My ongoing trip back into the low-level these days is what gets me excited.

For the record, I highly recommend magnet schools. I highly recommend supporting increased education spending, founding companies that focus on better value for education, and especially projects like MOOC's that can offer more selection while bringing down geographic barriers. Offering only Fordist institutions from last century is inexcusable.
Night owl or early bird? New research suggests biological factors.
With a pretty default nginx setup as a proxy in front of node, it does not affect earlier versions for me.
It sounds like the person is making the best of bad ingredients. This board sounds pretty inherently dysfunctional and he's come up with a structure to mitigate that. I wouldn't say this is a great structure to mandate with any board.
There's at least about 20 Commodore 8-bit BBSs up currently, http://cbbsoutpost.servebbs.com/ and I'm sure more are out there as there have been recently developments in creating Hayes compatible internet devices.
Hmm. I just posted this Ask HN: https://news.ycombinator.com/item?id=6574962
I faced this issue myself. Then I realised something:

I wasn't striving for anything.

People face problems when they have an ambition. They want to get from A to B and the process in-between is often messy so they use software or information to make it less messy.

What I'd suggest, then, is to start picking up hobbies for the sake of having hobbies. I started going to the gym, for instance, and have thought of much better ways to create a workout tracker.

I started writing novels a couple of years ago and have the insight into making a better application for novelists.

When I started traveling, that also sparked ideas.

Stop thinking about solving a problem. You should really focus on giving yourself problems. Be a beginner again. Create an imbalance in your life, then resolve it.

:)
Granted sticking nginx in front presumely won't help with this issue. Just keep feeding a 4GB file to it and it will crash the back-end.

Why does that happen? nginx can't help here?
Yeah, a computer can easily render frames at the same rate that the monitor accepts them, while being horribly out of phase with the timing that the monitor expects to receive the frames. Imagine you and your friend playing on a swingset, where both of you are swinging at the same speed, but you are always at the top when your friend is at the bottom. That's likely the most common source of tearing: the frame rendered within enough time, but due to poorly configured graphics card drivers, the game process being briefly swapped out for something else at the wrong moment, naive timing in the game's rendering loop, or something else, the framebuffer is swapped out too late anyway.

The traditional way to solve this is with v-sync, which works great on realtime systems like game consoles, but on multitasking operating systems, it's rather difficult to synchronize an application perfectly to the display's refresh rate. As such, every graphics card I've ever used adds a frame or two of buffer when v-sync is enabled, resulting in a buttery-smooth but very noticeably laggy display. It doesn't matter how intensive a scene you are rendering, either: I was playing a Quake source port the other day, a game released over 17 years ago, and even that was unplayable for me with v-sync enabled.

I'm very excited for this technology, because allowing programs to control both the frequency and phase of display updates has the potential to eliminate the vast majority of display artifacts I've experienced.
With these nginx settings, it does mitigate it for me.

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol http;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
CopyCat Apps Make It Official: I’ve “Made It Big” As An App Developer
Look into what is involved in modern 3D rendering of high-detail scenes. It is NON-TRIVIAL, and I can tell you this as someone who has done 3D programming for 17 years.

Pro Tip: If an entire industry of experienced people finds something very hard, and you don't know anything about the topic but you don't see why it would be hard, maybe the relevant factor here is the "you don't know."

It reminds me of my mom who said on multiple occasions "All these rockets are dangerous and they explode; I don't see why the scientists don't just use the majestic forces that keep the planets in their orbits to move the rocket."
Triple buffering does not solve the problem. If your monitor is locked at 60Hz and your rendering can't produce more than, say, 55 frames per second then you're going to have to display the same frame for multiple monitor refresh cycles. The monitor will typically show every rendered frame for 2 refresh cycles, with triple buffering you may be able to occasionally show a frame for just one cycle.

With something like G-Sync you can instead show 55 frames per second.
In that case make your best educated guess and focus on something that matters a lot more to your business right now - driving more traffic to your business.
A friend of mine asked me today for an easy way to get a website going for his wife's beauty salon. I recommended him to bitballoon.com after learning about it here. It looks very slick and easy to use. Thanks.
Yes, I don't know. that's what I am saying.
I am not in this thread saying "You're wrong and I'm right", and I'm not asking you to say to me "no, you're wrong"
I am asking you to explain it*. not just say "well, it's hard, and this guy and this industry says it's hard" and call it a day.

do you understand? "because it's hard" is not an interesting answer. It's a boring and contentless answer.
I would give insane kudos to the first person to implement this, or point me at one which already exists:

I want an nginx module that allows a crawler once per specified period (per day or per week, I would imagine, but configurable is better). That is to say, it allows the bot to finish its crawl, then bans that IP/User-Agent for the specified duration.
Where I live, having money to make international trips (or actually, any airplane trip) puts you into "rich" territory, and by "rich" I mean "rich" not upper middle class.
Close 2nd for me. Freshman year down at the student union after getting totally sick of working with Codeblocks and MSVC++ on Windows for trying to make something meaningful in OGRE, installed Debian, got it working but wasn't making a lot of progress and blamed it on the distro, decided to go more hardcore and do Gentoo. There was a Linux gap somewhere when I wad going to install OpenBSD on a new machine before I got Ubuntu and was totally blow away by how fast the hardware support had come in such a short time. Nowadays I preach towards the "harder" distros like Arch because Ubuntu did tend to water down the whole configuration hacking experience and seemed to get in the way.
I do not disagree with those statements, but your comment somehow comes across as unnecessarily contradictory. I was just showing that there are ads on the pages. I did not take any stance regarding what those pages should contain.
> I'm failing to see the utility of hstore or json over adding nullable columns here

Well, for example, they make a good way to store user defined fields.

> So complicating the SQL syntax is a significant issue for me. Sticking to as much standard, ANSI SQL as possible makes my programs more portable across RDBMSes. With some of the tools I've written, I can make a full transition from MySQL to MS SQL Server and back again and the application doesn't care. Having that sort of power makes upgrading your database a technology decision, not a business one.

I think the tradeoff is between having a database for multiple apps and having an app for multiple RDBMS's. If you are going to go with the former, absolutely avoid every PostgreSQL-ism. But if you want to make a more generally useful to an organization, you need a more intelligent database and that means going to things like user defined functions, complex triggers and more.
At least 50% of my gigs come from London but I don't live in London. I have to give a discount for the fact that I will not be visiting any time soon. But then again, if someone who does live in London feels like partnering up, I am definitely willing to hand over half of the physical-presence premium to that person. You can seriously charge extra for putting up a good dog-and-pony-show ...
I made a semi-complete python api for HN: https://github.com/thekarangoel/HackerNewsAPI
Anyone saved a cached version of this?
On consoles you used to get a vsync interrupt. A reliable signal-- an event which you could control very precisely from your game software.

Nowadays when I program games, I cannot get a promise that a frame event will fire. I can get a "well, this code may run, unless the operating system needs those cycles".

So, so is skipping a whole frame, OR halving the frame rate really the best that is possible? Why is it either/or? What are operating systems, hardware vendors and driver writers doing about it?
If they're both able to maintain 120hz/120FPS why can't they just sync up once? Or once every N minutes if they drift apart?
The loneliest I've ever felt was when I was in a relationship.
Did you just learn this from the reddit ELI5 on Rubik's Cubes this morning? :)
See my Rocket comment above. But in reply to this specific comment I will drop you a hint (this hint is still just a small piece of the whole situation):

3D rendering is so deeply pipelined that it is difficult or even impossible for the program to know if a frame render is going to finish on time. It takes a long time to get information about completed results back from a GPU; on PCs you almost certainly can't get that info during the same frame you are rendering, unless you are rendering tremendously slowly.

In order to make an estimate about whether the frame is going to be done in time, you would have to guess. Okay, then, so now you decided to stop rendering this frame, what do you do? Leave a giant hole in the scene? Turn off the postprocess? Draw low-detail versions of some things (hint: still very slow)?

Your program does not even really know for sure which pieces of the scene are fast to render and which are slow. It does not know if specific textures are going to be paged out of VRAM by the time you get to a specific mesh, or not. etc etc
JRuby 9K Expected in 2014 Ready for Production
The economy is a computer
Doug Cutting: Why Hadoop is still No. 1
But it reminds me that cats love to look out windows, even high ones where there's little or nothing of interest within 50 feet. If their distant vision were this blurry, I wouldn't expect these scenes to hold their interest.
It's tax-related, but also because every state, city, and county can add their own sales taxes, so the only way to advertise prices for a national chain is by excluding sales taxes. As a result most businesses, even just local ones, follow suit. And the taxes can change after any government budget meeting or vote. Plus, many retailers attempt to keep pace with or beat inflation, so prices tend to slowly rise, by pennies at a time.
New type of venture capital
I am a VC junior analyst (recent graduate, have been working past year and loving it!).
I had a thought a few months ago: I want to angel invest. I love startups, the culture, the community, and I wanted to personally have skin in the game, outside of my job (not a partner, so don't have major share in the carry). This is not possible since I am not an accredited investor. So, no dice.
Then I came up with a different angle. What else can I invest, other than money.
I'm looking for some validation into my new angle / new idea / new firm.
Check out angleround.co to see what it's all about (beta, current traffic 1, this is the first 'release to the public')
Also, for those of you that would like to get involved and have interest in venture capital, please do drop us a line. Who knows where this will go.
Cheers, entrepreneurs! Here's to thinking different. Let me know what you think.
is this what you are looking for? http://www.hialgo.com/main.html
So I'm dealing with this now too, although at about 10x the traffic mentioned in the post.
The first place I started was using the 5G Blacklist/Firewall [http://perishablepress.com/5g-blacklist-2013/] which is really just a great set of .htaccess rules for blocking known bad bots.
Legit bots will respect your robots.txt, so if one (looking at you Yandex) is getting too aggressive, slow them down with the 'Crawl-delay: 60' (time in s) directive. Of course rogue bots don't respect this, so they get added to the blacklist rules based on UserAgent.

What I've discovered though is that bots are not my biggest worry; it's the scrapers that are stealing my client's content and re-posting it. We've successfully filed 5 DMCA complaints at this point which have been effective at stopping the known offenders, but the crawlers continue and new copycat sites keep popping up. I've found that running a 'grep Ruby access_log' returns a good chunk of the offending crawlers (not just Ruby, also search for Python and Java). Running 'host (ip address)' almost always traces back to AWS. These log entries also very rarely list a referrer.

Obviously not all of the grep results are malicious. A little research can reveal the IP is linked to a service or co you want crawling your site. For those that are unknown, they usually get an IP ban until I can determine otherwise (which the client is totally OK with, they don't want their content re-published off-site).

I've thought about setting up a honeypot, but my issue was keeping the bait links hidden from legit services (plant a hidden link on the page that only a bad actor would follow, then trap their IPs in the log and ban them). Since the DMCAs have been so effective, I haven't been forced to pursue a honeypot, but I would be very interested if anyone else has a good solution.

I also discovered that image hotlinking was a _HUGE_ problem with this site. The poor site had been neglected for years and hotlinkers were running wild. Shutting that down with a simple htaccess rewrite rule really helped. That is also how I discover content thieves, 'grep 302 access_log' and look at the referrer URLs.
But surely the PR people would be in charge of the astroturfing, and hence in control of the titles used?
The main change from the Jeopardy competitions is they don't need to find an answer in under a second. So you can probably reduce to computitional capability significantly.
Your question was answered; it has nothing to do with the case where you're "generating thousands of frames and throwing them away". What you want is a rendering engine that will perform at 60fps in the worst case. What engine devs want to write is an engine that can do better (even much much better) than 60fps in the average case, and be allowed to slip in those pathological cases. Gamers want more frames. More frames than is noticeable. They want some slack so that if something totally unrelated to the game ties up the machine, the framerate drop is not noticeable. They want to be able to double it so that they can drive a 3D display but still have the same effective framerate per eye.

Having a consistent 40fps is much worse (for a gamer) than a variable framerate that will dip down to 40fps for 1% (or 10%) of the play time. Having to limit your most complex scene to what can be guaranteed rendered at 60fps is much less appealing to a developer than making sure all the likely scenes can render at 60fps.
Remember, Docker is primarily a container format, not a virtualization platform. Supporting Docker in your own virtualization platform means letting people plug in their pre-made Docker-compatible containers have have them Just Work.
He. I looked him up before I wrote my comment.
Give me the TLDR. Being Friday 9pm on the east coast, do I need to go home right now and upgrade my production servers?
It's probably only a short time until we start seeing automation within large swaths of the labor market. Besides baristas, there are lots of other industries that will be completely changed from an employment perspective. For instance once self-driving automobiles become mainstream you'll see long haul trucks and taxis automated as well. It's going to be interesting what will happen when so much economic productivity is replaced so quickly by automation.
No reason? You, sir, are lacking imagination.

Here's one:
How about the fact in some cases waiting on the latency of a data lookup before rendering the page makes it feel much slower and more sluggish?

In the case mentioned above of map markers, if there's real latency involved in the lookup and you can render the page sans markers and then populate them a couple seconds later, isn't that a superior UI?

Yes, if you are building a simple, moderate or low traffic website/app, it's probably a better practice to render the page with the initial JSON needed. But a lot of the people here are working on products with millions of users -- or just tons of data -- and that changes the equation a bit.

What do you think?
There was a technical discussion of the protocol used for networked time machine backups on the apple support pages but I can't find it back. Basicaly TM was designed to be local first, and adapted to also work over ethernet afterwards, but doesn't properly recover when you have failures (i.e. corrupted data or lost connection) at the wrong timing during the backups. From memory the network protocol changed one or two years ago to be more reliable, but the fundamental assumptions seem to have remained.

That's why it's advised you do at least your first backup with a wired connection for instance.

A description of one of the issues you could face:
http://pondini.org/TM/C13.html

A 2010 support thread with the horror stories
https://discussions.apple.com/thread/3684176?start=0&tstart=...

A more recent one:
https://discussions.apple.com/thread/3684176?start=0&tstart=...
> That doesn't answer my question. Storing structured data in any single-field, be it checked or unchecked, violates the first normal form...

This seems to be one of the most common mistakes regarding understanding 1NF I come across.

The atomicity requirement doesn't say anything about structured text, or internally atomic data types. That a data type could be further decomposed doesn't impact first normal form at all. Otherwise, using a data type like DATETIME would be a total no-no. Neither does storing arrays, and so forth.

What 1NF requires is that for the domain the value is atomic. If I store in a text field "192.168.1.1/24" that is structured text but it is still atomic. It may include both a netmask and an IP address, but the data taken as a whole represents one domain value. Similarly storing '1-509-555-1212" in a text field contains an area code number, an exchange number, an end terminal number, and a country-code designation, but it represents a single phone number and that's all that is required. I could represent the phone number as ARRAY[1,5,0,9,5,5,5,1,2,1,2] and it would still be atomic as long as the array was properly ordered.

What I am getting at is that all 1NF requires is that the item represents a single value in a domain.

There's no reason why JSON would necessarily violate that iether. Consider {ip: '192.168.1.1', netbits: '24'}

That's no different from storing '192.168.1.1/24' in a text field. And for my phone number, I could store it as {ccode: '1', areacode: '509', exchange: '555', terminal: '1212'} which again is no different from storing '1-509-555-1212' in a text field.

This isn't to say that JSON doesn't often violate 1NF, but 1NF is not as restricting as people sometimes think.
Bitcoin reaches six-month high
There is a notable book called Laughter by French philosopher Bergson. Its argument is that comical effects are reducible to something mechanical (mathematical) (mis)applied on some living thing.

This could be a better explanation than what I read here and in the article.
the guy who owns acme.com has similar problems
There are times actually I find it helpful to break 1NF in PostgreSQL. This is certainly not free but it really helps some sorts of queries, and it avoids having to do a sort of pseudo-EAV to get certain things working.
Can you tell us a little bit about your project to compete with Google if it's ok for you ? "try to compete with Google" is exactly what I'm doing right now and I'm just curious.

You were not able to crawl hundreds of thousands of websites because your crawler was disallowed by their robots.txt but major crawlers were allowed to do so ?
Just to start (I call it BotoCrunch)

Mailgun In -> TextTeaser API [1] -> Mailgun Out to reader mailing list/Deploy to S3 site.

https://www.mashape.com/mojojolo/textteaser [1]
Littlebabydisciples
Babysfirstwords
Keep calm and launch your startup
Thanks for the info, looking at it there's even a synology package for the headless server. Nice.
Littlebabydisciples.com
Makeyourbabysfirstwords heavenly
> Looks like PostgreSQL is starting to take that role with relational databases.

PostgreSQL has been doing this for a long time. It started, actually, as a research project for how to manage very complex forms of data in a relational-like database (many people use it as a purely relational database but that doesn't even begin to scratch the surface of what PostgreSQL can do).
Dispatcher: Find potential GitHub projects to contribute to.