skysight-inc/HackerNews huggingface dataset:
The course covered relational algebra and calculus before even talking about SQL

This is the peril of leaving programming education to the computer scientists: People are routinely forced to rebuild a car's engine before being told what a stoplight is or how to merge onto the freeway.

And it might help explain why my coworkers think I'm some sort of RDBMS genius when all I've ever done was read SQL for Web Nerds:

Database researchers love to talk about relational algebra, n-tuples, normal form, and natural composition, while throwing around mathematical symbols. This patina of mathematical obscurity tends to distract your attention from their bad suits and boring personalities, but is of no value if you just want to use a relational database management system.

In fact, this is all you need to know to be a Caveman Database Programmer: A relational database is a big spreadsheet that several people can update simultaneously.

A caveman I may be, but I tell you, if you can type SHOW PROCESSLIST, EXPLAIN PLAN, and CREATE INDEX with effect, write a self-join, and use the GROUP BY… HAVING syntax, many people will speak of you as they would of Gandalf. It's embarrassing, really.
TripAdvisor launches rating display, suspends it after five days
self-evident

It is. The more interesting question is why it takes rails 7 years (and counting) to come to this conclusion.

<rant>

I'll take it one further and sing my song about the Rails ActiveRecord implementation here, which is tangentially related.

The promise of AR is to reflect on the database at startup and then "magically work".

The problem in rails is that nothing magically works. What you get out of the box is an insecure world-writable model, as illustrated by this bug. Then you begin scattering your truth over incremental (hand-crafted!) migrations, the model, and the controller, until nobody other than a cascade of unit-tests can even make sense of the interdependencies anymore.

In a world where there is not even a central place to look up which fields exist on a model and what their constraints are - short of runtime introspection, where database constraints live happily alongside and independently of model constraints, where opaque bits of ruby-logic buried in various gems add their own magic to the mix, in such a world it's really no surprise they chose to default to "all fields writable".

Because if they forced the user to do the sensible thing and explicitly list the allowable fields then where's the advantage over a declarative approach (like e.g. Django) anymore?

Imho it's long overdue to take a step back and revisit whether AR is still worth having, or ever was. Imho it causes way more problems than it solves, in contrast to the declarative approach.

</rant>
Sorry, I was mistaken. Turns out you get to vote down comments, not submissions.
They will honor a handshake deal with a company we fund.
Posting it as an issue on the Rails repo and then exploiting GitHub with it is a great way to get attention, but not necessarily the most responsible.

I disclosed a vulnerability to GitHub before. I dropped it into their Issues system marked private with the heading "URGENT". It was a Sunday and I got a response + a fix from Tom Preston-Wener himself within a few hours. That, in my mind, would have been a more responsible approach.
At 8. I found my mom's "GW Basic" book and started making little programs that were quizzes or played little songs.
MAKANAN DAN OBAT UNTUK PENYAKIT MAAG | PANTANGAN, BAIK, MACAM-MACAM
This is a toxic side-effect of a healthy thing: the rise in status of programming work.

In the dotcom boom, douchebags didn't program, they did MBAs and took for granted that as "business guys" they would have the lion's share of wealth and status just for being who they were. That many of them now feel compelled to join the profession their forebears saw as underlings and learn to actually do real work, while many of the rest are pleading for technical cofounders, are signs of a major shift.

Remember that video that did the rounds on HN a year or two ago about the Valley in the 70s? A typical technical cofounder would end up with 2% ownership and zero control. Compare that to Mark Zuckerberg retaining control of Facebook and extolling "the hacker way" in an SEC filing. It's a massive change in the right direction, and most of it has happened in the last 15 years and it's still accelerating. It will be interesting to see the social consequences. Annoying epiphenomena like "brogrammers" are inevitable, but deeper changes are the ones to watch for.
From my POV as a hiring manager a CS degree is far less important than a proven history of shipping working code. If you're already in the industry, contributing to open source, etc., you can accomplish a lot more in 18 months out in the field than you could in school.

However, if you have gaps in your CS knowledge, it may be easier to fill them in school. Once you're coding full-time, it can be hard to find the time and motivation to explore as diverse a set of languages, data structures/algorithms, and tools as you are (hopefully) exposed to in a solid CS program.
Ask Stack: Should I learn a new programming language?
Holman works at GitHub.
Between your edits and this reply, there's a lot to chew on, but I'll focus on one point which leaves me dumbfounded:

> also hints at this being RPC-over-HTTP more than REST (which is fine, as long as it's called correctly).

In any context, documenting every function is good practice.
At the very least you'd probably be getting it on the cheap at that point.
Blanket ban, content monitoring against Constitution: Google
There's a fine line between (1) "insecure by default" and (2) the existence of a very popular idiom that is dangerous unless accompanied by other checks.

Many PHP apps used to rely on register_globals without proper input checking, and when those apps got hacked, it was clearly their their own fault. Just like GitHub is primarily responsible for today's exploit. But that didn't prevent people from calling PHP "insecure by default" for enabling register_globals in the first place.
> geared towards everyday folks, not techies.

See, that is what I do not get. Google claims to be able to create a better product experience based on all that datamining they do.

If that is the case, why don't they change the user interface based on what type of person they think I am? They have the data for it, or don't they?
What are you thinking about doing?
He could probably have made a lot of money from this if he hadn't disclosed it. A lot of people store various secret keys along with their apps on github. Many people even have entire repositories of secret keys. By taking access to these repos (if he could get access to private repots) he could likely have gotten access to apps from which he could have taken money.
The article states "A small amount of programming concepts had to be taught at the start and some single-concept examples are given, but the chapter always centers around a complete game."

But besides, getting to the point of premature successes:

In a way, you need a premature sense of accomplishment to keep a person motivated. Plus, if they ever come across the difficult portions of programming, that motivation might get them to go through the difficulty.

To me, the difficulty in programming is solving a problem using a lot of the difference concepts that make it up, but that's true with any profession and you can't get those concepts in your head unless you learn it one at a time.

What I don't want to see anymore is programming instructors teaching students a lot of concepts at the same time because to them that's the difficult way they learned and the "right" way to learn. That's just not a proper way to learn, you need to teach one concept at a time and if that means premature sense of accomplishment, so be it in the short term.
The main issue i have with this brogrammer thing is that it's completely idiotic (and just that would be agood reason to be mad at them). It being off putting for women is of secondary importance, imho. It's also quite sad that they allowed that their names (and of their workplace) were published and linked with this kind of statements, c'mon...

Kids these days...
What is the best way to open source a project?
Pathscale compiler doesn't work on Windows, even though they claimed a beta will be relesed at some point. Clang+LLVM on Windows is very immature, I like to play with it and put it to the test once in a while but it has many problems under Windows I wouldn't trust it in production yet.

Gcc works and produces good code, unfortunately you have to deal with the disgrace that is MinGW and it doesn't integrate in Visual Studio. Most Windows developers I know care about Visual Studio integration.

The Intel compiler produces excellent code, it is C99 and Microsoft compatible, and it seaminglessly integrates with Visual Studio. Unfortunately, it's very expensive, I have never seen it used in production.
What do you think about the solution proposed in by homakov (the "hacker")? Just mark all the *_id attributes "protected" by default. Seems elegant and really easy to implement and fixes 90% of the problem.
iMessage happily works over 3G without issues. I love iMessage. I can contact my brothers and sister in The Netherlands using iMessage and it doesn't cost me anything more than a data plan. I can send pictures without having to worry about international costs for MMS.

iMessage is a lock-in for me mainly because I love the features it provides me and the connectivity to my family. It is simpler than getting everyone set up on WhatsApp or Skype for example (Skype is terrible for battery life on the iPhone as well) and just works.

You can however as you stated turn off iMessage on the iPhone entirely, at which point the Apple iMessage server will simply tell your friends you are not available on iMessage and send it over standard text.
Obscured, mostly by our own galaxy.
Thanks for the advice, well, I wouldn't be taking any time off work, I would have to continue as a part-time student as I currently work full-time. I think that it may be best to just get a general bachelor's so I can "check the box" on applications as it seems some companies just care about having a degree period and I'm not sure the return on investment for taking out more student loans, etc to get a CS bachelor's may be worth it as I could potentially later put that towards getting a Master's instead if I decide to continue with my formal education.
Artificial 'Womb' Unlocks Secrets of Early Embryo Development
From scratch recreation of Super Mario, except Mario has a Portal gun now
TV piracy groups formally adopt h264
The entire post is muddled, to say the least.

The author lost me when contemplating the switch. Nearly a grand invested in a device after "upgrading" at a cost of $450? If they purchased a 64GB model, the cost would be around that, but they could have had their "IT Director" sell that phone for more than $450. They probably would have gotten into a new Verizon contract with a net iPhone investment of just a few hundred bucks.

Sounds like a pile of excuses leading into some Android-related promotion, and coming from a "VC" it does not surprise.
5 Video Game Characters Who Just Won't Die
This could be worked around by making the LEDs more directional and taking input from an array of directional cameras on the other side (or presumably, a single Lytro camera per LED). I don't believe there's a fundamental difficulty in amelioration the problem of parallax.
"Secret iPhone lock-in feature"?

Now that's a linkbait headline if I ever saw one..
Should Evolution Be Taught In High School?
Things Cloud Public Beta
C works fine, I even toyed with a kernel module build using MinGW instead of the WDK. One caveat is that GCC doesn't generate PDB information, the debugging format used by Microsoft tools.

Only C++ doesn't work.
IE is for consumers and FF and Chrome are for producers.
And would that be a problem? Not that we need a method to spot bad recruiters, but for those who still think that it makes sense to evaluate quality, what you describe could be a good method to identify the most degenerate ones.
I got a refurb Lenovo for the same price as an iPad. It isn't the most powerful laptop in the world, but its a lot beefier than an iPad.
OK, here's a specific mistake made by a rails committer in handling this issue. drogus closed [this issue](https://github.com/rails/rails/issues/5239) without bothering to tell GitHub about it. This meant that fewer people saw it, and fewer people had a chance to tell GitHub about it. (One even thought of telling them about it, but unfortunately suggested that someone else do it instead of actually doing it.)

I think that perhaps the Rails team should have someone reviewing that issues were properly handled.
There actually aren't any Windows 8 tablets (nor any Windows 8 devices of any kind) in the market now.

It's a valid point but it's at least a year early.
Your instinct sounds solid on this one. From what you've said, I think going into debt now to change the focus of your bachelor's degree would be a bad idea. Focus on building your skills and experience at work, and I don't imagine you'll find the lack of a CS focus in your degree program will hinder your chances down the road.
Maybe this is just a power-user thing, though?

I don't even think it's a power user thing. I think it's just a you thing. I'm a power user and although I did slow down using my iPad when I got my 11" Air, I didn't stop at all. It's still an hours-daily device for me. Mostly for Words With Friends, Twitter, and web browsing; the laptop's for writing code, making music and video, and most email. I also find the iPad superior for outlining, and if I'm doing a presentation without any live coding, Keynote on the iPad wins on convenience. It's also very handy to have two displays while hacking at a coffee shop, for the same reason it's handy to have two monitors on your desk.

It's even possible that for me buying an Apple TV bit into my iPad use more than buying an Air did. Not sure about that one, though.
Palpability is in the eye of the beholder. There's a lot of talk in the GH issue comments dismissing GH's "obvious" failure of not using `attr_accessible`.
Depends on the perspective.

For a beginner PHP is simple and logical.
No, you use whatever you want, in practice C is more used than C++ and C code is compiled with the C compiler, not C++ compiler.

The tools used to build Windows, including compilers, are available as the free Windows Driver Kit (WDK): http://msdn.microsoft.com/en-us/windows/hardware/gg487428

Sometimes the compiler versions match those of the current Visual Studio release, but not always.
Only if you think femininity is the set of all things not masculine.
Oh man, I had this idea ever since I saw "Die Another Day". Always wondered if it would work in real life - apparently, it does!
> In fact, bit shifting is always faster than anything.

This is overly simplistic. A fixed bitwise mapping is simple wiring and about as fast as anything can be, yes. Extending that, the "fastest" 32-bit shifter might be to put down 31 circuits, one for each possible shift amount. But that still requires a mux tree to select between the different circuits, which already goes beyond simple wiring.

While that might be the minimum-delay implementation, it's also very area inefficient. A more area-efficient design would be to cascade lg(32) = 5 muxed shifters, one for each bit in the shift amount. For example, x << 19 is the same as ((x << 16) << 2) << 1. If you read a VLSI design textbook, you'll see that there are all kinds of low-level tricks for designing barrel shifters, especially when it comes to layout.

Finally, the practical reality for programmers is that variable-amount shifts and rotates are relatively expensive on quite a few processors.
You can turn off iMessage in Settings -> Messages -> iMessage (turn slider to off).

At that point you will no longer be able to send iMessage's and you will no longer be able to receive them. The thing is that the iPhone when first activated reads the number from the SIM card/carrier and sets that up as an iMessage address. Apple is never pinged when you move your number away from your carrier unless you re-activate your phone with a different SIM card (I still am not happy you can't activate the phone without having a carrier plan ... yay Jailbreaks!).

In the article he mentions unregistering his devices/phone from Apple's website, that will work until the next time that his phone pings the iMessage server and re-registers itself (disable iMessage first ... it unregisters the device). I personally would say that is working as designed, if I unregister all of my devices, if I turn one on to use for texting it should re-register itself automatically.
http://shop.github.com/products/blacktocat-2-0 is exactly what I was talking about.
It has a simple and nice design. Bought :)
TL;DR - If you don't want to use iMessage, turn it off.
We had this already here, use search function please. And by the way, the boss of the research team died due to an asthma attack because of this plant, there will be no market for seeds and seedlings.
Any device that you have set to respond to certain addresses will indeed be receiving the message. The whole point is to have some fluidity between devices, so you can start a conversation on the couch with your iPad, and then move to your phone when you are walking down the aisle at the grocery store.
Also, Skype has more features. I often like to use Skype and share URLs, files, text messages. And the bugging thing about FaceTime is that you have to quit the App to go into messages to do that in iPad. Not with Skype. This usually means a dropped call.
Great sentiment. One thing that jumped out at me was "Don’t engage in a needless dance where developers have to take several steps to do a single action."

I think if you want to follow the "rule of least surprise" from the unix school of thought, this is probably a somewhat dangerous suggestion. Having one call go and do several things can make that call become something of a black box. It kind of breaks the rule of transparency as well. If I find myself having to do a dance with the API, as the end user there's nothing stopping me from writing my own helper code to group those common calls together; I'd prefer an API with total transparency and the least amount of surprise, which is ultimately more flexible.
Robot Quadrotors Perform James Bond Theme [video]
> I still am not happy you can't activate the phone without having a carrier plan

You can if you buy it at full price.
2) PHP is a perfect beginner language. Having tried everything from C, ASM, Java, Prolog, Java etc - I'd much rather play around in PHP. Ruby is similar - it's a well designed language with fairly little cruft - but I've limited experience in it.

PHP is good for a beginner because it has very little ceremony, an ALGOL-like syntax and a big standard library, but you can't say it doesn't carry cruft: it has a lot of bad decisions that can't be changed for backward compatibility, particularly the rampant inconsistency (both in the language and in the stdlib) and the kitchen sink of the global namespace.

I liked PHP until I learned Python. It's certainly not perfect, but at least it actually follow some rules.
lol at "change focus" :) I think the problem was I had no focus for too long, I was just kind of taking classes since 'its what you're supposed to do', it seems I was just taking the most general ones possible.. thanks for the advice on this though, definitely helps to hear from others to reinforce what I'm thinking
Are people misunderstanding this?

It is not a bug. It's an acknowledged part of the framework (http://guides.rubyonrails.org/security.html#mass-assignment), although one that could get a developer into trouble without knowing to protect attributes where necessary.

If he'd known that there was something the GH team missed, he should have just brought the issue to them directly. If I realize my neighbor's house is in danger of collapsing because the contractor used the wrong type of wood, I don't bring the issue up with a lumber yard and then knock over my neighbor's house to prove a point when they ignore me.

I agree that it's a problem that many developers aren't aware that they need to protect against mass assignment, but it seems like this dude is totally misunderstanding the entire ecosystem here, and now people are calling him a "hero" because he took advantage of something that everyone already knows.

Big whoop.
Sounds like a pile of excuses leading into some Android-related promotion, and coming from a "VC" it does not surprise.

Android-related promotion? Where? In fact, I would wager right now that the threat that "I’ll drop a full post on my iPhone to Android experience in the near future." will turn into yet another lambasting of Android because it isn't just like iOS. We've seen about four dozen of them, but each new one mysteriously still is treated like the words of a seer.
No downvote here. I'm by far no Rails guru - I've done one moderate-sized project in it (as an apprentice to someone far more experienced) and a couple of smallish projects, Rails feels brittle. I thought I was pretty alone in that thinking, but based on your rant above, I'm not 100% on my own. I've gotten used to Grails/GORM, which has its own set of issues, for sure, but has always felt more natural.
Documenting every function is great practice.

Masklinn was just stating that an API based on 'functions' is inherently not a REST API, but instead RPC. The documentation sentiment is sound, but your terminology was off.
Given the recent story on HN about how former YouSendIt founder had taken their servers down to prove their vulnerability [1] [2], I'm surprised how little reverence these "lol-hackers" (that's going to be my term for them) give to showcasing these vulnerabilities by exploiting them in the real-world and messing with people's real things.

I know as hackers, we feel a duty to show people how serious these things are and that we get impatient and annoyed when ignored. And I also know that it's hard for us to reconcile the idea that when we show the owners rather than tell, it's suddenly considered a crime. But it is.

Let's try an analogy. Door locks on houses are ineffective. Think about it. Your house is covered with windows, which are made of glass. Glass is really easy to break. I mean really easy. If you found out your neighbor didn't have a house alarm, you might talk to them and tell them they should get one. If they didn't get one, would you then break into their house one night and walk into their bedroom to show them how dangerous it is?

OK, who knows, maybe you have a weird relationship with your neighbor. Furthermore, this is an imperfect analogy, because here, Rails and Github are both responsible for other people's property.

But now imagine it's a business across town and that you don't actually know the business owner. If you broke into their business to show them their building's security vulnerabilities, you bet your ass they would press charges and I don't think anyone would blame them. Even if you're doing it with the best intentions, it's still vandalism at best.

All of that being said, this is a very effective way of making your point and getting people to fix the problem. That doesn't make it right. But if you're willing to put yourself in harm's way and essentially become a martyr to get these security vulnerabilities fixed, more power to you.

[1] http://news.ycombinator.com/item?id=3643102

[2] http://www.inc.com/magazine/201203/burt-helm/a-silicon-valle...
What if it's an MBA with all of the guts in the display part instead of the keyboard? Detach the keyboard et voilà, an iPad.
He meant that the present thread is still in Hacker News, not GitHub and it would be helpful if there was an official GitHub post about it.
Hey -- it's a paywall! Maybe some kind of warning?
In some areas, what he did is illegal and he could be prosecuted for it. I hope that does not happen, but if I were him I would be cautious.
Asteroid to threaten Earth in 2013