Tablets Take Off In 2012 According To Millennial, esp Kindle Fire & iPad Mini - <AUTHOR> http://techcrunch.com/2013/02/22/tablets-take-off-in-2012-according-to-millennial-with-kindle-fire-and-ipad-mini-seeing-rapid-growth/ <comment><USER2> And where is Microsoft in this picture?

It turns out that Microsoft has been utterly crushed, worldwide, by the free software Linux kernel That underlays android.</comment>


Making high-performance batteries from junkyard scraps - <AUTHOR> https://news.vanderbilt.edu/2016/11/02/making-high-performance-batteries-from-junkyard-scraps/ <comment><USER2> So, this would involve anodizing the steel in Nitric Acid to make a suitable anodized surface (that wasn't just rust). I'm not sure what the anodizing bath needs to be for brass. I wonder what they use?

This sounds like a great thing to release an instructable for. I'd be happy to give some home chemistry and construction a try to build a big battery. However, I question whether all this can really be done _safely_ with "home chemicals". Many home chemicals are hardly safe and have some serious potential for harm if you find yourself breathing fumes, burning, heating, boiling, or handling them. I wonder at potassium hydroxide in sufficient concentration to be a useful electrolyte. Anything >2% is considered caustic.

<comment><USER3> I think the biggest problem with this, based on the paper - is the fact that to anodize the steel, you have to heat it to 600+ degrees F for an hour, in an argon or hydrogen atmosphere.

How the heck you do that "at home" won't be easy. Maybe take an old oven (outdoors), stick it on the cleaning cycle, then put the steel electrodes in a sealed pyrex container (?) filled with argon/hydrogen?

Maybe fill a steel pipe capped off with hydrogen, then heat that in the oven (where the inner surface becomes the electrode) - that might actually work ok (if a bit dangerous). Though how to seal it properly to prevent the hydrogen from leaking out might be a challenge.

If the pipe idea could be worked out - then a series of brass rods or plates could be used suspended (and electrically insulated) from the steel pipe, to form the battery electrodes (similar to how a regular alkaline or carbon-zinc cell is constructed).

<comment><USER4> Hydrogen is a pain to work with. Other than being explosive in air, it leaks unless the seal is near perfect. On the flip side, it's easy to obtain via electrolysis. If argon is acceptable it would be much easier to work with. The pdf reads like a mixture was used. I have done some work @ 1300C where we needed an inert atmosphere, so we plumbed an argon tank to the furnace and ran it at a slight positive pressure.

</comment></comment></comment><comment><USER5> This has the potential (pun intended) to be a big deal in wild world of battery tech. BUT I'd like to see the next phase if, or more hopefully when, they can demonstrate a battery with enough capacity for a home. And provide DIY instructions on how to build. Still very exciting nonetheless.

</comment><comment><USER6> More information:

[http://pubs.acs.org/doi/suppl/10.1021/acsenergylett.6b00295/...](http://pubs.acs.org/doi/suppl/10.1021/acsenergylett.6b00295/suppl_file/nz6b00295_si_001.pdf)

</comment><comment><USER7> Interesting discovery, however the energy density of such a battery would mean it couldn't ever be used to replace current lithium cells due to weight/space constraints. Might have a niche somewhere if gets to commercialisation stage?

<comment><USER8> Stationary storage doesn't care about weight and doesn't care a whole lot about space, so it sounds like a decent fit. Grid storage is becoming very important and useful as inconsistent renewable power (wind and solar) becomes cheaper and more common.</comment></comment>


Drive.ai expands its self-driving cars pilot to Arlington, Texas - <AUTHOR> https://venturebeat.com/2018/08/22/drive-ai-expands-its-self-driving-cars-pilot-to-arlington-texas-with-federal-and-city-funding/ <comment><USER2> I am excited for there to be competition in this area, but articles like this continue to remind me how far ahead Waymo appears to be. I can only imagine that driverless taxis as a service is going to be a winner-take-all industry, and Waymo's lead seems to only be increasing, at least measured by number of miles driven.</comment>


What can you learn by writing as a developer - <AUTHOR> https://blog.phuaxueyong.com/post/2020-06-27-how-did-this-start/ <comment><USER2> I share the feeling that writing as a SE gives you a better perspective of the things you learn. I'm also liking that the old web with the personal blogs is coming back :D

Do you track the visits to your website somehow? I'm trying to avoid Google Analytics, but other simpler options look to be expensive.

<comment><USER3> There is nothing wrong with returning to old school analytics as well. Your HTTP server has web logs, and tools exist to parse them into nice charts and graphs. I used AWStats back in the day. I'm sure there are others as well.

</comment></comment><comment><USER4> please - get rid of the pop up.

the content I care about is your blog post. why do i have to dismiss a pop up to get to it?

that pop up was enough friction that I did not read your blog post. I navigated away.

cheers.</comment>


How a TV Sitcom Triggered the Downfall of Western Civilization - <AUTHOR> https://medium.com/@thatdavidhopkins/how-a-tv-sitcom-triggered-the-downfall-of-western-civilization-336e8ccf7dd0#.nj7xg06dn <comment><USER2> Nerdness is kinda cool now, right?

Anyway, friends made fun of all the stereotypical characters... I'm nerd plus plus but I remember Ross being a dick.</comment>


The web is nice, but news sites need native apps too - <AUTHOR> http://qz.com/231191/the-web-is-nice-but-news-sites-need-native-apps-too/

<comment><USER2> Nope. No, they most certainly do not.

The web is SO GOOD at serving content. Really, _really_ great at it.

Games? Streaming live video? Super high frame rate UI animations? Not quite there yet.

But man, it's a fantastic platform for delivering text to an outrageously broad array of devices.

News sites don't need mobile apps. They need content people care about and a URL. Nothing more.</comment>


Ask HN: Value stock options - <AUTHOR>

I am getting stock options worth $15,000, and there is a 4 year vesting period. This company is in the top 100 Deloitte fastest growing companies list.<p>I don't have more info then that (such as my equity %), but for those who were in similar situations, what is the potential for these options ? <comment><USER2> Don't get too excited, they'll probably expire worthless.</comment>


Proteus becomes the world's first manufactured non-cuttable material - <AUTHOR> https://newatlas.com/materials/proteus-non-cuttable-bike-lock-armor/ <comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=23901635](https://news.ycombinator.com/item?id=23901635)

</comment><comment><USER3> There's a great YouTube video, probably from defcon, where someone talks all about safes and the many decades of materials science that have gone into them. When hard-to-cut materials were tried, thieves ended up crushing safes or trying to shear them in half.

<comment><USER4> See also Tim Hunkin: [https://www.timhunkin.com/94_illegal_engineering.htm](https://www.timhunkin.com/94_illegal_engineering.htm)

</comment></comment><comment><USER5> Seems similar in concept to composite tank armor

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

</comment><comment><USER6> Could we finally get closer to safety gloves that work for table saws? As much as I would love to use own, that thing just scares the shit out of me. And yes, I know about the saw stop.

<comment><USER7> Go look up "degloving" to see why gloves are bad idea around spinning tools.

<comment><USER8> Might want to mention that's NSFL.

</comment></comment></comment><comment><USER9> What did they use to cut it for the cross-section picture?

<comment><USER10> It's a CT scan, they did not cut it for that.

<comment><USER9> Ahhh and of course it says exactly that in the caption I did not read!

</comment></comment></comment><comment><USER11> "These cause it to become even harder the faster you grind or drill "due to interatomic forces between the ceramic grains," and "the force and energy of the disc or the drill is turned back on itself, and it is weakened and destroyed by its own attack."

So what happens if you cut or drill at low speed?

<comment><USER12> Same damage done on the upper layer to the cutting device. Just takes much longer to wear down - the only way you make any slight cut into it is with high speeds

</comment></comment><comment><USER13> pour some liquid nitrogen on it and hit it with a sledgehammer?

</comment><comment><USER14> No mention of plasma cutters. I think a big enough plasma cutter will make the plasma go around the ceramic to reach the conductive metal and the ceramic will fall out.

<comment><USER15> If bike thieves have plasma cutters, we're definitely in trouble.

</comment></comment><comment><USER16> Based on my read of the article seems like this would fall apart under evenly applied force. Like a bolt cutter. Odd that the article doesn't mention bolt cutters.

<comment><USER17> And in the first paragraph they even mention that this might have applications for bike locks. If that was an intended application, surely testing against bolt cutters which are so frequently used would be something they'd have done.

<comment><USER16> Maybe they are using the technical definitions of sheering and cutting?

</comment></comment></comment><comment><USER18> >cellular aluminum structure

Seems like this could be easily degraded through chemical means. The analogy of Jello filled with chicken nuggets made me think of just eating the Jello part.

<comment><USER19> Gallium comes to mind

<comment><USER20> Of course gallium is very expensive (a few thousand $ per kilogram).

</comment></comment></comment><comment><USER21> Let's see it resist oxy acetylene torches and plasma cutters.

<comment><USER22> And liquid nitrogen. Extreme heat and cold are usually the easy ways around these materials. I wonder how the ceramic would hold up.

</comment></comment><comment><USER23> But isn't the video of them cutting it? Or is the uncuttable material underneath the bit that got cut by the angle grinder? I can't know if that's the material stopping at an arbitrary point, or something heavy underneath.

<comment><USER24> It says it right in the text of the article

"An angle grinder or drill bit will cut through the outer layer of a Proteus plate, but once it reaches the embedded ceramic spheres, the fun begins with vibrations that blunt the tool's sharp edges, and then fine particles of ceramic dust begin filling up gaps in the matrix-like structure of the metal."

<comment><USER23> Ah, ok. Looking at the composition on the side seems to indicate that it's two separate metals entirely. Which I guess is the case?

<comment><USER25> If you don't want to wait for someone to answer, the short article has answers for all the questions you put forth so far.

<comment><USER23> I did read the article, but I don't see anywhere it states that there will clearly be one material on the outside and then a block of proteus underneath. What they are grinding is clearly two different materials, and it stops when it gets to the second one. The x-rays and the example don't seem to have a metal outside welded on, which is my confusion - it looks like someone welded a plate onto the miracle material, when in that little image in the corner of the x-ray it looks entirely homogeneous.

Because we can't directly see the miracle material, the video feels disingenuous.</comment></comment></comment></comment></comment>


Android COVID-19 Exposure Notification API [pdf] - <AUTHOR> https://www.blog.google/documents/68/Android_Exposure_Notification_API_documentation_v1.2.pdf <comment><USER2> Can anybody tell me _where_ the change will be? With [1] I've saved every apk with "play" in its name (Google Play Store, Google Play Music, Google Play services and Google Play Movies & TV). If the update happens, could I revert the changes by installing the extracted .apk files? Also, I've disabled the Play Store because my guess is that the Play Store will install the new API. After all, the Play Store also installs/updates regular apps. Can you tell my if my guess is correct?

[1] [https://f-droid.org/en/packages/axp.tool.apkextractor/](https://f-droid.org/en/packages/axp.tool.apkextractor/)</comment>


Is C/C++ worth it? - <AUTHOR> http://lemire.me/blog/archives/2012/07/23/is-cc-worth-it/ <comment><USER3> The primary reason to use C for me hasn't been performance for a long time; if you want to interact with the OS or the hardware, C just flat-out works better:

Pretty much all unixes are written in C, and using the language of the OS means you can talk to it the same way the developers do, rather than through an FFI; even the best FFIs suffer from the fact that there will be some impedance mismatch between languages.

<comment><USER4> Is that one feature worth every limitation of C/C++ versus the competition? Maybe in a few narrow problem domains, but not for the average dev, IMO.

<comment><USER5> C is the Latin of computer programming. You can compile it anywhere and interface it with anything, no matter how low-level.

C++ is more esoteric, significantly harder to learn, and not as portable, but it's still better than most and runs wickedly fast if implemented according to best practices.

This is not for "average devs", not in a world where there are dozens of first-class languages better suited to general problem solving, but some domains it is still imperative to go either C, C++ or some combination.

Do average devs write kernels? Device drivers? 3D game engines? Fluid dynamics simulations? Image transformation algorithms? Network routing stacks? No, but people do, and it's a good thing they have C or C++ to solve their problems.

<comment><USER6> >C is the Latin of computer programming. [...]

>C++ is more esoteric, significantly harder to learn, and not as portable....

Does that make C++ the Sanskrit of computer programming, then? :)

On a more serious note, I just found myself upvoting every single post that acknowledged the difference between C and C++. Why? Because they're very different (you can't even say C++ is a superset of C anymore), and using C++ competently requires knowing the differences. It always makes me think these posts that compare the writer's favorite language to this mythical "C/C++" language are written by people who don't know either C or C++ very well.

Edit for clarity: I note that the actual title of the post is "Is C++ worth it?" so the author doesn't seem to be making this mistake, except in one instance where he refers to "C/C++ programmers". In that case, he might actually be referring to "C programmers or C++ programmers," so I can forgive him the abuse of language.

<comment><USER7> For what it's worth, the original title was changed to "Is C++ worth it?" after the fact.

</comment></comment></comment></comment></comment><comment><USER8> What I find lacking in a lot of these discussions, beyond the cursory "unless you need super performance" is the context of what the code is for, and what the users expect.

For instance, in the scientific computation that I do, most code will be used in finished form on the order of 10s of datasets at most. Occasionally, we step out from R or Matlab or Python and use C/C++ if a) we know we'll use a function thousands of times in multiple contexts, b) we're writing code to be used by other people, or c) we're working in a time/resource constrained environment, like a supercomputer or shared cluster with many users, where we pay for time.

I imagine the "modest" 2x improvement would not matter at all if: a) your users are going to batch process a bunch of files just a couple times, but want the most up-to-date features possible, so you optimize for production speed, not performance, or b) you are writing the code for yourself, so letting it run in the background or on a cluster for 2 days instead of 1 doesn't make a huge difference.

On the other hand, if I were writing a photo-editing program where users call the same feature over and over and over to get the photo looking just right, I would definitely prioritize performance, and a 2x improvement is a very noticeable speedup over a competitor's. A lot of products I use every day are actually like this.

</comment><comment><USER9> First off, putting C and C++ in the same category is plain wrong. One is a low level language, and the other is a high level language with tons of features, and rich libraries.

When it comes to performance, you either require it or you don't. There is no place in between. When performance is a requirement, C++ can be a very good option. It's a great balance between performance and high level feature set.

With experience, we (programmers) become more pragmatic and get better at picking the right tool for the job.

</comment><comment><USER10> Please don't call it C/C++

C is a vibrant, separate language from C++ that has wonderful applications separate from it.

C++ doesn't need to be called C as well, that's what the first character of it's name means. It's also has nothing like a ABI, so is far from C as can be in that regard.

</comment><comment><USER11> Does it really serve anyone to have another ridiculous language war every time someone posts a microbenchmark that shows their favourite language winning?

<comment><USER12> No it doesn't. But the article in question isn't about whether Java is better than C++. It notes that Java and Javascript environments are getting better, so you have to work harder to optimize your C++ to the point where it is faster. Which is still possible, just harder.

<comment><USER13> Who the hell is writing C when JavaScript is an option? I mean, I love C, and I don't know JavaScript well, but they don't really live in the same problem domain.

<comment><USER14> node.js

<comment><USER13> I was under the impression that application programming using node.js was done primarily in JavaScript...

<comment><USER14> Yes, on the server, where C also lives.

<comment><USER13> Right, but people who are using node.js aren't writing C. Of course C comes into play to do the heavy lifting, but we're not talking about infrastructure. Writing a web server and writing a website are two very different problem domains.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Well, two points:

1\. Using raw pointers as opposed to vectors gives 2x the performance on my machine.

2\. This is a microbenchmark with extremely simple array indexing pattern. JVMs can optimize away the array bounds checks penalty in this case but those become hard to do once your access patterns become anything other than "i" or "i-1". For example, even more general linear subscripts are hard to correctly optimize for array bounds checks, let alone anything non-linear. How do I know? Compiler researcher here :)

However, still impressive to see JVMs advance.

</comment><comment><USER16> IMHO you can't effectively ask this question at such a broad level. A better question would be "is C/C++ worth it for my project?". Or with respect to the contents of the blog post, "is C/C++ worth it for performing a cumulative sum?"

This isn't to say that major strides haven't been made in the performance of high level VMs, interpreters and compilers. But for some classes of applications, it's arguably not worth trying to avoid C or C++. Audio software is bound by very stringent realtime requirements (you absolutely cannot miss a sample vector -- dropouts are bad bad bad), such that GC becomes problematic in many cases. If you're writing a raster effects chain, a sensible thing to do in C would be to pass a pointer to your frame buffer through a chain of function pointers operating on the data in place and avoiding copying at all costs.

Point being, the more constraints like these that pile up, the harder time a compiler will have guessing what kind of performance characteristics you're looking for, and though I'm sure there are ways to get around these problems in higher level environments, you may end up finding that the time you spend tuning things to get it just right would have been better spent getting your hands dirty with some C. But as with everything, YMMV.

</comment><comment><USER17> These kind of extremely simple loops are exactly the sort of thing where almost _any_ language can optimize things into levels of performance that approach hand-tuned asm (which itself isn't always the way to go for anything complex, but for simple codes, frequently still is).

If you actually wanted this code to go fast you'd use SSE, of course - <USER2> make a big mess of prefetches and intrinsics and so on. On a good day you might get the same result out of icc.

That being said, the guy is right - most of the time. A range of performance differences extending up to 2-5x between (say) Java and C++ (as shown on, say, the Programming Languages Shootout) shouldn't be decisive to most programmers who aren't writing code that's CPU bound.

Of course, while this argument can be made in favor of Java over C++ (not my personal taste, but still), it could be equally made for Python or Ruby over either. :-) This is especially true where the 'low performance' scripting language is just driving highly optimized math routines done over large chunks of data.

</comment><comment><USER18> His benchmark did not mention anything about memory consumption. I'd imagine that C/C++ used a fraction of the memory Java used in his microbenchmark.

</comment><comment><USER19> A little story - I wrote a DJing application in one language and then released it for the HP Touchpad, Android, and Playbook. I'm going to release it for the BB10. I released a second app using the same framework for Android, and another app for iOS.

.. Surprise! It's all in C++. It uses libSDL for input and audio, and openGL for graphics. With that framework I also released an app for iOS. Everything under the sun has a SDL port.

The downside was I had to write my own UI widget framework and cannot do any native features. The upside is "write once, port to everywhere".

</comment><comment><USER20> It depends. As always, premature optimization (which includes premature language optimization) is the root of all evil.

If you have specific reasons for starting with C or C++, great. Go for it. Have fun.

One the other hand, if you are picking either because, for example, you have a vague sense you want performance and/or low-level control... It's probably worth looking at your alternatives and thinking about your tradeoffs.

</comment><comment><USER21> Lies, damn lies, and benchmark statistics

</comment><comment> tyler-dodge Why does he use a vector for the C++ version, but an array for the java version. It seems like it'd be a lot more comparable to use an arraylist in java, (either that or just a standard array in C). Nonetheless, the having the time slowed by the call to cout has a pretty large effect as well. It seems like this was rather setup to favor the java version from the beginning

</comment><comment><USER22> There are two things about the C++:

1) why use a class for the timer?

2) It's not clear if the order of operations ensures that the timer is stopped before the first print operation happens. Thus your C++ may be including some part of the cout print operation

<comment><USER4> Re: 2, I am surprised if operations with side-effects get called out of order.

<comment><USER22> Site's down, so I can't pull up the exact link, but the java code basically did

        get time
        do it
        get time again
        print timing info

The C++ code had a line of the form

        cout << .... << some_method_which_stops_time_and_returns << ...

So unless G++ is doing some sort of whole program analysis, it would have to do the cout << ... first and then evaluate the method and then print out the return value

<comment><USER23> Evaluation order is implementation-defined. I'm pretty sure all of the arguments are evaluated before any printing is done at all. The code

      cout << "asdf:" << b()

is equivalent to

      (cout << "asdf:") << b()

, which is equivalent to

      cout.operator<<("asdf:").operator<<(b())

`b()` can certainly be evaluated before the first `operator<<` is evaluated. Hell, `b()` can be evaluated _before "asdf;" is evaluated_. Consider the following code:

      int f() {
        static int a=0;
        return a++;
      }
      cout << f() << " " << f() << endl;

This prints "0 1" in Clang (at all levels of optimisation), and it prints out "1 0" in gcc (again, at all levels of optimisation). If they're differing on something as simple as this it's clearly allowable by the standard.

</comment></comment></comment></comment><comment><USER24> While most of these discussions tend to focus on performance benchmarks as the primary criteria, there is another factor to consider.

To a large extent, it depends on the target platform. If you developing an application to work across the widest possible range of desktop and mobile platforms, C++ is your best bet.

Using C++, you can have a single code base that can be compiled for Windows, OSX, Linux, iOS, Android and WinMo. There is no other language that gives you that.

The UI code is not portable in any case, but that would be a common problem regardless of language.

</comment><comment><USER25> I always hate these tests because what is being compared is always lost. Are you trying to compare the best possible performance in these languages or the speed of the average program? The problem with that invariably ends up being the amount of work/knowledge gets put into the implementation. For example, gettimeofday is a terrible function to use for measuring performance. Furthermore, people for some reason get religious about languages. Every language has its benefits and costs. Use whatever language is appropriate to your situation.

</comment><comment><USER26> I actually couldn't load the site, HN has apparently nuked it. But I can deduct from the comments that it's another benchmark comparison.

Aren't we missing something essential though? C and C++ give you the possibility to make self-contained, lean applications - using the right frameworks you can also target as many platforms as you want. Java, python etc. have in common that they all require a runtime environment, including all the compatibility and update problems.

</comment><comment><USER27> Interpreters will always have an information advantage, they get to optimize based on what the system is actually doing, rather than clever profiles.

The big question is, is that information ever worth it? Does the cost of examining the running system completely overshadow any possible benefit?

So far, no. it's not worth it. It'll be really interesting to see what happens with massive parallelism though.

<comment><USER28> Well, compilers can always look at what happens during the actual operation of a program and then use that information to redo the compilation better. That's a lot of effort, but it can make a big difference. For a while the Windows version of Firefox was noticeably faster than the Linux version because the people packaging it for Windows did this but the Linux packagers didn't.

See <http://en.wikipedia.org/wiki/Profile-guided_optimization>

<comment><USER27> Maybe there will be two classes of applications. The elite, like browsers that are constantly fed data about how people use them, regularly updated so optimization is compiled right in; and the not so elite, that rely on per-run startup optimization for good performance.

IIRC gcc already links in a runtime system for recovering runtime type information about dynamic cast. It's not hard to imagine C++x20 (or whatever) including some kind of runtime optimizer.

</comment></comment></comment><comment><USER29> what about changing your code to the following? any noticeable speed changes?

size_t size = data.size(); for (size_t i = 1; i != size; ++i) { data[i] += data[i - 1] ; }

</comment><comment><USER3> Was down for me. Cached copy:

<http://lemire.me/blog/archives/2012/07/23/is-cc-worth-it/>

<comment><USER30> You posted the original link instead of a mirror.

It is down for me, too. You can read the article via Google's search results preview but it isn't linkable and there is no Google Cache link.

<comment><USER31> [http://www.google.com/search?q=cache:http://lemire.me/blog/a...](http://www.google.com/search?q=cache:http://lemire.me/blog/archives/2012/07/23/is- cc-worth-it/)

Searching for cache:URL often works even when the search results don't link to the cached version for whatever reason.

</comment></comment></comment><comment><USER32> How would Objective-C compare?

</comment><comment><USER33> C is worth it. C++ is not.

<comment><USER34> Thanks for the nuanced analysis.

<comment><USER35> At least we could still make this point : Since C/C++ is not a language, C/C++ is not worth it.

<comment><USER5> They should make a C/C++ standard for those people who insist on using the C++ features they like, thus necessitating compiling in C++ mode, while ignoring most of what C++ has to offer.

Maybe call it C+ since that's the grade I'd give that kind of half-baked code.

<comment><USER10> Every professional shop that uses C++ and has been around for any time uses a subset of C++. What that particular subset is, is completely different for almost every shop.

</comment></comment></comment></comment></comment><comment> excuse-me Java is great - right upto the point where it isn't/

Do a similar example where you want to replace the values in situ and find that Java is making a copy of the entire array every time. At that point you are stuck, there is no way out. C may be difficult but it lets you do anything you want.

note: yes Java may have a flag that says do int array in place, in this case - but you know what I mean.</comment>


Modern C++ from ground up - <AUTHOR> https://github.com/jrziviani/C-Moderno/wiki/3.-Object-Oriented---II <comment><AUTHOR> A new wiki based on github on how to write programs using modern C++. It starts with a base knowledge up to details on how atoms are implemented in different architectures.</comment>


Mistaken Identifiers: Gene name errors introduced inadvertently using Excel - <AUTHOR> http://www.biomedcentral.com/1471-2105/5/80 <comment><USER2> Another comment asks,

 _why are we seeing so many articles about Excel?_

The main reason is that Excel was recently in the news because a paper about economic policies for countries was found to have been based on data kept in an Excel spreadsheet that was poorly documented enough that errors in the data weren't found right away. (This is the highly condensed version of the story.)

These stories resonate here on HN because many, many, many of us have had occasion to use Excel as a tool. Members of the general public who share information with me (for example, contact lists for youth soccer teams) have learned in a corporate environment to treat Excel as the "universal" data exchange format. So I will be dealing with Excel spreadsheets for years even if I never create another one.

One expects Excel to operate like a tool, a way to manipulate data in some straightforward, well defined ways. I don't expect Excel to do what is described in the article submitted here: treat any text data value with certain embedded strings as special data types that the program can rewrite without explicit user command. That turns Excel from being a tool in the workplace to being a surly co-worker who habitually messes up other workers' projects. I intentionally minimize my use of Excel because I don't like its artificial intelligence turning into artificial stupidity while I try to get my work done. To find out that Excel is actually actively impeding medical research by rewriting data cells in spreadsheets is a dismaying example of why I can't treat Excel as a useful tool, so of course I was glad to upvote this informative submission.

AFTER EDIT:

I shared the link that opened the thread here among my Facebook friends, and one friend commented,

"This is (luckily) old news and no bioinformatician worth his keyboard uses Excel any more. It's just too much of a wild card."

He followed up after another friend's comment with

"Microsoft is squarely in the wrong here. The tool aggressively reformats highly technical data fields and the behavior is remarkably hard to keep turned off. I've been working in this specific field for 15 years, and I can guarantee that the power users do know their tools. What they know these days is to go use R or even one of the OSS applications like LibreCalc. Unfortunately, more naive users new to bioinformatics analysis routinely get tripped up by this and other overly assistive features of the Office suite."

<comment><USER3> Excel is not particularly rewriting data cells in spreadsheets. When importing other formats, it has some automatic conversions that people apparently find convenient. It's a little bit pedantic, but a text file with some sort of structured format is not the same thing as a spreadsheet.

It probably doesn't make any sense to apply automatic conversions to formats that are more or less defined by convention, but if you mark a column in an Excel file as text, Excel won't apply magic to that column.

The bigger problem is that it is considered acceptable to not keep a record of the changes being made to the data (a script can serve nicely as both a data processor and a record of the processing being done).

<comment><USER4> > if you mark a column in an Excel file as text, Excel won't apply magic to > that column.

The problem is that the CSV file format has no reliable mechanism to mark a column as text( * ). Known workarounds include inserting a single quote at the beginning of a field, but this single quote may remain in the field forever, polluting the data downstream from the import.

* The obvious approach of enclosing CSV text fields in quotes, and non-text fields without quotes, won't work -- too many Excel versions strip out all the quotes while importing, without considering the implication of their selective application. Also, in many Excel versions "DEC1" is converted into a date whether or not it's quoted.

<comment><USER5> I posted this the last time there was a discussion about CSV and excel:

If you are generating the CSV yourself, save yourself some agony and just wrap the text in =""

        $ cat test.csv
        ="12.34567890124312341234123412341234",="1-5"
        $ open -a Microsoft\ Excel test.csv

<https://news.ycombinator.com/item?id=5514587>

Explanation:

It uses another auto trick: if the leading character is '=', the result is treated as a formula.

Thus, you can actually write formulas in your CSV and excel will interpret appropriately:

        $ cat test.csv
        =1+1,="1-5"
        $ open -a Microsoft\ Excel test.csv

You should see the value '2' (with content `=1+1`)

<https://news.ycombinator.com/item?id=5514704>

<comment><USER6> An alternative solution that works is some situations is to format the column as "Text". However you must do this before pasting the data into the cells or else it will already be converted. I use this technique for zip codes which can have leading zeros.

</comment></comment></comment></comment></comment><comment><USER7> I love that they published a paper on this. For most of us, this is one of those things that surprises you once and then convinces you not to use Excel for genomic work in the future, since no magic should be applied without explicit instructions from the scientist. For them, they realized that this Excel/gene name error affected almost everyone at least once, probably reasoning that journal referees would be quite sympathetic despite the otherwise bland nature of the story.

The type of auto-conversion that's going in, as mentioned in the article, is e.g., DEC1 (text) to 1-DEC (date), etc.

<comment><USER8> I just changed the format of the column to "text" from "auto" and kept using it for my thesis work. It's too useful to bail on because of a quirk like this.

<comment><USER4> > I just changed the format of the column to "text" from "auto" and kept using > it for my thesis work.

Yes, but for an existing spreadsheet, that won't work ex post facto. A spreadsheet in which some gene names have selectively been converted to dates won't be repaired by changing the column's data type. Such a remedy must be applied in advance of the import.

</comment></comment></comment><comment><USER9> This article was published in 2004. It was still causing problems in 2012 [1], when a paper published in the prestigious journal _Cell_ had a few gene names written as dates [2]. Even the GEO [3] had problems with this , according to [1]. The culprit is automatic type conversion, which the user has to understand in order to avoid it. Usually, the way around this problem is to format the columns as text before the data is entered. But it is much harder to work with someone else's munged data or spreadsheet, especially when it is in the form of a .csv file. Even though there is an RFC standard for CSV files, RFC 4180 [4], it is a description of how different editors handle CSV files, and not a prescriptive definition.

[1] [https://dontuseexcel.wordpress.com/2013/02/07/dont-use- excel...](https://dontuseexcel.wordpress.com/2013/02/07/dont-use-excel-for- biological-data/)

[2] [https://dontuseexcel.wordpress.com/2013/02/07/dont-use- excel...](https://dontuseexcel.wordpress.com/2013/02/07/dont-use-excel-for- biological-data/)

[3] <http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL13667>

[4] <https://tools.ietf.org/html/rfc4180>

</comment><comment><USER10> I don't know why people are blaming Excel.

The problem is that these researchers, or even the economists in the paper on Global Austerity, aren't properly trained in what is essentially a computer programming task, and they don't do things like validate their data. These are basically bugs in their spreadsheet that they didn't catch.

Sure, Excel may behave unexpectedly for their particular uses, but for the vast majority of finance people, it works very predictability. If they had spent time validating the data, they would have realized that the names had been modified, and they could have corrected for it.

<comment><USER5> It's easy to blame the tools. It's harder to admit that you don't understand the tools you are working with.

<comment><USER11> ... or when the wrong tools become the de facto standard people are expected to use.

</comment></comment></comment><comment><USER4> I am amazed by the diplomacy shown in the linked article. Nowhere does the article suggest that Excel not be used for such important scientific work, work that has a bearing on human health and well-being.

If the paper had been about drunk driving, or guns in the hands of children, it could be expected to suggest obvious remedial steps along with the data. But as to Excel, it's as though it's the only available tool for data reduction and communication. In fact, it's one of the more expensive of the alternatives, many of which are much better suited to the task being described.

</comment><comment><USER12> This article is from 2004, but I suspect that the problem is still present in the last version.

A few month ago I had a similar problem with a list of usernames. One of them was something like julio-90 (In Spanish, "julio" is the name of a person and the name of a month.) and Excel changed it to the date jul-90 (i.e. 1990-07-01).

</comment><comment><USER13> If you're importing from a CSV, there's a workaround that, unlike the Microsoft recommendation linked in this article, doesn't require adding a spurious apostrophe to the front of your data: [http://stackoverflow.com/questions/165042/stop-excel-from- au...](http://stackoverflow.com/questions/165042/stop-excel-from- automatically-converting-certain-text-values-to-dates)

<comment><USER4> You might have included the workaround that actually works from the linked conversation's many suggestions that don't work -- add a space in front of each field of the original CSV data that you don't want converted. This is more effective and reliable if each CSV data field is quoted, and the space is inside the quotes.

</comment></comment><comment><USER14> What am I missing, why are we seeing so many articles about Excel???

<comment><USER15> Because Reinhart and Rogoff was such a massive deal.

<comment><USER16> But the R&R error had almost nothing to do with Excel. The same mistake could have been made with R or pen and paper. They were careless in a way I wouldn't expect a high schooler to be careless. Not in some way that Excel did something unexpected.

It would be like blaming C# because you did foreach over collection A, rather than collection B.

<comment><USER15> You're right, of course. The problem in the R&R case is not with Excel itself, but that it's being used with a lack of rigour.

If it were being done in C# or R I would expect unit tests and so on. I'm not saying that would make such a mistake _impossible_ , but programmers have processes and tools for a reason.

In the OPs case the problem actually is with excel though.

</comment></comment></comment></comment><comment><USER17> Another problem I've seen with dates and Excel is copying date information from one workbook to another. The problem with this is that the workbooks may be using different underlying date systems. Workbooks originating on a Macintosh use the 1904 date system and Windows defaults to the 1900 date system. Copying dates between workbooks can give you shifted dates. <http://support.microsoft.com/kb/180162>

</comment><comment><USER6> Anyone know why such a straightforward article has eight authors? What could each of them possibly have contributed?

I have noticed in the past that bioscience articles tend to have lots of authors but always thought it was due to their inherent complexity requiring lots of different skills.

Perhaps it is really just a way to get more published papers for more people to help their academic career. This may explain some of the super long CVs these guys often have.

<comment><USER18> It is a way to get more published papers. It's very common for a research lab director or faculty member to be listed as an author on all papers produced by their organizations. But the practice also recognizes people who may have been involved in the production of important data in the paper, even if those people didn't write any part of the paper directly or were acting in a "service provider" capacity and are not part of the larger research project that the paper describes.

<comment><USER6> Makes sense. I have read many more math, stats and econ papers than bioscience. In there areas there tends to only be a few authors. Often there is an acknowledgement of some helped received either in the paper or at th bottom of the first page. In these areas paper are written by individuals rather than organizations. Bioscience takes much more infrastructure and coordination as well as being much more expensive.

Still seems crazy that eight "authors" should get credit for this article.

</comment></comment></comment><comment><USER4> I have to say this problem would go away in a flash if a database were used instead of a spreadsheet program. The reason is that each database field has a strict type, and "DEC1" in a database field identified as text would never be converted, or in any way changed.

The problem is that Excel spreadsheet fields don't have any specific type -- they're defined on the fly by the data that's inserted into them. And worse, different data are interpreted in different ways _in the same column_ , where you would expect some consistency within the column.

Those accustomed to database work, using tables having strictly defined data types, may be surprised to learn that, during an Excel import, successive fields in the same column can be interpreted in a dozen different ways, based on the data being read, not on the field's defined data type (which doesn't exist in a spreadsheet).

What I find sad about these recent Excel stories is that few seem to be willing to dump the program and choose an alternative.

</comment><comment><USER19> I guess I'd just assumed that everyone was aware of Excel's penchant for converting alphanumerics to scientific notation (any numeric sequence that contains what looks like an exponent.) It also converts long numeric sequences (say, a 20-digit ID number) to scientific notation. Any alpha sequence that could be interpreted as a date ("02-01") of course will be converted thusly.

Most of these are avoidable _except_ the long ID number problem. Even with careful formatting as text the last time I experienced the problem Excel was still performing implicit conversions in ways that weren't immediately apparent, and that rendered the whole experiment worthless.

The recent problems with bad formulas are easily solvable using the built-in auditing features, or formula arrays, or just discipline. The shortcomings reported for statistical functions ("Computational Statistics and Data Analysis", June, 2008) are another issue altogether.

Jeff

</comment><comment><USER20> As noted this article is from 2004. Unfortunately such errors are still around, as noted by Neil Saunders in a recent blog post[1].

1\. [http://nsaunders.wordpress.com/2012/10/22/gene-name- errors-a...](http://nsaunders.wordpress.com/2012/10/22/gene-name-errors-and- excel-lessons-not-learned/)

</comment><comment><USER21> This article was published in 2004. I would hope that bioinformatics researchers have ways of dealing with these issues now.

</comment><comment><USER22> As the paper points out, this an old problem. Excel is an excellent tool unlike most Microsoft applications. You learn to live the quirks. When you see the "September" genes, you just file it under "do a final cleanup and be sure this doesn't wind up in the final submission of the paper".</comment>


Lean Startup Circle - Google Group - <AUTHOR> http://groups.google.com/group/lean-startup-circle

<comment><USER2> This is the same guy who tried to get people to sign up for a $3K/month discussion circle about how to be lean:

[http://www.startuplessonslearned.com/2009/08/introducing- lea...](http://www.startuplessonslearned.com/2009/08/introducing-lean-startup- cohort.html)

Off the top of my head, one excellent strategy for avoiding distractions and process bloat is to avoid this kind of navel-gazing and just work on your project.

You can PayPal me the $3k at your convenience.

</comment><comment><USER3> " _The Lean Startup is a trademark and service mark owned by Eric Ries_ "

His ideas sounds awfully similar to YCombinator's.

Grounds for a patent dispute?

Does pg really own _Lean Startup_?

<comment><USER4> A trademark _is a distinctive sign or indicator_ [1]. It has nothing at all to do with patents [2] or "ideas."

Coca Cola and Pepsi each own trademarks for their respective names and likenesses, but neither own patents on the idea of selling sugared water.

      [1] http://en.wikipedia.org/wiki/Trademark
      [2] http://en.wikipedia.org/wiki/Patent

<comment><USER3> Ok, point taken, I wasn't aware of the distinction between patents and trademarks.

But my point is, don't you find it at all absurd that Eric Ries is trying to own the term "Lean Startup"? It strikes me as being a little ridiculous.

<comment><USER5> I don't see any indication that Eric Ries himself is attempting such a thing. It seems like a cover-your-ass move on the part of the group originator (Rich Collins).</comment></comment></comment></comment>


I made a game for Xbox Live Indie Games. Here are the sales stats. - <AUTHOR> http://nonegames.net/2011/05/07/tug-of-fours-sales-numbers/

<comment><USER2> I may have missed this in the article, but I am wondering how much this game sells for. I am not familiar with the pricing of indie games on xbox live.

Congrats btw for releasing your game! Very interesting article!

Edit: Ok I poked around a bit and found that the game is listed for 80 Microsoft Points. On my account it is $14.50 (not sure if this is Canadian or USD as my account is Canadian) for 1000 points, making the game cost about $1.16.

<comment><USER3> Agreed. Sales data is meaningless without price. I'm assuming that was discussed in a prior blog, but I'm too lazy to search through them all to find it.

<comment><AUTHOR> Sorry. I didn't think to put the translation in. I updated the post to mention that.

</comment></comment></comment><comment><USER4> Congratulations―especially on _releasing_ your game; having a quick look on your blog, I've seen you go into detail how difficult it has been―something we can all relate to. The first of many releases, I'd hope. I'll at least download the game later today (from the Spanish Marketplace, if they have it).

You don't specify anywhere on the post what Tug Of Four is about―at the very least, a missed opportunity for a _quick_ sales pitch.

<comment><AUTHOR> I didn't even think about a sales pitch. Thank you for the idea and I will try to remember that going forward!

The game is a party game meant for four people to play together in a room. There is a single ball that everyone controls. You don't want the ball to go in your goal. So you have to manipulate your friends into scoring on each other while trying not to get scored on yourself.

Edit: Here is the trailer on youtube. <http://www.youtube.com/watch?v=AxsKPd29rZ8>

<comment><USER5> I love the trailer... it doesn't get any clearer that this is a party game. Any plans for online multiplayer?

<comment><AUTHOR> Probably not. There were two reasons why I didn't add multiplayer. First (and most importantly) I felt that their wouldn't be a tension between the players. It would be hard for people to yell over each other to try to get others to do what they want to do. Secondly, I didn't think it would add enough value to delay the game longer.

However, if the game gets popular enough and enough people want it, I would be willing to add it.

</comment></comment></comment></comment><comment><USER6> If you're interested in this you might also be interested in a talk that the developer of Fortress Craft gave. Fortress Craft is (in its simplest form) a clone of Minecraft for the xbox 360 indie game thing, he gave a talk at an event a few weeks ago and he explained all the sales figures. It's the biggest grossing game on the indie game thing so far.

[http://www.fileplay.net/channels/iseries//13607/fortresscraf...](http://www.fileplay.net/channels/iseries//13607/fortresscraft- developer-talk-insomnia42)

He starts talking about sales at 16:00.

<comment><AUTHOR> Thanks for the link. The game released 2 days before mine and I was curious how that game was doing.

</comment></comment><comment><USER7> I love designing local multiplayer games. It's only niche because the big publishers/developers won't figure out how to market a non-music, local coop game.

You should try to get in touch with the Co-Optimus guys. Looking forward to downloading this when I get home.

<comment><AUTHOR> Thanks for the tip. I had never heard of Co-Optimus before but I check them out and try to show them my game.

</comment></comment><comment><USER8> You talked a lot about advertising and its effects on sales.

I think it's worth mentioning that spending money on a designer might really help your sales.

<comment><AUTHOR> My graphic designer buddy from work helped clean up my original art. He didn't have a good chance to try his own thing because he came into the process late. Originally, I was going to do it all on my own but he expressed interest in helping after seeing an play test of the game.

</comment></comment><comment><USER9> There's stats across several different XBLIG, along with analysis, from one of the top XBL indie game developers at: <http://radiangames.com>

If you read his most recent posts, it appears the recent XBLIG spamming of ratings (which lowered average game ratings across the board) has cost him huge numbers of sales - enough so that he's now looking at other platforms.

</comment><comment><USER10> Xbox Live Indie Games is not available in Australia. :(

<comment><AUTHOR> That's a bummer. I wonder if it's because of the laws around games in Australia.</comment></comment>


Flash completely dominates CSS/HTML/JS for rendering text accurately - <AUTHOR> http://www.ownedthx.com/blog/2009/04/27/flash-completely-dominates-csshtmljs-for-rendering-text-accurately/

<comment><USER3> You're not honestly suggesting that developers start using flash to render their body content, are you?

Besides the copy/paste argument that people have already mentioned (yes, I know there is a "solution"). It's also inaccessible, takes longer to render and relies on a 3rd party product to render your website how you intended.

I know you'll probably say "give search engines and accessible-concerned folks a text version", but who honestly wants to maintain two different sets of code for ALL body content? And all just so the text looks a little better? Why not just tell everybody to use Safari/Mac?

<comment><USER4> Adobe has done a lot of work to make Flash "accessible," if the artist is willing to put some effort into it. And, once you make it "accessible," search engines (at least Google) will be able to index it.

Safari/Mac (really, _any_ web browser) is a horrible for typesetting.

If you need a whole document to be predictable typeset, please give me a PDF. If you don't need it to be typeset perfectly, please give me HTML.

</comment></comment><comment><USER5> > Flash completely dominates CSS/HTML/JS for rendering text accurately

Except that the resulting rendering is an image so you can't copy and paste. I suppose some content providers will consider that a feature, but as a user it seems like a serious bug to me.

<comment><AUTHOR> Actually that's no problem...

The SWF in the article were two snapshots that I overlayed, one from Flash, one from Word, so it has no interactivity with the curser.

Truth is, it's entirely possible to enable text selection, if that were a real demo of the text engine.

<comment><USER6> May I ask why you chose Word as your comparison? It's not known as the paragon of typeography. :(

<comment><USER6> Eek, that'd be "typography".

</comment></comment></comment></comment><comment><USER7> Three reasons to dislike Flash text. First, it does not look native. I have certain anti-aliasing settings, for example, and Flash text looks totally different. Second, copy-paste, as others have pointed out, is a problem --- yes, it can be done, but enough apps out there fail to enable it properly, so it does not really work. Third, if I have browser plugins which operate on text, they break.

<comment><USER8> > First, it does not look native

I don't think this point stands, or at least it doesn't in the way you think it does.

Flash has two text rendering modes: native, and embedded. Native uses the system API and follows your system options, like when deciding on how to antialias. Embedded uses the embedded fonts with the antialiasing method the developer chooses. Many developers pick the latter because they want to know exactly how text will work on all platforms.

It's up to the developer to select which method to use. And the new flash.text.engine.* API make both a lot more powerful.

> Second, copy-paste, as others have pointed out, is a problem (...) enough > apps out there fail to enable it properly

Like the first one, this becomes a developer choice, not a platform problem. It's not that "it can be done", it's that it's easy. People who don't do it, don't do it because it's the option they've picked, not because it's difficult or anything.

Your third point totally stands as having a separate DOM kills the user's control over the content and its form. But point 1 and 2 are due to conscious developer decisions and not the technology.

</comment></comment><comment><USER9> PNG dominates CSS/HTML/JS for rendering text accurately too.

I'd prefer something usable. Something that matches the rest of my apps, and something that used the font sizes and types that I specified (I set a minimum font size so I can read the test, for example). This doesn't do that.

<comment><USER10> Paper is better still...

</comment></comment><comment><USER11> Glad you like it. The new Text Layout Framework does a whole lot more too... it brings the classic Adobe digital-text expertise right into 98% of the world's current browsers.

Veronique Brossier has a good intro to it all: <http://www.insideria.com/2009/03/flash-text-engine.html>

More examples & info: <http://labs.adobe.com/technologies/textlayout/>

jd/adobe

</comment><comment><USER12> CSS/HTML/JS can render fonts perfectly if you use <canvas/>. The copy/paste problem can be solved using the HTML5 drag and drop API. (copy=drag, paste=drop)

To make sure you have the exact font, you may want to include the font file with @font in CSS.

<comment><AUTHOR> As soon as every major browser supports it, count me in :)

(and as soon as a good majority of folks are actually using those browser versions!)

<comment><USER4> Internet Explorer has supported @font-face for over 11 years. You can embed SVG into the other browsers and/or use Canvas.

<comment><USER8> So I can use one of two different "standard" technologies, plus a proprietary technology, to avoid using a single proprietary technology.

I'm not sure where's the advantage.

</comment></comment></comment></comment><comment><USER13> So I'm supposed to be excited at the prospect of ditching open web standards in favor of embedding proprietary Word into proprietary Flash for minor aesthetic enhancements?

</comment><comment><USER14> Moot. You can't even select/copy/paste it. Spiders can't crawl it. Users can't resize it so they can read it properly.

<comment><AUTHOR> Gah. Again, as I posted up above, text selection is possible. going to update the post to indicate that...

<comment><USER15> So there is no difference from "native" browser text?

That's rubbish. You can't even select flash text + native text in the same selection. It's completely broken.

Also, flash bugs are platform specific. Like printing issues on firefox in linux, z-index issues on some browsers etc etc.

None of this happens with native text.

</comment></comment></comment><comment><USER16> Here is what I always wondered about...we are now on Flash 10...why hasn't Adobe figured out a way to make Flash more native to the main browsers out there? How hard is it really for them to add the right click options that everyone in the world relies on?

Seriously a few lines of code(yeah exaggeration I know), is keeping them from pretty much domineering the interweb design.

<comment><USER11> We're asking the browser vendors to expose their right-click events to plugins, to provide an API to opening up in a new tab, to open up their cookie preferences so that plugins can integrate user choice, etc.

There's no need to reflexively push back against Flash. You can learn it. You're not left out. You can open up.

jd/adobe

</comment></comment><comment><USER17> Wait, what? You're claming that Flash renders text accurately by comparing it to _Word_? If we're going to create a new typesetting system, can't we at least compare it to existing typesetting systems that have had some professional design input? I hesitate to drag out TeX, but come on - <USER2> InDesign, Quark Xpress, even Mac OS X's built-in CoreText/ATSUI rendering probably pays more attention to text layout and spacing than Word does.

I know Firefox's rendering engine put some effort into supporting the underlying platform's high-quality text-layout engine (for instance, Firefox will often use the 'fi' ligature if it's available), and this will only get better with time - unlike Flash, which will now have to maintain their exact layout system forever to maintain backwards compatibility.

<comment><USER6> I'd LOVE to see browsers support typographically correct hyphenation, it'd make narrow columns of text look sooo much better.

</comment></comment><comment><USER18> I've seen uneven kerning in a lot of flash apps.

<comment><USER19> This problems occurs mostly on Mac OS X, with dynamic text fields (text input, when the font is not embedded) : [http://kb.adobe.com/selfservice/viewContent.do?externalId=f0...](http://kb.adobe.com/selfservice/viewContent.do?externalId=f01edf45)

<comment><AUTHOR> Ah, ok. That's what I was hoping. As a mac user myself, I can confirm that flash.text.engine has excellent, perhaps perfect kerning.

</comment></comment></comment><comment><USER20> This approach for text rendering should really only be used if there were some sort of graceful failover whereby another browser, lacking flash, would receive the text rendered as standard HTML. It would be foolish to use it otherwise.

</comment><comment><USER21> There's absolutely no need for that trolling headline. What would have been wrong with "Flash enables perfect replication of Word's layout engine online"? Truthful and probably more interesting.

</comment><comment><USER22> The Flash doesn't work on that page for me, and it works on every other page I've been to this month.

Why I don't like Flash.</comment>


Trusting data, not intuition - <AUTHOR> http://www.technologyreview.in/business/32409/

<comment><USER2> Data only gets you to the local maximum. The results of a religious data- driven approach are clearly visible in Google. Most of the products are decent, a few are best in class, but most of them are bland and lack inspiration.</comment>


Why the GPL does not apply to premium WordPress themes - <AUTHOR> http://perpetualbeta.com/release/2009/11/why-the-gpl-does-not-apply-to-premium-wordpress-themes/

<comment><AUTHOR> A related law-review article someone else on HN shared with me: [http://web.bu.edu/law/central/jd/organizations/journals/bulr...](http://web.bu.edu/law/central/jd/organizations/journals/bulr/volume85n5/Stoltz.pdf)

My interpretation is that the precedents in that article support this author's intepretations -- WordPress themes and plugins are not derivative works of WordPress. Merely calling simple interface functions is not enough to make a derivative work according to those cases.

Also, it may not be clear at first glance, but the author of this article and several of the commenters are lawyers.

<comment><USER2> It depends on how you look at Wordpress. Are themes data that Wordpress processes, or are themes programs that use Wordpress as a library? In the first case, it is certain that the GPL does not apply. In the second case, it is certain that it does.

Personally, I see Wordpress as a library for implementing Wordpress themes, and it follows that Wordpress themes must be distributed under the terms of the GPL. (Wordpress could easily fix this problem by making themes data, not code. But they didn't implement it this way, which leads one to believe that the authors intended for the themes to be GPL'd.)

 _Also, it may not be clear at first glance, but the author of this article and several of the commenters are lawyers._

True, and their analysis of the law is very good (well, it sounds good to me, anyway). But their analysis of the software is not so good; I think they decided on my first scenario, even though the code does not support this.

<comment><USER3> _Personally, I see Wordpress as a library for implementing Wordpress themes_

By that tortured logic, the Linux kernel is a library for implementing programs and thus every closed source driver and every closed source program that run on Linux must be GPL'ed. It's pretty clear that the authors really want themes to be GPL'ed but their intent is not the deciding factor here.

<comment><USER2> There is specific wording in the GPL covering that case.

I am not trying to use "tortured logic" to make a point; I really think this is how Wordpress themes work. Without a theme, Wordpress does absolutely nothing. The theme makes calls into Wordpress to add data and display data. Each theme is its own piece of blogging software that uses Wordpress to abstract away common problems. That's a library.

Another "application" that is actually a library is xmonad. It's a library for writing a window manager that works in a certain way, and it's your "config file" that actually uses the library in such a way as to make a window manager. This is not "tortured logic", it is just good software design. (Although in the case of Wordpress, it's not the right design. _Themes_ should not be applications, they should be data.)

<comment><USER4> It's interesting that the structure of Wordpress affects whether the themes are derivative works. Maybe it's the PHP-soup style of HTML interspersed with PHP function calls that creates the situation you describe. The same system written so that the themes are stored as lists of colors and dimensions to be interpreted by the blog software would keep the themes as non-derivative works.

<comment><USER2> Definitely. XSLT is something that could work this way -- the blogging software generates an XML document with all the relevant information, and then the XML stylesheet is applied to make the XHTML (or Atom, etc.) result. Additional CSS and Javascript could of course be bundled.

In this case, there would be no question as to the legal status of the theme. It's just a program that transforms the output of another.

</comment></comment></comment></comment></comment></comment><comment><USER3> Just a few years ago, weren't we all up in arms about Microsoft's misrepresentation of the virality of the GPL and their attempts to frighten people away from using GPL'ed software? Looks like GPL zealots are doing their job for them now.

At the time, various FOSS luminaries (including rms) signed this -

<http://perens.com/Articles/StandTogether.html>

Quote:

 _If you do choose to incorporate GPL code into a program, you will be required to make the entire program Free Software. This is a fair exchange of our code for yours, and one that will continue as you reap the benefit of improvements contributed by the community. However, the legal requirements of the GPL apply only to programs which incorporate some of the GPL-covered code - not to other programs on the same system, and not to the data files that the programs operate upon._

That doesn't sound like 'A GPL'ed program loads your template, making the templated GPL'ed' at all.

<comment><USER5>
      Looks like GPL zealots are doing their job for them now.

I'd like to see some justification for this statement.

In my experience, the people who try to extend the GPL beyond its lawful or reasonable capabilities are more interested in forbidding competition than guaranteeing user freedom. For example, MySQL's bizarre claims that their protocol is GPL'd and that non-GPL reimplementations are infringement, or Matt Mullenweg asserting that the GPL is a construct of the address space.

If RMS or Eben Moglen make a claim regarding the GPL, then it's worth analyzing and debating -- but Joe Nobody, author of Yet Another PHP Blog Engine, cannot be considered a reliable authority on GPL or copyright law.

<comment><USER3> _I'd like to see some justification for this statement._

Microsoft's contention was that using GPL'ed software exposes you and your intellectual property to risk. The motivation of the parties making very broad GPL claims is not relevant - what's relevant is that it is precisely the sort of thing Microsoft was insinuating and precisely the sort of thing the linked missive tries to disclaim.

 _Joe Nobody, author of Yet Another PHP Blog Engine_

Matt Mullenweg is hardly Joe Nobdy, nor is Wordpress Yet Another PHP Blog Engine. He represents his claims as legally sound and offers the opinion of lawyers who are, according to him "the world's preëminent experts on the GPL". See:

<http://wordpress.org/development/2009/07/themes-are-gpl-too/>

<comment><USER5> Does anybody care about Wordpress, though? The only times I ever hear about it are when somebody's discovered another few dozen security holes. It seems to be more of an experiment in poor design than a serious project.

If his beliefs are correct, it is illegal to distribute proprietary software that only runs on Linux.

<comment><USER3> _Does anybody care about Wordpress, though?_

Yes. This is a well-established fact.

 _If his beliefs are correct_

If his beliefs were correct, nobody would touch anything GPL'ed with somebody else's penis. His beliefs are either posturing or a sincere misunderstanding of copyright.

</comment></comment></comment></comment></comment><comment><USER6> Yet another reason why I am so glad that the Ruby/Rails community standardized on the MIT license: it means that I don't have to care what DHH or Matz thinks about my business model. Just as importantly, it doesn't mean I have to care today what DHH or Matz will think of my business model five years from now.

</comment><comment><USER2> I am not sure I agree with this analysis. Stallman convinced someone to open- source his entire lisp compiler because the REPL used the GPL'd readline library, and Stallman seemed like he would have taken the issue to court. Wordpress themes depend on Wordpress more than a compiler depends on a line- editing library, so theme authors might want to assume that they only have the protections of the GPL on their side. Anything else may be accidental.

<comment><USER7> > Stallman convinced someone to open-source his entire lisp compiler because > the REPL used the GPL'd readline library, and Stallman seemed like he would > have taken the issue to court.

Defeating a bogus lawsuit costs money, so this could have just been the cheaper route (or maybe the guy just wasn't familiar with the cases cited in the article here).

<comment><USER8> ...or maybe this happened before the _Galoob_ case that the OP mentioned, and therefore the compiler author's lawyers had good reason to fear that a court would side with Stallman.

<comment><USER9> No, this happened several months after the case:

[http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/doc/...](http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/doc/Why- CLISP-is-under-GPL)

[http://scholar.google.com/scholar_case?case=1086785624507896...](http://scholar.google.com/scholar_case?case=10867856245078964488&q=galoob+nintendo&hl=en&as_sdt=2002)

</comment></comment></comment></comment><comment><USER10> The GPL is pretty clear on this. I would consider WordPress themes as plugins to WordPress. And thus, we consult the GPL FAQ: <http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins>

"If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in?

It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug- ins. This means the plug-ins must be released under the GPL or a GPL- compatible free software license, and that the terms of the GPL must be followed when those plug-ins are distributed.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the 'main' function of the plug-in with some options and waiting for it to return, that is a borderline case."

<comment><USER8> We are all familiar with software licenses that place broad restrictions on what the customer can do ("you may not decompile, reverse-engineer, benchmark, or play FrisbeeⓇ with this Software..."), but if those restrictions have any legal effect at all, it is only because the license is in the form of a contract ("by clicking 'I ACCEPT' you agree to all the terms of this License...") between the software vendor and the customer.

The GPL is, by design, a license rather than a contract, and therefore it cannot forbid any action that copyright law permits. If indeed a WordPress premium theme is not a "derivative work" within the meaning of copyright law, then the GPL cannot touch it, _regardless of the GPL author's intent_.

<comment><USER10> I should preface this that I don't really know much about copyright law. The sticky point to me is that you could write WP themes as binaries called using fork/exec. So in essence, the developer's choice to use WP function calls and variables effectively makes it a derivate work, at least in my opinion.

I'm not a big fan of this, though it makes the most sense in my mind (at least with my opinion mostly biased by the GPL). I remember reading Dries, the found of Drupal, effectively claiming that all Drupal modules were GPL'ed and not liking it so much that I have altered my plans for future Drupal modules (all the better for me, my intellectual property will not be open for all to witness as I intend a more hosted solution which I can charge a higher premium for).

Ultimately, I feel like crusades by open source projects (WordPress, Drupal, etc) to GPL their modules will backfire and create a more restrictive, hosted component to them that they will ultimately regret. Dries did this for this anti-spam module, Mollom. I don't think he'd be so happy if core features like Views or CCK performed identically. Drupal would effectively suck. I guess thats all the more reason to reject the idea that plugins are derivative works.

<comment><USER5> Remember that the GPL is a copyright license. This means that the only cases in which it matters are when the work is being distributed. The problem with trying to coerce plugin authors into using the GPL is that plugins are usually distributed separately from the core application. This means there's no legal justification for suing somebody who writes a proprietary plugin, because they're not participating in any action relevant to the GPL.

If I wrote an application which supports plugins, and I wanted to prevent a particular non-GPL plugin from being used, the only legally justified way I could do so would be to _sue my users_. That's right -- I'd have to attack the very people using my software. Not the plugin authors, the _users_.

Ironically, this means that selling a proprietary plugin is safer than hosting it. I wonder what Dries would think about that.

<comment><USER11> I believe the use case at hand is, given person Tom who has purchased a premium WordPress theme, is the theme a derivative work, allowing Tom to redistribute the theme to whomsoever he chooses?

</comment></comment></comment></comment></comment><comment><USER11> I think one of the most important things to point out, for those relying on the appeal to authority, is that, yes, the author of the linked post is a lawyer, but not one specializing in copyright law. Readers should note mikewas is Michael Wasylik, a real estate attorney at Ricardo, Wasylik, & Kaniuk (<http://ricardolaw.com>), which focuses on foreclosures and bankruptcy in Florida.

You'll have to forgive me if it sounds insulting, but it was obvious that Mike's profession is not in copyright law, because his arguments and applications of case law are sloppy. Please keep this in mind when considering the validity of the posts, especially if one of the major factors in your thoughts are credentials; copyright law is _very_ complex and its applications to software bring about all kinds of issues that don't exist even in the realm of copyright for other media. It requires an incredibly nuanced understanding of the law at hand and legal precedents of the industry.

But I am not a laywer, so perhaps far be it from me to be speaking up.

</comment><comment><USER12> Several wordpress developers, both code and themes, were tired of the WP several years ago, and started the Harbari Project, which is an Apache Licensed blogging platform: <http://habariproject.org/en/>

They left the wordpress project, and picked the ASL license because of their experiences in wordpress.

</comment><comment><USER13> Its definitely murky at best if they are GPL'd. I would venture to say no. I would also to venture to say that it would be trivial for wordpress to push out a new version (with new wording on the license and a reworked template system) which could make any compatible plugins/themes GPL'd if they wish to move forward and have support for new versions of wordpress.

<comment><USER2> No, they can't do this unless they have copyright assignment from all the authors. If I contributed code to Wordpress under the GPL, I would expect that that code be GPL'd forever. Wordpress can only change the license if they remove my code. (I haven't contributed to Wordpress, but other people theoretically have.)

<comment><USER13> Hence why I said a new version of wordpress where previous versions of modifications and themes are non functional. Hence if you wish for your product to be ported to a new version you would need to agree to the new terms.

<comment><USER2> If they haven't rewritten Wordpress to deal with the plethora of obvious technical problems, it seems unlikely that they would rewrite it for mildly- obscure legal reasons.

</comment></comment></comment></comment><comment><USER14> If a wordpress theme is all your own work, then no-one else has any business telling you under what terms you distribute it.

The GPL2 tself says... "You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works."

</comment><comment><USER15> Is the Wordpress founder annoyed somehow that he has helped create a thriving marketplace?

<comment><USER16> Presumably, he's annoyed that he distributed a piece of software under the terms of the GPL, and others extended it and sold those extensions under proprietary terms. If this was ffmpeg, we wouldn't even have to wonder about it.

<comment><USER17> To expand on your comment - Matt Mullenweg is often quick to point out that WordPress itself came into being by forking a GPL'd abandonware project. It's because of this that I think he genuinely wants to ensure users of the software have the same opportunities he has had.

Also, regarding the marketplace surrounding WordPress, WooThemes distribute their themes under the GPL and per Andrew Warner's interview with co-founder Adii Pienaar (<http://mixergy.com/woothemes-adriaan-pienaar/>) they make $2+ million a year and have had some of their code incorporated back into WordPress by Automattic. This should assuage any fears about GPL themes being commercially viable and of Automattic taking a dislike to others making money off of WordPress.

<comment><USER15> As a big fan of the GPL I don't mean to come across as totally flippant. However, I just don't see a problem with people selling themes.

In a hurry, not enough skills, buy a theme. Skilled with the time to make your own, then roll your own.

You have a choice, you are not compelled to pay for a theme if you don't want to. The software will continue to work regardless.

Unless there is some kind of legal stalking horse that could affect the GPL, I don't see the point of all the fuss.

I use both Wordpress and Joomla and I see the same kind of thriving ecosystem around both projects. Commercial and non-commercial plugins and themes for both. Seems like a good thing to me and I don't see why it has to be an either/or situation.

If I am missing something then I would like to hear it.

<comment><USER17> There is no problem with _selling_ themes. What may be a problem is _distributing_ a theme under another license.

I think it's unlikely they'll do anything about this as legal action would be detrimental to their community; meaning that this won't be decided unless someone who receives a non-GPL'd theme contests it. This doesn't preclude Automattic/Matt from stating their view and raising a bit of a fuss as you put it in the interim.

To be clear - I'm neither a fan of the GPL, a lawyer or a WordPress user so I don't know whether Automattic is in the right and I'm indifferent as to whether or not they are.

</comment></comment></comment></comment></comment><comment><USER18> I've always considered the fact that this discussion is still going on says a lot about the openness of the gpl as a license. :(

<comment><USER19> I think it says more about the legal system in general than the GPL specifically. :-(</comment></comment>


The Death of Patient Zero - <AUTHOR> http://www.esquire.com/lifestyle/health/a36695/death-of-stephanie-lee-0815/

<comment><AUTHOR> One of the many sad things in this story is that Stephanie Lee was given false hope by overly enthusiastic technologists. Since YC is now funding biomedical startups, this will hopefully serve as a warning to others who find it easier to sound smart and confident than actually run a clinical trial.

</comment><comment><USER2> Author lays it on a little fucking thick don't they?

Couldn't wade through the tidal wave of forced narrative. Who starts a story with a 3 minute hero shot? Just poor.

"she never lost the awareness that she had honed over a lifetime—her daunting gift for seeing people and situations plain—nor the voice that always said the right thing, the true thing, the honest thing, the thing that cut to the bone."

"she spoke as if from the deepest well of exhaustion "

"She was always so dignified in her bearing, so erect in her carriage, so put together in every way"

It's like introducing someone to the Lord of the Rings with Boromir's death scene and expecting them to get all teared up.

edit: go ahead and take a look at the author's other pieces. He seems to specialize in Mad Men recaps, lists like "8 ways the world has changed" and "7 things Snowden learned," Obama bashing and celebrity gossip.

<comment><USER3> I agree that maybe a more objective angle would have conveyed the information a little better. However, your comment is in poor taste. This is a real person they're talking about, someone who suffered and died. Not a character in a movie.

<comment><USER2> ... and the author has failed to adequately communicate that person's story.

I didn't say a thing about the subject of the piece. Is it poor taste to criticize everything associated remotely with something tragic? What about poorly done WWII documentaries? Can I criticize them?

Just saying Nicholas Sparks probably shouldn't be writing news articles.

<comment><USER3> You're welcome to criticize it. But comparisons to The Lord of the Rings, of all things, were tone deaf. This is not some epic fantasy for your amusement.</comment></comment></comment></comment>