What's wrong with 1975 programming - <AUTHOR> http://varnish-cache.org/wiki/ArchitectNotes <comment><USER2> This is one of the best systems programming articles I've read in a very long time. Short summary:

* Trust the VM system to figure out how to page things (hey, 'antirez, what's your take on that? You wrote an ad hoc pager for Redis.) instead of getting fancy, because if you get fancy you'll end up fighting with the VM system.

* Minimize memory accesses and minimize the likelihood that you'll compete with other cores for access to a cache line; for instance, instead of piecemeal allocations, make a large master allocation for a request and carve it out.

* Schedule threads in most-recently-busy order, so that when a thread goes to pick up a request it's maximally likely to have a pre-heated cache and resident set of variables to work with.

<comment><USER3> On one hand, mmap() is very nice. On the other, you may run into the limits on process size, and this is essentially unsolvable [1]. So your program is limited to 3GB of data on 32-bit machines.

I also think hierarchical allocators - a slightly-formalized version of phk's "carve chunks off a block of pre-allocated memory" - deserve more attention. See SAMBA's talloc, or halloc.

[1] Well, you can write some code to page things out as appropriate, but by the time you're inventing your own virtual memory manager you're definitely doing it wrong. Just go with old-fashioned file-based code.

<comment><USER4> If you're running on 32 bit architectures for your main servers you are just playing around and you don't need stuff like varnish.

If you're going to try to push multiple Gbps out of a single box the least you could do is put a bunch of ram in it and install a 64 bit OS. That's a lot more bang for the buck than installing multiple 32 bit boxes with only a bit of memory in each.

<comment><USER3> Certainly, the "professional" thing to do is install a 64-bit box with lots of memory. But don't underestimate "playing around", especially as it pertains to the popularity of OSS.

<comment><USER5> Can you even buy a 32-bit box anymore?

<comment><USER6> Do smartphones count? ;)

<comment><USER4> Only if you use them as servers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> These systems seem to be, in practice, relying on having working sets that mostly fit in RAM. It's a nice world when you can stack 64GB in a box and never worry about disk, but having worked on systems that need more working set than this, I don't think this idea actually scales up as well as is claimed.

Two issues: 1\. Small objects aren't batched by a VM, so they can't be combined into long streaming writes and reads. Doing 4k writes and reads is useless on a modern disk. 128k to 1MB is more appropriate if you can organize things that way.

2\. If your workload "mostly" fits in RAM, and then as your application scales, the working set exceeds RAM, you wind up doing some queries that are instant, and some that are a million times slower (a real, uncached disk seek). Unless you plan for this, your app can fall over and you just won't know what happened. You need to know the fraction of requests that will go to disk and plan to have spindles (or RAM) to handle it. I don't like systems that make measuring what's going on at this level any harder to do.

The author's claim is that you get to share RAM with the VM, which is great, but in practice a lot of systems use kernel-supported sendfile() to do work (i.e. have a small streaming buffer per network connection), or cache super- hot objects in a relatively small amount of RAM. The assumption that all user- mode caches try to allocate as much RAM as possible is not true.

Alternately, larger systems separate RAM cache entirely from disk-bound boxes (e.g., dedicated memcached).

I think a more complete treatment of this problem would explain scaling over working set more aggressively, and it would explain using instrumentation how the system degrades at scale.

<comment><USER4> Currently serving up billions of images per day from memory images that are more than 100 times the available physical memory (and there's plenty of that).

Small objects can be batched in to a single page at the application level, the VM will then move these in and out of the resident pool as one unit.

The operating system uses elevator sorting and knows enough about the disk that it will attempt to sequentially invalidate pages.

The assumption is not that the working set will fit (mostly) in to RAM, the assumption is that a page fault is a relatively rare occurrence and that other threads will not be stalled by the IO done for one. It is the _changes_ to the working set that determine page faults, not the size of the total set.

On my boxes I solved one issue with this (and the maximum number of systemwide sockets) by running a varnish instance for every physical CPU in the machines.

</comment></comment><comment><USER8> These "1975" programming concepts are essentially the same ideas taught in the CS computer architecture course I took (circa 2006). The main focus was on the memory hierarchy of modern computers, which was fine, but there was not much advice about letting virtual memory do its job - the course covered mostly how things work under the hood, but did not give practical programming recommendations. I can see how budding programmers could get the idea that "disks are slow, so I should try to manage when data gets copied to and from RAM" without realizing that the system software is already taking care of it and that attempting to do it manually will generally just make matters worse.

As an aside, I found it really hard to read this article because of the grammar errors. Nearly every paragraph has a run-on sentence, and there's plenty of missing punctuation. The style also seemed more like off-the-cuff rambling (especially the long-winded attempts at humor near the beginning) than carefully-written advice, which almost made me stop reading before getting to the real content. The message is good, though, even obscured by these problems.

</comment><comment><USER9> It seems to me that the first point made (on the performance of Squid's LRU caching) is really just that Squid is doing a bad job at it, and Varnish doesn't try at all (lets the VM system take care of it). In theory, managing memory at the object/application level should give you some advantages over doing it at the page/kernel level. I can imagine, for example, cases where Squid might perform better by moving entire objects to/from disk, rather than a page at a time in response to faults. In this case "1975 programming" really means _trying to manage the memory hierarchy in the interest of performance_ , which is timeless. Indeed, the author later states that Varnish tries hard to "reuse memory which is likely to be in the caches", which sounds like the same idea applied to a different level.

<comment><USER3> The kernel VM system has a lot more ("global") information, though.

</comment></comment><comment><USER10> I know infinitely less about caching and VM than the author of the linked article, but I was surprised by this part:

      Varnish also only has a single file on the disk whereas
      squid puts one object in its own separate file. The HTTP
      objects are not needed as filesystem objects, so there is
      no point in wasting time in the filesystem name space
      (directories, filenames and all that) for each object, all
      we need to have in Varnish is a pointer into virtual
      memory and a length, the kernel does the rest.

I've had more than one systems person give me the opposite advice, that yes, using the OS's caching layer to do your disk/RAM balancing is good, but you should write into files that are divided on logical boundaries that correlate with how you use the data. Their argument was that this gives the caching layer more information, e.g. it can consolidate all your tiny objects into one part of the cache to avoid your small objects unnecessarily pinning a ton of VM pages, and can do things like prefetch pages when you start to read a big object, or even choose not to load a very large object into the cache at all if you're reading it sequentially (keeping it from clobbering the cache). When evicting pages it can also take small-versus-big-object and these-pages-go- together issues into account, as opposed to all pages looking alike.

That's all hearsay, though, and I have no idea if it actually improves things in practice on current OSs or with which kinds of workloads.

<comment><USER11> Both arguments might be correct. If you are dealing with a language that makes a strong distinction between the object and the memory layout of that object, you might be better off handling the serialization yourself. But Varnish is in C, and data on disk is mapped to memory then used directly as a struct.

Thus there are no small objects scattered around--- each 'object' is contiguous, and most likely on a single page. Prefetches happen automatically --- in Linux at least, disk caching and the VM are essentially synonymous. The benefit of using the VM directly with mmap() is that you have more control over the details and less overhead.

<comment><USER10> > in Linux at least, disk caching and the VM are essentially synonymous

Ah that could explain it. The people I know seem to be working on fs-level caches that operate at least in part on file granularity, so maybe they assume Linux/FBSD do fs-level stuff as well. They seem to try to do things like deciding whether to cache or not based in part on how big the file being read is, and what its historical usage patterns are.

<comment><USER12> Windows, IIRC, has a filesystem caching system which is distinct from VM.

</comment></comment></comment></comment><comment><USER13> I prefer the bit in this article: <http://www.varnish- cache.org/wiki/ArchitectureInlineC>

Where he says: "It is a particular common kind of hubris for IT architects, to think that they know better than 100% of everybody else, this is less of a sin in Open Source than in Closed Source, but a sin nontheless."

</comment><comment><USER14> Fighting with the OS - such as the VM system - is one of the primary arguments for exokernel-style OSs; see

<http://en.wikipedia.org/wiki/Exokernel>

<http://pdos.csail.mit.edu/exo.html>

(In fact, I think one of their use cases showing an order of magnitude or 2 improvement specifically involves pairing an app with a custom VM algorithm.)

</comment><comment> old-gregg MongoDB guys outsourced the entire caching/memory management to OS VM and on my (modest) workloads it performs really well. It probably also means that OS is a bit more relevant now and the choice b/w BSD/Linux isn't just about personal preference anymore, I can imagine that their VM characteristics are quite different and "2006 style" software like mongod won't work the same.

Anyone with low-level experience with BSD/Linux VMs?

</comment><comment><USER15> Hmm... I thought the scourge of 1975 programming was ignoring the vast and growing gap between the speed of the processor and the speed of RAM.

2010 programming has to deal with the fact that chasing a (non-cached) pointer can consume hundreds of processor cycles. So much for trees...

</comment><comment><USER16> There is one interesting argument for not using the OS virtual memory system. By using VM you have just turned disk errors into RAM errors. Many programs can potentially handle disk corruption, almost none can cope with bad RAM.

</comment><comment><USER17> This Squid vs. Varnish comparison is quite similar to the sync vs. async debate for network programming. In both cases, the question is: do I use some OS abstraction (Virtual Memory or threads, respectively) as my application's primary scheduling mechanism, or do I handle scheduling more explicitly at the application level?

Of course the OS guys like PHK or Linus think you should use the OS mechanisms. Linus hates O_DIRECT (<http://kerneltrap.org/node/7563>) and PHK is taking a similar tack with this article. Just let the OS handle it.

But there are real downsides to this approach. One is that it makes you far more dependent on the quality of the OS implementation. I'm sure PHK trusts FreeBSD and Linus trusts Linux, but if you're writing for cross-platform you might end up on a bad VM implementation. The last thing you want to tell your customers is that they have to upgrade or change their OS to get decent performance.

Also, the OS is by design a more static and less flexible piece of software than anything you put in user-space. What if you need something that your VM system doesn't currently provide? For example, how are you going to measure (from user-space) the percentage of requests that incurred a disk read? Disk reads are invisible with mmap'd VM. What if you need to prioritize your I/O so that some requests get their disk reads serviced even if there are lots of low-priority reads already queued? If you've bought in whole-hog into an OS- based approach and your OS doesn't support features like this, you don't have a lot of options.

And while it's great in lots of cases that the page cache can be shared across processes, OS's don't have great isolation between processes using the page cache. If you run some giant "cp" and completely trash the page cache, your Varnish process is likely to take a latency hit. In a shared server environment, you want to be able to draw walls of isolation so that each user gets the resources that he/she was promised. A shared page cache is hard to fit within an isolation model like this, whereas an explicit cache in user- space works fine.

Think about the microkernel vs. monolithic kernel debate. Maybe monolithic kernels won, but it's still a good principle that if it can be left _out_ of the kernel without loss of performance, it should. Why is it better to use an interface like VM than to use some user-space library that manages disk I/O? The kernel's one advantage is that it can handle page faults (and so can make a memory reference into an I/O operation), but that's also the property that makes it difficult to do good accounting of when you're actually incurring I/O operations.

One final thing to mention: if you're using VM in this way, things degenerate badly in low-memory situations. Since the pages of data are competing with pages of the program itself, the program can get swapped out to service data I/O. If you've ever seen a Linux box thrash with its HDD light flashing like mad, you know how bad things can get when memory is temporarily too scarce to even let programs stay resident. Using vast amounts of VM exacerbates this, because it makes your programs and your data compete for the same RAM.

<comment><USER4> No matter what the quality of your VM, if you're going to have several IO hits versus only the one where the VM (even a crappy one) pages the data in or out just once you will always be faster in a scenario like phk describes.

Doubling or even quadrupling your IO operations is very expensive.

In a situation such as the one for which this article is meant you set things up in advance to _never_ get in to a situation where you start trashing your disk, programs are allocated a fixed amount of memory and if a program does not abide by that it is considered faulty.

The trashing situation you describe can happen on machines that are run with less rigid setups, but on a production server that you count on serving up a few billion files every day you can't afford the luxury of random scripts firing off CRON and other niceties like that.

Custom kernel, very limited set of processes that you know are 'well behaved', as predictable as possible.

<comment><USER17> > No matter what the quality of your VM, if you're going to have several IO > hits versus only the one where the VM (even a crappy one) pages the data in > or out just once you will always be faster in a scenario like phk describes.

You can keep your own cache explicitly in user-space, and get multiple hits with a single load into RAM.

> but on a production server that you count on serving up a few billion files > every day you can't afford the luxury of random scripts firing off CRON and > other niceties like that.

In a data center where you have tens of thousands of heterogenous jobs competing for thousands of machines, you can't afford the luxury of giving out exclusive access to a machine. You have to have good enough isolation that multiple jobs can run on the same machine without impacting each other negatively. As CPUs get more cores this will become even more important.

<comment><USER4> The whole point of this article - and it is a very good point - is that keeping your cache in user-space is not the right way to approach the problem. And you can get multiple hits anyway if you make sure that data that will expire together will end up in the same page.

Your other description does not match the use case of a production web server running varnish instances as the front-end.

<comment><USER17> The whole point of my comment is that PHK's analysis leaves out many downsides of leaving it all to the kernel.

His main argument against doing it is user-space is that you will "fight with the kernel's elaborate memory management." But if you just turn off swap completely and read files with read/write instead of mmap(), there is no fight. Everything happens in user-space.

Leaving it all to the kernel has many disadvantages as I spent many paragraphs explaining.

<comment><USER4> I missed the 'if you just turn off swap completely' bit in the paragraphs above.

Edit: even on re-reading it all I can't find it.

</comment></comment></comment></comment></comment></comment><comment><USER18> I was taught that the purpose of virtual memory was originally for running multiple programs without their memory spaces overlapping rather than to use more memory than the system actually had. Is this incorrect?

<comment><USER19> You're correct in a sense - virtual memory gives each process its own completely independent memory space that's addressed linearly.

In order to preserve the illusion of independence, the OS has to deal with the possibility that the sum of the sizes of all the memory that each process wants to use might be greater than the amount of physical memory available. So rather than aggressively limit the amount of virtual address space that each process can use, it simply only keeps a subset of that memory in physical memory at any one time.

You can have virtual memory without paging, but then each process has to compete for a _very_ limited resource. You can also have paging without virtual memory - process A's copy of physical address X can be swapped out to be replaced with process B's copy. However processes are then still limited by having only as large an address space as physical memory in the machine, and virtual memory is such a huge win for hiding the layout of physical memory from processes as well as isolating them from one another (so no corruption possibilities) that it's pretty much unheard of to do this.

You get such a big advantage from having a layer of indirection sometimes...

</comment></comment><comment><USER20> Does anyone know a good book that explains these things (CPU caches, RAM, virtual memory, etc.) in more detail?

<comment><USER21> I've found "Inside the Machine" by Jon Stokes to be quite a good read, though it's a bit dated by now (published 2006)

<http://www.amazon.com/dp/1593271042/>

<comment><USER22> For programmers I would recommend a real computer architecture textbook (e.g. <http://books.google.com/books?id=57UIPoLt3tkC>) instead of Stokes's analogy- laden book.

</comment></comment></comment><comment><USER23> There are so many cheap RAM and CPU idle circles that you even can build data storages or programming languages on top of ridiculously inefficient JVM. ^_^

The point is that there is the kernel to manage system resources, which is very good one.

</comment><comment><USER24> I wish that this explanation could be expanded upon a little. Perhaps with some annotations of selected sections of the source code.</comment>


Inside Cloudbleed [video] - <AUTHOR> https://www.rsaconference.com/videos/inside-cloudbleed <comment><USER2> This is here because of a long write up I've been doing of things I've experienced and learnt in seven years at Cloudflare: [https://news.ycombinator.com/item?id=19062674](https://news.ycombinator.com/item?id=19062674)

</comment><comment><USER3> Cloudflare sat on the information without disclosing for as long as possible, until white hat security forced them to disclose. I remember the drama and the vile response from Cloudflare pointing the finger at others for disclosing "too early." It's likely they would have never made a public disclosure. Given the nature of the data leaked, this alone is fraud and this man should be in a jail cell without bail while a full investigation is completed by affected governments.

</comment><comment><AUTHOR> @dang (?) this is not a dupe, it contains a lot of various interesting information not only related to Cloudbleed, especially in the second part of the video when they eliminate all the core dumps (going as far as updating micro code because of an hardware issue)</comment>


Shedding Light on the FISC: Court Findings from Our 2007-2008 Case - <AUTHOR> http://yahoopolicy.tumblr.com/post/97238899258/shedding-light-on-the-foreign-intelligence-surveillance

<comment><USER2> It is laudable that while just complying and letting the U.S. Govt. get at any data would be the cheaper move business-wise, Yahoo seems to made somewhat of an effort to fight back.

It is sad that that they are still unable to reveal what data was being extorted by the USG under the threat of that big scary fine..

Once again Snowden did the right thing -shine a bright light on all these nefarious dealings, and putting unauthorized surveillance front and center in the public mind.

<comment><USER3> Too bad we already threw Yahoo under the bus the first day the PRISM slide with their logo appeared.

</comment></comment><comment><USER4> Thanks Yahoo. It's nice to see a company stand up for the rights of their users.

</comment><comment><USER5> Out of interest, if Yahoo had continued on this path who would the USG put in prison for the noncompliance? The CEO? If so, the FISA ruling isn't that secret anymore, if the CEO of a global firm gets put in prison. Would have been fascinating to see a CEO play that out. Suicidal, but interesting nevertheless.

Notably:

      June 18, 2007: Yahoo! co-founder Jerry
      Yang replaces Terry Semel as CEO.

Assuming this process started whilst Semel was still onboard, Yang took over the reins and continued the fight.

<comment><USER6> The CEO of a global firm _did_ get put in prison in the telecommunications version of this sordid story - Joseph Nacchio of Qwest (a phone company that was driven into bankruptcy for refusing to play the NSA's game). All the Serious People just agreed that this was entirely normal and OK.

(See [http://www.businessinsider.com/the-story-of-joseph- nacchio-a...](http://www.businessinsider.com/the-story-of-joseph-nacchio-and- the-nsa-2013-6) for details if you haven't already heard about it. The "illegal stock trading" was selling shares in his own company while knowing about classified business with the NSA itself - which they deemed insider trading _after_ they had a reason to punish him.)

</comment></comment><comment><USER7> Eleanor Saitta @Dymaxion 6m

Let's be clear in talking about that scary fine: Yahoo could pay $250k a day for a decade with cash on hand.

Sorry, make that 300 years, if they wanted to push it.

<comment><USER8> It's a million dollars every 4 days, even assuming a generous 4b cash balance, 4000 days, or 11 years is what they'd have lasted. It's a pretty scary fine.</comment></comment>


Eta Carinae - <AUTHOR> http://laserstars.org/news/EtaCarinae.html

<comment><USER2> This is essentially a copy of the original press release from 1996: [http://hubblesite.org/newscenter/archive/releases/1996/06/](http://hubblesite.org/newscenter/archive/releases/1996/06/)

</comment><comment><USER3> Of course, one of the researchers is named "Ray".

I love [http://en.wikipedia.org/wiki/Nominative_determinism](http://en.wikipedia.org/wiki/Nominative_determinism). :)

</comment><comment><USER4> The idea of a spontaneous laser sounds surprising, but perhaps it shouldn't be. Some laser media have so much gain per distance, you get lasing without any optics - just pump energy into the system and it starts flashing.

Nitrogen lasers are like that. If you have a high voltage power supply, you could make a nitrogen laser in an afternoon, and no optics are required at all. Bonus: not even a container is required, since it can lase at room temperature and pressure, even when mixed with oxygen.

<comment><USER5> IIRC, both Mars and Venus have enough of a natural population inversion in their upper atmospheres for laser action to take place (NIR CO2 lasers). Googling this hits paywalls pretty quickly but it seems to have been investigated in the 1980s.

</comment></comment><comment><USER6> Besides the obvious possibilities (and implausibilities) of using something like this as an interstellar weapon, I wonder just how hard it would be to use a laser star to transmit general purpose power to, say, your home system, as a way of edging towards Kardashev 3, a really scaled up version of beaming power to earth from orbiting solar cells. Does such a concept work at all, in terms of real numbers, for a sufficiently patient society?</comment>


US Robotics Network Taps - <AUTHOR> http://www.usr.com/en/products/networking-taps/ <comment><AUTHOR> Who would be the customer for these?

<comment><USER2> Network taps are fairly standard tools for diagnostics and monitoring. Most enterprises operating larger networks/datacenters probably have them or devices offering the same capability (although often more fancy, with integrated traffic filtering etc, or embedded in their normal network hardware)</comment></comment>


Caffeine: An Open Source Library to Speed Up Android Development - <AUTHOR> https://blog.percolate.com/2014/10/caffeine-an-open-source-library-to-speed-up-android-development/

<comment><USER2> It sounds like what every dev has sitting somewhere in an 'utils' module.

Even if I did not already have 95% of this in my codebase, I don't know if I would use it. For many of these methods (like the launchActivity one) I would need to have a look at the code in order to check how it is coded (in the activity case, which flags they are using).

Not to mention that I think that you should own as much of your codebase as you can. There are things like EventBus, Dagger or Glide that solve complex issues and where you have to rely on the community. Caffeine is not one of these.

</comment><comment><USER3> This looks great, I'm in the process of developing my mvp on android, the java development process has been quite a drag, to say the least. I'm looking forward to giving this a try.</comment>


The Future of Business? - <AUTHOR>

I seems that many big companies are buying smaller companies (which are also pretty big!). With Facebook buying Instagram, Yahoo buying Tumblr, and Yahoo attempting to buy another company, it seems that the future of starting a business is going to be selling to the "big guys". Sooner or later, I believe that there will only be a couple of companies (like in Wall-E) that will dominate the others. What do you think? <comment><USER2> It might be better if I respond to this in two ways:

1) If you're a libertarian: The government will hopefully keep it's hands off and the market will adjust -- as big companies take over smaller ones and make mistakes, new competitors will arise when they take measures that people don't like (as in, if Yahoo does something bad enough with Tumblr, someone will make a new, even MORE hipster Tumblr alternative)

2) If you're not a libertarian: Responsibly upheld Sherman anti-trust and monopoly laws are in place to stop things like that, hopefully. (see Google in just about every court appearance in the last few years)

</comment><comment><USER3> You should read up on Nassim Nicholas Taleb's concepts of fragility and antifragility. Taleb feels that over the long run the biggest of the big will have fragility, and thus tend to fail.

Another thing to keep in mind is that what you're reading about in fact represents only a small amount of what is going on in business. There are plenty of small companies that aren't being sold to big companies, and quite a few big companies can be doing badly at any time. In tech just take a look at HP.</comment>


Which encryption is NSA-secure? - <AUTHOR> http://security.stackexchange.com/questions/42698/encryption-which-are-arent-nsa-backdoored

<comment><AUTHOR> Belgium recently revealed that the NSA and the british secret service (partner of NSA) is spying on politicians and members of the EU.

So it had gotten me interested in which options now are secure? And which definatly aren't.

Is there anyone who can help us shed some light on this matter?

<comment><USER2> > So it had gotten me interested in which options now are secure? And which > definatly aren't.

And how can somebody outside of NSA know that? There are only speculations on this topic at this time.

</comment></comment><comment><USER3> How do you think anyone can tell you "encryption XYZ is NSA-secure"?

<comment><AUTHOR> Experience, reading, knowing which projects got the coöperation with the NSA...

<comment><USER3> You can't tell if a Cypher is unbroken, because no one knows it (outside the NSA, for example).

</comment></comment></comment><comment><AUTHOR> Actually, some insecure options came out, because the NSA was helping it in development...

That's how i got the first examples on the list... There are probably more options though.

</comment><comment><USER4> ObXKCD: [http://xkcd.com/538/](http://xkcd.com/538/)

<comment><AUTHOR> I don't see them doing that against the chairman of the EU parlement ;).

Spying in secret, yeah, sure. But hitting with a wrench? :P

<comment><USER4> That's not the point of the comics, IMNSHO. The point is "the attacker will go for the weakest link in a system; secure enough crypto is no longer the weakest link, people using it become one."

So...while using direct force against a prominent politician is unlikely, there are other tried-and-true methods for compromising a human element, methods which have already been perfected a long time before modern cryptography was even born: bribery, blackmail, etc.</comment></comment></comment>


This Man's Protest Is Free Speech. Courts Called It a Felony - <AUTHOR> https://www.bloomberg.com/opinion/articles/2019-01-03/federal-courts-fail-in-gunther-glaub-sovereign-citizen-case <comment><USER2> I'm not sure I agree with the idea "The sending of the bills with the "Thank you for paying" note could not have been understood by any reasonable person to constitute a claim of any kind." Since the debt had not in fact been paid at the time the bill was sent, I would interpret this as a passive-aggressive but clear order to pay it: in other words, as a claim. I do not think I am alone in this, given that a jury seems to have come to the same conclusion unanimously.

In fact, I'm having trouble understanding how this could be interpreted as anything else. If you want to hold protests saying that the USDA ought to be paying people's personal debts, there are lots of ways to do that. They do not include filing illegitimate claims through the claim system.

<comment><USER3> It does seem to be skirting an issue of intent. Glaub can't make a 'claim' because there's not a system in place for any such claim to be a real claim. His protest as such is that he believes such a system should exist. Does he have an expectation that somehow a payment will be made, or not? I do see the point that if the court says, well, the jury has to decide that point, and then refuses to direct the jury to decide that point, that's a problem too.

</comment></comment><comment><USER4> Even in America, free speech isn't absolute. Thanks for putting this on my radar.</comment>


What to Expect at Google I/O 2015:Google Cloud, Google Now for Apple Watch SWAG - <AUTHOR> http://www.networkworld.com/article/2925083/opensource-subnet/what-to-expect-at-google-i-o-2015-google-cloud-google-now-for-apple-watch-and-swag.html?nsdr=true

<comment><AUTHOR> Google will celebrate independent software developers that build software with its products and services with two days of tech talks from the company's top technologists at the upcoming Google I/O conference. It's the one conference where developers get better seats at the keynote talks than the press. Google will surprise, delight, and throw a couple of haymakers at its competition.</comment>


Ask HN: In Ruby, couldn't we just replace 80% of unit-testing by static typing? - <AUTHOR> <comment><USER2> Yup. I just spent 2 days refactoring and extending some swift code. It had no tests, so I threw some together quickly before I started, and it's a good thing I did because they did fail two or three times, however I'd say better than 95% of the time I was dealing with type errors. Having written a fair bit of ruby, most of those type errors would have been crashes and at least some percentage worthy of unit tests. Even then I probably would have missed some that only happen given the right input. Letting they compiler catch those mistakes is a lot easier and more reliable, and with a modern type system it's hardly any more code/effort than just writing untested ruby, plus it's self documenting to some extent.</comment>


The importance of user interface, illustrated by the Go flag package - <AUTHOR> http://utcc.utoronto.ca/~cks/space/blog/programming/GoFlagUIImportance <comment><USER2> The go flag package has a nice API, but the user interface it creates is straight from its Rob Pike's Plan9 roots, and Linux users familiar with getopt command line interfaces will find it strange and perhaps even ugly.

I wanted to create command line programs that look like traditional GNU/Unix utilities, so I wrote the [https://github.com/ogier/pflag](https://github.com/ogier/pflag) package. It's a drop-in replacement for the flag package, just change the import line. It also adds some basic features, such as the common pattern of a flag with a long-hand form usable with a double --dash and a shorthand character with a single -d.

<comment><USER3> The Go flag package has nothing to do with Plan 9. Like Unix, Plan 9 had single-dash single-letter options ONLY. The long option syntax of getopt is a BSD/GNU-ism, not from Unix.

The Go flag package's command lines adopt the observation made by the Google C++ command line flag parser ([https://code.google.com/p/gflags](https://code.google.com/p/gflags)): the long/short --/\- two-names-for-every-flag dichotomy was useful for backwards compatibility when recreating original Unix commands, but for new programs, it doesn't pull its weight. At the cost of requiring that each option be specified with a separate command-line argument, you can drop the distinction between - and -- entirely. (This is similar to what X11 programs do, although I believe they do not admit --x as a synonym for -x.)

It's not clear to me what is "ugly" about _not_ having to keep alternating between - and -- as you spell out options on the command line.

<comment><USER4> > the long/short --/\- two-names-for-every-flag dichotomy was useful for > backwards compatibility when recreating original Unix commands, but for new > programs, it doesn't pull its weight.

Short is more usable for users on the command line. Long is more maintainable in scripts. That's why it makes sense to have both.

> At the cost of requiring that each option be specified with a separate > command-line argument, you can drop the distinction between - and -- > entirely.

Again, that cost is high for users on the command line, one of the few places where every keystroke does matter. It's a lot more pleasant to be able to do:

        $ rm -rf

Than:

        $ rm -r -f

Or, worse:

        $ rm --recursive --force

Orthogonality is definitely an important principle, but when it comes to usability, it often makes sense to offer multiple ways to accomplish the same goal for users in different circumstances.

Ultimately, you're interfacing with a greater primate. Even with all of our nice features, we still don't support USB or web standards. Instead, it's all lossy OCR and weird muscles. You should expect a certain amount of... squishiness... when interfacing with something like that.

<comment><USER5> I would argue (at the risk of being down-voted) that if you are scripting tools then it is important to use the long option, not just because future-you might forget what the options are (relevant XKCD [http://xkcd.com/1168/](http://xkcd.com/1168/)), but also for searchability, it's rather difficult in almost any engine (except the wonderful new code- orientated ones that are cropping) up to search for `-xvzf`, but rather simpler to search for `extract verbose zip filename +tar`, for example.

<comment><USER6> That's really what munificent was arguing too though -- that the long-form options are preferable for scripting, but that no one prefers "tar --extract --verbose --compressed --file" to "tar -xzvf" when you just have to extract a file on the command line (in fact, many people don't even bother with the "-", "v", or "z", opting for "tar xf"). This optional brevity is important for utilities.

</comment></comment></comment></comment></comment><comment><USER7> I like Go's flag library.

Also: getopt is pretty easy to write (if you're going for strict Unix style, you're presumably not looking for a featureful getopt), and that interface style is abused far more often than it's deployed gracefully. Some of the worst Unix command line interfaces† are the product of getopt, or the belief that there's an idiomatic Unix argument handling convention and that the idiom is getopt.

If your argument parsing needs are complicated, you should break out an actual parser.

Finally: I see the benefit of having an auto-generated usage message that is better than a bad auto-generated usage message, but if you really want artisanal command line tools, shouldn't you be writing artisanal usage messages? C programmers as a rule didn't count on the library to generate the usage message for them.

† _See for instance nmap_

<comment><USER8> I think this is missing the point of the article. The author doesn't seem to care too much about complicated argument parsing needs, just about the interface that Go's flag library presents to the user.

You touch on the auto-generated usage message: personally I think the one that Go's flag lib generates is terrible. I agree wholeheartedly with the author. C programmers indeed don't count on libc to generate the usage mechanism (though, frankly, if it did, I certainly wouldn't mind), but we're talking about Go programmers here. And if idiomatic Go is to use the flag library, then you get an auto-generated message. And it's bad.

I think the other part of the author's gripe is just as (if not more) important: flag has decided to do away with the difference between '-' and '\--' options, something everyone has come to expect as standard. In the Go model, it's weird to have multiple options for the same thing. For frequent users, typing "rm -rf" is better and easier than "rm -r -f", which is still better than (what I would think Go would encourage) "rm --recursive --force". The short options (and ability to chain them without a dash per option) is great for command-line users, and the long options are great for scripts where you want clarity and self-documentation.

Being able to make up complicated parsing rules is potentially another problem, sure, but I don't think it's as important to _users_ of a Go program as either of the above issues that the author raises.

(For the record, I absolutely love Python's argparse. I think they've settled on a fair compromise between giving a lot of power, but making the simple cases simple, while providing behavior and UI that most users of my programs would expect. Not perfect, but I've been happier with it than with any other parsing library. Of course, implementing an API like that in a non-dynamic language that doesn't support optional, named function arguments might be difficult or impossible.)

<comment><USER7> Can't Golang programmers just do what C programmers do, hook -h, and provide an artisanal help message?

<comment><USER8> Fair point. If the flag lib allows that, sure.

But why should you have to do extra work to override a default that's sub- optimal from a standardization and user-familiarity standpoint, and is trivial to fix "upstream" where everyone should benefit?

</comment></comment></comment></comment><comment><USER9> Have you tried docopt? The usage string is a DSL which makes it painless to create command-line programs with great (and synchronized) help text.

Check out an example: [https://github.com/politician/azb.go/blob/master/src/cmd/azb...](https://github.com/politician/azb.go/blob/master/src/cmd/azb/main.go#L187-L228)

<comment><USER10> I think you just illustrated the point of a prior blog post[0] linked from this one.

[0] [http://utcc.utoronto.ca/~cks/space/blog/programming/GoGetopt...](http://utcc.utoronto.ca/~cks/space/blog/programming/GoGetoptProblem)

<comment><USER9> Wow, that post is spot-on; thanks.

</comment></comment></comment><comment><USER11> I cant agree more with the importance of _consistency_ UI in CLI programs. It's unfortunate that newer programs overlook it.

I'm glad for the recent changes from the flag package which has also been annoying me previously ;)

When i type blah -h or --help i expect help to pop up. I expect it to tell me about USAGE with [optional] and <required>. I expect the same spacing and readability as the vast majority (which is basically dictated by GNU getops.

Else, its a pain. Heck, even git doesn't follow this and as a result is a little more painful that needs to be.

Imagine a GUI program with every window having a different close, resize, etc button/menu. Hell.

</comment><comment><USER12> I agree with this. Docker use the same flag style and it was confusing enough that it was wrongly documented for a long time: [https://github.com/docker/docker/issues/10517](https://github.com/docker/docker/issues/10517)

</comment><comment><USER13> I always use go-flags [1] in my Go programs. It has support for GNU-style options, pretty help output, subcommands, automatic parsing of more complex arguments (e.g. time.Duration) among other things.

I do wish they would improve the included flags package though. There are lots of nice third party packages, but having a proper one in the standard library would've been better.

[1] [https://github.com/jessevdk/go-flags](https://github.com/jessevdk/go- flags)

<comment><USER14> Came here to say this. go-flags is an excellent package, and makes great use of struct-tags. An extra bonus is that it can parse .ini files and command- line flags into the same underlying config struct, allowing one to override the other.

</comment></comment><comment><USER15> Try CLI from codegangsta. Quite a nice alternative to flag, with perks--not the least of which is beautifully formatted help text.

[https://github.com/codegangsta/cli](https://github.com/codegangsta/cli)

<comment><USER16> I really like kingpin [1] as well.

[1] [https://github.com/alecthomas/kingpin](https://github.com/alecthomas/kingpin)

</comment></comment><comment><USER17> I hadn't noticed the flag package had changed. I'm not sure this brief post stressed the importance of UI, though.

<comment><USER18> Well, I don't think the writer _proved_ the importance of UI.

But I think it serves as an excellent reminder that, for a cmdline program, the flags and arguments _are_ the UI, they impact how people perceive your software and how productive they will be with it.

</comment></comment><comment><USER19> This is good news. Being new to go, recently when I didn't get the expected behavior with a go cmd, not knowing any better I tried explicit =true.

</comment><comment><USER20> I like the present (older) output because it's absolutely unambiguous. If I have to read a textual description to understand whether it's a default argument, whether it takes an optional parameter, or how precisely it is used, it's less clear especially when the text is badly written. The current output is probably also perfectly suitable for parsing (by a program).

</comment><comment><USER21> The flags package is one of the few Go stdlib's where I haven't been won over; I felt that the cost of my understanding the abstraction was higher than just implementing the logic.

[https://github.com/clipperhouse/gen/blob/master/main.go#L67](https://github.com/clipperhouse/gen/blob/master/main.go#L67)

</comment><comment><USER22> Could be worse. There's a build tool for Mozilla add-ons where the flags go _after_ the file argument.

</comment><comment><USER23> Couldn't a perfectly adequate parser have been written in about the same time as the blog post?</comment>


New multiferroic alloy turns waste heat into green electricity for free - <AUTHOR> http://www.extremetech.com/extreme/87680-new-alloy-turns-waste-heat-into-electricity-for-free <comment><USER2> I don't want to play grumpy old guy, but I'm getting a bit tired of breathless articles that omit key facts.

What's the efficiency? It's such an obvious question I can't imagine writing an article without that data. How about current costs of other green power? Difficultly of the subject area? Others who have tried?

I love these new tech stories, but one or two paragraphs of context can go a long way for the reader. We're left having the same old discussion: one person says "awesome!" and then another points out one of these obvious (and common) holes. It's the same discussion, over and over again.

It's not just the energy stories. I've seen dozens of startup stories that are long on hype and emotion and really short on explaining the market and how the company is executing -- the key things that any other startup person would want to know. Heck, I know everybody's excited about it, what I want is somebody giving me a bit of perspective.

Same goes for "new cancer treatment found!" articles, which are also long on emotion and short on context. I know emotion gets clicks, just wish we could do better here.

<comment><AUTHOR> Hi, author here.

I agree, there is a lot more that tech blogs could do to help the reader. The problem is, that kind of extra detail isn't really possible without specializing -- and if you specialize, you limit the size of your audience.

The other problem is writing the stories: it would be awesome to have a writer for every kind of topic, so that every story can be tackled with complete background knowledge... but that's just not feasible. Instead, most tech blogs have writers with 'beats' that they cover -- but even then, if the 'green technologies' writer is out for the day, someone else has to tackle it.

So for the most part, we tech bloggers just try to get a good grasp of the technology, and then boil it down into a form that's easy to read and understand. The resultant story quality is variable and depends a lot on how much time and effort you put into it, and your background knowledge -- but I like to think I do a fairly good job :)

<comment><USER3> The objections DanielBMarkham are raising are literally high-school physics issues. I'm not expecting a QM explanation of what's going on, at this stage the researchers may not even be totally clear, but we know the efficiency is going to be bounded by thermodynamics, and in particular "generating electricity from waste heat!" rates dangerously high on the Science Bullshit- O-Meter. It can be done, but the bounds on efficiency are pretty dismal.

I'm not asking for a physics PhD level of coverage, but if you're going to cover this sort of thing giving us at least a high-school level of coverage would be nice. Just segment it off so those who are somehow interested in this but lack even that low bar of knowledge don't get too confused.

... or... not. I honestly can't say with a straight face this would increase your reader count, or any other interesting metric like that.

<comment><USER4> While it may not increase your reader count in the short run, it will probably make your readers come back, and let the article stay relevant for longer.

</comment></comment></comment></comment><comment><USER5> In materials science labs around the world, researchers are performing 'miracles'.

Aerogels could eliminate most of the waste heat from buildings. Piezoelectric nanogenerators could power mobile electronic devices. Graphene transistors could attain speeds of 1THz. And multiferroics like the beastly Ni45Co5Mn40Sn10 mentioned above could replace bulky laptop batteries.

But what is achieved with multi-million dollar government sponsored research grants in controlled labs is difficult to transfer to ones doorstep.

One barrier is economic: an aerogel house would cost $50M! A pricetag that may be acceptable to the Department of Defense, but won't do Peoria Joe much good.

</comment><comment><USER6> The whole article acts like we have never discovered thermocouples: <http://en.wikipedia.org/wiki/Thermocouple>

I mean the voyager spacecraft are powered by them: [http://en.wikipedia.org/wiki/Radioisotope_thermoelectric_gen...](http://en.wikipedia.org/wiki/Radioisotope_thermoelectric_generator)

Along with many gas appliances with pilot lights.

<comment><USER7> It could get away with pretending we hadn't- if the efficiency was leaps and bounds greater.

Or rather, if they even bothered to comment on efficiency at all.

</comment></comment><comment><USER8> Basically the same as a seebeck generator; but it can be used in places where current seebeck generators would not do well.

I wish they would phrase these things as "turns heat differences into electricity;" because every time they say "waste heat," people get excited about harvesting heat from their CPU and having their computer power itself.

<comment><USER9> Well _in theory_ a proportion of the heat generated by a hot running CPU or GPU (or anything else that operates at a temperature significantly higher than the local ambient temperature) could be converted to useful energy, and you could feed the generated power back into the unit to reduce what it needs to sink from other sources.

Though of course you would have to work out if the energy savings are enough to outweigh the extra energy used in manufacturing such a device (remembering to account for the fact that the extra complexity of each unit may reduce the effective yield of the manufacturing process). It might cost far more energy to make than it'll ever save in its active life. Thermodynamics can be a bugger like that...

<comment><USER10> I'm going to play a bit of "devil's advocate" here. :-) The general problem of place-shifting and time-shifting energy (wind power / solar power) is a very real issue and you could make tons of money solving it.

This particular application won't of course.

</comment></comment></comment><comment><USER11> If I remember correctly, there was recent talk about the magnetic component of light being much strong than thought. Well, why not focus light on this material and let the _heat_ make a stronger magnetic field and use it as a solar panel?

<comment><USER12> Because you need a cold sink to make this work. Solar panels need a dark sink, but that's easy to get.

You can only convert energy (i.e. do work) when sending energy from high to low, for example hot to cold, light to dark, etc. (If you heated a solar panel to the point that it glowed with the same intensity as the incoming light it would not work. Ignoring the fact that it would melt :)

Electric power plants use bodies of water as the cold sink. If you ever see clouds of what looks like smoke, but is really steam while driving, what you are seeing is the cold water evaporating after being used as a cold sink.

BTW if you did want a solar-thermal power plant they exist, and don't need this material. It's a lot simpler than that - just concentrate the light to heat water and run a steam turbine.

BTW#2 "the magnetic component of light being much strong than thought" doesn't make sense. The magnetic component of light is VERY well understood. You are probably misremembering, or misunderstanding.

<comment><USER11> See the other comment for the article/premise I referred to. I'm not a scientist, just a programmer trying to figure out if this'd work.

The article stated that the magnetism of light is 100 million times more powerful than previously thought. But, that it must be focused to 10 million watts per cm^2. The premise is that the light induces magnetism that can be drawn as power. Supposedly it requires special materials.

But, if you drew the sun's rays to focus on this material to provide heat couldn't it produce a similar use?

</comment></comment></comment><comment><USER13> I'm guessing its applications would be more in the line of powering remote devices then anything more substantial. I could see the point of replacing a photovoltaic panel with a hunk of metal in a seismic sensor or something like that.

</comment><comment><USER14> One application of the alloy is automotive, but there is other work being done in this space:

<http://news.ycombinator.com/item?id=2687439>

</comment><comment><USER15> I don't get it. So you can use heat to make a magnet. We already have permanent magnets. Magnetism, in and of itself, doesn't create energy. You'd have to either pulse the magnet, or move a coil past the magnet. The former seems impossible since you'd have to cycle its temperature, and the latter just gives you an alternator, which we already have.

If I'm missing something, I'd like to know. It just looks like, "hey, magnetism!" and some hand-waving.

</comment><comment><USER16> This looks like it has the possibility to dramatically increase the efficiency of motors and engines.

Also, if they could capture the heat coming out of a nuclear reactor, they could both avoid meltdowns and not require proximity to a large body of water.

Edit: Disregard this. I don't know thermodynamics as well as I thought I did.

<comment><USER17> If by "dramatically" you mean "by 0.004%", then yes.

More information:

[http://www.reddit.com/r/science/comments/i6pfi/new_alloy_can...](http://www.reddit.com/r/science/comments/i6pfi/new_alloy_can_convert_heat_directly_into/)

<comment><USER16> I may have been too optimistic. But 30% is still quite a bit.

Modern gasoline engines have an average efficiency of 20%. Say you put 100J into one. 20J of useful work will be produced, and 80J of heat. Now if 30% of that heat were captured, that's another 24J of useful work. In effect, we've doubled the engine's efficiency from 20% to 44%. That's pretty dramatic.

<comment><USER17> Hmm, where are you getting 30% from? The paper says 0.004%, if I understand it correctly.

<comment><USER16> This comment: [http://www.reddit.com/r/science/comments/i6pfi/new_alloy_can...](http://www.reddit.com/r/science/comments/i6pfi/new_alloy_can_convert_heat_directly_into/c21cizq)

Which says that the efficiency could reach 30% with some work. I assume that %30 is not a typo.

<comment><USER17> Oh, I think 30% is the theoretical maximum. He says they can reach 3% with years of work. It would be great if they could achieve 30%, but I doubt it.

</comment></comment></comment></comment></comment></comment><comment><USER18> Epic thermodynamics fail:

<http://en.wikipedia.org/wiki/Carnot_efficiency#Efficiency>

<comment><USER19> Not really. (Also: "Epic fail" and a pretty cryptic and lazy link? Doesn't seem HN worthy.) This obviously doesn't make perpetual motion machines a possibility and the article reeks of hyperbole but this technology is potentially useful.

It would be better to just make stuff that doesn't produce any waste heat, I guess you could say that this is sort of a step in that direction. It's for making stuff more efficient, no more, no less.

<comment><USER18> _> a pretty cryptic and lazy link? Doesn't seem HN worthy_

If you know of a better intro that I can link to, please post it.

 _> This obviously doesn't make perpetual motion machines a possibility_

As if perpetual motion were the only thing forbidden by the laws of thermodynamics.

 _> this technology is potentially useful._

To those pushing it. To everyone else, it is a scam, plain and simple.

 _> It would be better to just make stuff that doesn't produce any waste heat_

Please, please open a physics textbook. I beg of you.

<comment><USER20> * Please, please open a physics textbook. I beg of you.*

Even better, I'll go ask a physicist.

Ooh, I'm a physicist!

Hey hugh3, does this violate the second law of thermodynamics?

Uhh, nope, not at all! You can always extract some useful work when transferring heat from a hot bath to a cold bath.

Gee, thanks hugh3!

<comment><USER18> _> You can always extract some useful work when transferring heat from a hot bath to a cold bath._

True. But this is Jesuitry. Are you by any chance an investor in the scheme?

Yes, you can get more work out of your car engine by surrounding it with Peltiers or other heat engines -- if you drive in the Arctic.

Seriously, if you, a physicist, actually know how to build an engine having no waste heat, why settle for the chump change of HN publicity? Go for the Nobel that you deserve.

<comment><USER20> I think the problem is that you interpreted the headline as meaning it could convert _all_ waste heat to work. This is, of course, impossible. Converting _some_ of the waste heat to work is entirely possible.

When there's two possible interpretations of a headline, and one of them is physically possible and the other one violates the second law of thermodynamics... it's probably best to assume the former. At least until you read the article.</comment></comment></comment></comment></comment></comment>


Underhanded C: The Leaky Redaction - <AUTHOR> http://notanumber.net/archives/54/underhanded-c-the-leaky-redaction

<comment><USER2> This reminds me of how some government redacted .doc files by using a virtual "black marker", which of course leaves the text in tact.

<comment><USER3> Like in BALCO case? [http://www.sfgate.com/c/acrobat/2006/06/22/BALCO_quash_subpo...](http://www.sfgate.com/c/acrobat/2006/06/22/BALCO_quash_subpoena_sfchronicle.pdf) (page 6, just highlight the text)

Or AT&T? <http://news.cnet.com/2100-1028_3-6077353.html>

There was also one more subtle source of a leak. some versions of MS Word will try to preserve/serialise the edit history after you save the document. Google filetype:doc and a simple tool were enough: <http://lcamtuf.coredump.cx/strikeout/>

</comment></comment><comment><USER4> It's a neat idea, but wouldn't work for any image format that's actually used. The code targets PPM, which is an ASCII-based image format. In a binary format like JPG or PNG, different values of zero would be indistinguishable.

</comment><comment><USER5> This is the third or fourth time this has appeared on HN this year...

<comment><USER6> do you have links to the other ones - would be useful to see the other comments.

<comment><USER7> The only thing I found was <http://news.ycombinator.com/item?id=1208097></comment></comment></comment>


Introducing WysiHat: An eventually better open source WYSIWYG editor - <AUTHOR> http://www.37signals.com/svn/posts/1330-introducing-wysihat-an-eventually-better-open-source-wysiwyg-editor <comment><AUTHOR> One of the examples: <http://qhoxie.com/wysihat/>

edit: updated to show button styling

<comment><USER2> Thanks for the preview. I love the idea of not being stuck with the typical Windows98-looking toolbar all the others seems to have.

</comment></comment><comment><USER3> Something I hope to see this implement: A function to strip any bad formatting/code that is generated when pasting text into a WYSIWYG editor. So much of my time is spent going through content and stripping bad code that was generated by Word/Outlook.

<comment><USER4> At domestika.com we've been developing a javascript XHTML purifier, for this purpose. It's based on the algorithm for parsing html, specified in the HTML5 draft, so it's a lot more powerful than the typical regular expression based solutions.

For our use we're only interested in a very small subset of XHTML. We use a rich text editor to let clients edit the contents of their web sites, and we don't want any tags included that could disrupt the design of the page. So only the most basic markup is allowed.

Should be easy to extend the script to take into account more of the elements specified in the HTML 5 draft, if anybody wants a more permissive purification...

Best of all, we just open-sourced the script.

Grab it from Github: <http://github.com/biilmann/javascript-xhtml-purifier>

Original anouncement (in Spanish): [http://domestika.org/foros/956-kode/hilos/73209-depuracion_d...](http://domestika.org/foros/956-kode/hilos/73209-depuracion_de_xhtml_desde_javascript)

<comment><USER5> Is there any way to prevent pasting rich text? I can strip out the tag soup, but it would be great to have the option to only allow pasting plain text.

<comment><USER4> Nopes - you have to cleanup the result of the paste.

As soon as you enable designmode on a document, every paste coming from something like Word will be transformed into delicious tag soup for you to deal with. No way to just disable that 'feature'.

</comment></comment></comment></comment><comment><USER6> What you see is half assed texteditor?

<comment><USER7> I think your comment is a bit unfair, give him some time. It doesn't even have a version number on it yet.

<comment><USER8> I think what byrneseyeview means is:

 _W_ hat _Y_ ou _S_ ee _I_ s _H_ alf _A_ ssed _T_ exteditor

<comment><USER7> Um, OK. Still doesn't change my opinion of the comment though. I can see I am however in the minority.

</comment></comment></comment></comment><comment><USER9> Can't wait for someone to port this to jQuery! :)

<comment><USER10> I don't understand why they (Josh Peek) didn't base it on jQuery in the first place. Prototype is like 128K vs 15K of jQuery.

<comment><USER11> The Rails crew has a chubby for Prototype.

<comment><USER12> Because the creator of Prototype works at 37 Signals.

</comment></comment></comment></comment><comment><USER13> I remember reading about the troubles the 37signals guys were having with supporting textile in their products from this year-old thread: <http://forum.37signals.com/highrise/forums/9/topics/802>.

At the time I wondered if they might be considering developing a wysiwyg editor that integrated with their products better than what is out there.

I found the thread this summer while I burnt a fair amount of time looking at various lightweight markup languages and all the wysiwyg editors. I eventually just decided to put it to one side for now and maybe just code a few simple formatting helpers myself. I am very interested in seeing where this goes!

</comment><comment><USER14> Isn't about time the damn web browsers give us a native rich edit control already, the way Tim Bernes-Lee first imagined the web content editing would be like? Then can we have a file upload control that can be styled and select multiple files?

<comment><USER15> > Isn't about time the damn web browsers give us a native rich edit control > already,

Modern WYSIWYG editors use an IFRAME with the property designMode="On". The problem that the actual editor solves is manipulating that. So browsers do have native rich edit already, it just needs to be summoned.

> Then can we have a file upload control that can be styled and select > multiple files?

Agreed. Trying to create a usable file uploading interface is annoying, but there are some hacks to add Drag and Drop support and things. (Safari [Mac] supports D&D, not sure though about other platforms/browsers.)

</comment></comment><comment><USER16> Nice. Appears to support utf-8 Unicode so I can write and edit in Runic ~ <http://www.flickr.com/photos/bootload/2962721348/>

</comment><comment><USER17> The thing that caught my attention the most about this wasn't the size of the code or whatever, but the fact that they want to make it highly customizable. It's a pain.

I'm sure there's a good example of TinyMCE finely-customized to fit an interface beautifuly and I'm sure someone here will produce said example, but most of the places where I see a WYSIWYG editor, it looks kind of out of place, this is very important to some designers (I think)

</comment><comment><USER18> Editor IDEa: disguise emacs as a WYSIWYG editor/game; once the user has entered a discrete amount of characters the editor will take away some WYSIWYG key-stroke function while substituting it for an emacs key-stroke.

</comment><comment><USER19> Will this editor prevent I-maintain-my-own-cms users from entering text into their own websites? I hope it does.

</comment><comment><USER20> Why the insistence on a WYSIWYG editor? The best method of producing documents that I have ever used is LaTeX and it has no decent WYSIWYG interface (LyX does not provide the full power of TeX).

<comment><USER9> I don't think this particular editor, or any other WYSIWYG editors I'm aware of, are really targeted at the use case you're referring to.

Most of us deploying WYSIWYG editors are doing so in applications designed for non-technical users, where text markup is required but no technical knowledge on the users' part can be assumed.</comment></comment>


The State of Homelessness in America [pdf] - <AUTHOR> https://www.whitehouse.gov/wp-content/uploads/2019/09/The-State-of-Homelessness-in-America.pdf <comment><USER2> For me, European, a real eye opened was a 2017 San Diego Comic-Con with facilities surrounded by tent cities and trash/needle filled sidewalks. Then there was Jennifer Garners Peppermint (2018), I naturally assumed typical Hollywood hyperbole. But then I saw this:

Skid Row, Downtown Los Angeles [https://www.youtube.com/watch?v=KbTSDuQET94](https://www.youtube.com/watch?v=KbTSDuQET94)</comment>


Are robotic guards the answer to controlling prison costs? - <AUTHOR> http://www.extremetech.com/extreme/126313-robotic-guards-the-answer-to-controlling-prison-costs <comment><USER2> I have a better idea for controlling prison costs (at least in the US): let the non-violent drug offenders (~20% of total offenders) out of prison, and don't put them there in the first place.

When ideas like the above get completely shut down by the prison lobby, imagine their reaction to "let's replace prison guards with robots lol!!"

Broken prison systems aside, can anybody point out cases of humans being replaced by robots being _cheaper_ than just paying a human to do it? I know for things like manufacturing this makes sense (so machines building machines) but as far as machines interfacing with humans, it seems the cost would be _higher_.

</comment><comment><USER3> No, the answer is not to have so many people in prison in the first place.</comment>


Pay Your Taxes or they'll find you... Pennsylvania Taxes Commercial - <AUTHOR> http://www.infowars.com/orwellian-big-brother-tax-collection-commercial-airs-in-pennsylvania/

<comment><USER2> Ironic that they're using taxpayer money to do an Orwellian media buy telling taxpayers they know where they live.

Reminds me of the 1985 film "Brazil" by Terry Gilliam. Which, by the way, if you haven't seen yet you should rent it this weekend.

<comment><USER3> They're spending taxpayer money to get the word out that they're incentivizing paying back taxes right now. The idea is to _make money_ from running the ads, alongside the incentives, by reducing enforcement costs.

</comment></comment><comment><USER3> It's hard for me to get too upset about this. The tone is off-putting. But, uh, they're right. They do know where you are. They do know how much you owe. They will ding you for not paying. You are better off paying now.

I think they thought this was funny. I get why it isn't. But if I lived in PA, I'd probably overlook that in exchange for amnesty on penalties and half off my interest, which is what the ad is offering.

<comment><USER2> Imagine for a moment that a private enterprise did something similar. Let's say that AT&T decided it would be funny to run an ad similar to this targeting their delinquent customers. Imagine the (totally appropriate) outrage that would ensue.

It's great that the state is offering penalty amnesty, but this was just a terrible way to do it. Were I a PA resident, I'd be incensed.

<comment><USER3> There's a huge difference between a commercial creditor in line to collect debts from you for payment of services and your obligation as a citizen to pay taxes.

AT&T in fact does _not_ know where you are (or, at least, has no inherent right to). AT&T in fact cannot force you to pay. AT&T's recourse for nonpayment is to report you to credit agencies so that businesses working in concert with them can stop extending you credit.

It is in fact a crime to evade taxes. The government has significantly more recourse than AT&T does. Whatever a commercial says or doesn't say, whatever you may think about it, if you owe taxes, you're going to end up paying them. If you've never been in tax trouble before, know that the states are much meaner than the IRS --- pay them first.

<comment><USER2> My point is that Government should follow the same unwritten rules of decency and good taste in their marketing communications. Just because they know where you live and can put you in jail doesn't make it cool to run TV ads telling you so.

<comment><USER4> I don't think it's reasonable to expect much good taste from Pennsylvania.

</comment></comment></comment></comment></comment><comment><USER5> And don't forget to buy a TV license.

<http://www.youtube.com/watch?v=8NmdUcmLFkw>

</comment><comment><AUTHOR> Not only is this really creepy, but the timing is terrible with all the Facebook privacy concerns...

</comment><comment><USER6> Good intentions, horrifically bad judgment in marketing message.

</comment><comment><USER7> It's all about delivery. There's probably a better way to go about this and get the desired effect across.

</comment><comment><USER8> Wow. I saw this a few days ago on another site and thought it was a joke. Did they just hire the GlaDOS voice actress and shift her down an octave?</comment>


Comic Chat. Microsoft Research. January 1996. - <AUTHOR> http://kurlander.net/DJ/Videos/ComicChatVideo.shtml

<comment><USER2> I used to love MS Chat and The Palace. Thanks for the fond memories.</comment>


Famous Failures - <AUTHOR> http://www.youtube.com/watch?v=Y6hz_s2XIAU <comment><USER2> I have read hundreds if not thousands of News.YC comments - and this one about failure (not famous but personal and real ) from a Chicago-based trader is my favorite: <http://news.ycombinator.com/item?id=121413>

"38 points by fiaz 121 days ago | link | parent

APOLOGIES for making this post so annoyingly long..."

</comment><comment><USER3> I agree... without failing, your successes are unimportant. I'm only 18 now, but one of the best, worst, and most humbling experiences was being let go from a job that I thought would take me straight into the field I wanted to be in. Needless to say, I've changed my mind.

</comment><comment><USER4> Far more practical version is:

      What doesn't break you makes you stronger.

I can't count the number of times this thought was the only thing got me through otherwise unbearable stress.

<comment><USER5> s/break/kill/

<comment><USER6> That turns a true statement into a false statement.

<comment><USER5> Hardly. Things can break you and still make you stronger. Failure, by definition, breaks you.

Both statements are false since they're obviously generalisations, but I believe my version is less false.</comment></comment></comment></comment>


'Smart' Dildo Company Sued for Tracking Users' Habits - <AUTHOR> http://www.vocativ.com/358530/smart-dildo-company-sued-for-tracking-users-habits <comment><USER2> Oh, well. Those are "smart", indeed.

User research made easier (and cheaper). I'm waiting for toothbrush that is internet-enabled.</comment>


Building Memory Efficient Java Applications (2015) [pdf] - <AUTHOR> http://www.iro.umontreal.ca/~dufour/cours/ift3912/docs/12-memory-efficient-java.pdf <comment><AUTHOR> The slide show is an eye opener for anyone doing performance sensitive work in Java. In particular the amount of overhead introduced by adhering blindly to very common OO idioms will often amount to 80-90% of heap allocation (not including dead objects) with only the remaining 10-20% being pure data.

I suspect other OO languages suffer from similar issues. The overhead of std::string in C++ is likewise non-trivial though probably not as large as in the case of Java.

I don't even want to guess the ratios for more abstract languages.</comment>


Why Facebook Is Winning The Great Tech War In India  - <AUTHOR> http://www.fastcompany.com/1796532/india-big-tech

<comment><USER2> From first hand experience - one of the main problems toward any significant growth in e-commerce/e-interactions in India is the lack of reliable visa- mastercard framework, e-anything/e-payments do not exist. Facebook can make a bigger dent if they can find an easy way to get people to spend money online - for people who are wary of online transactions. In that sense I think Amazon would be a bigger winner in this tech war if they decide to enter the Indian market</comment>


Anti-Education by Nietzsche, and why mainstream culture does our best thinking - <AUTHOR> http://www.theguardian.com/books/2016/jan/08/anti-education-on-the-future-of-our-educational-institutions-friedrich-nietzsche-review <comment><USER3> It's a whole lot easier to write a convincing argument than it is to write a correct argument. At the start, at the education phase of learning, stuff needs to be engaging. It's totally worthwhile to invoke emotion, humor, whatever rhetorical trick is available to convince the student.

Later though, when you hit the frontier, and start thinking things no one ever thought about, stylized dry writing is easer to evaluate for correctness. You don't want an emotional investment, you want an objective view so it can be picked apart based on its own merits. If that stands up, seems correct, or at least worth more investigation, then it can be dressed up in the easy to communicate way.

Perhaps some ideas can't be evaluated without investing in their emotional content. That's a tough place to find truth.

<comment><USER4> "At the start, at the education phase of learning, stuff needs to be engaging"

Perhaps this is true in primary school, but I think in secondary school and definitely in university, education can be engaging while remaining completely intellectually honest and devoid of outright appeals to emotion.

When education becomes about how to think and not what to think, it is inherently more interesting. I remember taking my first moral philosophy class in university, and much to my surprise, it was one of the most engaging classes I ever took precisely because it challenged everything I thought I knew. The professor could have spent the time teaching us what to think (e.g. just what the major moral philosophy theories are) but instead she used the socratic method and challenged each of us about what we already believed and how those philosophers like Kant came to their theories.

Indeed, intellectual and moral relativism is dangerous because it does the same thing religion does, it is a method of coming to knowledge/truth (an epistemology) that no one else has access to and/or that relies on subjective evidence (i.e. emotions/feelings).

<comment><USER3> I don't think there's any dishonesty, i think we just like charismatic people more, and are more inclined to believe them. Maybe we don't look quite so hard for cracks in their arguments. Double blind peer review helps combat this, stylized writing helps combat this.

We're just animals. we've got a million subtle biases. I agree with you, we should challenge what we know and believe. That ain't easy.

<comment><USER4> I see this anti-intellectualism in the world as a major threat to human advancement (and perhaps existence). I am concerned that scientific and technological advancements are happening faster than intellectual and moral progress. If you give a bunch of monkeys a nuclear bomb, it's not going to end well.

This is why I think promoting reason, promoting awareness of cognitive biases (as a result of our evolutionary past), and ridding ourselves of this notion that "standing up for what you believe" (regardless of its validity) is somehow a virtue, is among the most important (and difficult) projects of our time.

<comment> ely-s > I am concerned that scientific and technological advancements are happening > faster than intellectual and moral progress.

I couldn't agree more.

</comment></comment></comment></comment></comment><comment><USER5> If I am reading this right, the argument goes something like this: (1) Nietzsche was anti-academic and did his best work independently. (2) He was against academia being used as a means to nation-state ends, and he disliked how that undermined independent, critical thought. (3) There are similar problems today in academia where it goes against independent thinking. (4) The best independent thinking comes through not in high culture, but mainstream culture and it better explores issues than academia.

IMO, the problem is communication. If you read academic writing (especially in the humanities) it can seem like a bunch of mumbo-jumbo and the person writing it is not really trying to communicate anything intelligent, but is just trying to sound impressive. I believe this is mostly not true. Rather, the problem is the same with technical documentation that is high in rigor and detail, but low in learnability; the problem is that it is difficult to communicate. The person writing will usually (IMO) have something in them they are sincerely trying to express.

The goal of entertainment is to entertain, but it also has to appeal at least somewhat to the passions of the creators and the intellects of the viewers. So thinking finds its way through that medium and can reach a mass audience. It is not that academia has no potential to do the same, it is just that there is not a dynamic set up which brings it out very well.

<comment><USER6> IMO (4) is a fatal and clumsy misstep for the entire article, and betrays a profound lack of contact with Nietzsche's own writing on the part of the author.

Nietzsche never would have uncritically claimed mainstream culture does our best thinking any more than he would have given such an honor to academia. So it's bizarre to see his thought appropriated to that end. He was, in fact, extremely concerned with the difference between culture that is merely popular and a genuine, healthy, thriving culture. He saw academics and journalists as frequent accomplices in the destruction of a thriving, healthy culture by their appeals to popular taste and public opinion. By their spinning rigorous sounding tales that merely served to comfort (or discomfort) individuals and reinforce their existing opinions no matter how deleterious or suspect such opinions were (eg. about morality, the nobility of the common man, the goodness/badness of state institutions, etc). Additionally, he was just as concerned about the influence exerted by nation states on thought as he was about the similar influence exerted by public opinion, common sense, and mainstream culture.

To simplify the formula down to "mainstream culture" vs. "the state influenced academics" is to be overly reductionist and to overlook the part every segment of society plays in producing uncritical thought.

For more clarity here I would read Nietzsche's "Untimely Meditation" on 'cultural philistinism' \- "David Strauss: the confessor and the writer", and "Beyond Good and Evil" namely the section "Peoples and Fatherlands" for an idea of his approach to critique of mainstream culture in his time.

<comment><USER7> I don't see the article claiming Nietzsche would praise popular culture - <USER2> seems to claim otherwise ("Anti-academic Nietzsche may have been, but his mistake was in pinning his hopes on "high culture"") and it's rather solely what the author of the article thinks himself.

<comment><USER8> Yeah, that's how I read it. And that last bit seemed so shoehorned on there that it almost seemed like it was an effort to give the story some kind of hook that the author or an editor might have thought it lacked.

</comment></comment></comment></comment><comment><USER9> the author cherry picks examples of "mainstream" culture to support his argument.

It also feels like the separation between education institutions and "mainstream" culture is a false dichotomy. Especially when 40%+ of the US population now holds a degree from one of these institutions. While in Nietzsche's day university was a rare privilege today it is not. Claiming that something as prolific is separate from mainstream seems wrong.

</comment><comment><USER10> The author is wrong, Adorno for example heavily criticized mass culture (Disney, E entertainment, celebrities gossip, etc) as pure garbage that distracts the masses from real topics. Read The culture industry enlightenment as mass deception Also: The Perverts guide to Ideology And if you're feeling adventurous, John Gatto's books

<comment><USER11> That's the _worst_ of the mainstream. That is not a valid or logical argument against the position that the mainstream's best is better than academia's best.

</comment></comment><comment><USER12> The writing and thought in this piece is pretty facile. @rbrogan's comment below sums it up well. Let's remember that Nietzsche received a _very_ rigorous education before his precocious career as a professor.

Sure, there are pressures on the university that push its members away from independent and critical thought. But independent and critical thought has threatened institutions with volatility for a long time. I don't think the wilderness of pop culture is the best place to go looking for it.

</comment><comment><USER4> "...let any idea however offensive be freely expressed, so that it can be challenged and where necessary rationally rebutted."

Amen to that. If only that were the case, we'd be so much better off.

</comment><comment><USER13> Nietzsche's sister was a real bitch. Didn't know that.

As for the rest, I found the article concerning. Maybe it's more about the humanities than the hard sciences, but it seems clear to me that academia is doing a good job pushing the boundaries of what is known. As for 'culture', no I don't think academia ever really had the ability or intention to _define_ it - it seeks, perhaps, to _describe_ it. It's true that modern philosophers have little effect on real culture, and that's perhaps for the best.

</comment><comment><USER14> Many of the seminal writers of what the author calls The American cult of political correctness in universities, like Derrida, Foucault, de Bevoir, Butler, Adorno have all been influenced by Nietzsche.

I haven't read any of those authors nor Nietzsche, and I have no idea whatsoever about the political correctness that goes on in the USA so I'm not trying to make any kind of point.

I just find it funny that conservatives have a certain pop idea of Nietzsche as some kind of more serious Ayn Rand, while actual Nietzsche scholars have actualized his ideas in all kinds of directions.

<comment><USER15> The American cult of political correctness may have paid lip service to those authors 20 or 30 years ago, but the current regime of trigger warnings and safe spaces doesn't even pretend to have an intellectual basis. It's grounded largely on the supremacy of the subjective experience, 'feelsies' if you will.

That being said, your complaint about conservatives is a bit of a straw man.

<comment><USER16> Pretty much dead on.

I don't think any conservatives think of Nietzsche as a more serious Ayn Rand, rather they think of Ayn Rand as serious herself. Reading Nietzsche (or any philosopher really) without the proper context these days he appears just genuinely weird. I think non-intellectual people on the left read Derrida and Foucault and it eventually turned into trigger warnings and safe spaces. Non- intellectual people on the right read Nietzsche and it eventually turned into books called things like "Atlas Shrugged" and polemics about "makers and takers".</comment></comment></comment>


Dropbox Bans BitTorrent Startup Boxopus Over Piracy Concerns - <AUTHOR> https://torrentfreak.com/dropbox-bans-bittorrent-startup-boxopus-over-piracy-concerns-120626/

<comment><USER2> I feel terrible for the people who worked on Boxopus, but I find it hard to believe this very outcome wasn't evaluated during basic risk management.

There have been no shortage of companies built 100% on someone else's platform and the realities surrounding what happens when your access is turned off.

</comment><comment><AUTHOR> Also: <https://news.ycombinator.com/item?id=4164347></comment>


Apple backtracks on netbooks, zoom - <AUTHOR>

The announcements today were interesting because Apple seems to have backtracked on a couple of their philosophies, one of them quite long-standing. The release of a low power, very small new version of the macbook air (basically a netbook, given the old processor, low memory and harddrive space, last generation graphics) is not that much of a surprise. Apple has a history of denigrating product categories it doesn't happen to be in, and then coming in and saying, "well, it turns out the category didn't suck, just our competitors sucked at it, but here's how it should be done." But the repurposing of the "zoom" button as a full screen button may come as a bit of a shock to some mac purists.
For years (decades?) now, the zoom button has been an annoyance to many people that come from Windows, and has had to be explained and defended by Mac purists, who explain the concept behind it and the ergonomics of its use and how it's superior to the Windows maximize button. Of course, it's never a good sign when a user interface concept, no matter how smart it may seem, has to be explained to users- the whole goal of good interface design is for the user to never have to think about it. But this could partly be explained as a result of a predilection for the maximize function caused by previous experience and not an innate confusion.
Perhaps the more significant cause for the zoom button's death is that developers were just so bad at implementing it. A large number of developers themselves never seemed to get what the zoom button was about, and Apple was seemingly unable to force them to get it, or explain it sufficiently. As a result, it's implementation across the platform was so inconsistent as to be exasperating even for the segment of users that understood what it was for. Basically, you had to remember what it did in which apps, and when pushing it was going to do something useful, and when pushing it would do something unexpected. The end result was, most people, including myself, just stayed away from it all together, except in one or two select apps (Safari and iTunes, in my case).
Anyway, whatever the reasons, it seems Apple has given up on the zoom idea many OS's after its introduction, and repurposed the zoom button as a full screen button- much closer to the maximize function of Windows- although I'm sure us Mac purist will think of key reasons why it is not an imitation, but a completely different, better, idea. :D <comment><USER2> <http://blogger.com> <http://wordpress.com> <http://tumblr.com> <http://posterous.com>

<comment><USER3> Great points about Apple, but agree with GHFigs

</comment></comment><comment><USER4> I would hardly describe the implementation of the zoom button as a "core philosophy".

"But the repurposing of the "zoom" button as a full screen button may come as a bit of a shock to sosuperiourme mac purists."

You are overstating things. It's just a zoom button. I doubt many people even use it as it is currently implemented.

"basically a netbook, given the old processor, low memory and harddrive space, last generation graphics"

Apple don't compete on specs, they compete on experience, so this is all irrelevant. However you are right when you say they basically made a netbook. A small format laptop. The difference is, it's not rubbish like every other netbook.

It's typical Apple really; publicly denigrate a market sector, then release your own -- and hopefully superior-- product.

</comment><comment><USER5> I think the primary thing that Apple has denigrated about netbooks (if not in words, then in actions) has been the cut-rate price. The previous MacBook air was pretty netbook-y as well, in every way but price. The new one is cheaper, but it's still about three eeePCs-worth in price.

</comment><comment><USER6> maybe soon macs will have touch screen and you will pinch to zoom.

<comment><USER7> Steve Jobs claimed that vertical touch screens just don't work, so I'm not sure we'll be seeing a touch screen on a Mac anytime soon.</comment></comment>


Why do startups fail? A postmortem of 256 failed startups - <AUTHOR> https://hackernoon.com/why-do-startups-fail-a-postmortem-of-256-failed-startups-fb157a16d98b <comment><AUTHOR> No wonder, 42% startups have to wind down failing to create demand for their product. Across all the years (from 2014 to 2018), the product-market has pushed startups to shut their stores time and again.</comment>


Southwest Airlines Co-Founder Herb Kelleher Dies – SFGate - <AUTHOR> https://m.sfgate.com/travel/article/Southwest-Airlines-co-founder-Herb-Kelleher-dies-13507053.php <comment><USER2> And then there's that arm wrestling thing.

[https://gizmodo.com/how-an-arm-wrestle-resolved-a-major- airl...](https://gizmodo.com/how-an-arm-wrestle-resolved-a-major-airline- dispute-1527658365)</comment>


Defeating Modern Secure Boot Using Second-Order Pulsed EM Fault Injection [pdf] - <AUTHOR> https://www.usenix.org/system/files/conference/woot17/woot17-paper-cui.pdf <comment><USER2> Traditionally, bypassing security protection and extracting secret from physical devices requires decapsulation of the chip package, and using UV rays, laser beams, ion beams, microprobes, electronic microscopes to interference with and modify the circuity. This requires a high budget of ~10,000+ dollars, and usually prohibitively expensive enough to stop most attackers.

Improvements of practical side-channel attacks and non-invasive fault- injection attacks is really disturbing. In the end, there is nothing to keep my private key from being extracted out of the smartcard...

<comment><USER3> Credit card decaping doesn't seem to be ceasing due to that

</comment></comment><comment><USER4> Power glitching has been known for a long time to defeat microcontroller copy protection, and so is the use of EMP; but the trick is to not induce latchup, which will cause permanent physical damage.

<comment><USER2> Another common trick is clock glitching.

</comment></comment><comment><USER5> Seems similar to how the Xbox 360 was eventually hacked, but using electromagnetic pulses rather than invasive contact wires.

<comment><AUTHOR> Would you kindly provide link to the research or some reference? Really would love to read up on that.

<comment><USER6> Google "Reset Glitch Hack" or "JTAG hack".

<comment><AUTHOR> phendrenad2 above had provided this link - [https://www.theregister.co.uk/2011/09/01/xbox_reset_glitch_h...](https://www.theregister.co.uk/2011/09/01/xbox_reset_glitch_hack/)

Wonder why he removed it.</comment></comment></comment></comment>