Don't Fear the URLs - <AUTHOR> http://adam.blog.heroku.com/past/2008/8/12/dont_fear_the_urls/ <comment><USER2> The example may be somewhat literal and simplistic, but I feel the idea has merit.

An interesting direction to keep in mind should the controller logic ever begin too smell spagghetified.

</comment><comment><USER3> I don't agree with the solution, but he does start off with a good point -- sometimes you have to write a lot of awkward code just to define very simple REST-style resources, whether it's for a public/private api or just some ajax accessible actions for an application.

What's different about the action he describes (and RESTful actions in general) is that the controller essentially gets in the way of accessing the model directly. What he really wants is an rpc call from javascript (or some other internal service), but to do so in the rails paradigm, he has to create a "webpage" which prints out 3.

At the same time though, you might have a resource that requires authentication. If that's the case, the controller has a more obvious role.

</comment><comment><USER4> I think that Rails controllers do tend to be pretty "fluffy" -- in fact, I would basically call them "view adapters." Replacing them entirely with a Sinatra-style routing and dispatch model would be a fine approach.

However, that still leaves a gap between the page-to-page flow control and transactional logic, which is an area where Rails just doesn't have much help to offer. Having to flatten my entire transaction state into a session hash, which is then (by default) squeezed into a 4Kb cookie, is constraining.

Why not let me instantiate a controller for a particular transaction on the site and control its lifecycle, ala Stateful Session Beans?

</comment><comment><USER5> That final solution was trash. Decouping can be helpful. For me the biggest is using third-party code. I can have my own URL structure for someone else's app and the views (in Django, aka controllers in Rails) don't change. Having to change every method just to fit into my site structure would be a nightmare. And I don't see a need to tie URLs to my methods, they're not always being called by a URL anyway.

Knowing about available parameters is again not a problem in Django, they are in the method definition. I was pretty sure this was the case with Rails anyway.

And as Chris already mentioned, you can have multiple routes if they are decoupled.

</comment><comment><USER6> So, instead of having multiple routes, with this method you're locked into one route per action.

<comment><USER7> That's not true. Have you looked at Sinatra? It's gorgeous. All URI definitions can (and should) be placed in a single .rb file.

      get '/content/:id' do
        header 'Content-Type' => 'text/html; charset=utf-8'

        # Get content using params[:id]

        if (!@content.empty?)
          erb :show
        else
          redirect '/'
        end
      end

      get '/newstuff' do
        header 'Content-Type' => 'text/html; charset=utf-8'
        login_required

        # Do stuff

        erb :new, :layout => :layout_admin
      end

      post '/newstuff' do
        header 'Content-Type' => 'text/html; charset=utf-8'
        login_required

        @summary = Summary.new(
          :date => Time.now,
          :title => params[:title],
          :author => params[:author],
          :worthwhile => params[:worthwhile]
        )

        # Save content

        erb(:new, :layout => :layout_admin)
      end

</comment></comment><comment><USER8> Sounds nice, although I do like controller inheritance, the ability to mix modules into your controller's scope, etc.

</comment><comment><USER9> Looks like he wants Sinatra.

</comment><comment><USER10> This is retartded. You might aswell define your "routes" with mod_rewrite. (or equiv)

<comment><USER11> Tip: always remember to use spellcheck when claiming that other people's ideas lack intelligence.</comment></comment>


Auctomatic in open beta now - <AUTHOR> http://auctomatic.com/

<comment><USER2> Congrats! Some first impressions:

\- <http://www.auctomatic.com/app/username> is a little strange. Would it be a big headache to remap it to <http://www.auctomatic.com/username>?

\- It would be really neat if you could have a preview button when you're setting up your auction that generates a full preview. That is, the preview would generate HTML identical to Ebay's but with your auction info.

<comment><USER3> Thanks for the feedback!

On your points:

\- To prefix or not to prefix is always a tradeoff (as in, <http://twitter.com/ev> vs. <http://google.com/a/foo.com>). We wanted to keep some of that tasty top level namespace open, and figured /app/ would be an easy prefix to remember.

\- That's definitely a good point, and something we're quite likely to do soon.

<comment><USER4> As someone that's a professional seller on eBay, the URL will be the last thing I'm going to worry about (bookmark it, done!). What matters to me is how are you going to help me increase my sales and margin while lowering my eBay fee.

btw... what is the different between your service and something like Auctiva? As far as i can tell, they're already doing everything that you offer and they're FREE! (they take a cut from my insurance sales instead of 1% of total sale)

<comment><USER5> hey cyggie, thanks for your feedback.

re Auctiva:

1) we plan to differentiate in the future by working with other platforms (Amazon, Google etc). 2) a Gold level powerseller told us: "I have found that Auctiva has very little "value-added" over the plain vanilla eBay tools. My hope is that your final product will be an improvement both in ease of use and cost over eBay/Auctiva", which also hints at our goals. There is a lot we can do to help sellers optimize, and more than that, introduce some real "ease-of use" into this market.

All the initial feedback we have had suggests we are on track with both. I'd be happy to discuss any insights you may have to help us improve, drop me a line at kul at auctomatic.com.

</comment></comment></comment></comment><comment><USER3> By the way, we've also got a reddit style site set up for requesting features at: <http://features.auctomatic.com>

Thus far we've mostly used it internally to track requests people have emailed us, but it's time to open it up. So, if you signed up for an Auctomatic account and have some ideas, we'd love to hear about them.

Thanks!

</comment><comment><USER6> trying to confuse the competition? :-) (where XXXXXXX is the site name and YYYYYYY is the session id (?)).

looks great though!!

<https://auctomatic.com/app/XXXXXXX_run.py?=YYYYYYYY>

<https://auctomatic.com/app/XXXXXXX?_main.asp=YYYYYYYY>

<https://auctomatic.com/app/XXXXXXX?_autoexec.bat=YYYYYY>

<https://auctomatic.com/app/XXXXXXX?_run.arc=YYYYYYYYYY>

<https://auctomatic.com/app/XXXXXXX?_dispatch.fortran=YYYYYYY>

<comment><USER7> Didn't pg say somewhere that Viaweb included cgi-bin in urls for the same reason?

Edit: Yes. <http://news.ycombinator.com/item?id=4625>

</comment></comment><comment><USER8> Making eBay suck less, what a bloody good idea!

I will be giving your site a try next time I sell something on eBay...

</comment><comment><USER9> This seems like a great idea! Congrats.</comment>


Rosetta 2 is Apple's key to making the ARM transition less painful - <AUTHOR> https://www.theverge.com/21304182/apple-arm-mac-rosetta-2-emulation-app-converter-explainer <comment><AUTHOR> I'm really curious how performant Rosetta translated x86 applications would be, especially considering Transmeta's non-succesful attempt of doing something similar. It sounds like the key difference is that Rosetta would do it ahead of time instead of real-time like Transmeta?

<comment><USER2> Sounds like what ARDI's Executor did on the PC and Next systems: [https://en.wikipedia.org/wiki/Executor_(software)](https://en.wikipedia.org/wiki/Executor_\(software\))

It translated Mac 68K code to native code. Like WINE does.

It was released as open source under the MIT license and this is the most active fork: [https://github.com/autc04/executor](https://github.com/autc04/executor)

It needs no ROM or Mac System files.</comment></comment>


Generate images and video with Deep Dream - <AUTHOR> https://www.71squared.com/deepdreamer <comment><USER2> This is an ad for a paid & closed source application.

<comment><USER3> And it's for OS X only.

<comment><AUTHOR> yeah, i have mixed feeling about it, sorry i posted it. But the open source projects I've been sifting through are all broken to some extent. I was hoping someone might point out a better option than this closed source :(

</comment></comment></comment><comment><USER4> I'm wary that the page doesn't give any details of what kind of rendering speed you can expect or which GPUs are supported.

</comment><comment><USER5> Be careful, it's for OSX only.

<comment><USER6> thank you, this should be written somewhere on their website :)

</comment></comment><comment><USER7> Are the generated animations "stable"?

I mean that in the same sense as [1].

[1] [https://news.ycombinator.com/item?id=15766249](https://news.ycombinator.com/item?id=15766249)

</comment><comment><USER8> This reminds of the 'Magic Eye' craze, while there's an impressive technical aspect, emotionally these leave me cold, in every case I preferred the raw image to the processed one.

<comment><USER9> Yup. From a technical point of view these style transferring algorithms are really cool. But from an artistic point of view they're dull. And these examples aren't anywhere near as good as those found here: [https://github.com/jcjohnson/neural- style](https://github.com/jcjohnson/neural-style) for example. Perhaps someone can use this technique as a starting off point for creating something of artistic value, but so far I haven't seen it.

<comment><USER10> I'm quite partial to this implementation of deep dream: [https://github.com/ProGamerGov/Protobuf- Dreamer](https://github.com/ProGamerGov/Protobuf-Dreamer)

Feel like something similar should be possible with a style transfer as well.

Also: [https://distill.pub/2017/feature- visualization/](https://distill.pub/2017/feature-visualization/)

</comment></comment></comment><comment><USER11> Product is at version 1.0 since 2 years and never received any update. I could use more options when rendering movies...</comment>


Electronic Whole Earth Catalog - <AUTHOR> https://archive.org/details/the-electronic-whole-earth-catalog <comment><USER2> The current state of the Whole Earth Catalog's online presence is a very sad state of affairs. [http://www.wholeearth.com](http://www.wholeearth.com) has been posting php errors for years, it has no support for ssl, it relies on Flash for core functionality, it makes no attempt for mobile support, and worst of all the archive is completely inaccessible. I find it hard to imagine that there's not enough good will in California to give Whole Earth the kind of website that it deserves. The fact that this hasn't happened makes me speculate that either there's some kind of interpersonal issue with the project, or that companies like Apple have no concern for their own origins and history.

</comment><comment><USER3> As a young person I was given "The Millennium Whole Earth Catalog" and, leaving aside the pornographic pages and creepy through-running comic that upset me, I didn't and to this day - despite just reading the Wikipedia page for Whole Earth Catalog - don't understand what it's FOR and what you're supposed to DO with it. "It's, you know, ecology mannn". Am I supposed to order products from it? Hippy solipsism.

<comment><USER4> I always thought it was more of a directory than a catalog.

</comment></comment><comment><USER5> A 450MB file in 1988!! CD-ROM drives were extremely new at the time. It was larger than most people's hard drives.

<comment><USER6> That exactly was the attraction of CD-ROMs in the late 1980s and early 1990s. It was (to the era) practically infinite storage compared to what they were used to. Before the dawn of the Web in the mid/late 1990s, CD-ROMs were a major industry with the first electronic encyclopedias and many other reference works later made obsolete by the Web.

<comment><USER7> I remember in the early 00's having access to a copy of Microsoft Encarta in elementary school.

We would have research-based projects (e.g. look up history of $topic and write 2-page "report" while citing sources).

Students were trained by school librarians how to use the Dewey Decimal system, and take out/return books.

The teachers/librarians reacted with intense hostility to my getting the required information within a few seconds, rather than needing to slog through hundreds of pages of paper reference material.

The librarians, in particular, gave stern lectures about how digital information was untrustworthy, and the ability to do research using physical books would always be a critical life skill.

<comment><USER8> I just posted the other day about how my family bought a full set of Encyclopedia Britannica, then a couple years later a CD-ROM copy of Encarta (~500x the capacity of typical 3.5" floppies?), then four or five years later it was all online. Heady times!

Also, younger folks these days haven't lived through a physical media migration.

The weirdest thing I remember about the early CD-ROM days was that everything was parallel distributed: there was a floppy version (10 disks!) that would be substantially media-cut-down, then a CD-ROM version. Because install bases don't grow overnight.

</comment></comment></comment></comment><comment><USER9> If you wish to run it locally, I found this method that works with modern Macs [1]. You'll have to fiddle with the .img file however (I extracted it and access it from SheepShaver as a folder).

[1] [https://jamesfriend.com.au/running-hypercard- stack-2014](https://jamesfriend.com.au/running-hypercard-stack-2014)

<comment><USER10> Also, for those who'd like to go down the rabbit hole of emulating classic Macintosh software, including HyperCard, I'd recommend Mini vMac.

[https://www.gryphel.com/c/minivmac/](https://www.gryphel.com/c/minivmac/)

And the Macintosh Repository: [https://www.macintoshrepository.org/](https://www.macintoshrepository.org/)

I think I followed this article to get started: [http://www.toughdev.com/content/2008/06/system-7-5-5-on- mini...](http://www.toughdev.com/content/2008/06/system-7-5-5-on-mini-vmac/)

By building Mini vMac from source, and gathering ancient pieces of software over a few months, I was able to put together a fully working and practical Macintosh 7 running - on macOS, but possible to run on Windows and Linux as well.

HyperCard, SimCity Classic, Civilization, Lemmings, Berkeley Logo.. Such a joy.

Just now, I downloaded the Electronic Whole Earth Catalog from the Internet Archive, and imported into vMac. Ooh, too bad, I get a message:

> To access your files, you must mount this hard disk on a computer that has > Mac OS 8.1 or later."

My vMac is running 7.5.5. Well, I'll try to extract it on host OS then import.

</comment></comment><comment><USER8> Brøderbund (and later purchased by The Learning Company) are developer names I haven't heard in a while. Good memories.

[https://en.wikipedia.org/wiki/Broderbund](https://en.wikipedia.org/wiki/Broderbund)

[https://en.wikipedia.org/wiki/The_Learning_Company](https://en.wikipedia.org/wiki/The_Learning_Company)

</comment><comment><USER11> What would be the copyright status on something like this?

</comment><comment><USER12> I enjoyed going through these as a kid in the 60s.

<comment><USER13> Same here - in the 80s. As a kid growing up on the east coast in a conservative culture, it really shaped my perspective of my worldview on the "internet", computing, permaculture, sustainability, and counter culture.

Thank you Stewart Brand.

<comment><USER14> Same here, in the 90s!</comment></comment></comment>


Ask HN: How to become a better programmer? - <AUTHOR> My questions is: what abilities are required to effectively build complex web apps and services?
My current knowledge is limited to PHP and MySQL, with no real understanding of OOP.
That said, what would you suggest my next step be? Should I take a stab at Ruby? Javascript? Python? Frameworks?
I would appreciate any suggestions. <comment><USER2> Learn another language. Not just because PHP isn't a particularly good one (IMHO), but because learning new languages inevitably teaches you new ways of thinking about programming.

Ruby is good for OOP.

<comment><USER3> Since nobody mentioned yet... lisp is a great language to learn just to expand your horizons. Don't expect to actually develop websites in it (though clojure might be a good bet for more complex web apps), but it _will_ make you a better programmer.

<comment><USER4> "Don't expect to actually develop websites in it"

I just tried to develop a website with SBCL and Hunchentoot, and it works relatively well for small examples. There's pretty good MySQL support, and it's all pretty fast. I couldn't figure out how to get a long-running SBCL process to keep even on memory usage. I saw a talk from a guy who works at ITA software [1] where he said they blow away their SBCL instances and restart them on regular intervals, so maybe it's just not possible!

To anyone who is serious about developing a Lisp website, I'd spend a lot of time up-front evaluating different Lisps

[1] I can't find this talk anymore :<

<comment><USER3> It's about the tool for the job. Most websites just don't have that much server code to justify a bigger hammer. And lisps definitely take a stronger arm to swing.

Right now I'm re-learning PHP, and I'm shocked at both how prone to shortcuts it is, and how practical most of these shortcuts are. It's truly a tool for the job. I have yet to see if the cool toys like first order functions are actually usable, but I wouldn't be surprised at all if they were. All that's missing for most people is a feel of what can be done - and that's exactly what a couple of months of lisp can do.

</comment></comment></comment></comment><comment><USER5> Hey Paton,

The quickest way to become a better programmer is to take a real world problem and then to solve that with a technology that is as far removed from the ones that you are already familiar with as you can imagine.

Since you're already in to the imperative mode why not try a functional or a logic language for a change to see what the other side of the street looks like ?

The interesting bit in that approach is that when you return to your current languages you'll look at them in a completely new way.

<comment><USER6> more specifically, take a real problem that your having ("Scratch The Itch"). That'll provide the ample motivation to spend a lot of time you wouldn't normally. Just build something. If you need to create a blog or whatnot, instead of using a pre-packaged platform, writing it in whatever tech you want to learn. Then you'll benefit two-fold, even though it takes longer than installing wordpress.

</comment></comment><comment><USER7> It's important to differentiate between the technical ability to build web applications and the craft of programming. It seems you are interested in the former, in which case I would recommend learning a popular framework (Ruby on Rails or Django). While you are learning a framework you'll pick up the base language just fine.

If you'd like to learn the more general craft of programming, Peter Norvig has some excellent advice: <http://norvig.com/21-days.html>. You'll find some language recommendations in the appendix.

<comment><AUTHOR> Between starting with Ruby on Rails or Django with Python, is one better to start with than the other?

<comment><USER8> Personally I tried Ruby on Rails and I did not like it. There was too much magic going on and it was confusing to a beginner like myself. I thought about Django but I got the impression that it is just "Python on Rails", so I stayed away from that too. I ended up going with web.py, and I enjoy it. I understand what is happening and what all the pieces of my program do.

It's not for everybody. There are fewer plug-ins for the framework and doing things like session management is a little harder than in Rails. The community is small (though the Google group is active). I had to spend 10 or 20 hours learning sqlAlchemy instead of having an DBORM handed to me out of the box.

But it is far easier to create a complex web app that breaks the Rails/Django paradigm. Reddit uses web.py.

There are some cool open source projects on Github that can get you started:

<http://github.com/alexksikes>

Please note that my experience may have been better because I already logged a thousand lines or so in Python before diving in (which reminds me of a great free book for learning Python - "Dive into Python").

<comment><USER9> i disagree a little with the advice above as a recommendation for the original poster. i'm not saying that web.py is better or worse than django or ror, but i think that as a "learning experience" it's probably better to go with one of the larger packages. learning to use a big package will teach you a _lot_. once you have that understanding, sure, go with web,py and cut your own path.

</comment></comment></comment></comment><comment><USER10> A lot of good programmers aren't fans of OOP.

Of course, before you can decide whether you're a fan or not, you should understand it. So I'm all for that:)

<comment><USER3> Agree. OOP is great for packaging libraries, but when it comes to software architecture it's way too easy to shoot yourself in the foot.

One common mistake, which I don't think is emphasized enough, is that modeling the problem and modeling the software are not the same thing. The problem can have a "User" actor, but this doesn't mean at all that the software should also have a User class. And yet you see User classes far too often.

</comment></comment><comment> Asa-Nisse Since nobody suggested it, go to college/university and learn about data structures, lists and processor architecture. It will help you become a much more insightful programmer.

<comment><USER11> This advice is so bad I think it just gave me cancer.

The OP is asking "what abilities are required to effectively build complex web apps and services?"

99.9999999999% of data structures in web programming are arrays and hashes. Look those up on wikipedia and read it, then you are done, now get to work.

Processor architecture??? Is that really to be taken seriously? Not only was it previously not relevant to the OP's question, but its becoming more irrelevant because virtual machines and the "cloud" paradigm.

OOP details are great if you are going to write your own libraries or plugins, but its not necessary for cranking out websites. Most of the time the OOP you are going to be dealing with you can fake.

Javascript is a must have, but you don't have to get so fancy with it. Just enough to drive a popular framework. I'd recommend jQuery, it seems to be the emerging winner.

Learn the CSS, broken browsers, and the box model, which will waste so much of your time.

If you just want to work for yourself try a few web frameworks and go with what works for you. Using anything from PHP to rails to Django, you could take over the world, they are all good.

Look into scalability. Its fun stuff to learn about, even if you never lucky enough to need it, here's a good place to start <http://highscalability.com/>

As part of scalability look into AWS like EC2, EBS and S3, they are game changers. You don't have to use them, but if you need them, they are there to save your ass.

Learn about "viral" marketing and how sites go viral.

Learn about database backup and recovery, and as part of scalability learn how you can scale databases.

Learn about unit testing, QA or even something like Selenium, figure out which works for you best and in which ways.

Learn to figure out what users want and what itch you need to scratch.

Figure out how to make interfaces that don't suck. And when you do, let me know how.

<comment> Asa-Nisse While I agree about your points I still maintain that a couple of courses in data structures and algorithms is a very good investment of your time.

In data structures you learn how to properly use a data-type. You learn how to implement a hash and a list. That is knowledge that is very valuable when programing high level stuff later on.

In algorithms you learn how to construct loops and programs that run faster than they would otherwise. For instance, think about how much faster it is to search for something in a sorted list than in a unsorted list (its log vs exp if its a nested search).

Processor architecture because you want to know where those bits go, if you dont, how are you ever to truly understand pointers, variables and data structures?

Your life will be soo much easier with these fundamentals in Computer Science in regards of scalability, performance and even user design. It's not for everyone and you can certainly do without it. But what you're advocating is basically "luck". Not everyone will write plentyoffish or twitter.

<comment><USER11> The guy wants to build complicated websites, not be a hacker snob, so I'm giving him the honest truth and getting modded down for it.

"While I agree about your points I still maintain that a couple of courses in data structures and algorithms is a very good investment of your time."

Maybe a good investment of your time, but not if you are going to just be building websites, that would not be a good investment, the returns on that investment would be small.

"In algorithms you learn how to construct loops and programs that run faster than they would otherwise. For instance, think about how much faster it is to search for something in a sorted list than in a unsorted list (its log vs exp if its a nested search)."

Do you even do any practical web programming? Unless you are hitting a amazing load on your server this would never come up. Also, if you are digging into these details you better have a good reason because there a good chance of creating bugs or overloading your web box. However if you keep it basic, and just scale horizontally, which you don't seem to understand web hosts can do, its a much better use of resources.

"Processor architecture because you want to know where those bits go, if you dont, how are you ever to truly understand pointers, variables and data structures?"

I've been in web development and scripting for 15 years, can you show me where these "bits" are, I must have misplaced them.

<comment> Asa-Nisse I'm 100% self-employed and build websites where I earn money from advertising/affiliate/sales-revenue. Been doing it fulltime for 7 years now, before that I was a student for a couple of years (where I learned that me and academics wasnt a match made in heaven..).

I used to have a site that carried 5m uniques/month, but I've also run sites that had has worse performance problems with much less users. I know of several instances where I got stuck and had help from academic books (to refresh my memory) or friends that paid more attention in class than I did :-)

My point, and as others point out, you just dont learn these things yourself unless you are forced todo it. Learning to solve a problem and learning to learn are two very different things and the later makes your view of a issue much more complete. Many subjects is completely useless stuff that is only in the courses to make them hard, but when I look back I tend to see that many courses were very valuable.

<comment><USER11> Sounds like you dropped out of academics, were successful in website development, are arguing for a hands on learning approach where it "makes your view of an issue much more complete", and even successfully used compsci books, you write "many subjects is completely useless stuff" and yet in your first post you give advice of doing the opposite of what you found success doing.

<comment> Asa-Nisse I'm saying that academics helped me understand some subjects that have been very valuable for me in my "career" as a website developer.

Perhaps I would have done fine without them, but I'm sure my projects are better as a result of me spending a couple of years learning stuff.

If you want to become a "better" programmer in the context of writing more efficient code, more bugfree code and become more efficient (learning to use the concepts that comes with the language instead of reinventing the wheel). Then yes, school helps.

You can learn it outside school aswell but I bet it will take more time in the long run. I think we'll have to accept that we disagree on this topic.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> "improve my PHP abilities to OOP"

Reading that made me laugh. PHP's OOP is extremely flawed (among various other things, like their inability to universalize the $needle and $haystack argument order: <http://bugs.php.net/bug.php?id=37088>), so using PHP to "improve your technical abilities" wouldn't really get you anywhere except having a better understanding of PHP.

I think that what you're trying to accomplish really needs to be defined in terms that aren't so broad. Especially these days, "technical skills" is such a vague term that it can really be applied to anything.

You don't need to have a complete understanding of some silly framework or whatever in order to still be considered an excellent developer in many ways. For example, you could write a stunningly elegant and clever mathematical algorithm in C without using a function more complex than sqrt(). (Or maybe you could write a more efficient sqrt!)

I think that learning something like that might improve your understanding of machines and could, indirectly, improve your understanding of "web apps and services"—that is, understanding HTTP, statelessness, and so forth.

tl;dr Figure out exactly what it is you want.

<comment> Asa-Nisse I dont want to start a flamewar regarding PHP/OO but I must say that I disagree. There are some things that isnt very well implemented in PHP but in the OO aspect of the language it has most of the needed constructs and if you stay away from the obvious pitfalls its "good enough".

If you value time / fun over code/data integrity at all time PHP is a excellent choice for producing web services. If you are writing a control system for a airplane I would not recommend it.

</comment></comment><comment><USER13> <http://norvig.com/21-days.html>

</comment><comment><USER14> You need a sound understanding of CSS, HTML and javascript. Although you may have been messing about with them a lot, try and get an in depth understanding of CSS selectors, what semantic HTML mark up is, and how to write quality code in javascript -- unobtrusive javascript is something to look up.

Javascript is really worth learning in depth. It has some quirks that will gently introduce to some useful topics such as JSON, closures, elements of functional programming, prototype based inheritance, and so on. Further, it will help you understand how to get more out of other dynamic languages too; python, ruby, etc. Douglas Crockford has some great videos on Javascript that are worth looking up.

You're not restricted to client-side programming with Javascript either. For instance, look up nodejs - a nascent server-side javascript framework that looks quite promising. It will _really_ make you think if you've just been a PHP guy up to now!

Try and get a handle on PHP's more advanced aspects - many of which have only really arrived in recent versions. Classes, name spaces, closures and so on. Although I'd really suggest another dynamic language altogether; python is a good choice, but ruby is splendid too.

Once you're confident with that stuff you may want to go in a slightly different direction. Try Java, C, Clojure or Erlang. Try reading some more general computer science books.

I hope that helps. Good luck and all the best.

</comment><comment><USER15> Before making any suggestions I would ask what is the definition of a better programmer? Since this can be a bit subjective I will suggest that you strive to become an 'expert programmer'. It is difficult to even define what an 'expert' is, but normally one would recognize an expert as someone that effortlessly accomplishes a task. Some characteristics of experts from psychological studies are:

1\. Experts such as chess grandmasters rely on a vast store of knowledge of game positions. They tend to organize this information in chunks, which can easily be retrieved from long-term memory. The same is true for other experts from sports to mathematics.

2\. They also typically engage in years of effortful study, continually tackling challenges that _lie just beyond their competence_

In my opinion you need to accumulate both, ie, expand your store of knowledge, as well as continually striving to handle situations where the task in hand is beyond your ability.

At this point in your experience my personal recommendation is to actually focus on number 2, for example refactor some PHP code into OOP, to give you another angle of programming as well as tackle JavaScript for the same reason.

The 10-year rule states that it takes approximately a decade of heavy labor to master any field. As one that has gone through a couple of 10 years:) the best advise I can give is 'learn to program' rather than learn 'to-days-popular- framework-or-language'. Think about it as similar to writing a book, knowing English will not turn you into an author. Practice will as well as motivation.

</comment><comment><USER16> PHP is mostly an imperative language with a C-like syntax. In imperative languages with a C-like syntax most OOP is just syntatic sugar on a pointer called "this" with a bit of RTTI checks for casting. If your code is unmaintainable with out OOP, OOP isn't going to help.

A far more effective skill to have is to figure out how to build a complicated application simply rather than switching to language that makes it easier to increase line count and have semi-working code.

I know PHP isn't cool anymore but at the same time, Facebook was built with it. One person can't build Facebook (in it's current incantation) so it's pretty useless to try and find the magic framework that will let you. Figure out how to prototype quickly: once your userbase exceeds the capabilities of whatever tech you have picked you'll usually have enough users to find capital/revenue or have it knocking your door down. At that point it's easy to find the skills to port to whatever the language / paradigm de jour is.

Figure out how to make the SMTPs of the world not the X.400s once your not building X.400 you can implement SMTP in just about any language.

</comment><comment><USER17> I was in your position not long ago. I'd recommend using Ruby on Rails, which will teach you a lot about OOP and the MVC framework. There are some similar frameworks for PHP (like CakePHP), but Rails' established community and abundant documentation make it a better starting place.

Javascript (<http://www.w3schools.com/js>) is an extremely important part of the web today, and jQuery (<http://www.jquery.com>) makes it more manageable than ever before. It's not difficult to learn -- you can make a lot of headway in a single day.

If at all possible, work alongside other people. You'll learn a lot from their habits and their code. And work on actual projects. Learning for the sake of learning is much more difficult than learning while you're building something.

</comment><comment><USER18> I wouldn't concentrate so much on certain programming languages, instead I would concentrate on designing programms. I don't know your background. I guess you are learning on your own, so I would recommend <http://www.htdp.org> or [http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and- Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer- Science/6-00Fall-2008/CourseHome/index.htm). Some people will recommend Structure and Interpretation of Computer Programs. This book maybe the best on programming, but I don't think it suits a selfteaching individual.

<comment><USER19> Good advice and helpful links. I would add picking up a few good books on Design Patterns.

</comment></comment><comment><USER20> I can do everything I need to with PHP and MySQL, however I'm currently working on JSP, and planning to learn Ruby and Python.

If you want to learn object oriented thinking I would recommend Java or C++. Fortunately I was already proficient at C++ before I started web programming so I already had a fairly firm grasp of object oriented thinking.

As for learning programming languages, to my way of thinking the more languages you know the better, both from a job standpoint and from a flexibility standpoint.

<comment><USER21> Learning a C language (i.e. C/C++/Java) is great advice for increasing your programming knowledge. You'll learn how software works at almost it's lowest level. I wouldn't advise learning some architectures assembly language unless you really get C and want to really dig into low level programming. It's a great skill, but if you don't want your career to go that way there are better places to invest in your education.

OOP (as mentioned in the question) is a great thing to learn as well. Depending on if you have any experience with OOP I always point people to the book "Design Patterns" by Gamma et al. It changed the way I build software in so many positive ways I doubt I could even list them all.

</comment></comment><comment><USER22> Build stuff. Break it. Fix it. Build more stuff.

</comment><comment><USER23> I'd say focus on the basics - learn more about algorithms, operating system internals, data structures, concurrency, human-computer interaction, general OO/Functional/Procedural programming principles, etc. Languages are dime a dozen - once you're strong in fundamentals, picking up a new technology/language/framework becomes a lot more easier.

</comment><comment><USER24> Buy a subscription to Safari Online and spend 15 minutes each day reading about programming.

It doesn't really matter what you read. Just pick a book that currently sounds interesting and read it. Since you are interested in OO PHP, there is a book called something like "Developing Object-Oriented Applications in PHP 5"

</comment><comment><USER25> Sounds similar to where I was a few years ago. Here are my tips:

[http://breckyunits.com/twelve_tips_to_master_programming_fas...](http://breckyunits.com/twelve_tips_to_master_programming_faster)

Feel free to email me if you want to talk further. Good luck!

</comment><comment><USER26> Lots of people like Ruby+Rails or Python+Django, so these are obvious choices. Also, if you choose a system that lots of people use, it's easier to get support from the net when things go wrong (as they are bound to from time to time).

</comment><comment><USER27> Learn a new programming paradigm. For example, if you are a OOP literate, learn FP.

</comment><comment><USER28> 91 Ways to Become the Coolest Developer in the World [http://www.techquark.com/2008/11/91-ways-to-become- coolest-d...](http://www.techquark.com/2008/11/91-ways-to-become-coolest- developer-in.html)

<comment><USER20> That is quite an extensive list and probably includes just about everything you would ever need to know. Personally I like to keep it short and sweet: The coolest developer in the world is always learning and is ready to try new things and new approaches. That summarizes probably 90% of those 91 points.

<comment><USER12> Yeah, that, and the title is totally misleading. There can't be thousands of coolest developers in the world, dammit!

</comment></comment></comment><comment><USER29> to build complex web applications you need to learn javascript, I would also take move along to ruby / python / erlang as well as/instead of php.

then I would start bashing out applications as quick as you can, stuff with a smaller scope and a clear end so you can keep them public for quite a while and learn how to reduce/remove maintenance cost.

</comment><comment><USER30> I can't describe how OOP changed my life. You have to learn it.</comment>


Americans Judge Social Class - <AUTHOR> https://www.scientificamerican.com/article/americans-are-fast-to-judge-social-class1/ <comment><USER2> I'd love to know the markers and divisions of American social classes. This would be fascinating - though I wouldn't recommend taking a Facebook test that offers to tell you where you lay

<comment><AUTHOR> It's a bit out of date but this book is really interesting on American social class: [https://smile.amazon.com/Class-Through-American-Status- Syste...](https://smile.amazon.com/Class-Through-American-Status- System/dp/0671792253)

> though I wouldn't recommend taking a Facebook test that offers to tell you > where you lay

hahah, indeed....

</comment></comment><comment><USER3> One of the foundational myths of America is that there is no social class but wealth.

I suspect that it was never true, though having spent some time in the UK, it is more true in America by far.

However, social class still exists here.

Case in point: to certain groups of people, Donald Trump represents what they think of as a "regular guy" with tons of money. He's "rich", but not "elite" in their minds.

To other people, he looks like a "low class" rich guy -- which sounds very similar, but is the negative-on-Trump view of the same basic notion.

(I'm taking a risk using Trump as an example, because he is so polarising that some folks might read this and think I'm either praising or attacking him. I'm not. I have an opinion, which I will not share here. But Trump is an example of someone in the highest wealth category without being in the highest social class, according to both many supporters and many detractors.)

<comment><USER4> There aren't titles of nobility in the US. Supposedly everyone is equal (under law), but as we often are witness to, some people seem to be more "equal" than others (under law) and this spreads to social class. Money and connections are the American titles of nobility.</comment></comment>


Retention Science Launches With $1.3M to Help Companies Retain Customers - <AUTHOR> http://betakit.com/2012/07/18/retention-science-launches-with-1-3m-to-help-companies-retain-customers <comment><USER2> Finally someone is going help me stop receiving terrible, mistargeted e-mails from Old Navy!</comment>


Chomsky: The U.S. behaves nothing like a democracy (2013) - <AUTHOR> http://www.salon.com/2013/08/17/chomsky_the_u_s_behaves_nothing_like_a_democracy/ <comment><USER2> I have to say I agree very much with Chomsky's view on the US foreign policies. They are absolutely appalling, and very egoistic (see for example en.wikipedia.org/wiki/Unit_731#American_grant_of_immunity). No other country think it has the right to drone other countries citizens; America even thinks it does the right thing when they do it. This is very well demonstrated by Clinton's quote "Can't we just drone this guy [Assange]?", which was not meant as a joke at all (if you're having a problem with this, imagine that some country would drone a US citizen; this would be absolutely unheard of). This is probably a result of massive propaganda. In every US series or movie, arab countries are portrayed as hateful terrorist nest, in a subtle or less subtle way. The US has a tradition of glorifying war and US soldiers, while ignoring the politics of the conflict.

"Returning to the United States, where the situation is not quite that bad, there's the same disparity between public opinion and policy on a very wide range of issues. Take for example the issue of minimum wage. The one view is that the minimum wage ought to be indexed to the cost of living and high enough to prevent falling below the poverty line. Eighty percent of the public support that and forty percent of the wealthy. What's the minimum wage? Going down, way below these levels."

I would say the situation is much better in Western Europe, so I don't understand why he states that the US does better on this respect. The two- party political system just doesn't work.

In the last elections, the Democratic officials favoured Clinton, which might have worked against them in the long run. This is btw exactly what Nixon stimulated, and what he has resigned for. As a result, the US voters were forced to choose between two candidates between two candidates, which both have proven to have no troubles with dirty policies.

</comment><comment><USER3> Noam loves to criticize American policy. In fact, it's been his raison d'etre for the last forty years. That being said, in most every example of US "bad" behavior all other nations seem to be behaving worse. And yet this person who doesn't believe in American exceptionalism, seems to hold us to a higher standard.

His father, however, did believe in American exceptionalism when he fled the Ukraine (like many other Jews and others of all religions) for a better life in America.

He's an ingrate.

</comment><comment><USER4> The title (and quite probably the article) confuses a democratic process used in elections, which is sensible and fair, with pure unlimited democracy (wherein a majority can order up _anything_ , ranging from murder to "free" teddy bears, so long as 50% + some epsilon decide to vote for it.)</comment>


Ask HN: Review my startup, Wedoist - <AUTHOR>

I just launched http://wedoist.com/ and would like feedback.
Wedoist is a project manager that has status updates, a task manager and a comment system. It also uses game mechanics to increase productivity and usage.
Wedoist should be a lot more dynamic than most other applications as most of it is rendered in JavaScript and Comet is used for realtime updates. The future plan is to make the realtime aspect more central (such as adding a group chat).
Try it out and hopefully you can find it useful for managing your startup :) <comment><USER2> First off, I love the interface. It's simple, clean, and gets straight to the point. That said:

* What's the difference between inbox and a new list? My first guess would be inbox holds all tasks assigned to me.

* Clicking the "attach label" button and then clicking "close" afterwards leaves an @ character in the description

* After clicking "Add an item", please display some ghost text like you do for status updates so I don't have to figure out what I'm typing

* In the "View all" list view, I suggest displaying only 5 or so tasks from each list

* Tasks should be sorted by due date

* Your link reads "Add an item". This should read "Add a Task" for consistency

* Changing "Completed items" to "View completed items" would be a better call to action

* Make the "no due date" an "Set due date" button instead. The fact that it's a text box makes me click on the "attach label" button in attempt to add a due date

* The label adding popup is effective only if you want to add a single label. Adding multiple labels becomes a nuisance, and the reordering of labels is confusing. You can also add a single label multiple times. Keep track of which ones are already on the task description, and have the user click a label to switch on/off.

If you're going to reorder based on usage, I suggest doing that after the user navigates away from the Tasks page entirely; keep the workflow consistent. Also, let the user click outside the popup to get the same effect as clicking the "Close" link. That really bugged me.

* I'm not sure what I did, but due dates are being saved to one day before (e.g. selecting June 24 and saving results in June 23)

The badges seem really arbitrary; they don't have a sense of accomplishment to them. If you really want to get into game mechanics, let the project manager set the rules and rewards for badges. Allow rules based on not only quantity of tasks, but types of tasks also (e.g. completed 5 @urgent tasks).

I can see this being really useful if you make your real time chat feature a disguise for a web front to irc. The project owner could set the credentials, and boom, you have real time chat with instant integration to many small company's irc setups. You could also host an irc server yourself, and offer to host project chat for a small fee.

Overall I really like the foundation you've built. Its simplicity will easily let you expand your feature set. I think chat and online status will need to be implemented before this can really take off. Adding an etherpad feature would be killer imo. Etherpad is open source, after all.

<comment><USER3> I voted this up solely to encourage you to keep giving great feedback and in hopes that one day when I post my startup for review, someone will come along and spend as much time critiquing it as you did!

I love this community.

<comment><USER4> same here.

</comment></comment></comment><comment><USER5> Click: <http://www.wedoist.com>

I like it.. Well designed and seemingly easy to use. The only thing I'd like to see is a search feature for status updates... or am I missing it?

<comment><AUTHOR> Search, API, milestones, file uploads and a mobile version are planned. The current form is a minimum viable product of what I think is the core of project management.

<comment><USER6> Ability to assign arbritary titles to members would be cool (e.g. Mapping Lead, Community Manager, Legal etc.)

</comment></comment></comment><comment><USER7> I know this sounds negative, but yet another "Easy Project Management"?

More constructively:

\- you should have a link to a pricing page up front.

\- you should have a tour (with screenshots)

Good luck!

</comment><comment><USER8> A few thoughts:

I signed up and like the ease of signup and the simplicity of the interface. I was a bit annoyed that I couldn't find a page of features/benefits and that I had to signup to see how it works, but your signup was painless enough that I got over it.

I'm currently using manymoon. They have a similar feed style setup, but the killer features for me are Google Apps/Google Docs integration. I don't know if that's something you'd consider or how difficult it is to do, but I personally wouldn't switch over without those features.

They also do a posterous-style email response to assigned tasks, which means you can comment on a task without logging in. That's pretty cool.

If I were to build an app like this, I would expand on posterous-style email task creation/control (I live out of a BB).

</comment><comment><USER9> Agreed with others about the interface - very slick. Great job getting it launched. A few comments/thoughts:

\- I'm interested in the game mechanics portion. Would be interesting to have additional badges based on whether a task is completed _on-time_ or ahead of schedule rather than just completed at all.

\- Some kind of crossing-out animation when you mark a task as completed (like w/Google Tasks) could make it more satisfying. Right now the item just disappears quickly...I want to revel in my accomplishment of completing a task!

\- In your welcome email you may want to include a confirmation mechanism to ensure that person is indeed the owner of that email address.

</comment><comment><USER3> simplify did an amazing job of critiquing the UI and what not so I'll take a different perspective: the average end user experience of the landing page.

I understand the 'improve your productivity and collaboration' at the top but I'd love a more specific description of the problem you solve. Personally I see 5,000,000 tools every day that aim to 'improve productivity and collaboration' so I'd love to see a more personal, unique subset of that issue which you solve elegantly!

The #1 item I wanted to see after the big big big screenshot was a quick 3-column description (below it) of each tab on the UI.

Status Updates (with icon) -Description goes here

Tasks (with icon) -Description goes here

People (with icon) -Description goes here

I would love a setup like this! Perhaps even clicking could take you to an enlarged screenshot of that specific tab.

Finally, the psychological effect of not linking directly to 'pricing' is very very negative. I want to know what I'm getting myself into if I get 'hooked.' Can you offer a clear 'Pricing' or 'How Much Does it Cost?' link somewhere on the page please?

</comment><comment><USER10> Where is the "Take it For a Test Drive" , "See how it works" - Something along those lines. With new "webapps", its important to show the features,L&F that you bring to the table upfront without having to sign-up.

</comment><comment><USER11> Could definitely use a pricing page, or at least a feature page. But otherwise nice job. Oh and you probably want to rework the login error message system :)

</comment><comment><USER12> features like undo and search would be good the button "manage projects" is difficult to see

</comment><comment><USER13> Completed is so final. I click the button and there is no way to undo it. On that note, it is very unclear that the button is "completed" looks more like an edit link.

Actually there is a way to "uncomplete it" by editing it via the comments mechanism, but that is horribly unintuitive and actually does not work always. Op, found a way to uncomplete that works, there is a link on the inbox header. PLEASE stop hiding important links. I know the design is nice and simplistic but sometimes hiding shit is bad.

Also when you edit comments for something from the status updates tab, it does not update anything in the status updates tab list, it does only after a refresh.</comment>


Show HN: Birds Alphabet Flash Cards and Word Card Game (130 Tarot Size Bird Photos - <AUTHOR> https://ruti-games.myshopify.com/products/birds-word-card-game <comment><AUTHOR> I created these as a result of playing a similar game with my 4 year old niece, and I came up with it to help here when I realized that she had difficulty distinguishing about 4 or 5 of the letters. She immediately fell in love with the game and would constantly beg me to play the game with her, where we would end up playing it for hours at a time.

I am hopping to sell these to schools and parents, and any feedback from parents of 4+ year olds and teachers would be much appreciated.

Edit:

The goal is to spell the bird name on a card using other card's letters, and after completing the spelling, to win the points given on their chosen (and correctly spelled out) card.

Each card has a letter and a number at the top and bottom. The letter is either the first letter of the bird name at the top-center and bottom-center of card, or found somewhere within the name.

The number is total point score of the letters that make up the bird name using the Scrabble points system.

The number of the letters A to Z in a set also attempts to match the Scrabble letter distribution system, but as the purpose of the game is to teach kids the alphabet, there are at least two of each letters in a set.</comment>


Moloch: A new DAO aims to fix Ethereum - <AUTHOR> https://decrypt.co/5206/fixing-ethereum <comment><USER2> It's not easy to wrap my head around this one. So its purpose is to fund development around Ethereum, therefore the most likely to join it with ETH funds would be teams building dapps on Ethereum, or developing the protocol itself? Or rich people, that are also rich in ETH.</comment>


Amazon bars the sale of Apple and Google TV devices - <AUTHOR> http://www.bbc.com/news/business-34421804 <comment><USER2> Seems fair enough. I haven't seen any Amazon devices being sold on the Apple or Google stores.

<comment><USER3> I'm not making a judgment either way but you understand that Apple and Google chooses to only sell their things and Amazon choses to sell everything excluding these devices?

<comment><USER4> Exactly. Google does not remove amazon search results and Apple does not remove Amazon apps from its devices. I never understood Amazon's over the top self-serving mentality when it came to stuff like this.

Competing tech companies do better when they team up and compliment each other on specific fronts. This seems to be lost to Amazon's executives.

It happened with fire phone when it side stepped Google Play and it seems like it will continue to happen.</comment></comment></comment>


Root exploit on Exynos - <AUTHOR> http://forum.xda-developers.com/showthread.php?p=35469999#post35469999

<comment><USER2> This is a pretty serious security risk and it's highly recommended to make yourself immune ASAP. This is the kind of exploit that can go viral very quickly in Google Play and the results of a malicious process with root access can be very severe.

If your device is rooted, here is a very simple app that will let you toggle world-access permissions to the file and secure your device (until a true fix is released)

<https://github.com/Ryan-ZA/exynosfix>

[https://github.com/Ryan- ZA/exynosfix/raw/master/exynosfix.ap...](https://github.com/Ryan- ZA/exynosfix/raw/master/exynosfix.apk)

<comment><USER3> Thanks.

I've shortlinked the apk at <http://bit.ly/exynosfix> to allow easier downloading on the phone itself.

<comment><USER4> Hm... I want to download it but it is a sideload APK and I'm too paranoid. Hope Google releases a fix ASAP

<comment><USER2> It's a sideload APK so that you know exactly what you're downloading. Google Play search can often give you malware with an identical seeming name and icon to real apps. Since this app requires root, it's very important to know exactly what it does - that is why it is OSS and I highly recommend anybody who knows Java to double-check that the app is non-malicious.

Relying on Google Play for a root-requiring app is not in any way a guarantee of safety - you can upload a malicious app to Google Play, and it can sometimes be as much as 24 hours before it is taken down.

Correct method is to download the source from github, verify it is correct, and compile and build your own version. Failing ability for you to do that, get someone you trust to verify the code, and failing that, try and make sure that there are no comments about the app being malicious.

</comment></comment></comment></comment><comment><USER5> Unfortunately, giving userspace direct access to the hardware is quite common GPL-circumvention technique used by embedded vendors.

One creative example I've seen was an x86 mITX motherboard targeted at the embedded market whose "Linux driver package" included kernel module implementing a simple virtual machine which executed programs uploaded by userspace and gave them unrestricted access to the x86 IO space.

<comment><USER6> Can you explain what this has to do with the GPL?

<comment><USER5> Writing closed-source Linux kernel modules is legally "difficult". It is generally believed that modules which make use of highly Linux-specific internal infrastructure can be considered derived works of the kernel and thus required to be released under GPL. It's not always perfectly clear what is allowed and what is not and hardware vendors are reluctant to find it out in court. Some kernel APIs are explicitly marked as not callable from proprietary modules and the module loader enforces this. As a famous example, NVIDIA claims that inability to use one of these APIs prevents them from supporting Optimus in their video driver.

Hardware vendors who don't want to open their drivers need to work around these issues. They can either divide the driver into open-source Linux- specific part and closed-source "hardware support library" which avoids calling suspicious kernel APIs, or simply move the whole driver to a userspace shared library and give userspace processes access to the hardware.

<comment><USER6> So the userspace driver uses the same syscalls or they need to do the work around. I guess I am most interested in the workarounds.

<comment><USER7> Userspace components are expressly excluded from being considered derived works of the kernel by text at the top of its license. Within the kernel, individual symbols (e.g. function calls) are explicitly tagged with a bit that tells the kernel whether they can be used by non-GPL code, and the kernel checks this at runtime.

</comment></comment></comment></comment></comment><comment><USER8> It's painful to watch Android deal with endemic security problems that Windows began addressing over a decade ago. Note this isn't the first occurrence of crapware resulting from OS customization ending up on a few million Android devices, I remember at least one more vendor shipping a setuid root binary.

Can anyone comment on Windows 8's customization model from the manufacturer's perspective? A wild guess is that something like this is much less likely: even if a driver leaves some kernel object unsecured, access is difficult given how heavily walled off native APIs are on WinRT.

<comment><USER9> This exploit doesn't have anything to do with "crapware", it has to do with a flawed implementation of how the camera accesses the memory.

The code in the Windows kernel is never touched by anyone outside of Microsoft, unlike Android where is it necessary for every OEM to have to modify the kernel just to get Android to run on their device.

To compare Android to Windows Phone or Windows RT, the issue is one of closed source versus open source. Microsoft bakes support for certain SOC into Windows Phones kernel, which is why all Windows Phones have the same specs. The open nature of Android leaves it vulnerable to OEMs screwing things up.

<comment><USER10> >unlike Android where is it necessary for every OEM to have to modify the kernel just to get Android to run on their device.

I think that will change once Android starts using the linux 3.7 kernel, which is supposed to unify ARM kernels.

<comment><USER9> Unless there is something I an missing, having a big kernel taking up RAM and disk space with support for hardware your phone doesn't have would be a waist of limited resources.

<comment><USER11> <http://en.wikipedia.org/wiki/Conditional_compilation>

</comment></comment></comment></comment></comment><comment><AUTHOR> I just tried it in a terminal on my Galaxy S2. It has a completely custom rom (F1Nexus), and the output of ls -l /dev/exynos-mem is

        crw-rw-rw- system    graphics    1, 14 2012-12-09 07:59 exynos-mem

Clearly, Samsung has completely dropped the ball here.

<comment><USER12> Having seen Samsung engineering practices at first hand this doesn't surprise me. I'd put money on this not being an issue on the Nexus 10, where the Google Android team would have been involved with the product.

<comment><USER13> According to <http://forum.xda-developers.com/showthread.php?t=2050297> the N10 is an Exynos5 device and thus not compatible anyway. Not sure though if the Google team is reviewing the whole set of patches (and if such a patch would not slip through their hands).

<comment><USER14> this exploit is probably connected more to the company than the processor. If they can rubberstamp (or not even realize they're) shipping hacks like this they could be doing it again.

</comment></comment></comment></comment><comment><USER15> Fixed in new Cyanogen build:

<http://forum.xda-developers.com/showthread.php?p=35516282>

</comment><comment><USER16> Does no one remember when iOS had a zero day exploit which allowed root access when visiting a site with a PDF using a certain font? The one that took Apple five months to fix?

<comment><USER17> Why do we need to remember that?

<comment><USER18> Because matthieuh is an obvious Android fanboy :)

</comment></comment></comment><comment><USER19> The "original" Galaxy S devices (I9000, Epic 4G, Vibrant, Captivate, Fascinate, and Mesmerize), which also use the Exynos processor, are not affected for some reason.

<comment><USER20> Is this a fact? That does seem to be my impression after trying a 'ls -l /dev/exynos-mem' on my own Galaxy S running CM7, but I'm otherwise unable to conclude if there is still a vulnerability.

</comment></comment><comment><USER21> I'm so happy to be running an old crappy Nokia "no-apps, not even J2ME" phone.

We read the other day that Kaspersky preferred to run a very simple phone for security reasons.

I wonder if other security-savvy people like Bruce Schneier etc. are using the latest gizmos (be it from Apple, Samsung, Microsoft or any other) or, well, just something that allows to give and receive phone calls.

Can't wait to see a botnet of 40 millions Samsung devices.

It's really sad this kind of headlines give a bad rep to Google, Android and Linux (even if the "culprit" is Samsung).

I'll wait a few more years and see how things turn out but meanwhile I keep my good old phone that, you know, allows to give and receive phone calls : )</comment>


The Death of File Sharing - <AUTHOR> http://whiskeyandgunpowder.com/the-death-of-file-sharing/

<comment><USER2> The conclusions here feel overblown to me. I'm all for being vigilant, but but there's nothing compelling Dropbox to madly scramble to (as the author puts it) "pass muster under the new regime".

But what new regime? I'm not totally sure what the basis is for claiming that the old-line industry _just now_ went after MegaUpload because of their legitimate features. Sure, shutting down MU is done on behalf of the interests of copyright owners, however vested they may be . . . but just because SOPA/PIPA (regrettably) come close to passing through Congress and this, truly, seems to betray the pull that RIAA/lobbyists exert over legislators does not also imply that - suddenly! - copyright owners control the government. Cf. "The U.S. government. Government in league with old-line corporate elites." U.S. Government? Which part? Which law? Since when? Which you know about . . . how?

And E-Mail?? That seems absurd. It's not as though your ISP garners revenues from you e-mailing a track to your girlfriend - ie, the basis on which your e-mail service would be disqualified for the DMCA safe harbor exemptions . . . not to mention that it seems an _exceptionally_ remote likelihood that they'd even have knowledge of the e-mail you sent.

Just pause and notice how incredibly _top-down_ for lack of a better term, the author's path to his conclusion really is. What only slightly less obvious is the implied conspiracy and obvious legal ignorance: "...the gigantic protest against legislative moves (SOPA and PIPA) that would smash the Internet turned out to be superfluous. The thing everyone wanted to prevent is already here." What?! I didn't see the laws change; all I really see is an egregious violator, a couple of trumped-up conspiracy charges with not much to them (sidenote: piling on grounds for action is standard practice), and an organization picked on for the immense and immediate unlikability of its CEO (Kim Dotcom). To say nothing about the differences between MU and Dropbox.

On that note, we're forgetting the evidence cited in Megaupload being shut down. This is referenced elsewhere, but there's a mens rea (state of mind / intentionality) requirement for infringement to rise to the level of criminal law. Ie, the reason why MU was shut down with a criminal action, etc. For another, it's not even clear that banning U.S. users would actually keep flagrant DMCA violators from breaking the law anyway.

The DMCA is working. Er, rather: it does a pretty good job of balancing what content hosts (Youtube, Scribd, Reddit, etc.) can do to keep functioning and continue doing what they're doing today, while leaving intact pretty good rules prescribing the means for that "old-line" elite to take content down.

Contrast this with

>SOPA/PIPA on the one hand, which is a comic and internet-autistic attempt for media co. to replace the current, working equilibrium we have with a way for them to call the shots on how the internet _functions_ and

>MegaUpload on the other, from whom those enforcers already had found e-mails: not about the manner in which to address DMCA takedown notices, but rather explicitly writing e-mails outlining how/when _not_ to do it.

Just remember, the charges being piled on megaupload right now don't have scant evidence or case law, or fall squarely under that class of things which smart/conscientious content providers would _NEVER_ do. Sure, the instant reproducibility of digital content and flat ability for people to do so has _CLEARLY_ outstripped that understanding of copyright law that was devised a couple of centuries ago . . . and, probably against their own interests, folks like the RIAA would like to see the clocks reset to those old days.

But MegaUpload being shut down seems more likely a show of how easy it should be to NOT get shut down, than it is any kind of trend for Box.net to be next. Let's not exaggerate the portability exposed by some kind of megaupload-styled "19th Century is back!" generic censorship strategy, ok? I think we should all be watching but there's nothing peculiarly concerning - or at least not here.

<comment><USER3> Check out the author's previous articles: <http://lfb.org/today/author/jeffreytuckerwng/>

Just about every one of them is angled to attack the federal government.

</comment></comment><comment><USER3> This article is hyperbole in the extreme. Lots of questions without any insightful answers.

For example this sweeping summary of what's causing the _'death'_ of file sharing: _"And who is doing this? The U.S. government. Government in league with old-line corporate elites."_

It's media company lobbyists pushing for things like SOPA.

</comment><comment><USER4> That obnoxious popup can't possibly have a good success rate. Tacky as hell.</comment>