HNHacker News
TopNewBestAskShowJobs

ldar15

334 karma · joined June 24, 2011

submissionscomments
ldar15··on We’re not going to have a jobless recovery. We’re going to have a jobless future
Technology does not kill jobs: instead it allows the new jobs to be created elsewhere.

50,000 BC: your "job" (finding food) so dominated your life that your entire community followed it around.

20,000 BC: farming began. Your "job" is in the field by your house.

1700 AD: agricultural revolution. Technology allows smaller number to produce food. This allows industrial revolution. More specifically, this creates surplus food which means people can move. And so jobs can move. But it also means that areas that cannot produce food competitively no longer have to. Surplus food allows jobs to move to where the water wheels and resources are to commence industrialization.

1800 AD: The invention of the steam engine frees jobs from the need to be near flowing water: i.e. to move to where the resources are, or where the need to be. For much of the UK this was near ports as raw materials (e.g. cotton) came by ship. Bonus if the port is near a coal field. Again, areas that do not have cheap access to transport and coal, no longer have jobs.

1970 AD: Oil, giant ships, containerization and "free" trade allows jobs to move where wages are cheaper. Entire nations are uncompetitive at manufacturing.

2005 AD: Communications revolution. International calls are free. Service industry jobs move to where wages are cheaper. Entire nations are uncompetitive for service industry.

2008 AD: Computer Vision revolution: computers can now do picking and sorting that previously required a human.

201X AD: Robot Dexterity revolution: computers can now do fine motor skills, such as stitching shoes. Nike finally stops using child labor.

What is left for humans?

Technology has been killing (but not net killing) jobs for centuries.

Is this true? Or is it the case that as technology kills jobs, the unemployed find make work? That is, even if the unemployment level in a country has stayed the same, does it mean that the new jobs that the displaced workers perform are useful, or just a drain on society? Sure in the 19th century there were new non-make-work jobs. But today? Example: people working at Hallmark stores. Example: layer upon layer of middle and upper management. Perhaps it doesn't matter: if society can support make-work jobs, because of efficiencies elsewhere, then as long as people are employed it doesn't matter how. The problem would be if those make-work jobs could no longer be supported. This is what is happening: it is not in China's interest any more to support the vast inefficiencies of the US economic system. Make-work jobs are going away.

Finally, WWII: we destroyed most of the world economy to the point where the US was the world economy (ok, 75% of it). Does this have anything to do with the US having full employment (i.e. hiding technology's job kill) - and if so, now that the rest of the world has caught up, might we now see that the US economy cant support the make-work jobs?

ldar15··on SICP is Under Attack
why not abstract away the underlying architecture

Because it would not be an abstraction of what is there. It would be the creation of an abstraction of something that isnt there: i.e. a simulation. And indeed, this is exactly the cause of my complaint.

Its like you have a machine that deals with squares. You're suggestion is to "abstract" the system into shapes, but then build a system using circles. A shape is an abstraction of both squares and circles. But a circle is not a square, and squares are what you have. FP languages and Imperative Languages are both specializations of the "programming language". But FP is not a generalization of IP. The computer is an IP machine.

When reading SICP there were several places where I had an uneasy feeling. Something was wrong and I didn't immediately know why. Then it clicked: I'm being asked to make rectilinear geometry out of circles. First time students aren't going to make it past the confusion.

And finally, if we're abstracting away the underlying architecture, why the focus on tail-recursion (an optimization), iteration vs recursion (an optimization), memoization (an optimization)... The complaint of the original article is that the alternative books are "How To Program In Language X", instead of "How to Program". However, SICP is most definitely "How to Program in Scheme".

ldar15··on SICP is Under Attack
I'd been programming over 20 years when I read SICP. The book was interesting. It was interesting as an introduction to functional programming. But, in my opinion, a lot of the stuff in it that is held up to be clever or informative is just difficult because the reader is expected to figure out how to to imperative programming in a functional language.

A computer is an imperative device. It is a deterministic state machine. Teaching introductory programming with a functional language is teaching students wrong, i.e. it does them a disservice. This being ycombinator, and given pg's thoughts on the merits of FP, I may not have a popular view. We will just have to agree to disagree.

Once you figure out (i.e. immediately if you have done it before) that computers are imperative, not functional, many of the "truths" or "revelations" in SICP are like "well, duh" or worse, "why the fuck did you make me go to all that effort?"

ldar15··on Was .NET All a Mistake?
And if there is a language that is screaming out for an AMP equivalent its C#: it has structs for efficient memory organization. It has hands-off memory management, meaning that the GPU back-end can do it differently than a CPU back-end. It has attributes, meaning an easy way for you, the programmer, to provide hints to the back end, in a non-hack, already built-in kind of way.
ldar15··on Was .NET All a Mistake?
The CLR does inline, but it has restrictions that you're probably hitting.

It has restrictions that I am absolutely definitely hitting, and that I hit whenever I want to do something that would actually benefit from inlining.

Inlining a property get on a windows form in response to a mouse click - not very fucking useful.

Not inlining a matrix multiply of a few million verts = guaranteed downcode to native.

Not inlining a single matrix mult? Now I have to determine if the call to native, and the associated compiler, linker bullshit, is worth the effort.

Ok, for games its obvious that one has to just jump in and write native code. But its a shame because the C# and the CLR should be able to out-perform the C++. There are tons of applications where it could be much faster but isnt, and where there isnt a programming team ready to drop down to native.

Its a shame Intel can't write their own JITter.

ldar15··on Was .NET All a Mistake?
"efficient"

DRY: as a programmer you know that having to maintain two identical copies of something to keep them in sync is bad. You should refactor. Now take that idea and make it part of the language: header files. You have to declare every method in the source file, and then again, in the header file.

That at least made some sense for C, because header files were small, compared to source files. Only a few key methods needed to be in the header files. Now take C++: the entire class declaration has to be in the header file, including all the private methods. Now every source file has to parse a much greater amount of header files.

For bonus points, don't change the rule that a header file can be included multiple times, with multiple different active #defines. So you cant optimize that.

Then, even if you do start using microsoft specific #pragma's, of compiler-recognizable #ifdef MYFILE_H #define MYFILE_H, these files can still render different syntax trees between different source files, so you can't parse them one per project.

Then, introduce templates. Basically, remove the need for a source file at all, and declare that huge reams of code will actually be in header files. Bonus: dont declare a new form of source file, just keep using header files for this, again with the rules that the same header file (of templates) can mean multiple different things in any given source file, despite the fact that this is guaranteed to Not Do You What You Expect even if you were foolish enough to do it.

The only template "improvement" in C++0x is "extern templates", which is basically a huge goddam hack that says to the compiler "look I know you've had to parse+comprehend this template code for every single source file but please dont actually generate the machine code in my object file".

Finally, get together and decide that of all the things fucked up about C++, its the lack of threading support that is the big problem for us all. Seriously?

There isn't any way to make Visual C++ "efficient" because it compiles C++. Likewise, "modern". If you mean "efficient" for typing / editing, then I'd recommend you have a look at Visual SlickEdit (if you are the IDE type) and even then you will be light years behind what a modern IDE can do with a modern language.

ldar15··on Was .NET All a Mistake?
I agree with your conclusion (suffering for lack of modern native code development) but disagree with your solution.

C# still has the potential to be vastly superior to C++ for "native" development. The problem is that they spent the last 10 years working exclusively on neat features like LINQ instead of something that they promised back in 2002. I wish I had a link to the article, but back in 2002 I read an article from one of the C# leads stating that, unlike C++, the CLR would be able to do processor specific optimizations at code generation time. It also talked about inline functions, and that it didnt matter that C# didnt have an inline keyword because of course the JITter would do that automatically.

Roll on 2011, and my lovely Matrix44.Multiply(Vector4[] foo) neither inlines the internal Matrix44.Multiply(Vector4 bar) nor does it SIMD any of it even if I inline it myself. Ditto for Matrix34.Multiply(ArrayOfStructs baz).

Then there are the kind of performance guided global optimizations that you could do with a language like C#, using data-driven compilers, or manual-driven attributes. Memory management, for example, could be class/struct specific giving those classes performance as good as any C++ custom memory management (e.g. pools), while allowing initial development to proceed rapidly.

Sadly, none of this came to pass. If anyone wanted to hire me to work at a games company it would be on the condition that the first thing I got to do was write a C# toolset that did exactly this. (Funnily enough, nobody has hired me, but the idea of scrabbling in the just-post-punch-card shit that is C++ is enough to discourage me from dropping the requirement).

ldar15··on When patents attack Android
It is exactly the kind of innovative solution that multiple developers would discover independently. It is exactly the kind of idea that does not need a 17 year monopoly to incentivize investors to provide cash for its development.
ldar15··on Shock, awe: British government agrees that copyright has gone too far
"Dear Big Media, Lately we havent received enough campaign funding. We have made polite inquiries before, but they have gone unanswered. We're trying really hard to keep a hold on these pesky liberals, but they are doing a really good job on gaining seats. Here's our idea for new copyright laws. What do you think? Ideas / monetary contributions to the usual accounts. Also, we've just lost the Murdoch account so we need some of our other contributors to step up. Thanks, The Conservative Party"
ldar15··on That truck driver you flipped off? Let me tell you his story.
adhering to the constructions signs indicating that a lane is closed ahead

What part of the construction sign are you adhering? Is there a construction sign that says "merge immediately"? No.

So your anger is based on what? The fact that you merge into a lane, and then the person behind you drives by you? Think about this logically:

If you merge in at point A, and a driver passes you to merge closer, are they an asshole? So now the merge point is now point A. Anyone merged after point A is an asshole. But you have just established a definitive, permanent merge point that a driver may not pass.

Is this effective? Is it effective to have a merge point, beyond which someone may not pass, or should they merge at some point before this? If the answer is "yes, it is effective to have a hard merge point" then why should that merge point be point A, and not the lane end? What is magical about point A? Should the drivers in the thru lane at point A automatically let you in? Why?

But if drivers behind you should also merge before point A (in the same way that you merged before the lane-end) then a new merge point A' is established (beyond which anyone is an asshole). So the "polite, non-asshole" endpoints A, A', A'' move further and further back down the freeway, leaving a huge area of the freeway unused and causing the traffic jam to extend as much as twice as far as it need be.

ldar15··on That truck driver you flipped off? Let me tell you his story.
You claim: This gets everyone through the construction zone faster since you don't have a stream of last-minute merges jamming things up.

There are countless studies demonstrating that this apparently widely held opinion is wrong. Here's one, discussing joint merge (i.e. merge at the end):

http://www.workzonesafety.org/node/10936

Overall, merging speeds were found to be relatively similar at volumes ranging from 600 to 1,200 vehicles per hour and did not affect the discharge rate at the merge outflow point. However, the experimental results did suggest that drivers were more cautious in their merging maneuvers. This was thought to be attributable to the joint merge, which produced a more evenly balanced lane volume at the transition zone entrance.

That is: drivers were more cautious (good), exit traffic flow was the same (contrary to your statement) and lane volume was balanced - i.e. the traffic jam extended less further down the freeway (very good).

Two major reasons for accidents during merges are

  1) Anger at merge points based on perceived fairness
  2) High speed traffic in the empty lane hitting vehicles
     attempting to enter the free lane
The ideal pattern (maximal traffic flow, minimal accidents) is to fill all available lanes and merge at the ends on a take-turns basis.
ldar15··on Google On The Nortel Loss, Patents As Government-Granted Monopolies
Depends if the other side also wants to keep patents going. They may be interested in patent reform too. Apple has Lodsys to deal with, for example. If you dont have patents then its all about execution. I'd say Apple is kicking everyone's arse on execution. Same for IBM.
ldar15··on Who owns America? Hint: It's not China
8% might not "own" us, but its enough to "pwn" us.

Here's some nice commentary about the reality of the debt limit: http://ftalphaville.ft.com/blog/2011/06/22/602761/the-imposs...

Many point out that, even if the government "shuts down", we have enough to pay the interest on all our debt, so we don't have to worry about default. But that completely ignores maturing treasury bills. In order for us not to be up shit creek, we need China, Japan, Wall Street, HK to rollover these bonds (i.e use the money we owe on them to buy more).

Most of this debt is short term (less than two years). What happens to our economy if China decides not to rollover $1T over that time? Or starts selling it? If it doesn't end with everyone else throwing in the towel, it will at least end with huge interest rates. The only thing stopping the US becoming 1930's Germany is the Chinese. It's nice that we have all the other requirements in place: Father^H^H^H^Hhomeland Security, Christian Fundamentalists, huge military, secret police, massive jails.

ldar15··on Who owns America? Hint: It's not China
Unless we are talking about China using the debt for hostile purposes, in which case the independence of RoC and what it may be willing to do to stay independent, might be exactly what matters. Ditto HK. I assume everyone involved has plans to move their money if PRC attempts nationalization, but if its delivers instructions to "keep your money, just dont roll it over" or "dont roll it over and we'll cover any loses as the dollar ceases to exist" then some people will have some hard choices to make.
ldar15··on Poll: Android developers, what IDE do you use?
It just works. I think the refactoring and language support may be better too, but that's not why I switched. I switched because eclipse is either too complex to work reliably, or I'm too stupid to understand it. Android, Appengine, maven, all just work great in IntelliJ. Whereas bog standard tomcat+maven was a daily game of potluck in eclipse.
ldar15··on Google On The Nortel Loss, Patents As Government-Granted Monopolies
$900 million could buy a lot of politicians, surely.
ldar15··on Functional Programming Doesn't Work (and what to do about it)
His solution is the "problem" of having to update the whole game state in a function is "is not to return new versions of anything, but to simply return statements about what happened" and "Actually handling what happened is a separate step, one that can be done later on in the frame."

Did he just make an imperative DSL out of erlang?

ldar15··on John Siracusa's Mac OS X 10.7 Lion Review
"It chose to attack the lowest-hanging fruit first, the one thing about Apple's development environment most likely to stand out as primitive and backwards to programmers coming from other platforms or even fresh out of school: manual memory management."

ARC works great until you have cyclic references. Then you "just" have to add "Zeroing Weak References". Ok. Where? How do I know when I have to add them?

The problem with reference counted memory management is NOT having to type [x retain]. Its having to KNOW where NOT to type it. ARC doesn't solve this at all. It just allows an entire generation of programmers to stop thinking about it altogether. That's going to end well.

ldar15··on Show HN: I made a Web-based Todo App - used: CSS3 3D transforms, Node.js, love
So, 502. Can you please (seriously) write a post about what your server setup is and what its like to be deal with the rush of traffic. I'll be doing it one day soon and all the info I can get would really help!
ldar15··on Novell and Xamarin Partnership around Mono
Short answer: Because lawyers cost money.

LGPL code is not magically perfect. I've modified most third party libs I've used. If those are LGPL, I have to make sure those changes get back to the public. I either have to put messages on the game screen about where to get the code, or I have to ship the code on the disc. This is simply not going to happen in most corp environments without extensive lawyer say-so. As an independent, github make fulfilling this obligation a lot easier and I've used it for that purpose.

However there is a second problem. In some situations (iOS for example, but there are others with broken build pipelines) a separate "Library" does not work. The code must be compiled in directly. Is it now no longer a library for legal purposes? If not, then the whole product is now covered by GPL. Fuck. That is just not something that can be risked. Sorry.

So instead I only use software that is "Free" as in "Freedom to do what I want with it", like BSD, MIT or Apache.

ldar15··on 9.2% Unemployment? Blame Microsoft.
It gets better.

  3. The Chinese use the money we give them to buy gvt bonds.
  4. The gvt bonds are spent by the gvt.
  5. This spending is added to GDP.
  6. GDP appears to have gone up. 
     Without gvt debt, GDP is the same it was in 1998.
ldar15··on 9.2% Unemployment? Blame Microsoft.
Imagine a future society where food and shelter are essentially free. A single person can farm hectares of land and produce food for thousands. Food is distributed automatically. Shelter is built once and lasts for hundreds of years. Humans spend very little doing things they dont want to.

I have thought a lot about this. My first question was, how do we get there from here? With 9 billion people. With the poorest and least educated pumping out babies as per genetic programming. Then I had the realisation: We are already there. The problem is for those 8.9999 billion on the outside of it.

I've been looking at the poor immigrants living a few miles east, and their eight kids, and thinking that they are the problem. In fact, my two kids are just as much a part of the problem. If all of us making less than $5,000,000 p.a. would stop reproducing, we'd have our utopia in a generation.

ldar15··on 9.2% Unemployment? Blame Microsoft.
FTA: "GDP is as high as it was in 2008".

Without government debt spending, GDP has been flat for 15 years.

http://www.johnmauldin.com/images/uploads/charts/050911-01.j...

Its like saying that your annual income rose from $100,000 to $150,000 because you count the $50,000 you spend using credit cards. This is absurd. Your income is still $100,000, (oh but now you spend $12,000 a year in interest too).

There's more to write about the changes in society, but this GDP fallacy must be corrected.

ldar15··on Facial recognition false positives lead to license revocations in Massachusetts
Both life and liberty are rights which may be forfeit by criminal action. Simply because the justice system can revoke your life does not make your life a privilege as Ms Krapielian would have us believe.

The simple fact of the government paving all public thoroughfares does not somehow mean that it is now a privilege to walk upon them or drive on them.

ldar15··on Facial recognition false positives lead to license revocations in Massachusetts
FTA: Registrar Rachel Krapielian said that protecting the public far outweighs any inconvenience Gass or anyone else might experience.

“A driver’s license is not a matter of civil rights. It’s not a right. It’s a privilege,’’ she said. “Yes, it is an inconvenience [to have to clear your name], but lots of people have their identities stolen, and that’s an inconvenience, too."

This person is why I'm a libertarian.

ldar15··on The Smartest Man in Europe Is Very Cautious
And now, governments! http://blogs.reuters.com/felix-salmon/2011/07/15/the-horrify...

Fancy.

ldar15··on Nginx doesn't suck at SSL after all
So, are these the new numbers? I copied the numbers from the original and the new post:

  haproxy direct: 6,000 requests per second
  stunnel -> haproxy: 430 requests per second
  (OLD) nginx (ssl) -> haproxy: 90 requests per second
  nginx (AES256-SHA) -> haproxy: 1300 requests per second
  nginx (AES256-SHA with keepalive 5 5;) -> haproxy: 4300 requests per second
Did other things change or is nginx more than twice as fast as the next best solution?
ldar15··on DOJ: We can force you to decrypt that laptop
From the EFF: ""Decrypting the data on the laptop can be, in and of itself, a testimonial act--revealing control over a computer and the files on it"

This suggests to me that the prosecution has failed to prove that the laptop, or the data on the laptop, is hers. In which case, as I understand it, they would be unable to make a contempt charge stick.

ldar15··on EFF: forced disclosure of encryption password violates 5th Amendment
On the contrary. If the safe requires a combination, the higher courts have held that the 5th protects you from giving it up.
ldar15··on EFF: forced disclosure of encryption password violates 5th Amendment
Detailed. But wrong. Although courts and DAs have tried to argue that a password is like a physical key, or tried to give you immunity for speaking the key, higher courts (e.g. the 5th circuit of appeals) regard giving the password as testimony - and therefor protected by the 5th.

Although passwords are new, combination locks are not. There is a lot of case law on this.

http://www.google.com/search?q=5th+amendment+combination+pas...

"In distinguishing testimonial from non-testimonial acts, the Supreme Court has compared revealing the combination to a wall safe to surrendering the key to a strongbox. The combination conveys the contents of one's mind; the key does not and is therefore not testimonial. A password, like a combination, is in the suspect's mind, and is therefore testimonial and beyond the reach of the grand jury subpoena. "

Edit: Why it matters in this case: FTA "the government seized an encrypted laptop from the home she shares with her family"

The government cannot prove that the laptop is hers. If she provides a password, and it works she has proven that the laptop is hers, and further that the contents are under her control. Therefor the act of provided the password would be testimony.

← PreviousPage 3 of 4Next →