skysight-inc/HackerNews huggingface dataset:
So what's going on here?

I have been trying to follow along but I'm confused why anything happens.

There's a test button that calls ThreadProc_dbg(bug) which then calls test(result), which in turns has some assembler code commented out and finishes with:

unescape('%u31C9%u5589%uE55D%u2EF8%uC390%u9090');
return 0;

The variable 'result' is (visibly) untouched by the function but ThreadProc_dbg tests its value to see if the processor is vulnerable or not. So just the test() function has the good stuff. (assuming it works) So either the assembler code does something even though it's commented out, or the unescape is not happy but I'm not sure why…

I haven't tried too much on the code that actually crashing the computer (or whatever it does) since just the test puzzles me.
Remember this above all else:you do not want clients who are persuaded to take you on because you're cheap. You want clients who are persuaded to take you because you're good. If you're good, there are lots of ways to show it besides doing free work. If you're not good, don't do consulting.
If every IT person I've ever hated assembled together like Voltron and wrote a blog, I think it would be a lot like that one.
F.D.A. Spied on E-Mails of Its Own Scientists
FHM Philippines Top 100 Sexiest Women 2012 List and Pictures 
‘FHM Philippines 100 Sexiest Women of the World for 2012’has officially announced the result of the “Philippines Sexiest Women in the World for 2012”. A huge victory party organized by FHM at the World Trade Center in Pasay City on last Thursday, July 12 with great music and dancing night.
> you may be more setting yourself up as a one man staffing agency…

Also known as a contractor.
I think the "How do I become a consultant/start a consulting business" comes up every few months. Here is what I've taken from those posts. There is a difference between consulting and freelancing. Consultants are people who come in and help make decision and Freelancers are people who make those decisions happen (aka contractors).

(I personally do both, and honestly have more fun 'freelancing' than 'consulting').
Unfortunately, learning Greek is going to be a difficult task and as you say yourself it needs time that most people don't have. It will also NOT help you in reading the classics, Ancient Greek, although familiar with modern Greek is one of the most structured but difficult languages to master. Most of the Greek translations from Ancient to Modern are very bad pieces works that don't give justice to the original text -good translations exist but I am afraid they are not the best sellers when it comes to the classics.

What I would recommend is the series "LOEB", they have the original text and one of the best English translations available. It's also one of the best ways to learn Greek -after you learn the basics.
> The variable 'result' is (visibly) untouched

Actually it is invisibily touched by that call to unescape(). The assembly code in the comments is what is generated by the interpreter, and that's where the trick happens.
The "impedance mismatch" is not a magical phrase. It simply refers to the mixing of orthogonal concepts: like trying to fit square pegs into round holes. Sure, you can do it. But do you really want to? You have to admit that the (very old) article/blog who made that term famous saw the issue coming and was right about the current (very sad) state of affair we're in. It was "The vietnam war of software development" or something like that. The problem when trying to fit square pegs into round holes is that you end up --to use another term that's going to become "magical" to you-- with a "complected" system. The "elephant in the room" if you wish. You probably want to watch "Simple made easy" by Rich Hickey, the author of Clojure.
I'm so sick of the people creating accounts on HN just to take a shit on someone. Want to try again with something constructive?
- though he has no qualms about misleading and deceptive answers.

- "If I understand the input and the output then I have understood the function." A good point, I tend to think of "information hiding" http://en.wikipedia.org/wiki/Information_hiding as applying to state, to enable SOTSOG, but it also applies to pure functions.

- "define all my data types in a single include file" That quote sounds silly, but in practice, I find it much clearer if all the part of a data type are next to each other, uncluttered by methods. It also supports Brooks' observation: "Show me your tables, and I won't usually need your flowcharts; they'll be obvious" ("tables" being datastructures). In Java, I tried this by defining fields in superclasses, methods in subclasses. But having two classes per class was awkward. (I ended up keeping code entirely separate except for very core methods - still not happy with it). But I don't think this is entirely a language problem, it's partly just complexity management is hard.

- this article makes me feel antagonistic, but in fact I never liked OO when taught it; it seemed dogmatic, not actually useful in practice. But I did like the idea of an ADT, where you can package something up (esp. a list, hashtable etc), and work at a higher level of abstraction. Subdividing tasks and SOTSOG
Rich Hickey specifically says that his approach makes you more readily adaptable to future requirement changes, rather than less adaptable, as an OO die-hard might claim. I'm not sure I understand how the "get it right to begin with" approach fits into the adaptabile-to-future-requirement-changes promise.

I see how following OO, as long as you also follow the Law of Demeter, could live up to its promise of helping you adapt to future requirement changes. It has that unfortunate cost, however of requiring you to sometimes write a zillion little delegation methods upfront, which could be quite a combinatorial chore if you don't have the Demeter system automating this for you.

Also, I'm pretty sure from listening to a number of Rich Hickey's talks, that he is saying very specifically NOT to hide your data behind an API. Encapsulating the data behind an API would just be the same as the OO approach for all intents and purposes. Hickey is saying to let the data be data. I.e., just data.
Wow.

I'm dumbfounded at how much more clever and sophisticated attacks get. It will never end! I fear that I cannot be of much use anymore.

I remember back when buffer overflows was the exploit and I viewed it as some kind of sorcery, even though I understood it.

I guess so long as software keeps getting written, exploits can be found, and if you plumb the depths of specification, you can find holes, but they're so much more harder to find now. :(

Maybe I'm feeling my age? Security is a game for the young? Or at least more energetic.
Jobs and Wozniak were full time at Apple 6 or 7 years before these emails. Seems like a long shot.
Languages are not inherently OO or FP, but they support OO or FP style programming. Python supports procedural programming very well, you'll see lots of "def" and no "class". If you argue that the integers and strings manipulated by a procedural Python program are called "objects" and therefore it is still OO, I shall point you to the C standard which indicates that the integers and strings in a C program are also called "objects".

You can do procedural programming in Java, but you'll have to make all of the functions methods on some dummy class. This is cumbersome, which is the real complaint here. The "everything is a class" mentality is both an issue with the language and an issue with the community, but we tolerate it because they still make useful programs.

Everyone needs a little "re-education" or assimilation in order to switch languages and not write puke-tastic code in languages you don't use every week. A seasoned Java programmer will likely have no trouble writing correct Python code, but you have to wait for a few dozen sleep cycles before the programmer will write idiomatic Python code.
I can express my OO ideas in erlang with no problem (objects become processes).

I cannot express my concurrency ideas-- that erlang makes super easy-- in the OO languages.

Maybe Go changes this but I haven't used Go yet.
I'd start an ISP. Internet is important!
Or at least have the minerals to talk shit using their real identity/regular user account.
In what way didn't they deliver? I got my t-shirt and use the service every day.
Relevant: http://www.cs.dartmouth.edu/~sergey/cs258/2010/D2T1%20-%20Kr...

(The PoC as it is doesn't actually do anything...)
The best explanation I've seen of homoiconic macros is one written by a well-known Perl programmer. http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.h...

Thank you for that - I enjoyed reading it.

Also, is that our btilly?
While I like the idea and personally would even accept some 5 sec+ delays if the results were at least equal to Google, they are not.
..
Or I wouldn't even mind activating some track-me option occasionally if it would help you guys improve your results.

So why, exactly, don't you like Google?
"... How do you determine whether your product is not ready for the mainstream or whether people just don't care about the problem and/or solution? ..."

Ask for payment. This will quickly sort out if a product solves a problem that people care about.
Management, but by Thoughtfulness
So how does a bug in the CPU cache controller cause a remote execution exploit? You can write an exploit into memory, have it cached somehow, trigger the bug, and then the CPU will execute the wrong data in the CPU cache?
Similar: Don't waste working memory.
There are many ways in which you can argue against fracking on an environmental basis.

But one is really abouve all: natural gas is a fossil fuel and burning of fossil fuels leads to climate change. The costly investment on this harmful energy source is much more needed in renewables.

Unfortunately climate change science has been distorted in the media.
ASUS ROG G75VW and G55VW, Notebooks for gamers
> I'm not smart ...

Off topic, but one person being intelligent in a field you're potentially not familiar with does not make you "not smart". Putting yourself down isn't cool or honorable.

That being said, I'm also extremely curious what's going on here :)
I don't see why/where the code generator is involved here. The posted "exploit" doesn't appear to work at all, implying that either it's not complete (so discussing how it works is kind of pointless) or just bogus.

There's nothing that I see that makes it obvious that it's attacking the JIT logic specifically. It's most reminiscent of the fairly old heap spray techniques which require an additional exploit anyway.

For instance the function for testing existence of the bogus microcode is:
function test(result) {
// giant comment explaining the asm used to test for the vulnerability
unescape('%u31C9%u5589%uE55D%u2EF8%uC390%u9090');
return 0;
}

Presumably the call to unescape is intended to convert the encoded shellcode into somthing useful. But there does not appear to be anything done to actually execute the shellcode. The historical way of doing this (blocked by DEP) is to fill the heap with copies of the string, and then use another exploit to jump into the heap at somewhere likely to contain your code. There are ways to bypass DEP, but this doesn't appear to try even that.

Honestly it looks like someone has simply taken the assembly used to the exploit, put it in a string (using numeric character escapes), and then done nothing else.

That it is referring to launching threads makes me wonder if this isn't just someone converting a pre-existing C program into something that at least parses as JS.
PDF warning for mobile users :)
It's intentionally incomplete. Take a look at the "engine" function, it's body is empty.
There are a multitude of cases involving technology companies and shenanigans with Goldman Sachs, including Marvell Technologies: http://dealbook.nytimes.com/2011/04/11/marvell-co-founders-s...
A more generic version allows you to parameterize based on the bound:

newtype BoundedInt b = BoundedInt Int

class Bound b where
boundRange :: t b -> (Int, Int)

fromBounded :: BoundedInt b -> Int
fromBounded (BoundedInt x) = x

toBounded :: Bound b => Int -> BoundedInt b
toBounded x =
let result = BoundedInt x
(minb, maxb) = boundRange result
in if minb <= result && result <= maxb
then result
else error $ "Out of range: " ++ show x

instance Bound b => Num (BoundedInt b) where
abs = toBounded . abs . fromBounded
negate = toBounded . negate . fromBounded
signum = toBounded . signum . fromBounded
x + y = toBounded (fromBounded x + fromBounded y)
x - y = toBounded (fromBounded x - fromBounded y)
x * y = toBounded (fromBounded x * fromBounded y)
fromInteger = toBounded . fromInteger

This assumes you want exceptions for overflow. Nowadays, you can put numbers in the type system, obviating the need for a "Bound" class, but I'm not familiar with it yet. The implementation above will also silently overflow given large enough bounds.
Let me just ask - When has anyone ever actually invented anything totally new?

The telephone? It was referred to as the "speaking telegraph" (telegraph + speakers).

The car? Horseless carriage (engine + wheels + steering + brakes)

The plane? Glider + engine. The Wright brothers invented powered flight - not flight. The difficulty was getting the weight to lift ratio high enough with a primitive heavy engine on board. Gliders already existed - you just couldn't go anywhere with them! You can't just jump off a cliff and glide to China.

Google? A more advanced MITS algorithm + inktomi's commodity cluster map-reduce architecture + inktomi's PPC. Indeed, had inktomi doubled down on search instead of their CDN, we might well be talking about inktomi and not Google.

General and Special Relativity? Nope - http://www.quora.com/If-Albert-Einstein-had-never-existed-at....

There are no really new ideas out there - merely combinations old ones that "hang in the air". There are no new ideas - merely old ones combined in unique ways.

Everything is a remix (https://vimeo.com/14912890).
It's really hard to build a company. It's really admirable to build a successful tech company, no matter how lofty or straightforward the project. The Instagram guys are also heroes to me.

Zip2, Elon's first company, didn't invent anything new or solve any hard problems either (it started out as an online yellow pages). But it was really important that Elon learned from that process. And I know that he enjoyed it, I remember meeting with him when they were 10 guys in one room. And Zip2 was worth $300M to Altavista, which is how Elon paid for the Maclaren mentioned in the recent video.

I'm also glad that Peter Thiel and Max Levchin and others have started to create social pressure for us to think about how to do big things that really benefit society. And maybe we only need to feel that pressure after we've done one or two successful things. As individuals it's also ok to ignore it and say hey I really enjoy building companies and don't need to change the world in a huge way.
Here's a quick summary of what this is. It's a partially-obfuscated piece of malware, which claims to demonstrate a zero-day (that is, unpatched and previously unknown) security vulnerability affecting Intel Core 2 Duo and Intel Atom processors, allowing privilege escalation from inside a Javascript interpreter up to kernel memory. I don't know whether it actually works, since I'm not brave enough to experiment with it, but it's likely that it does.

If this works as advertised, then if you have an affected CPU, it is a zero-day exploit affecting every web browser on every operating system, both desktop and mobile, as long as you have Javascript enabled. Until a workaround has been found, any site which serves you Javascript or any of its advertising networks could use it to give you malware.

If you are using Noscript and also blocking Flash, then you are probably safe. To protect yourself, you should, first of all, use ad-blocking software, because ad networks are more likely to distribute malware than the sites they advertise on. Second, you should use only the most security hardened browser, which is Google Chrome; it's not clear whether Chrome's hardening will actually help, but it's likely that it will, and also that it will be the first to have a workaround. And third, you should be immediately suspicious if your browser crashes unexpectedly.
Nvidia Developer Zone hacked Over 400,000 user accounts exposed
"The counterargument to the OP is that surely a function that manipulates "data" is less powerful and abstract than one that manipulates objects."

I don't see how that follows at all. Objects are glorified types. They're a bag of state plus a collection of functions which take that state as an implicit parameter. Polymorphism is "just" a form of delegation, which itself does not require you to glue together data and functionality.

If this were Haskell, you might define a typeclass for a List datatype.

class List a where
length :: Int
get :: Int -> a
...

Then implementors for Heap and Array would do something like this in their respective packages

instance List (Heap a) where
length x = ...
get x i = ...

instance List (Array a) where
length x = ...
get x i =

And so on. Functions which want a List add a type restriction:

addListLengths :: (List a) => [a] -> Int
addListLengths [] = 0
addListLengths (x:xs) = length x + addListLengths xs

addLengths doesn't care if List is a Heap or Array, and calling length on a List will do the right thing.

I suspect there are cultural factors at work more than anything else, which does get back to what you say initially: do you prefer to live in the Kingdom of Nouns, or not?

In practice, I don't think there's a List typeclass in Haskell. I suspect people generally just use a bog-standard list. :) If you want a special implementation like a heap, you go find one and use it. I suppose this is one example of a cultural of "explicit is better than implicit."

Myself, I write in Java regularly and I just don't generally see a whole lot of value in the List abstraction over ArrayList or LinkedList or whatever. I suppose the reader can see List and take it as a given that it'll behave in some way. That's something.

On the other hand, I suspect the programmers don't think much about a List, either. It's a bit worrisome to contemplate the idea that not only don't programmers know what object they're really dealing with, but they shouldn't know. I highly recommend perusing "Building Memory-efficient Java Applications: Practices and Challenges"[1], which really gets into this stuff at a technical level. I don't know the extent to which this happens in FP-land; I'm mainly commenting on Java culture as I have observed it.

[1] http://www.cs.virginia.edu/kim/publicity/pldi09tutorials/mem...
"Overthrown" does not mean "disappear", it means "no longer king."

IBM was once the king of computing. It was overthrown by Microsoft. Microsoft was then king, but it is no longer, though those living in the past will point to its continue dominance of the PC, a dominance that is both declining and becoming more irrelevant. Google was crowned the king of the web, with users spending most of their time on google.com, but now they spend far more time on Facebook.

> The Roman and British empires lasted hundreds of years.

We're talking technology, not geopolitical power. The former operates on a vastly accelerated time scale, aka "Internet time". I recommend you read the Innovator's Dilemma, or at least the cliff notes on Wikipedia: http://en.wikipedia.org/wiki/Disruptive_innovation. There's a nice list of things many of which weren't expected to be overthrown so quickly.

I'm wondering if you might actually be a celeb: http://www.youtube.com/watch?v=eywi0h_Y5_U.
Has anybody confirmed this is working yet? If not it seems like an elaborate joke.
No. The interpreter doesn't generate that. They have taken the assembly, placed it in a string, and then done nothing more.

There is no obvious attempt to actually get the JS engine to do anything out of the ordinary. The string
'%u31C9%u5589%uE55D%u2EF8%uC390%u9090'

is simply the unicode escaped version of the assembly above. The goal of this exploit would be to get the interpreter to set PC to the address of that string. There is no obvious attempt to do that.

Just compare the decoded opcodes in the DISASM comment to the contents of the string.
Did Elon get screwed by the VCs during the formation and sale of Zip2? Apparently his brother, their friend and Elon got diluted out during later funding rounds. They squeezed his take down to a "measly" $20 million.

At least that's what I've read (it's also probably the reason he started all over again with X.com which eventually morphed into PayPal).
Free is not good but it's actually better than cheap. As long as you are accepting a client's money, they are going to have expectations and a lot more things can go wrong. Free at least frees you from those expectations.
You were. I didn't find any mention of Jobs, Wozniak, Apple or Microsoft in the few that I clicked.
Because if there's one thing humans hate, it's gambling.
I agree, but I do think that java, in particular, suffers from two distinct problems:

1) A lack of closures, which, as you point out, turns every obviously functional problem into a ridiculous object model.

2) A culture that creates libraries that suffer from over-abstraction, over-engineering and that tend to model a technical aspect of a problem rather than what a non-expert end user of the library would find intuitive.
Exploits have existed in web browsers since they were invented. Everything is eventually executed at some point, it really just depends on how good the thing doing the decoding/encoding is. Just because something is slow and seemingly encapsulated doesn't mean it is safer than running it lower to the metal. That's almost like security through obscurity, adding layers because you think it's safer, not because you know it is. Sometimes the layers are what make it more vulnerable, not less.
Freelance developers charge $100 an hour to write PHP apps, consultants charge $40k to solve a problem costing the business $200k a year. That solution might be a PHP app that takes 2 weeks to write.

Not really joking here.
Hi!

I am the author of that post. The person who tipped me on the news told me that the APK was leaked, and Not compiled.

However, later on, as soon as I found out that the APK was compiled, and not leaked, along with the person who compiled it, I immediately updated the post.

Sorry, but this was not about PVs. Getting some 2-3k PVs and destroying the site's image is not going to do any good.

I would like to apologize to everyone for the confusion created.
That looks good Justin...but it looks more like a book of 'case studies'...rather than an analytical take on the subject matter.

Not that I am saying your approach is not good, it sure is. It adds to the body of knowledge on how people get traction.

But just like how someone sat down and came up with best practices like Test Driven Development and the Agile Manifesto and Customer Development and Building a Lean Startup.

I would like something similar for customer acquisition and growth hacking.
A cache bug allows you to overwrite effectively any area in memory, including in this case kernel memory.

Since you can overwrite kernel memory all you need to do is change the uid of your process to 0, and then the OS will happily do whatever you want.

Alternatively just overwrite the address of a popular system call to a function that you prefer.

With a little metasploit code this thing should be completely cross platform.
I agree and that would seem so, but why then all the hate from Java developers no less?
Just opening this link threw security warnings from my antivirus. As such, I'd pull this from HackerNews. AMD processor.
To be read while listening to a Tribute to Pants (http://mst3k.wikia.com/wiki/Tribute_to_Pants)!
PDF warning for everyone else as well. :D
My new post "AngelHack Grand Finals Demo"