Use of Formal Methods at Amazon Web Services (2013) [pdf] - <AUTHOR> http://research.microsoft.com/en-us/um/people/lamport/tla/formal-methods-amazon.pdf <comment><USER2> _We are concerned with two major classes of problems with large distributed systems; 1) bugs and operator errors that cause a departure from the logical intent of the system, and 2) surprising 'sustained emergent performance degradation' of complex systems that inevitably contain feedback loops. We know how to use formal specification to find the first class of problems. However, problems in the second category can cripple a system even though no logic bug is involved.

(...) A common example is when a momentary slowdown in a server (perhaps due to Java garbage collection) causes timeouts to be breached on clients, which causes the clients to retry requests, which adds more load to the server, which causes further slowdown. In such scenarios the system will eventually make progress; it is not stuck in a logical deadlock, livelock, or other cycle. But from the customer's perspective it is effectively unavailable due to sustained unacceptable response times.

(...) TLA+ could be used to specify an upper bound on response time, as a real-time safety property. However, our systems are built on infrastructure (disks, operating systems, network) that do not support hard real-time scheduling or guarantees, so real-time safety properties would not be realistic. We build soft real-time systems in which very short periods of slow responses are not considered errors. However, prolonged severe slowdowns are considered errors. We don't yet know of a feasible way to model a real system that would enable tools to predict such emergent behavior._

Interesting. TLA+ of course allows for hybrid specifications that incorporate physical constraints --real-time itself being the prime example--, so constraints based on more complicated 'loss functions' like, say, weighted average or total variation of response times, _in principle_ ought to be feasible as well. Leslie Lamport himself laments such specifications are still 'of only academic interest' [1, §9.5], so I wonder how impractical such specifications could they really get.

[1] [http://research.microsoft.com/en- us/um/people/lamport/tla/bo...](http://research.microsoft.com/en- us/um/people/lamport/tla/book-02-08-08.pdf)

</comment><comment><USER3> Really cool stuff. I have a couple of questions:

1) How do you model the myriad fault types that could possibly occur in distributed systems?

2) Is it possible to partially model a system? For example, in SOA, the behavior of a service can depend on and be greatly affected by the behavior of other services. Can each service be modeled in isolation with meaningful results?

3) Is the run time of model checking managable? The paper mentioned a few seconds to find bugs, but how long to exhaustively check a model without bugs?

<comment><USER4> I currently have about 3 weeks experience with some different formal verification tools (others will know better), but...

1\. While large, the system will have a finite number of desired actions (Read, Write, Send Data, etc), with set paths/transitions between them (think state machines). With each of these things-you-want to happen, there may or may not be corresponding errors. If there are error handling actions, these become further things-you-want-to-happen, and so on. This modelling can be at a fairly high level, so you only need to go 'there may be an error, this is how we may handle it' rather than iterating over every possible error.

2\. Each part of a system may be independently modelled, with synchronisation states (waiting for data from another system, etc). A model checker can then generate traces to cover the entire possible set of traces. This means that verification may occur at multiple simultaneous levels - you could model a File System separately to a Network Driver, each of which are separate to an Application making use of these two things.

3\. Full formal verification is NP-hard. Model checkers, however, are clever tools and are able to act more intelligently than brute forcing. They can do things like looking at which parts of the state space haven't been covered as thoroughly and covering them better; doing things akin to MC/DC testing; focusing on rare events (a good checker will allow you to customise the types of traces you're interested in). Checkers are also able to output what they have covered along with probabilities of finding certain types of bug. Standard distributions and the Pareto Principle will often hold in terms of guesstimating how long varying levels of confidence will take.

Another thing to note is that hardware verification is light years ahead of software verification - there are algorithms that have been used on hardware for decades that are only just being discovered for software verification. You could make a comparison that says a distributed software system is like a modern CPU with various independent parts, and if the CPU can be verified then surely your distributed software system can too.

</comment></comment><comment><USER5> This is VERY interesting and feels like utilizing the very core of Computer Science.

I'm definitely done reading blog/article on how TDD/BDD/ATDD or Clojure/Haskell make one more productive without scientific background ;)

</comment><comment><USER6> 404 :(

<comment><USER7> It's working for me.

</comment></comment><comment><USER8> This explains why it takes so long for them to release new features in AWS. Fascinating.

</comment><comment><USER9> Odd to see something about Amazon from Microsoft.

<comment><USER10> Looks like it's a personal directory for Leslie Lamport ([http://en.wikipedia.org/wiki/Leslie_Lamport](http://en.wikipedia.org/wiki/Leslie_Lamport)), who is cited several times in the paper. Think of it as a professor hosting research papers that cite him in his field on his university site, rather than a business site.

<comment><USER11> And that use his research. Lamport created TLA+.</comment></comment></comment>


IPhone alarms hit by New Year glitch - <AUTHOR> http://www.bbc.co.uk/news/technology-12104890

<comment><USER2> See also:

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


Show HN: Taski – Make better decisions every time - <AUTHOR> Hey
Super excited to launch my new product - Taski
Making decisions is tough and time-consuming. We make decisions all the time, both in personal and work matters.
Shipping Taski   - Your one-stop solution for making better decisions. Boost your productivity with powerful frameworks.
Taski brings you clean, simple UI for developers, PMs, and anyone who loves planning before decisions.
Multiple frameworks - RICE, SPADE, SWOT, etc.  Save - as image, markdown or document
 Share - your decisions anywhere for feedback.
 Check-list - Track progress with checklists.
 Privacy - Your data is yours!
 Build for all - Developers, PMs or any person who makes decisions
Taski is live on Product hunt: https://www.producthunt.com/posts/taski
Show some love
#productivity #newproduct #decisions #producthunt <comment><USER2> Congrats on launching!

Why did you put the hashtags at the end of your post?

</comment><comment><AUTHOR> Taski is trending on PH - #2 Product of the day

Check it out and show some love!</comment>


I Was a Skeptic of Mindfulness… Until I Tried to Make My Case - <AUTHOR> https://fivethirtyeight.com/features/i-was-a-meditation-skeptic-until-i-tried-to-make-my-case/ <comment><USER2> I would be incredibly surprised if repeated meditation _didn 't_ alter brain structure. We have a lot of evidence of other prolonged activities (taxi cab driving, drugs, and others) significantly altering brain structure.

</comment><comment><USER3> I'd argue that the author is criticising cynicism, rather than skepticism. Healthy, genuine skepticism should take into account the amount of scientific attention devoted to a topic.

When I was young I read a book called Bad Thoughts by a philosopher called Jamie Whyte. In hindsight it wasn't a great book, but it did leave me with the memorable phrase "Cynicism, like gullibility, is a symptom of underdeveloped critical faculties."</comment>


Oops: Elon Musk Donated the Wrong Kind of Ventilator - <AUTHOR> https://futurism.com/elon-musk-donated-wrong-kind-ventilator <comment><USER2> Or maybe he didn't...

[https://twitter.com/28delayslater/status/1245769940138893312](https://twitter.com/28delayslater/status/1245769940138893312)

People just love ripping on him.</comment>


Tech giants explore uncharted territories to diversify, chase growth - <AUTHOR> https://sociable.co/business/tech-giants-explore-uncharted-territories-diversify-chase-growth/ <comment><USER2> We should be chasing progress as a society, not growth.</comment>


The Grothendieck I Knew: Telling, Not Hiding, Not Judging [pdf] - <AUTHOR> http://www.ams.org/journals/notices/201907/rnoti-p1069.pdf <comment><USER2> I am reminded of a fascinating paragraph about Grothendieck from the book _The Music of the Primes_ by Marcus du Sautoy. Quoting it from _Chapter 12: The Missing Piece of the Jigsaw_ here:

But for Grothendieck this was not abstraction for abstraction's sake. In his view this was a revolution that was necessitated by the questions that mathematics was trying to answer. He wrote volume after volume describing this new language. Grothendieck's vision was messianic, and he began to attract a following of faithful young disciples. His output was huge, covering some ten thousand pages. When a visitor complained at the poor state of the library at the Institut, he replied, 'We don't read books here, we write them'.

</comment><comment><USER3> If you happen to read Spanish, professional philolospher Fernando Zalamea has finally finished his book on Grothendiek planed as a guidebook for someone overwhelmed by the huge extension of G's production. "A. Grothendieck, una guía a la obra matemática y filosófica" (A. G., A guide to the mathematical and philosophical works). Well researched if you ask me. Freely available. Zalamea is a philosopher that category theorists would like.

[https://ncatlab.org/nlab/show/Alexander+Grothendieck](https://ncatlab.org/nlab/show/Alexander+Grothendieck), at the end

</comment><comment><USER4> Cartier's personal recollections of Grothendieck is also fascinating.

A country of which nothing is known but the name: [http://xahlee.info/math/i/Alexander_Grothendieck_cartier.pdf](http://xahlee.info/math/i/Alexander_Grothendieck_cartier.pdf)

</comment><comment><USER5>
      > ... **Not Judging** ...
      > ...
      > Despite it all, I hope to have achieved a truthful text that illustrates the
      > **unclassifiable** person Grothendieck was.
      > ...
      > The quite unusual style of writing—with sentences, subsentences, and the
      > excessive use of cross references—intrigued me. One of my friends, a
      > professional psychoan-alyst, declared that **the author was paranoiac**.

Ignore this guy and just read Récolte & Semailles[1]

[1]: [https://www.quarante- deux.org/archives/klein/prefaces/Romans...](https://www.quarante- deux.org/archives/klein/prefaces/Romans_1965-1969/Recoltes_et_semailles.pdf)

<comment><USER6> Do you know if there is any full English translation of this?

<comment><USER7> I don't know about a full translation, but some is translated and available here: [https://www.fermentmagazine.org/rands/recoltes1.html](https://www.fermentmagazine.org/rands/recoltes1.html)

And more texts are available here: [https://webusers.imj- prg.fr/~leila.schneps/grothendieckcircl...](https://webusers.imj- prg.fr/~leila.schneps/grothendieckcircle/biographic.php)

</comment></comment></comment><comment><USER8> Perhaps someone here can expand the Wikipedia article on the author. It's quite short:

[https://en.m.wikipedia.org/wiki/Paulo_Ribenboim](https://en.m.wikipedia.org/wiki/Paulo_Ribenboim)</comment>


A Crypto Trick That Makes Software Harder to Reverse-Engineer - <AUTHOR> http://www.wired.com/2015/02/crypto-trick-makes-software-nearly-impossible-reverse-engineer/ <comment><USER2> _encrypts software code such that it's only decrypted by the computer's processor at the last possible moment before the code is executed._

I have heard this phrase repeated so many times in the advertisements for protectors/packers that it's become almost cliche. Such techniques have been around for over 20 years. Using the debug registers to store the decryption key is relatively well-known - and defeatable (this is 5+ years ago):

[http://reversinglabs.com/newsroom/blog/lockpicking- telock.ht...](http://reversinglabs.com/newsroom/blog/lockpicking-telock.html)

On the other hand, I like how the article presents the negative aspect too - that security features can be used to make systems secure _against_ their owners is a point that I definitely believe needs to be more prominent among the public.

<comment><USER3> Also, does the scheme unencrypt the code to be run into what memory segment? What does this technique mean for current memory protection methods?

We do have nowadays non-executable stack, and heap by default. In fact, only the marked read only segments can contain runnable code, unless if you use specific workarounds. What happens if the code you are protecting and running is more complex, requiring calls where you would usually use position independence and stuff like ASLR to full extend? Do you lose these the benefits or those features, or is there necessary information leak (take a look at plt for instance)?

To add to this that in the end of the day if you can access both the data and the key it is just highly complex obfuscation, I am hardly impressed.

</comment></comment><comment><USER4> Ah. Reading the actual abstract[1] makes clear this relies on TRESOR. TRESOR, in turn, relies on storing the key in _debug registers_[2]. I suppose the Hypervisor part of HARES is mostly to protect those registers.

Of course, reporting that would require actual research, as opposed to the breathless rehashing of wired. About 30 seconds of it, but clearly too much.

[1] [http://opencfp.immunityinc.com/talks/64/](http://opencfp.immunityinc.com/talks/64/) [2] [https://www.usenix.org/legacy/event/sec11/tech/full_papers/M...](https://www.usenix.org/legacy/event/sec11/tech/full_papers/Muller.pdf)

<comment><USER5> By occupying the x86 debug register with key data, what impact does it have on a computer? Are they completely optional to the normal everyday operation?

<comment><USER6> You should read the TRESOR paper. It's amazingly well done and explains everything. They go on to try to attack it many ways and check its security. They then patched a hypervisor with TRESOR, so that you can run any OS but still benefit from it. Really neat work. GP, thanks for posting that link.

Debug registers are used for debugging, to set hardware breakpoints. They aren't really needed, as most debuggers use software breakpoints anyways.

</comment></comment></comment><comment><USER7> Intel's SGX is just a hardware generation away. This allows for encrypted code to run inside hardware protected regions called enclaves - the memory regions are encrypted and decrypted as they are pulled into the core.

In a curious design decision, SGX allows the code in the enclave to access all the memory of the process it's associated with so it can do whatever ugly stuff it wants.

Can we have proof carrying encrypted code? Or perhaps a trusted code verifier that's not encrypted that runs in an enclave too?

[https://software.intel.com/en- us/blogs/2013/09/26/protecting...](https://software.intel.com/en- us/blogs/2013/09/26/protecting-application-secrets-with-intel-sgx) [http://theinvisiblethings.blogspot.co.uk/2013/08/thoughts- on...](http://theinvisiblethings.blogspot.co.uk/2013/08/thoughts-on-intels- upcoming-software.html)

</comment><comment><USER8> > But taking advantage of that feature requires a five-figure-priced JTAG > debugger

Reading RAM in a running system (even a "hardened" one) is easier than most think. Micah Elizabeth Scott's work on the Nintendo DSi [1] is an excellent example: with a budget of just $500 and a month or two of work [2] she could read a video stream out of RAM as it was being DMAed to/from the camera [3].

I can't even begin to describe how impressed I am with Micah's work, but cloning her FPGA tool from GitHub [4] and repeating the feat for a relatively static segment of executable code on a system that's less physically hardened against tampering, that seems trivial to me in comparison. Certainly doable with $500 and a couple of weeks time.

1\. [http://scanlime.org/2009/09/dsi-ram- tracing/](http://scanlime.org/2009/09/dsi-ram-tracing/)

2\. [https://twitter.com/scanlime/status/562925122106191873](https://twitter.com/scanlime/status/562925122106191873)

3\. [http://hackmii.com/2009/09/dsi-ram-tracing- camera/](http://hackmii.com/2009/09/dsi-ram-tracing-camera/)

4\. [https://github.com/scanlime/ram-tracer](https://github.com/scanlime/ram- tracer)

<comment><USER9> Or use Firewire

[http://www.hermann-uwe.de/blog/physical-memory-attacks- via-f...](http://www.hermann-uwe.de/blog/physical-memory-attacks-via-firewire- dma-part-1-overview-and-mitigation)

</comment></comment><comment><USER10> I developed exactly this type of software, like 5 years ago. This is just click bait.

There are numerous ways to pack, and unpack code. It's really going nowhere tbh. It is mostly a meta-game between you and the person you'd expect to be RE your code. You think he's going to use a vm to RE? Then you prevent your code from running in that vm. You leave red herrings - like obscuring control flow, disabling ability to set breakpoints, delay unpacking, and phantom unpacking (where it only truly unpacks a certain percentage of the time)

There will NEVER be a way to prevent RE, and there will never be true polymorphic code. The world is still flock with people fluent in ASM and low level debugging, and all code will revel itself. Commercial protection suites aren't even where the real tricks come into play, malware and 'anti anti- virus' packers, are at the forefront of ingenuity. Even when the hardware is a part of the protection (a la Xbox) it still means nothing. I've seen some nasty stuff done to electronic payment devices by rather unsophisticated people, and those are some of the most hardened systems available (think self destruct if the casings are opened, or if JTAG is conntected)

<comment><USER11> Hopefully you're right. For me this kind of endeavor sounds like a nightmare, being the absolute opposite of openess, open source, free standards and customer rights. All those "security" argumentations seem only a means to implement further undemocrative deployments.

</comment></comment><comment><USER12> Wouldn't this scheme be entirely susceptible to an emulation-based attack? You'd need an emulator which could do the split TLB trick but it doesn't sound particularly hard.

<comment><USER13> My thoughts exactly, unless they're using undocumented features of the CPU.

<comment><USER14> Wouldn't using said undocumented features make it easier to emulator devs to reverse engineer and implement those features in the emulator?

</comment></comment></comment><comment><USER15> -"Should we ask from some known reverse engineer if this is true?"

-"Of course not, why would a DRM vendor lie about whether the DRM can be cracked of not?"

-"A good point!"

</comment><comment><USER16> This article is right up there with 'one simple trick to whiten your teeth, dentists hate it!'

</comment><comment><USER17> How, precisely, does one store a decryption key on the CPU for longer than the duration of the programming running (and never have it swapped out to RAM when making syscalls and handling interrupts, to boot)? Plus, where is the decrypted instruction stored? IP typically points at some place in memory. Not to mention the many different VMs which would let you pull the values of registers right from the virtual CPUs. HARE brained scheme indeed.

<comment><USER18> There's a number of techniques.

Mostly they have to do with abusing the debug registers.

[http://en.wikipedia.org/wiki/TRESOR](http://en.wikipedia.org/wiki/TRESOR)

I cant find any specifics for this implementation though.

[https://www.syscan.org/index.php/sg/speakerlist](https://www.syscan.org/index.php/sg/speakerlist)

<comment><USER17> TRESOR would rely on the user applying a kernel patch (I don't believe it's broadly disseminated yet), and if you wanted to run more than one HARES based program, well, you couldn't (unless they rely on a single key for all HARES applications, which opens them up to having their private key posted on pastebin). Plus, the decryption key would have to be stored in the binary somewhere, unless they want to provide custom dongles which would provide the key to the hardware directly.

As for blocking GDB and its ilk, the knowledge of how to disable ptrace blocking in executables is already fairly broadly disseminated on the internet.

I also don't see it working around the VM problem (short of saying "I don't run in VMs, period", which would severely limit the reach of such binaries).

Interesting idea in theory, but without significant changes to the underlying hardware or kernels, I don't see it functioning in practice (yet). It has the capability of blocking your casual user from accessing the application, but the folks they seem to really want to defend against would have few problems working around these limitations.

<comment><USER18> It's certainly DRM and thus broken.

The question is how broken relative to other DRM.

</comment></comment></comment></comment><comment><USER19> Isn't this trivially (for some definitions of trivially) defeated by running it inside a virtual machine?

You don't need an expensive JTAG device when the virtual machine gives you that ability for free.

<comment><USER20> Yes, however I'm not aware of any virtual machine (including emulators) for x86 that isn't trivially detected.

<comment><USER21> But the VM detection has to occur BEFORE you setup the clever encrypted CPU stuff so _that_ code is then vulnerable to the usual debugger cracking techniques (without worrying about the encryption stuff).

</comment></comment></comment><comment> Ar-Curunir The article, and possibly the author of the code, incorrectly define Fully Homomorphic Encryption. FHE doesn't have much to do with obfuscation. Formally, its the task of making the ciphertext malleable so that you can perform addition and multiplication on it such that these operations are translated over to the plaintext as well, thus allowing servers to operate on encrypted data without knowing what they're operating on.

The techniques used in FHE have been applied to obtain Indistinguishability Obfuscation, but that's not the intuitive notion of obfuscation, and the intuitive black box obfuscation for general functions was proven to be impossible over a decade ago.

</comment><comment><USER22> _Any program that wants to use its crypto trick needs to somehow place a decryption key in a computer's CPU __when the application is installed__._

Huh?

Do CPUs come with persistent storage now?

<comment><USER23> XBox360 stored a unique crypto key in ROM inside the CPU. No one cracked it. Though the DVD drive firmware was insecure.

<comment><USER6> I see news articles that say Christopher Tarnovsky says he has compromised the key storage on the 360, in 2010:

[http://www.networkworld.com/article/2243700/security/black-h...](http://www.networkworld.com/article/2243700/security/black- hat--researcher-claims-hack-of-processor-used-to-secure-xbox-360--other- products.html)

But I don't see any actual details.

</comment></comment></comment><comment><USER24> > "This is something you can stick on your existing computer to protect your > existing software."

Let me adjust your expectations accordingly. I will not be sticking _your_ software on _my_ computer, at least willingly.

</comment><comment><USER25> The Xbox 360 had encrypted code (decrypted on cache-line fill) years ago. Also vanilla R/W RAM (for the hypervisor state, and other sensitive things). Done in hardware, very fast.

</comment><comment><USER26> If it runs it will be defeated (if reversers get enough motivation). This technique of decrypting the code only when it is needed is more than decade old. For example, Armadillo's CopyMem II [1] used that technique in 2002. Current state of the art in software protection is the combination of all available methods like code obfuscations, embedded virtual machines, "code splicing", "imports elimination", "stolen bytes", anti-debug tricks, etc. But again, if it runs it can be defeated.

[1] - [http://www.woodmann.com/forum/showthread.php?4027-Armadillo-...](http://www.woodmann.com/forum/showthread.php?4027-Armadillo- and-CopyMem-II-decryption)

</comment><comment><USER27> Because Security By Obscurity is so totally THE solution.

Note that reverse engineering is also used for very legitimate reasons. For example for interoperability. In a lot of jurisdictions it is absolutely legal to reverse engineer for such purposes.

</comment><comment><USER28> It's just security by obscurity and I'm sure as soon as hackers can profit from reverse engineering such code, they will reverse engineer it.

</comment><comment><USER29> If you want to look and see how to make your code less exploitable just look at the security layers of iOS.... the jailbreakers seemed to have documented it quite well. It has this, ASLR and a bunch of other stuff

Also this article sucks

</comment><comment><USER30> Is it the one strange trick that will make my soft ware harder?

</comment><comment><USER31> Skype version 2.x.x through to version 5.x.x.x utilized this technique - it's nothing new.

</comment><comment><USER32> lol; this is how tools that "protect" PHP code work, one such tool is IonCube. And, best part, you can decrypt that code by doing an strace of the code running through PHP; the result being the encryption key.

</comment><comment><USER33> Does it run on Windows?

<comment><USER24> Only from the scroll bars.

<comment><USER34> Best reply ever.

<comment><USER35> can you explain the joke please! =) it flew right over my head

<comment><USER36> Recently (yesterday I think) an exploit was released for Windows which works from Windows 10 all the way back to Windows XP. The title of the article was something about "One bit to rule them all" because it only took one bit to trigger the exploit. It had something to do with running a program with scroll bars, and giving Windows invalid parameters for that scroll bar.

This way, when you are a normal user on a computer, you could get system permissions (higher than admin!) by running their exploit. It wasn't quite changing a single bit as they claimed, you had to develop (or run) a program that exploited the bug, but scroll bars were the key. That's the joke here I think ;)

<comment><USER35> Ah! thank you =)</comment></comment></comment></comment></comment></comment>


Show HN: Web pages stored entirely in DNS - <AUTHOR> https://serv.from.zone <comment><USER2> Fantastic. And why not? Sounds marvelous for small stuff.

Reminds me of using NSString, which is a "tagged pointer" in iOS. For very short strings, it's not actually a 4 byte pointer to an object, but simply a short string itself.</comment>


Multiuser Sketchpad in HTML5 (Go nuts) - <AUTHOR> http://mrdoob.com/125/Multiuser_Sketchpad_HTML5

<comment><USER2> First collaborative masterpiece - i giant penis.

<comment><AUTHOR> The inevitability of that act of vandalism/creativity on any new virgin space is unavoidable.

(I drew a house. _sigh_ )

<comment><USER3> I drew a hyper cube. I'm also wasted. Doesn't look much like a hyper cube.</comment></comment></comment>


It's like JSON. but fast and small. - <AUTHOR> http://msgpack.org/ <comment><USER2> It looks cool, but be very careful about using it (in a browser, at least). Browsers have super-fast JSON parsers and parsing msgpack is much, much slower than parsing good old JSON.

This great comment (from 201 days ago) is exactly about this issue:

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

I quote a bit of it here:

        JSON size: 386kb
        MsgPack size: 332kb
        Difference: -14%

        Encoding with JSON.stringify 4 ms
        Encoding with msgpack.pack 73 ms
        Difference: 18.25x slower

        Decoding with JSON.parse 4 ms
        Decoding with msgpack.unpack 13 ms
        Difference: 3.25x slower

and also this comment: <http://news.ycombinator.com/item?id=4093077>

       MessagePack is not smaller than gzip'd JSON
       MessagePack is not faster than JSON when a browser is involved
       MessagePack is not human readable
       MessagePack has issues with UTF-8
       Small packets also have significant TCP/IP overhead

<comment><USER3> _sigh_. Why do we always want to declare a winner? Anyone who has tried to store binary data in JSON knows that MessagePack does indeed have a use case. And anyone who is working with browsers knows that JSON/JS is the king there.

> MessagePack is not smaller than gzip'd JSON

But gzip'd MessagePack is smaller than gzip'd JSON, so?

> MessagePack is not faster than JSON when a browser is involved

Using it in the browser was never the use case for MessagePack. JSON these days are used for far more than browser-server-communication.

> MessagePack is not human readable

Fair enough. Although I don't consider JSON without newlines to be "human readable" either. I'll have to pipe it through a beautifier to read it.

> MessagePack has issues with UTF-8

MessagePack only stores bytes. It's up to you to decide how to interpret those bytes.

> Small packets also have significant TCP/IP overhead.

And?

<comment><USER4> I think developers like to declare winners for very, very good reasons typically. Winners are often very useful. For example in settling on a standard once a good or great solution is found so a community can thrive around it, lots of open tools and open code can be built for it, developers can build upon it with a roadmap in mind, sites can publish with it knowing they can reach a maximum audience, etc etc etc etc.

Who really wants to have even a dozen different 'standards' for data interchange? The gradual move from XML to JSON demonstrated perfectly well how messy it can all get, just trying to support two quasi standards.

<comment><USER5> Choice is a good thing.. do you use a fork, to open doors, eat,scratch your foot, kill flies, start a fire, just because you have to use the one-and- ultimate tool ?

json are not the best for every scenario, as also msgpack does not have the best fitness for everything..

Nature is pretty wise on that matter, it "launch" several possibilities, cause the environment is always changing.. so in a particular giver scenario, one of the possibilities (biological agents) can succed..

but that one that succeded in a particular scenario, will fail in another, where now, another subject who has failed is the better option, adaptation..

so.. choise is a good thing.. why people are so lazy, and dont like to think? everything must be ready..

its our duty to choose the best tool to solve a given problem.. its cool that i can even use something "obsolet" from the 1800´s to solve a 2012 problem..

So if we keep thinking.. "oh that old unwanted thing from the past", we will never see it..

Winners are only winners in a given scenario.. its good to have choice, even against all boards and standards i prefer to decide from myself, than to have others to do that decision for me..

This is technology, not fashion.

</comment></comment></comment></comment><comment><USER6> This is just an implementation of a binary encoded Property Tree.

And not the best implementation out there since it lacks the redundant key/value elimination that more compact serialization formats use. Consider an array of maps where each of the maps have the same keys. By eliminating the redundant keys (have each subsequent occurrence simply reference earlier occurrences) you can halve the encoded data size relative to implementations without redundant elimination.

It also lacks a canonical string encoding. All strings are saved as raw binary data making it terrible for data interchange between environments with different string encodings.

C/C++/Objective-C users have many better options than this. In Mac/iOS/Cocoa/CoreFoundation, you can use Apple's Binary PList which is open sourced here:

        http://www.opensource.apple.com/source/CF/CF-476.10/CFBinaryPList.c

In non-Apple C/C++ environments, you can use the open source implementation of Apple's PList here:

        https://github.com/JonathanBeck/libplist

<comment><USER7> As far as redundant kv encoding isn't gzip good enough? Sure, it's more generalized, but tailored compression schemes often aren't the win they're touted as. Additionally, they can't exploit scenarios where multiple pairs are repeated (for instance gzip would compress [{x: 1}, {x: 1}, {x: 1}, ...] far more efficiently.

<comment><USER6> Actually, Apple's implementation does handle multiple pair redundancy since all CFArrays and CFDictionarys added to the PList are uniqued.

Obviously, further GZIPing the result will always make it more compact but GZIP on uniqued result is likely to result in a more compact representation than GZIP on the non-uniqued result.

</comment></comment></comment><comment><USER8> Let me weigh in with my experience with msgpack. I'm a long-time nodejs core contributor and have been designing browser libraries for many years. I discovered msgpack almost three years ago and was sad at the lack of javascript support.

Since then I've written and maintain a javascript codec with two optimized versions. One is for [node.js][] and uses node's Buffer methods to do the fast byte to number conversions. The other is for the [browser][] using typed arrays.

I use these libraries in production at various places (the cloud9 IDE backend used them to great effect)

While the native JSON.parse and JSON.stringify is slightly faster than mine with string heavy payloads (and the msgpack is only marginally smaller in that case anyway), when the data is array and number heavy, my codec is much faster than JSON and the data on the wire is a lot smaller.

Also don't underestimate the value of having a binary data type. In my libraries, I extended the format slightly to also encode undefined (as well as null). I also have a string type and a buffer type. In node.js the buffer type is a instance of a node Buffer. In the browser, the buffer is an ArrayBuffer instance (typed array type). So the practical effect is if you put a JS string in, it's encoded as UTF-8 on the wire and comes out the other end as a JS string. If you put a binary buffer in, it comes out the other end as a buffer.

I've contacted the authors of some of the other codecs and when they extend the format, we agree to extend in compatible ways.

My biggest production use of msgpack was as the transport format of my [smith][] rpc system. In smith, an rpc call is done as an array. The first value is the function to call, and the rest are the args. If you're calling an anonymous function, then the identifier is a number. In this usage, the payload tends to be array and number heavy and thus very fast and efficient.

(Edited to add in missing links)

[node.js]: <https://github.com/creationix/msgpack-js> [browser]: <https://github.com/creationix/msgpack-js-browser> [smith]: <https://github.com/c9/smith>

<comment><USER8> Just an update, it turns out that Typed Arrays aren't as fast as node's Buffer implementation. When comparing msgpack-js-browser to the native JSON library, JSON is way faster in chrome. <http://jsperf.com/msgpack-js-vs-json>

However, in the number and array heavy case, the msgpack is 2.5x smaller when serialized. So even if it's a bit slower in browsers, the bandwidth savings and the ability to store binary data may still be worth it. (remember that performance in the browser scales very differently since it's distributed across all your client's browsers)

<comment><USER8> Interestingly, in Firefox, the gap is smaller, their typed array implementation is a bit faster. For the number heavy case, msgpack is only 47% slower which is close enough in performance for a great many use cases.

</comment></comment></comment><comment><USER9> MessagePack Has nothing to do with JSON.

This page is a good example of how marketing copy can undermine your product.

MessagePack is a data serialization format, it has about as much to do with JSON as honey has to do with milk, but they went and started a flame war with no more than 7 tiny words, "It's like JSON. but fast and small."

Bam, ruined their own message. Now instead of reading that page thinking "What can message pack do for me?" you read the page thinking "Better than JSON huh? I'll be the judge of that."

Marketers could do us all an enormous favor, themselves included, if they stuck to promoting the positive aspects of their products instead of the negatives of the competition. It puts the consumer in the wrong mindset. Why would you want someone wandering around what is essentially your store looking for negative aspects of your product. Seriously, just stop being negative.

</comment><comment><USER10> Equally, "it's like JSON, but binary and human-unfriendly".

<comment><USER8> How is it binary unfriendly? It's designed to be super easy to parse using C. The lengths and types are in the first byte(s) and most conversions can be done using typecasts. And as far as human readable binary format, it's not that bad. I can usually read a hex dump of msgpack if I've been working with it all day.

<comment><USER11> But binary, and also, it is human-unfriendly.

<comment><USER10> Exactly (or I'd have written "... binary- and ...").

</comment></comment></comment></comment><comment><USER12> A comparison between msgpack and Sereal and other formats. Sereal is a format we released at work a few months ago: [http://blog.booking.com/sereal-a- binary-data-serialization-f...](http://blog.booking.com/sereal-a-binary-data- serialization-format.html)

<comment><USER13> Looks like good work with some thought having gone into it, although with most such schemes the major gains are usually reaped with the first few simple optimizations.

Maybe you need a catchy marketing line like "Its like msgpack, but smaller and faster" :)

</comment></comment><comment><USER14> Someone at ebay already compared all the protocols and ended up advising json instead:

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

<comment><USER15> Except when performance is important.

</comment></comment><comment><USER16> EDIT : Comment based on wrong assumption : string are actually smaller than in JSON, see judofyr comment.

I have to disagree on that news title, for the "It's like JSON" part.

As pointed out in a link[1] of Someone in an other comment here :

> A major use case of MessagePack is to store serialized objects in memcached.

This also seems very relevant (in article linked from here):

> typical short strings only require an extra byte in addition to the strings > themselves.

So, stored strings are actually bigger (even only by one bit) than plain text json.

Of course, I'm biased because I'm a webdeveloper, but I see JSON mainly as a message exchange format, meant to communicate across languages and, most of the time, to communicate between server side and client side. Typically, I'll use server side helpers to format strings like value with currency, i18n messages, etc, which makes a lot of strings in any JSON document transmitted.

The original author made it clear it was not intended for server/client side communication : it's a very specific format intended to offer better performances on very specific use cases (I would rather know how it compares to BSON than to JSON).

JSON, on the other hand, is a generalist exchange format. Messagepack is definitely not like JSON.

[1] <http://news.ycombinator.com/item?id=4092969>

<comment><USER3> > > typical short strings only require an extra byte in addition to the > strings themselves.

> So, stored strings are actually bigger (even only by one bit) than plain > text json.

Strings in JSON require _two_ bytes (the quotes) in addition to the string itself.

<comment><USER16> Oh, I see. I thought it meant "one bit more than JSON". Thanks for fixing it.

</comment></comment></comment><comment><USER17> Seems like this could be useful as an alternate API format. I'd like to see sites offering plist (bigger than JSON but dead simple parsing in Cocoa) and serialized formats as well as JSON and XML and all that.

<comment><USER18> Thats a large amount of testing, potential bugs for what purpose?

<comment><USER19> Ease of consumption from Cocoa (mostly Touch) applications?

</comment></comment></comment><comment><USER20> So big news, binary encoded data is more compact than human-readable strings. I'm sure this new format is useful but bringing in the JSON comparison is completely irrelevant (and probably done only to get some page-hits). AMF is also a binary format, has been around for years, and is probably more compact than JSON too.

I think binary formats are great for online games where performance is critical, however for most applications human-readable strings are a lot easier to manage. In any case, both formats have different use cases.

<comment><USER8> It's not a new format, I have no idea why it's popular news today. Having worked extensively with both msgpack and JSON in a javascript environment, I can tell you, its the closest to JSON of all the binary formats. The difference with JSON is msgpack's strings are binary safe (you can have a png as your value) and the format is a bit more compact, especially around integers.

JSON has: numbers, strings, booleans, null, arrays, objects. Msgpack has: numbers, raws, booleans, nil, arrays, maps.

So I guess msgpack is a superset of JSON. The raws can contain utf8 encoded strings like JSON mandates, or they can contain other things. There is no technical reason that the keys of the maps have to be strings. You could take a lua table that has another table as key and encode that in msgpack just fine.

In practice, I wanted more out of msgpack, so I extended the format using some of the reserved byte ranges to add in an "undefined" type and a distinction between utf8 encoded string and raw binary buffer.

For me this new format has been extremely useful as a general data serialization between processes (node to node, server to browser, etc..) I usually use it over binary websockets or raw tcp sockets.

<comment><USER21> Thanks for the explanation. How do you think msgpack compares to something like this: <https://github.com/unixpickle/keyedbits> (specification found in wiki)

<comment><USER8> Interesting format. It appears easier to implement than msgpack in a scripting language. My gut feeling is that mspack will be slightly more compact and faster to decode (especially if decoded using C).

</comment></comment></comment></comment><comment><USER22> O_o didn't this make news a long time ago?

<comment><USER23> <http://news.ycombinator.com/item?id=4090831>

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

</comment></comment><comment><USER24> json is kind of a lingua franca these days. For some kinds of things though, I do like tnetstring (has some nice qualities).

msgpack (and bson too) always seemed a bit odd to me though. If you need binary packing, why not use protobufs or thrift?

<comment><USER25> Within the space of {schema-ful, schemaless} x {binary, text}, protobuf, {BSON, MessagePack}, JSON each occupy a distinct position. The position (schema-ful, text) is not very meaningful combination in practice and not covered by these, whereas the position (schema-less, binary) is a valid practical use case supported by {BSON, MessagePack}. For example, you don't know the schema before-hand but still want to minimize data size.

<comment><USER26> This looks like a useful way to compare. Waiting for someone who has compared them to draw this plot :)

</comment></comment></comment><comment><USER27> Well, with Python it doesn't seem particularly fast. I put together a small test: [http://svn.colorstudy.com/home/ianb/msgpack_json_comparison....](http://svn.colorstudy.com/home/ianb/msgpack_json_comparison.py)

It uses some random JSON data I found. msgpack is more compact (87% of the JSON representation), though not dramatically so.

json encode: 5.54msec simplejson encode: 8.27msec msgpack encode: 11.4msec json decode: 16.4msec simplejson decode: 4.06msec msgpack decode: 2.84msec

I'm confused about why json is faster at encoding and simplejson is faster at decoding. simplejson is fastest when you combine encoding and decoding.

<comment><USER19> > It uses some random JSON data I found. msgpack is more compact (87% of the > JSON representation), though not dramatically so.

And you can probably end up with a draw if you gzip both

</comment></comment><comment><USER28> From an API perspective, msgpack is indeed quite similar to json (at least for python) -- it was quite easy to reuse existing json machinery for integrating into spyne. I'm not aware of anybody using Spyne with msgpack though.

</comment><comment><USER29> The best choice always depends on your data and the quality of the implementations for the language you use. We tested many serializers recently for our backend (Perl, but we wanted something more open to other languages than Storable) and found msgpack slightly faster and 20-25% smaller than JSON at encoding, but only half as fast at decoding, so we chose JSON.

The most surprising result was that JSON was 2x (decoding) to 3x (encoding) faster than Storable. The downside is that it sets the utf-8 flag ...

</comment><comment><USER30> In my own tests, the json parser you use has a _massive_ impact on runtime, and msgpack is much faster than other altarnatives.

My own measurements: [http://stackoverflow.com/questions/9884080/fastest- packing-o...](http://stackoverflow.com/questions/9884080/fastest-packing-of- data-in-python-and-java)

</comment><comment><USER31> and why not just use protocol buffers?

<comment><USER32> MessagePack is schema-less, whereas protobuf is not.

<comment><USER33> It's also almost API-compatible with JSON encoders, so if you wrote a program that uses JSON for serialization, switching to msgpack is often as easy as doing a global find-and-replace.

</comment></comment></comment><comment><USER34> XDR? ASN.1? Everything old is new.

<comment><USER35> XDR is not directly comparable to this as it requires pre-agreed structures.

ASN.1 is slightly more complex in this regard: BER can be mostly understood without knowledge of it's intended structure but only mostly (actually, MessagePack seems to me like BER done right(-er)), PER requires schema in any case. Bust most significantly ASN.1 is mostly about how to encode the schema itself, which is completely outside of the scope of MessagePack.

<comment><USER36> There seems to be a pretty fatal flaw in MessagePack that doesn't exist in [BCD]ER. MessagePack doesn't explicitly represent strings and only provides a binary data type.

Besides not being able to distinguish between a true binary blob and a string, the two parties need to agree on what string encoding should be used. Is it UTF-8, UCS-2, EBCDIC? I suspect this would create tons of incompatibilities between implementations as various parties make their own naive assumptions about what strings are encoded with.

That seems like a pretty major flaw to me. X.690 is a bit overly complicated (there are 10+ string types...) but there is such a thing as too simple.

</comment></comment></comment><comment><USER37> For those who are interested in Pinterest usecase (Memcached + MessagePack), please access to this url too.

> <http://engineering.pinterest.com/posts/2012/memcache-games/>

<comment><USER38> This actually seems like a great use case, going to read later, but I immediately thought of MongoDB BSON format.

</comment></comment><comment><USER39> Here is a benchmark result of msgpack, json, bson and protobuf: <https://gist.github.com/4348013>

An important point we should consider here is that actual performance depends on implementation.

</comment><comment><USER40> Well at least they didn't name it a cute cargo cult acronym like YAML and then only later realize it actually wasn't a markup language, then have to come up with a backronym to cover up their mistake.

</comment><comment><USER41> It used to be that those who do not learn from history are doomed to write yet-another string class.

Nowadays it seems that those who do not learn from history are doomed to write yet another serialization scheme.

</comment><comment><USER42> How would this compare to YAML in terms of speed?

<comment><USER43> YAML is generally quite slow, except perhaps when compared to XML. Even JSON parsers are much faster, and any binary format will be faster than that.

</comment></comment><comment><USER44> Lisp-ish way of type-tagging the data for efficient binary encoding? Heresy! Not a J* way.)

</comment><comment><USER45> I don't see any evidence presented that it is smaller or faster on this page.

</comment><comment><USER32> This is an interesting coincidence. I happened upon this a few days ago for the first time and it worked out really wonderfully.

I needed to transfer data from a python script to a ruby script. Ended up looking like this:

Python script:

        import msgpack
        msg = msgpack.packb(some_data)
        sys.stdout.write(msg)

Ruby script:

        require 'msgpack'
        msg = `python my_script.py`
        some_data = MessagePack.unpack(msg)

</comment><comment><USER46> ... and not a standard.</comment>


Death of a Startup - <AUTHOR> https://medium.com/@gokulrajaram/the-death-of-a-startup-10738255d1e0 <comment><USER2> It amazes me that Machine Learning is all many people think of when they hear AI. Machine Learning (ML) is a subset of AI. You can also hear about Deep Learning (DL), a subset of ML where you have multiple layers/multiple models. There's a decent Quora thread on Deep Learning vs. Machine Learning [1].

Both ML and DL require a fair bit of data to do their training. There are some techniques to reduce training data, such as a Generative Adversarial Network (GAN) pitting an AI that generates data (some supposed to be fake and some legitimate) against an AI that tries to determine which of that data is legitimate.

However, ML and DL are not the only way to apply AI. There are a great many solutions you can solve with one or a combo of:

* Genetic Algorithms [2]

* Bayesian Inferencing [3]

* Semantic Reasoning using rules, and possibly using ontologies [4]

In some cases the approach might not generate a solution as good as from an ML-approach, but it also won't require the same level of data either.

Btw, semantic reasoning has a similar problem. Just like ML requires data, semantic reasoning requires an rules and/or an ontology, and creating a good ontology while avoiding the pitfalls is an art form.

For example: If I asked you to create classes for an ontology of vehicles, you might be fine with sea_vehicle, air_vehicle, and land_vehicle. But that's not going to work well. What about a submarine? What about an amphibious vehicle?

Instead, we can define the classes vehicle, movement_medium, as well as verbs moves_on, and moves_through. Now, a ship is a vehicle that moves_on the movement_medium water. A submarine though is a vehicle that moves_through and moves_on water. Both our sea_vehicles. Getting the ontology right is often one of the hardest aspects of applying semantic reasoning.

I recently had a great ML approach mapped out to solve a problem for a client, discovered the client hadn't kept the data they had gathered in a machine readable form (it was in notebooks and scattered PowerPoint decks), and we pivoted to using a Genetic Algorithms approach.

[1] [https://www.quora.com/What-is-the-major-difference- between-d...](https://www.quora.com/What-is-the-major-difference-between-deep- learning-and-machine-learning)

[2] [https://www.geeksforgeeks.org/genetic- algorithms/](https://www.geeksforgeeks.org/genetic-algorithms/)

[3] [https://brohrer.github.io/how_bayesian_inference_works.html](https://brohrer.github.io/how_bayesian_inference_works.html)

[4] [https://rubenverborgh.github.io/Semantic-Web- Reasoning/#](https://rubenverborgh.github.io/Semantic-Web-Reasoning/#)</comment>


Coding Without Comments (2008) - <AUTHOR> https://blog.codinghorror.com/coding-without-comments/ <comment><USER2> IMO code should be self explanatory and and follow a standard(perhaps the team's standard?). I personally find that at the beginning I do add lots of comments for myself to keep track of what I need to do without having to look elsewhere, only to erase most of them when I'm done with the particular piece of code. I have the habit to always refactor the code, make it easy to read (rename the variable and function names to make sense), make it navigable by moving the the class variables together, functions together, basically chunk things together to be easy and intuitive to find. I started doing this a long time ago, I think it was perhaps out of fear of criticism from other senior coders and it turned into a good habit.</comment>


Copying is an act of love. Please copy and share - <AUTHOR> http://copyheart.org/ <comment><USER3> Copying is all fun and games until Disney comes and "copies" your art in their products. (Previous discussion <https://news.ycombinator.com/item?id=5513535> ) Then we get out the pitchforks.

I like the idea of sharing, but unless all the ducks are in a row someone is bound to get hurt, and it's not clear to me if the proposed legal statement is sound.

<comment><USER4> We get out pitchforks when Disney violates copyrights because Disney is at the forefront of the copyright expansion effort. The fact that Disney wants us to retool our computers and the Internet to protect their business, while simultaneously playing fast and loose with other people's copyrights, is what makes people angry.

<comment><USER5> In theory, yes. But people will still be unreasonably angry if they say "go ahead and copy" and then a big corporation copies it and makes millions of dollars and you are entitled to nothing.

Honestly, I fail to see what this adds over a well chosen creative commons attribution.

<comment><USER6> I think most people are not in favor of commercial infringement - it's the non-profit file sharing that most of the argument is over.

<comment><USER4> I am not sure that is really true. I have not met many people who are angry about bootleg DVD sales; most seem to dismiss them as being of low quality, or just get annoyed when the person trying to sell them does not take "no" for an answer.

</comment></comment></comment></comment></comment><comment><USER7> "People copy stuff they like. They don't copy stuff they don't like. The more a work is copied, the more valuable it becomes. Value isn't taken away by fans, it is added by them, every time they copy."

Awesome quote from the article which I wholeheartedly agree with.

<comment><USER8> Then maybe you can help me understand what it means. Say I write a book but nobody purchases a copy, while thousands of unauthorized copies are downloaded from torrent sites. How does all this "value" put food on my table?

<comment><USER9> It puts food on your table in the same way it did for PSY (the "Gangnam Style" guy)... People learn about you, and will pay a premium for almost anything you touch. For example, to see you live, or to speak to you about anything, or to buy your old house or car at substantially more than it's worth. In short, you become a celebrity. That is the intangible value created for yourself, as a reward for the intangible value you create for society. It works in areas like math and research too. Publishing research will get you a better job. Similarly, having your song copied will give you more income, even if it's just a tip - like a waitress, or a street mime.

It's a spectrum of risk - from donations to Kickstarter - and nowhere in there is copyright - a restriction on other people's creative work (to the detriment of everyone, including yourself) - necessary.

<comment><USER8> I've got to agree that if I created the most watched YouTube video of all time that even _I_ would probably be able to turn that into some cash. But I don't think that's a viable solution to the problem of novelists, etc., being able to earn a living in a world of unfettered copying.

Copyright is not a restriction on anyone's "creative" work. It restricts the right to copy things. (Not that I'm happy with all the details of current copyright law.)

<comment><USER4> Most novelists do not earn a living from their creative work and must work a day job to survive. There are rare exceptions, of course, but in general artists do not earn enough from their creative work to pay the bills. This is as true today as it was before the Internet, before electricity, and before copyright laws.

<comment><USER8> This is true - most do not. But many writers, composers, photographers, etc. do in fact earn a living from creating. I just said that I want to live in a world where this remains possible. If we throw this out along with copyright, we've certainly lost something.

<comment><USER4> New technology _always_ causes us to lose something. The issue is whether or not we gain more than we lose, and the answer is universally "yes." The combination of PCs and the Internet has made copyrights obsolete, and with that the concept of royalties is obsolete. Yet what we have gained from those technology vastly outweighs what we have lost. Poor students who can barely afford tuition can access textbooks they would otherwise be unable to afford. The concept of "rare" or "out of print" is a thing of the past. One no longer needs to travel long distances to find a library with a copy of some book or photograph.

People who have no idea how to develop a photograph can send copies to their entire family at near-zero cost. Researchers have presented systems that can create accurate 3D maps of cities using photographs published on the Internet.

I would not throw any of the above away just to preserve the ability of a tiny minority of authors, musicians, actors, etc. to live on their royalty payments. I want to be able to read scientific papers without having to spend hours searching bound journals at some library. Creative workers can and will find ways to monetize their abilities in a post-copyright world, and they will have to do so without relying on DRM and without trying to destroy the Internet.

<comment><USER8> I absolutely agree with you about the importance and wonders of the internet. And you are undoubtedly right that the internet is making copyright, or at least the traditional view of copyright, obsolete. But we have some ability to create the future by influencing the direction of technology, law, and cultural attitudes. And to fail to replace copyright with something else that allows people to make a living through intellectual and creative work will be a grave mistake. Just ditching copyright and embracing unfettered copying while hoping that creative people will somehow figure out how to feed their families will mean that less, much less, gets created, and we will all be poorer for it. So far, no idea has been shown to be viable: voluntary payments do not and will not work, because enough people will not pay; taking your show on the road only works for able-bodied people with certain combinations of talents, and even then only while they are young and without children - <USER2> they need a steady income the least. We need new ideas, and new legal frameworks. Just saying that everything should be free leaves us endlessly recycling the creations of the past, created in the days when authors were still getting paid.

<comment><USER9> " _less, much less, gets created, and we will all be poorer for it_ "

I have seen no evidence of this. In fact, the Internet boom has been one of the most empowering and prosperous times for creators (distinguished from mere distributors) in my memory. (In fact, I don't recall nearly as much quality music 10 years ago.) Furthermore, the alternative model you seek is simply that of time-tested patronage, which has been the default for anything worth doing since the beginning of history. Today we have the possibility of crowd- funding. I have not been given any reasons to expect less art, only more. Netflix, for example (arguably still a mere distributor), is even producing original series for it's own subscription audience. Copyright is part of the present economy, but Netflix would still want new content for it's channel were it not. Subscriptions are just another form of patronage.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It's great if you want to make something and put it in the public domain. But I detect a normative undercurrent here, a suggestion that the author feels that restrictions on copying are bad, or at least not as nice, as her love- based approach.

I would like to live in a world where people can support themselves through creative work. And online culture has failed to come up with a replacement for strictly enforced copyright that doesn't involve de-facto monopolies, rampant advertising, and spying on people through their computers. Jaron Lanier goes into these issues in insightful depth in his book _You Are Not a Gadget_.

<comment><USER4> "And online culture has failed to come up with a replacement for strictly enforced copyright that doesn't involve de-facto monopolies, rampant advertising, and spying on people through their computers"

<https://en.wikipedia.org/wiki/Pioneer_One>

You do not need copyrights if you are willing to say, "Pay us for the next installment, or else we will not make it." No spying, no advertising, no monopolies.

<comment><USER8> This is really interesting - I'd never heard of this. But glancing over the page you linked to, it looks like 4 million downloads netted about $20,000 to fund the next several episodes. So they are massively popular, but barely covering the cost of production of an extremely low-budget series. This is therefore a labor of love and not paying anyone's mortgage or feeding any families. But they seem to have a lot of love.

<comment><USER4> Sure, though it is worth pointing out that they must compete with people who are using copyrights to their advantage. Even competing against the businesses that benefit from copyright, Pioneer One is able to survive; I suspect that in the absence of copyrights, Pioneer One would be more financially viable.

</comment></comment></comment></comment><comment><USER10> I want people to be able to profit from value they create, even if that value is easily copied. I also think that copying/sharing content -- writing, photographs, music, art, video -- has been incredibly healthy for the Internet and really everyone on the planet.

I've seen a couple of "Donate" buttons attempt to solve monetization for content creators that don't sell ads. I think there's room for a standard like this, something that could be easily attached to a byline that could travel with copied work.

If you "love" content enough to copy it, maybe you'll also copy a byline with a built-in donation link. If the content gets copied enough, and people get accustomed to easy and small donations just like Facebook Likes and Twitter Retweets, then perhaps the culture of sharing content can financially displace the monopolies imposed by copyright.

</comment><comment><USER11> Lawyer perspective on non-licensing (it' dangerous): [http://tieguy.org/blog/2013/01/27/taking-post-open-source- se...](http://tieguy.org/blog/2013/01/27/taking-post-open-source-seriously-as- a-statement-about-copyright-law/)

Non-lawyer perspective: <http://waxy.org/2011/12/no_copyright_intended/>

</comment><comment><USER12> There is something humorous in making a statement against copyright predicated on fans giving a PILE OF POO[1] about the creator's will. People already share what they like; they just don't like most of the stuff that's given away for free.

[1] <http://www.charbase.com/1f4a9-unicode-pile-of-poo>

<comment><USER13> I always love stumbling across links to that site I wrote years back. I had no idea that it was ranking in Google for "pile of poo".

The source is available if anyone wants to improve it:

<http://github.com/mmastrac/charbase>

</comment></comment><comment><USER14> A part of me likes this, and a part of me ❤s this. The rest of me wants to hear what a lawter like Lessig (or someone with a silar amount of experience and stake in the legalese of sharing) would say about it.

My guess is this has as much legal meaning as putting "this is in the public domain" in a readme. (I.e. none)

</comment><comment><USER15> I think the ethos of the copyheart as expressed in this website needs to be a little different. Sure, don't restrict your audiences' ability to copy and distribute your work, but when somebody sees the ♡ symbol, it should be a call to action for the audience to ♡ the work and the artist(s) creating it. If that involves supporting the work financially, then so be it. The audience of a work is responsible for nurturing, caring for it, and supporting it's production. This is what copyright tries to do it, but fails because it focuses too much attention on controlling distribution.

</comment><comment><USER16> Use a simple license written with at least some vague grasp of the needs of copyright law for licensing, please. Much as I respect the people associated with Copyheart (Nina Paley, who I think created this whole Copyheart thing, is the "artist in residence" at QuestionCopyright.org), I find the way some people try to basically just pretend copyright doesn't exist as a way to fight against the problems it creates somewhat naive and/or irresponsible. If you want to make your works available freely to others in the same spirit as the Copyheart thing, feel free to slap a Copyheart message on it, but please add a simple, clean, copyfree license on it (such as the COIL, Open Works License, or WTFPL) on the thing as well.

The reason to do that is not for your benefit so much as it is for the work's benefit and that of the recipient. A vague, hand-wavy statement like the Copyheart message can expose people who copy, share, and possibly modify your works to legal difficulties down the road. Consider, for example, what happens if you get hit by a bus tomorrow and a week later your heirs start sending DMCA takedown notices to people circulating remixes or modifications of your work, even if those remixes are respectful, adhere to the spirit of your efforts, and give all due credit to you as the creator. Chances are very good that any attempts to fight such takedowns would not stand up well in court if the Copyheart message is all that you offered as "protection" for the people spreading your work to new fans.

Please, do the responsible thing. Use a simple license that is very clear and complete in its intent, such as the COIL, Open Works License, or WTFPL -- or pick anything from the list of Copyfree Initiative certified licenses that suits your fancy, I suppose: <http://copyfree.org/licenses>

</comment><comment><USER17> Seems very similar to what Kopimi [1][2] is all about. It has been in use for quite a while. Take a look at the footer of thepiratebay.is for instance.

[1] <http://www.kopimi.com/kopimi/> [2] <https://en.wikipedia.org/wiki/Piratbyr%C3%A5n#Kopimi>

</comment><comment><USER18> I love the intention of this site, which is to clarify when something is placed into the public domain, even though their carefree approach is legally risky for anyone to depend on.

However, I've never seen cognitive dissonance on such as scale as when people discuss copying and copyright, which makes most discussions useless. Rarely are arguments supported by scholarly evidence or appeals to utilitarianism, and the political statements on the above site are no exception.

Fundamentally, people like copying things, and some forms of copying are restricted by law. So either the law is bad, or they are a bad person. Nobody thinks they are a bad person (an pillar of ego which will never be shaken), and people hate being lectured, so it's the law that breaks, often with the flimsiest of excuses and fallacies ranging from the moral to the theoretical.

\- In some cases, copying is beneficial to the copyright holder (usually through advertising, network effects, or market segmentation), ergo, all copying must be beneficial

\- Some authors are against copyright, ergo all authors are against copyright

\- It's copying is okay if one's motives are pure (end justifies the means)

\- If something is easy to do, and preventing it hard, then it must be right (naturalistic fallacy)

\- Copying is the natural state of the universe, so it must be right (moralistic fallacy)

\- A copyright holder doesn't deserve protection because they're evil ("behaved in a selfish way") stupid ("doesn't understand technology") or stubborn ("won't change business models")

\- Copyrights restrict personal freedom, which is a natural and inalienable right of man, even though personal freedoms are always restricted at conflict points to ensure societal harmony ("thou shall not kill")

\- Copyrights are based on property rights, but information is not property for reason "x", ergo copyrights are invalid on a technicality. In reality, many laws are enacted because of utilitarian value and need only require group consensus ("always stop at a stop sign; person on right goes first.")

\- I paid money in return for "x", therefore I can do whatever I want with "x" (refusal to honor contractual agreements and/or acknowledge exceptions to property rights, which are ubiquitous)

\- Copying is good for society because information sharing has no marginal cost (sophomoric application of economics)

\- Because some people create without expectation of monetary reward, all people or corporations will still invest in creative works even when the return on investment decreases, or is non-existent

\- Some people or corporations could, and thus all should, make money in secondary markets (personal appearances, product endorsements) rather than by selling copyrighted works directly

I would give my right arm for a rational discussion on this topic.

<comment><USER19> You're missing the most obvious ones.

Empirically, copyright law is not effective. That is to say, copyright is massively violated for non-commercial use.

Enforcing laws which are empirically not obeyed is a bad idea, regardless of the philosophical merits of pro-copyright or anti-copyright arguments.

The most popular P2P protocols will advance to the point where enforcing copyright law means enforcing an absurd policy: if your computer shares copyrighted information even without your knowledge, you're guilty of infringement. The only way to avoid it is not to participate in such advanced P2P swarms (where nodes cache content for delivery to other nodes), since nobody knows the copyright status of a particular hash-addressable piece of content.

Enforcing laws in a way that bans a neutral computer technology (P2P sharing of arbitrary content) is untenable [1], regardless of the ethical, moral, and economic arguments surrounding copyright violation.

I see those arguments often. If you agree that those are not fallacies, I don't understand why you think copyright discussions degenerate into fallacies.

[1] What Colour are your bits? <http://ansuz.sooke.bc.ca/lawpoli/colour/2004061001.php>

<comment><USER20> There are a lot of laws that aren't effective. Empirically, laws that attempt to restrain gamesmanship among investment megabanks aren't effective. Laws against many forms of tax evasion aren't effective. Here's one close to home: laws against breaking into computers, stealing whole databases, and splashing them onto Pastebin aren't effective. That could happen to any of your startups tomorrow, and the likelihood of the law protecting you is very low.

In all of those cases, people routinely flout the law. It's not just that it's hard to enforce the law; it's that people routinely violate it.

The ineffectiveness of laws is not a logical argument that the _goals_ of those laws are bad. It's an argument either that the laws haven't been tuned properly, or that our enforcement priorities need to be changed --- in the case of copyright, probably in a direction you're not happy with.

Long story short: if you believe that this is a powerful argument against copyright, you forfeit a pretty big chunk of any of your arguments against Wall Street.

<comment><USER21> It seems like you are being intentionally obtuse: more surveillance can make almost any law enforceable. Requiring disclosure and regulatory review of exotic financial contracts doesn't violate individuals' privacy except in some very artificial and theoretical terms, and the downside risk is global in reach and magnitude.

Building the kind of surveillance that ensures individuals will observe all terms of service they unknowingly agreed to and can bring felony charges and large statutory damages against them reliably and efficiently does violate all kinds of individual privacy. It also institutionalizes a privileged place for publishers in the legal system, and brings Big Brother into our homes. None or that can be said for financial regulation.

We don't owe banks or publishers or buggy-whip vendors the ability to continue to do business in any particular way. We do owe people their privacy. There is a fundamental difference here you no doubt see, but ignore.

</comment></comment></comment></comment><comment><USER22> To stick down the idea of copying as a universal good is to oversimplify things just as much as to insist than an author has an infinite moral right to make completely unrestrained profit from the things they derive from society for the rest of time.

It's an appealing notion, copying sounds fine when you phrase it as an act of love, and within certain limits; fan works and the like; it is. However, if you have unrestrained copying then people will copy in a predatory manner as well. For instance, by aggregating your work and others work through a portal so that you never see any advantage from it - or by putting your work into something that has a much greater cultural presence and effectively taking ownership of it.

</comment><comment><USER23> Google (or some other search engine) needs to write something that makes it easy for anyone to "find the original" of some bunch of data (image, long- enough-string, music sample, etc.). Such a tool would ideally also be able to find derivative works.

This way attribution is trivial, and people will be much more willing to give their works away, while others would feel better about copying and modifying it. It would also render watermarks redundant.

Tin Eye, Google Image search, and Google's own algorithmic preference for original content probably get you half-way there, but it's easy to imagine how great it would be to have a full-featured "attribution discoverer" (or whatever).

</comment><comment><USER24> I don't have a copyright notice below my website because it's not needed in order to have copyright on your work. However I also won't explicitly allow people to copy all of my work. In most cases it's entirely flattering, but for the times that it's not, I do remain legally entitled to have the content removed (or have the design or anything else removed). Moreover, a copyright notice affects the entire page. I bet you didn't think about comments that are posted by users, they now fall under your copyright (or explicit share-right) as well. Do you really want to licence user data that way?

</comment><comment><USER25> I don't see how this is any better than Creative Commons.

</comment><comment><USER26> I think we're a couple decades to a century away from public perception allowing this.

<comment><USER27> Agree, it comes down to us (humans) being able to act as one unit, and when we can, everyone will be happy to copy each others work etc as much as possible. Because if someone doesn't have food on the table, we will also be there to help. I really hope we can reach this point in the next few decades! :)</comment></comment>


What if we could simulate the human brain? - <AUTHOR> https://keplerlounge.com/neuroscience/2019/05/14/brains.html <comment><USER2> If one or two dozen human genes specific to brain development (out of the approximately 20,000 total in the human genome) can be spliced into other primates, then in a country where these would not in any way be legally considered human it might be possible to perform experiments on the resulting (legally) animal brains to allow creation of such a simulation. Of course we all know no country is performing such gene splicing, cough, cough.</comment>


How to Build a P2P Marketplace - <AUTHOR> https://www.byteant.com/blog/p2p-peer-to-peer-marketplace-a-full-development-guide-2020/ <comment><AUTHOR> Explore the 4 methods to build a marketplace, the costs, monetization models, and more.</comment>


Ask HN: Why tech companies haven't changed their Benefits yet? - <AUTHOR> Working from home, better health care benefits, flexible hours and more vacation days (versus unlimited time off). These are all the benefits people are really looking for in 2017. Why are companies still offering free beer on tap, in-house yoga room, hipster coffee bar and unlimited time off instead of the benefits mentioned above? <comment><USER2> Why should they change?

The perks you describe (free beer; coffee are perks: they cost almost nothing compared to salary and have little lasting real value for the employee) are cheaper than real benefits and a sufficient number of developers are happy to consider them as part of their compensation.

Also, the beer and coffee perks you describe aren't all that common, even in tech centers like the Bay Area. Most of the "perks" in these places are limited to things that are free (amortized) to the company: ping-pong tables, kitschy furniture and the like. Occasional (or even frequent) catered meals and snacks are far more common, but even these are relatively cheap compared to employees' salaries.

</comment><comment><USER3> What are your sources? I'm not being argumentative or belligerent, I'd consider anecdotes completely valid here. Just curious.</comment>


How Coursera Cracked the Chinese Market - <AUTHOR> http://techcrunch.com/2015/08/21/how-coursera-cracked-the-chinese-market/

<comment><USER2> So basically friends and guanxi...

<comment><USER3> What does "guanxi" mean? I'm aware it's a Chinese word.

<comment><USER4> guanxi = relationships/network</comment></comment></comment>


Stockton mayor was briefly detained on return flight from China - <AUTHOR> http://www.sfgate.com/bayarea/article/Stockton-mayor-was-briefly-detained-on-return-6546419.php <comment><USER2> "A few minutes later, DHS agents confiscated all my electronic devices including my personal cell phone. Unfortunately, they were not willing or able to produce a search warrant or any court documents suggesting they had a legal right to take my property. In addition, they were persistent about requiring my passwords for all devices," Silva said.

"Silva was not allowed to leave the airport until he gave his passwords to the agents"

Silva was also told he had "no right for a lawyer to be present" and that being a U.S. citizen did not "entitle me to rights that I probably thought."

'Because 9/11'.

As an aside... He could have just said "no comment" to every question. Really. How long can they politically hold the mayor (or anyone) hostage?</comment>


Ask HN: How do we unlock the worlds collaboration? - <AUTHOR> Sorry in advance for the probably badly worded title. This is probably just badly formed thought that doesn't make sense but still wanted to share.
I find it interesting that the worlds collective collaboration happens inside businesses. Doing a search on the word 'collaboration' I find results for collaboration in the workplace, inside businesses, in the corporate world. But how about people outside of organizations? How do we enable collaboration between communities and groups with shared interests? Is financial upside missing to motivate collaboration, are we missing a shared process for collaborating, a leader to provide direction? I'm sure this is all true and more.
In the context of software - after starting a small software group (500 or so devs) I realize that there are a bunch of developers that hope to collaborate with others on software to build something meaningful and learn. Is this true for other industries - are creators looking outside their organizations to collaborate on something more fulfilling? Is it possible to organize the world - independent of organizations? <comment><USER2> Open source software is one example of collaboration outside of a company</comment>


Ask HN: Fast-forward 5 years, what are 3 reasons why your startup failed? - <AUTHOR> I stumbled upon this question in a casual discussion with friends few days back. While it sent a chill down my spine, it also made me think more about what important things I might be ignoring in my startup journey and what can be the real reason why my startup could fail. My top 3 reasons:
1. Bad (poorly measured) experiments in Growth and Product
2. Not catching up with the pace of the market
3. Not able to build and inspire an A+ team
What are yours? Would love to know what every entrepreneur has got to say. <comment><USER2> If that happens, I think the reasons would probably be:

1\. Choosing to stay self-funded for so long, and not being able to move as fast as competitors due to lack of resources.

2\. Founders run out of energy/drive/passion after such a long go (we've already been at this for a while, mind you)

3\. Not being able to figure out B2B sales well enough.</comment>


Genericons - a free, GPL, flexible icon font for blogs - <AUTHOR> http://genericons.com/ <comment><USER2> I'm not sure GPL makes sense as a license for fonts.</comment>


The Missing Wordpress Plugin - <AUTHOR> http://forrst.com/posts/What_Wordpress_plugin_s_do_you_need-NfW

<comment><USER2> wordpress's rewrite mechanism is a mess and it doesn't help that the person in charge doesn't seem to care.

the most wanted permalink structure causes serious performance issues and extremely useful options are missing.

the rewrite rules are stored as a huge serialized array in a database field which can grow to several megabytes. configuration is only available for posts, the permalink of category archives don't confirm to the permalink of posts in the categories. and unused rewrite rules are stored - even those belonging to features that can be explicitly turned off.

a much better solution would be to store THE permalink of every entity as a fixed string and if any component changes, just add / move the old permalink to the post meta table to support redirects and whatnot.

as far as i can tell, all of this could be done with the current plugin api.

<comment><USER3> The "serious performance issues" you speak of were fixed in core, about 11 days before your post.

See <http://core.trac.wordpress.org/changeset/18541>

<comment><USER2> awesome, thanks for finally doing this :)</comment></comment></comment>


Ghacks cover article about the re-base of Basilisk – what do you think? - <AUTHOR> https://www.ghacks.net/2018/04/29/re-based-basilisk-browser-released <comment><AUTHOR> What i hate most of Ghacks articles about everything Pale Moon team related is that they are constantly taken over by the modern Anti-customization-Firefox trolls which hate everything feature rich and customizable.

I really hope that this time the comments section stays a bit more civilized... as it is disgusting to see that kind of trolls constantly showing their dislike and hate against anything which is not mainstream and not bowing done to the most simple user-base.</comment>


David Simon on Baltimore's Anguish - <AUTHOR> https://www.themarshallproject.org/2015/04/29/david-simon-on-baltimore-s-anguish

<comment><USER2> I don't see the political monoculture mentioned in any analysis about Baltimore, New York, St. Louis, Detroit, etc. These cities have been basically one party rule for fifty years (or more). If the police become too brutal or incentives become perverse, the party is not thrown out of office. If the mayor or council members are shown to be corrupt, the party is not thrown out of office. There's no real accountability.

To be clear, I don't think the problem is unique to big cities. Political monoculture certainly happens in rural areas, but the tragedies out there (even more extreme poverty, lack of opportunity, population decline, meth epidemic) aren't seen as acute for whatever reason. I do think the problem is that, at some level, you can't credibly say "You messed up -- the other party gets a shot at running things" in much (most?) of the country.

To some degree, the problem is the two-party system. If the district is liberal (as is the case in Baltimore), there needs to be at least two credible liberal alternatives. Maybe it's time to consider making room for more parties, for the benefit of local communities if nothing else.

<comment><USER3> If we are going to have this debate, I'd like to hear about large American cities that have been run exclusively by Republicans --not Democrats-- for the last 50-90 years, and then we can compare corruption levels, crime rates, institutional racism, etc. (It could be a bit like comparing East and West Germany before the fall of the Wall. Or North vs South Korea today. Or not.)

edit: for instance, an article in National Review [1] claims the root of the problem is one particular party's domination of these large cities.

[1] [http://www.nationalreview.com/article/417601/riot-plagued- ba...](http://www.nationalreview.com/article/417601/riot-plagued-baltimore- catastrophe-entirely-democratic-partys-own-making-kevin-d)

<comment><USER2> > I'd like to hear about large American cities that have been run exclusively > by Republicans

They don't really exist; the political split in the U.S. is more urban/rural than red state blue state. The big cities in otherwise red Southern states like Texas, Louisiana, and Georgia are thoroughly Democratic (though perhaps in a different flavor than northern Democrats). People that have lived in those states know that's true. People that haven't lived in those states need to travel around the country more.

You can find Republican cities in the U.S., but you'd be looking at medium-to- small cities, depending on where you care to draw the line. And those cities are either fast-growing (newly sizable) or competitive politically. [http://www.theatlantic.com/politics/archive/2012/11/red- stat...](http://www.theatlantic.com/politics/archive/2012/11/red-state-blue- city-how-the-urban-rural-divide-is-splitting-america/265686/)

Like I said above, there are bad symptoms in any political monoculture. But the problems seem to present differently in urban and rural areas for whatever reason. There are huge problems in rural areas to be sure, like I listed above. In especially poor rural areas, drug abuse and the poverty trap is on par with any inner city, if not worse, like I mentioned above.

</comment></comment></comment><comment><USER4> In which you could learn a thing or two about how "policing" works in Baltimore. Or, in which you could learn who the other "thugs" are.

Way too many people across the internet think they can accurately and justifiably levy blame on parents, kids, criminals, communities, rioters, etc., all the while granting massive, unquestioning benefit-of-the-doubt to the police. Decades of brutal and unconstitutional policing in Baltimore is just as much a part of the equation here.

I'd run, too, if I lived in this shit show. I'd riot when the anger, fear, rage, and hate boiled to the surface after yet another man met his _last day on earth_ at the hands of the authorities. I wouldn't tell my kids they have nothing to fear if they just obey the law. I wouldn't tell my spouse they have nothing to fear if they just comply with the police. I wouldn't feel safe and secure when I saw a cop. I wouldn't feel comfortable knowing I "have nothing to hide". I wouldn't judge the guy I see with a rap sheet when I know that rap sheet was built from arrests by cops who get paid overtime for arrests, who aren't subjected to any rigorous accountability, who get to invent "probable cause". I wouldn't sit around smugly thinking those who are victimized by abuses of power "must have deserved it". I certainly wouldn't dare judge with ignorant superiority people who live in a shit-hole where drugs and crime are how one _survives_. I would know the cops can't be trusted--I'd see it every day of my whole life.

And yet few try to understand having to live like that. They judge from white skin on comfortable suburban couches and fancy phones in nice neighborhoods that have not been brutalized by badges for decades.

Understand the way you see and experience life and the world around you has nothing at all to do with the way life is or even _can be_ for anybody else. Understand that your experiences in life do not in any way translate to being _actual, persistent properties of reality everywhere_. Understand life in middle-class white America, and all the privilege that comes with it and protects you, doesn't in any way translate to the existence experienced by others elsewhere. Hell, it might not even translate to the existence of those in your own neighborhood.

Or, you know, don't bother to understand it. That's your choice. But do the nation and the victims of these horrid conditions a solid, and just don't speak about what people who live in areas infested by unaccountable and tyrannical brutal cops should do when another person they know is arrested with a high probability of bogus "probable cause". Or charged with fabricated crimes to serve a political and social agenda. Or beaten and otherwise abused unnecessarily--but, of course, after the officer has yelled the appropriate ass-covering phrases that make all the white people think they couldn't possibly be bullshitting or abusing their power. Or killed. Or all of the above.

Remember the 60s, when white people saw horrific violence on their TVs, and it shocked them out of their decades-long stupor and prompted them to get off their asses, and get into the streets with those who were being brutalized by badges? They didn't sit back and tell themselves the people on the bridge in Selma were asking for it. They didn't say the victims must have deserved it. They didn't excuse the police brutality. It sucks to say it, but that was a turning point moment that legitimized the civil rights struggle in the national consciousness in a way that had not been so before. The brutality was televised, and the people woke up.

In a nation built on and for privilege, shit doesn't change much until those with privilege stand up.

Another man died at the hands of the police. His life was extinguished by something they did. He's never going to draw another breath, while those responsible for his death still breathe. There are people who love him who will never see him again. Never hold him again. Never hug him. Never kiss him. Never pat him on the back. Never hear his thoughts.

Our moral compasses are completely fucked when meaningless, inanimate, material shit being damaged and destroyed ranks as a higher concern more worthy of conversation and cameras than yet another man's life being taken with impunity by those with a badge.

<comment><USER5> America was founded on the rule of law and respect for authority. Rioting and any other violent means are simply inexcusable under any circumstances. We have non-violent means to redress problems with the political and civil leadership. These people in Baltimore should be met with overwhelming (and lethal if necessary) force by the government. If the city is incapable of restoring order, then the national guard needs to be called in to do the job.

<comment><USER6> Surely if America was founded on the rule of law and respect for authority, they wouldn't have committed treason and overthrown the King?

It would seem to me that America was very much founded on the opposite. A lot of the constitution seems to be focussed on limiting the power of law, not limiting the power of the people (the right to bear arms being the clearest example).

<comment><USER5> One of America's great strengths has always been its respect for authority and commitment to law and order. The founders of America were also realists and they knew that governments tend to accrue power when left the opportunity to do so. Having an armed citizenry serves as a protective measure of last resort and was based on the model of Switzerland. The intent is not to allow people to run around shooting people up as a form of protest against lawful government action; but as a means to protect against unlawful government tyranny.

<comment><USER7> > Having an armed citizenry serves as a protective measure of last resort and > was based on the model of Switzerland. The intent is not to allow people to > run around shooting people up as a form of protest against lawful government > action; but as a means to protect against unlawful government tyranny.

From the article:

> It used to be said — correctly — that the patrolman on the beat on any > American police force was the last perfect tyranny. Absent a herd of > reliable witnesses, there were things he could do to deny you your freedom > or kick your ass that were between him, you, and the street. The smartphone > with its small, digital camera, is a revolution in civil liberties.

Unlawful government tyranny, in the form of cops doing whatever they want, is exactly what the riots are about.

</comment></comment></comment></comment></comment><comment><USER8> David Simon on why he created The Wire and set it in Baltimore: [https://www.youtube.com/watch?v=ZYXNdELqCe4](https://www.youtube.com/watch?v=ZYXNdELqCe4)

</comment><comment><USER9> I love David Simon's writing (and "The Wire" is the best thing ever to be on TV, in my opinion), but I was unable to read this article because the secondary navigation ("Popular on Facebook" ... "Q&A", etc) which kept swooping in every time I scrolled up drove me utterly insane. The fact that the actual text was overly large and offset strangely to the right also did not help.

Why do people have to ruin content in this way?!

<comment><USER6> I agree with the first bit, but I use a JS blocker and had no problems reading it as none of those things happened. You should definitely try one if that really bothers you.

</comment></comment><comment><USER10> David Simon is a national treasure. The Wire had lots of scenes on how metrics & incentives screwed up Baltimore city. Here is a great scene talking about metrics/stats from The Wire - [https://www.youtube.com/watch?v=xH_6_8NOfwI](https://www.youtube.com/watch?v=xH_6_8NOfwI)

Article also refers to Martin Malley's ambition to be Maryland's governor that really screwed up the incentives and cooking of the books.

 _" How do you reward cops? Two ways: promotion and cash. That's what rewards a cop. If you want to pay overtime pay for having police fill the jails with loitering arrests or simple drug possession or failure to yield, if you want to spend your municipal treasure rewarding that, well the cop who's going to court 7 or 8 days a month — and court is always overtime pay — you're going to damn near double your salary every month. On the other hand, the guy who actually goes to his post and investigates who's burglarizing the homes, at the end of the month maybe he's made one arrest. It may be the right arrest and one that makes his post safer, but he's going to court one day and he's out in two hours. So you fail to reward the cop who actually does police work. But worse, it's time to make new sergeants or lieutenants, and so you look at the computer and say: Who's doing the most work? And they say, man, this guy had 80 arrests last month, and this other guy's only got one. Who do you think gets made sergeant? And then who trains the next generation of cops in how not to do police work? I've just described for you the culture of the Baltimore police department amid the deluge of the drug war, where actual investigation goes unrewarded and where rounding up bodies for street dealing, drug possession, loitering such – the easiest and most self-evident arrests a cop can make – is nonetheless the path to enlightenment and promotion and some additional pay. That's what the drug war built, and that's what Martin O'Malley affirmed when he sent so much of inner city Baltimore into the police wagons on a regular basis.

"When you say, end the drug war, you mean basically decriminalize or stop enforcing?

Medicalize the problem, decriminalize — I don't need drugs to be declared legal, but if a Baltimore State's Attorney told all his assistant state's attorneys today, from this moment on, we are not signing overtime slips for court pay for possession, for simple loitering in a drug-free zone, for loitering, for failure to obey, we're not signing slips for that: Nobody gets paid for that bullshit, go out and do real police work. If that were to happen, then all at once, the standards for what constitutes a worthy arrest in Baltimore would significantly improve. Take away the actual incentive to do bad or useless police work, which is what the drug war has become._

<comment><USER11> Yeah, legalizing heroin is not going to fix the problem, medicalizing it might cost a lot, and you won't be able to compete with drugs dealers. Users might buy from dealers anyway.

If you want to remove the dealer's profits, you have to compete with drug dealers, but it has to be healthy, you have to treat users and remove the incentive to use drugs, and it's a very tricky thing to do.

I really don't know how to do this, but it boils down to the same problem of unemployment and crime. How do you integrate people into a healthy social model ? Poverty and economic opportunity is still at the root of the problem.

<comment><USER12> At the very least, I feel like not throwing someone in jail for being a drug addict or smalltime dealer would be a good start. Too many people resort to drugs to escape despair (if only temporarily) or poverty (through working the only business that seems to be "hiring" in your town). Addressing the root causes of this is indeed difficult, but you exacerbate the problem when those same people who need solutions are saddled with criminal records for life.</comment></comment></comment>