Keeping your Go modules compatible - <AUTHOR> https://blog.golang.org/module-compatibility <comment><USER2> > When you run into a case where you want to add a method to an existing > interface, you may be able to follow this strategy. Start by creating a new > interface with your new method, or identify an existing interface with the > new method. Next, identify the relevant functions that need to support it, > type check for the second interface, and add code that uses it.

I like this pattern, and I have used it. The issue I have is when I look at the generated godoc, the original interface is in the signature. I don't know the function accepts the new interface as well without either digging into the code or a comment for the function.

<comment><USER3> It seems like this convention invites us to create this sort of issue more times: [https://news.ycombinator.com/item?id=6060351](https://news.ycombinator.com/item?id=6060351)

</comment></comment><comment><USER4> I use Go daily and one of the aspects which is always a challenge is equality checking. From the post,

> There is one subtle way a new field can break user code unexpectedly. If all > the field types in a struct are comparable—meaning values of those types can > be compared with == and != and used as a map key—then the overall struct > type is comparable too. In this case, adding a new field of uncomparable > type will make the overall struct type non-comparable, breaking any code > that compares values of that struct type.

From experience, this is non-trivial to avoid in a long lived codebase.

It's telling that 99% of the codegen tools used in Go, e.g. protobuf, thrift, Gorm, etc. all output an isEqual method of some kind.

<comment><USER5> Anyone who's worked on a large project and code base will appreciate the features proper mature languages like Java or C# offer.

It's ironic that golang was supposedly designed for "programming in the large", but it's just a very bad experience for non-trivial code bases.

<comment><USER6> Java has an _equals()_ method. What features are you thinking of?

<comment><USER7> \- Type safe enumerations

\- Generics (lets see if flyweight design actually makes it)

\- package names that don't depend on source locations

\- binary packages for proper encapsulation and even faster builds

\- both points together allow for components eco-system to thrive

\- more knobs to turn on when performance matters

\- a proper graphical debugging experience

<comment><USER6> I was really thinking about the problem described by GP. But in any case:

 _\- Type safe enumerations \- Generics (lets see if flyweight design actually makes it)_

I'll give you both those. Generics would be the killer feature for me.

 _\- package names that don 't depend on source locations_

Java package structure mirrors the file system, no?

 _\- binary packages for proper encapsulation and even faster builds_

Go package binaries are cached after build. In any case, build speed is rarely an issue for Go.

 _\- both points together allow for components eco-system to thrive_

One of the most impressive thing about Go IMO is the speed at which the ecosystem has grown and is growing.

 _\- more knobs to turn on when performance matters_

I have found it takes a lot longer to reach the need for performance knobs in Go than in Java.

 _\- a proper graphical debugging experience_

Not sure what you mean by "proper" and why it has to be graphical, but VSCode + Golang extension gives me enough insight into what's going on under the covers at debug time, equivalent to eg Eclipse + Java debugger.

Just for the record, I love Java and have been programming in it for over 20 years. It has many great features and the ecosystem is unsurpassed.

Go is a much more practical language though IMHO. The time to value is much shorter. Setting up a module project is one command. Writing & running tests, complete with coverage and performance, is supported out of the box by the basic "go" command. The standard lib is broad and deep. And as mentioned the ecosystem is growing fast.

<comment><USER7> > Java package structure mirrors the file system, no?

No, it mirrors the directory structure, from import location, without any reference to DNS servers or source code repositories.

All in all Go is a Java 1.0, with all plus and minus that it entails.

<comment><USER8> Just want to point out that Go can also be used without dealing with DNS servers and repos in a similar way to Java.

The big difference is you have to place the code in the $GOPATH with the right directory structure and disable mod (GO111MODULE=off)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> there's something that I just don't get about golang modules, I don't know what it is but they don't click with me

it might well be something tacit that golangers learn from each other directly? or otherwise it's so obvious and simple and I just haven't realized?

it feels like it's the kind of thing that just clicks one day possibly after a few years

<comment><USER10> You're not alone. I've been writing go since before 1.0, and can handle modules/packages in _any other language_ fine, yet go's regularly leaves me stumped.

A little while ago we were hitting yet another issue with dependencies related to version pinning at work. I tried to divine what the disparate versions mean, and came up with this flow chart from a legalistic reading of stack overflow issues [1] and the go modules doc [2]:

      has the package opted into go modules (i.e. is there a go.mod?)
        yes
          does the repository use semver?
            yes
              is the major version <= 1?
                yes
                  => normal versioning, e.g. github.com/stretchr/testify v1.3.0
                no
                  => when importing, we need add /vN at the end, e.g., import "github.com/my/mod/v4", and in go.mod it will behave like github.com/my/mod/v4 v4.1.0
            no
              => pseudo-versioning will be used, e.g. github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181
        no
          does the repository use semver?
            yes
              is the major version <= 1?
                yes
                  => pseudo-versioning will be used, e.g. github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181
                no
                  => version will be marked as incompatible, e.g. github.com/zeromq/goczmq v4.1.0+incompatible
            no
              => ???

I still don't know if this is right. But that's not really the point. I think the go authors painted themselves into a corner with such an anemic initial release. Now that they're trying to address shortcomings, the complexity is blowing up to handle the very large/diverse ecosystem. It reminds me a lot of java around 1.4 when they added in generics. In the long-run it was the right move, but man was it painful.

1: [https://stackoverflow.com/a/57372286](https://stackoverflow.com/a/57372286) 2: [https://github.com/golang/go/wiki/Modules](https://github.com/golang/go/wiki/Modules)

<comment><USER11> I packaged a golang project once. I had to independently discover a lot of that.

I'll also add that fetching a golang package was complicated. As I remember, GitHub seemed to be special cased. Other URLs involved an HTTP request with a ?go-get=1 parameter, and then _parsing the returned HTML_ for certain meta tags¹. (I thought only Python was guilty of that sin!) Some URLs I ended up just re-writing, because gopkg.in packages effectively redirect to GitHub in ways that, if abandoned, allow someone else to intercept[1].

And none of this is documented anywhere particularly coherent. Bits here and there, maybe.

(Why not use go itself? Because this platform's package manager wanted to verify that the software was being built from the correct source, by hashing the inputs. It also, then, fetched those inputs, so that there wasn't some form of bait & switch, and there is no network at build time to further prevent silliness. I considered vendoring, but it isn't clear to me how vendoring works with go modules, since it doesn't seem to take into account the module version? / the path layout only allows for a single version.)

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

¹some servers didn't even return the right Content-Type, either, but perhaps that's an implementation bug. But I didn't have a spec to know.

</comment></comment></comment><comment><USER12> What the go team fails to realize is that they haven't actually reduced complexity in their design of go; they've simply MOVED it. And it's been moved in unintuitive ways as they've painted themselves into corners that should have been avoidable with some careful planning.

We now have:

\- magic file names

\- magic directory names

\- magic comments

\- magic env vars

\- API design requires gymnastics and juggling since recursive imports are disallowed

\- A ton of useful code in the standard library remains unlayered and unexposed for no good reason (pprof, for example)

\- Requiring full paths rather than relative imports complicates everything when you're fetching it from a different source location (replace directives and magic ENV vars).

\- Slice implementation means that you need to do double pointer storage to keep track of the same slice from multiple places

\- Creating arrays with a dynamically defined length is horribly overcomplicated

\- Their policy on warnings and instead calling every little thing an error is terrible and wastes a ton of developer time.

\- Lack of runtime const value support is just sloppy.

\- Why do go source files even need a package declaration? It serves no useful purpose since the compiler already knows enough to spit out an error if you get it wrong.

\- Refactoring across packages is nearly impossible to automate because there's no way to declare adherence to an interface.

\- No importing of test code from other test code (which means that the import code in the compiler has increased complexity to enforce this silly rule).

\- Stack overflows are STILL impossible to track down (after a DECADE!) because it only prints the top of the stack, which is useless in such a case.

\- Linting is too opinionated and is all-or-nothing.

\</comment><comment></comment><comment></comment><comment>

I could go on. I really wanted to like go, and many parts of it do actually feel nice. But even after a decade it's a huge mess. I've spent more time writing workarounds for go than for any other language in my 25 year career. Hell, I even modified the damn compiler out of frustration! [1]

[1] [https://github.com/kstenerud/go#the-go-programming- language](https://github.com/kstenerud/go#the-go-programming-language)

<comment><USER13> > \- Why do go source files even need a package declaration? It serves no > useful purpose since the compiler already knows enough to spit out an error > if you get it wrong.

I know about one use for it: package mypackage_test allows you to exclude test code from builds. I agree with the rest of your points though :)

</comment></comment><comment><USER3> Has something changed such that adding an exported field to a struct is now safe in the case of clients who are using struct embedding? Previously: [https://blog.merovius.de/2015/07/29/backwards- compatibility-...](https://blog.merovius.de/2015/07/29/backwards- compatibility-in-go.html)

<comment><USER14> Nothing's changed, and that's still an issue. We didn't address it because the post was long enough, but as Merovius himself says, it's called out in the Go 1 compatibility promise. So the Go standard library doesn't worry about it, and neither should you. It's also extremely rare; I've never seen it in 10 years of Go programming.

</comment></comment><comment><USER15> Reading these blog posts, you get see Go's simplicity start to unravel with modules. Uncomparable structs? Type checking workarounds? You start to wonder if these bandaids would be necessary in a generics world.

For the record, I'm indifferent on the chosen module solution being right or wrong. My ideal module tool is something like npm, but it shows me the impact: diff the module changes, look at my code, and tell me what's impacted by the upgrade. Giving developers more information when upgrading libraries will go a long way towards making "update your libraries" a regular housekeeping task.

<comment><USER16> Gah in every language I want that interface comparison tool, and I keep on being disappointed.

<comment> Ar-Curunir rust-semverver does what you want for Rust, I think?

<comment><USER17> It would if it worked, but every time I've tried using it I've hit some combination of crashes and weird false positives.</comment></comment></comment></comment>


How I Ended Up in Solitary After Calling 911 for Help  - <AUTHOR> https://medium.com/platypus-journal/9f53ef6a1c10

<comment><USER2> [https://news.ycombinator.com/item?id=7231012](https://news.ycombinator.com/item?id=7231012)</comment>


Level 3 technician's misstep causes largest telephone outage ever reported - <AUTHOR> https://www.fiercetelecom.com/telecom/fcc-finally-specifies-cause-2016-level-3-network-outage <comment><USER2> Well, I dunno.

When I worked at the Telco that serves all of Northern Canada - the telco that has the largest operating area of any telco in the world, in fact - we had an outage that took out _everything_ for between 1 and 3 days.

When I say everything, I mean if you picked up your phone you didn't get a dial tone. Or cell phone. Or internet. Even people that still have 2-way radios to use as phones were out of luck.

There is no other provider for every single one of those customers, so not a single person had a single shred of connectivity.

In the larger cities they posted Police and EMT Personnel on street corners in case people needed 911.

That was a rather big outage, caused by a backup generator not starting during a power outage. We were still trying to bring systems back online a week later that had never been shutdown in 20+ years.

<comment><USER3> > _Even people that still have 2-way radios to use as phones were out of luck_

How would a telecom outage impact two-way radios?

<comment><USER4> Two way radios can often connect to the telephone network through a bridge at the radio repeater

<comment><USER2> What he said

</comment></comment></comment></comment><comment><USER5> Oh wow.

> _The technician left empty a field that would normally contain a target > telephone number. The network management software interpreted the empty > field as a 'wildcard,' ..._

Exactly the same type of technical error happened nine years ago at Google!

> _We maintain a list of [malicious] sites through both manual and automated > methods. We periodically update that list and released one such update to > the site this morning. Unfortunately (and here 's the human error), the URL > of '/' was mistakenly checked in as a value to the file and '/' expands to > all URLs._

What it looked like: [https://i.imgur.com/W5ICyVq.png](https://i.imgur.com/W5ICyVq.png), [https://i.imgur.com/LrtLceN.png](https://i.imgur.com/LrtLceN.png)

Source: [https://googleblog.blogspot.com.au/2009/01/this-site-may- har...](https://googleblog.blogspot.com.au/2009/01/this-site-may-harm-your- computer-on.html)

<comment><USER6> This is a painful reminder for those of us who routinely design form-based interfaces to ensure ambiguous fields are explicitly understood by the user before entry or called out during verification of the submission.

<comment><USER7> An "Are you sure?" prompt goes a long way and sometimes takes a _really_ long time to get added, even when it's historically been a problem[0].

Particularly in these kinds of cases -- this is software that is used by very few people at very few companies and at those companies, it's used _very_ rarely. That nobody at Level 3 knew leaving that field blank would cause that issue doesn't surprise me at all. We had management applications for some switch software that we had to run on Windows 98 using ThinkPad laptops[1].

[0] [https://en.wikipedia.org/wiki/Rm_(Unix)#Protection_of_the_fi...](https://en.wikipedia.org/wiki/Rm_\(Unix\)#Protection_of_the_filesystem_root)

[1] I was a Frontier, then Global Crossing and ultimately Level 3 employee for around 17 years. The story about the ThinkPad Laptops is detailed in another comment in this post.

<comment><USER8> We had some remote desktop software that asked "are you sure" about all kinds of things. If you hit logoff/restart/shutdown on a group with nothing selected it'd ask "Are you sure" yes/no and select everything in the group and perform said action. I pushed for ages to get that "default do everything" behaviour removed entirely.

If you think "are you sure" is a good solution, you may have problems much further back in the applications flow, any it may not be helping even if you do add it.

<comment><USER6> You bring up a fair point.

Excessive prompts are equally dangerous. "Click fatigue" is a real thing and you can quickly shift from a state of "let me know when something differs from the expectations" to "why are you making me agree to everything?", which means more often than not the user just clicks blindly instead of reading the prompt for context of why this time the prompt is different.

I'm a proponent of appropriately prompting the user when their submissions, if processed, would result in ambiguous / destructive and not-easily-reversible outcomes.

</comment></comment></comment></comment></comment><comment><USER9> This sounds more like a failed ui in the managing software than the technicians fault if noone there knew what that empty field would do

<comment><USER7> I commented more extensively in the root of the post, but you can't even begin to imagine.

Think about every script you've ever written for "some thing at home" and how you only cared that it worked for the very narrow, specific, circumstances you were looking for. Maybe you left out error handling and just let it crash when you failed to put in the right parameter. Who cares? It's just a script for your one, lonely, workstation/server.

That's about the quality we're talking about. The companies that make these switches sell them to, maybe, five customers[0]. Software upgrades? Sure, if you replace that $30,000 card with the new version. Having trouble with the software? A support contract can be purchased for a similarly high fee[1]. A company producing this equipment doesn't put a lot of money into QA. In security, there was a general fear about these programs. It was so concerning that the management interfaces to the equipment was on "as close to air-gapped as you can be without being air-gapped" networks with the kinds of logging, auditing and the likes that you'd expect for a network holding government classified information[2].

[0] So few customers, in fact, that you can call them up with a serial number and find out who the purchaser is. I know this first hand due to someone propping the door to the switch site open resulting in, I think, 5 of what I was told were $30,000 a-piece cards being stolen. I was told they were effectively worthless to the thief, though, because nobody would buy them second hand in that manner and the moment they were offered for sale, if someone realized what they were, the thief would be caught.

[1] To be fair, I know of one specific circumstance where the company only offered paid support but that was mainly because I didn't work on that team; I'd speculate that all of them functioned this way.

[2] Well, maybe what you'd expect in an _ideal_ world, anyway.

<comment><USER10> > Think about every script you've ever written for "some thing at home" and > how you only cared that it worked for the very narrow, specific, > circumstances you were looking for. Maybe you left out error handling and > just let it crash when you failed to put in the right parameter. Who cares? > It's just a script for your one, lonely, workstation/server.

I find seeing this mentioned oddly comforting. I write my worst software for myself. Zero validation, very little error handling, unchecked assumptions all over the code.

At least I'm not the only one out there with a barely-stable home lab setup because of shoddy programming.

<comment><USER11> This is the difference between tinkering, experimentation and engineering. All of these have their proper place. There is no shame in having a shoddy piece of code as long as it is within a lab environment. Trouble usually starts when this kind of code changes hands and finds serious users.

</comment></comment></comment></comment><comment><USER12> > The FCC report said Level 3 subsequently adopted measures to prevent a > recurrence of the problem - measures in accord with best practices.

What is the "Best practices" to prevent someone from leaving a blank field, since this field was interpreted as a "*" and blocked everyone ?

Would a "send an e-mail telling to never leave this field blank again" enought ?

<comment><USER13> I would hope that they actually added input validation to prevent this from occurring in the future.

But it wouldn't surprise me if someone managed to consider sending a "don't do this" email with the high-priority flag set as a "best practice"...

</comment></comment><comment><USER7> I was an employee of Level 3 for a very long time (in IT, various roles -- most of my career was there). A small disclaimer: I left before this incident happened (about a year prior) and have spoken with nobody about it, so I have no insider knowledge specific to this. I was also an employee of Global Crossing that was acquired by Level 3 and this incident appears to have happened on the Level 3 side of the network (though it's not immediately clear; GC operated a SONET network and it's entirely possible it was from there).

The article and at least one other commenter mentioned this being a UI problem, and all I can say is "bingo". They didn't identify the vendor, but the article called out Cisco. I am a little skeptical of that, personally[0]. I lean toward it being something else, mainly because of the statement that followed "no one at Level 3 was aware of the consequences of leaving that field empty". We had a _lot_ of _very_ knowledgeable Cisco folks there. There are a few folks that I knew personally that were probably among the top folks on administering that equipment outside of Cisco. In addition, if a problem like this arose, they're accessible and helpful.

It was almost certainly one of the many, many, outdated software applications that make up the vast array of management interfaces into the equipment. I worked inside one of the phone switches (technically, one of the test switches). About a year prior to my leaving, the room next to my desk was filled floor to ceiling with cards that had been there on the day I started. I was told these cards ran along the lines of $30,000 a piece. If you wanted to upgrade the software, you had to replace the card. So we had machines in our operations center that were on isolated networks running Windows 98 in order to run the executable required to configure the switches[1]. We had devices made by Pirelli[3] that had similarly awful software. I knew of about 5 different devices with 5 different problem management tools but there were several more. And there were the handful of devices that were well known as ones "you don't even breathe on" (and I've never heard those words said about the Cisco products ... not that people spoke terribly highly of them, but never quite that negatively).

Telecom went through a _really_ bad time in the early 2000s. At Global Crossing, every 6 months about 10% of the staff was laid off ... this happened for 10 years. Hardware didn't get upgraded, and therefore software didn't get upgraded. Sofware support contracts and maintenance were allowed to lapse. The quality of the software -- since its audience was a small handful of companies, many of which in the same financial state as Global Crossing -- was awful. After that many layoffs, the one or two guys who knew the myriad of corner cases involved in operating some of the management interfaces were on to other jobs at other companies, or retired. That this sort of thing didn't happen somewhat regularly is still surprising to me to this day.

At the time that I left, Level 3 was doing better from a financial standpoint and money was being invested in modernising a lot of these problems, but it's a _huge_ network with many switch sites[4] in any major city that Level 3 terminated wires. Each of those sites had an array of equipment, some of it common, some of it from companies that went under shortly after the dot-com bust.

[0] It could easily have been a Cisco product, but there are so many -- far worse -- products out there that nobody outside of telecom has ever dealt with. I lean more toward that.

[1] Before someone says "Why didn't you virtualize them?". That was done for some machines with both running inside the isolated network, but it became more of a hassle than it was worth since these machines had to occasionally connect to the devices via serial port. The _very_ buggy software included a very temperamental driver that only worked with a few models of older PCs and IBM (not Lenovo) Thinkpad laptop serial ports ... and only then if one of the wires was cut on the cable.

[2] Earlier than the style recently featured in a post about enthusiasts for the brand upgrading the motherboards.

[3] [https://www.pirelli.com/global/en- ww/homepage](https://www.pirelli.com/global/en-ww/homepage) ... Yes, that Pirelli. There's crossover between the rubber tires and fiber optics, apparently ... that was news to me. And they had some of the _worst_ software I've ever encountered.

[4] We had, I think, 4 in Detroit. Some are not in terribly convenient locations, either. One in the area required passing an expensive OSHA certification, wearing steel toed boots and a hard hat if you wished to access it due to its proximity to a rail yard. I'd been there once and couldn't imagine the need for the restrictions.

<comment><USER5> Three things.

1\. Thanks for the awesome TIL

2\. Rumors fly about old versions of Windows, OS/2, etc still being actively used. I like to pin down and file away usage/year correlations, where possible. What sort of timeframe (roughly) was Win98 in active use here?

3\. Regarding [1], I have an ancient _[runs downstars to check]_ Compaq Prosignia 300 server here and I discovered in the (DR-DOS based) BIOS at one point that the serial port's electrical behavior can be customized between being edge triggered or level triggered. (Mildly interesting machine. Insists it has 83MB of RAM. Has the FOOF bug. Its SCSI disks make nice noises when they spin up.) Maybe this is related.

<comment><USER7> 1\. You're kindly welcome.

2\. The last I had heard about that machine, specifically, was around 2011 and I'm fairly certain it was there when they eliminated the NOC in Detroit which was around 2013, if memory serves. The thing is, I would be surprised if it was actually gone.

3\. Nice - I was well known was the guy who could fix anything over at Level 3 around the IT side of the house. Around 2014, I was asked to take a look at an ancient desktop PC that had been sitting in the server room at another building. It had failed weeks prior, had a modem plugged in and was discovered to have been used for a billing purpose that was apparently costing well into the 6 figures. The VP asked me if I would spare a moment to see if I could figure it out, despite it having _nothing_ to do with my normal duties. It was dusty as heck and wouldn't boot -- nobody on the server team could get it functioning. I noticed a home-made label stuck to the top and recognized it as drive geometry. The little battery had failed, probably 15 years prior, and someone put a label on it figuring that people would understand exactly what it was. I was the only one who remembered what that was. When I made it boot, people stared at me like I was a magician. :)

<comment><USER5> Interesting... I think you just helped me figure something (admittedly rather simple) out. Quite trivial (not nearly as interesting as your experience), but mildly related.

Many years ago I happened to find an ancient-looking machine buried in a spare room at a church. I think the room was occasionally used as an ad-hoc creche area.

After finally locating an IEC cable for it and finally getting it to boot, I found that it was of the opinion it didn't have any HDDs attached.

So, I went into the BIOS, and - yes! _Just_ old enough to require manual CHS configuration, but _juuust_ new enough to have a manual autodetect routine!

Turned out it was a cute 25MHz-or-so (IIRC) 486 with something like a 200MB HDD. Had some demos on it that I've long forgotten the names of. Was fun to find that machine.

Despite being so trivial that no conveniently-placed homemade rescue labels were needed, the people there also wondered how I'd figured out what was wrong with it as well.

(Honestly, I really want to work somewhere everybody's still using ancient equipment. Partly because it's what I've been exposed to for most of my life and I really like it, and partly because I'm still yet to have the chance to acclimatize to newer stuff and almost all of the small bit of knowledge I've accumulated covers older tech.)

Regarding what you helped me figure out, I've been wondering for years why that BIOS decided it didn't have a HDD. Initially I thought the HDD was on the way out and decided not to show up one day, and the BIOS happily deregistered it [after someone saw an indecipherable POST error and hit F1 or whatever]. Now I wonder if maybe the rechargeable battery went flat after the machine was left off for ages, then someone turned it on, hit F1 to accept the "bad CRC" error (I never saw one) and didn't know to do an autodetect for the HDD. It's possible. I know some BIOSes remember "time wasn't re-set after fail"; I never saw a time POST error, and don't remember if I checked the clock to see if it was wrong.

</comment></comment></comment></comment><comment><USER14> This is just a failure in change management. They detected the issue in 4 minutes but it took over an hour and a half to mitigate?

<comment><USER15> Four minutes to realize SHTF, but a while longer to figure out why:

> _Level 3 was aware it had a problem within four minutes, the FCC report > said. The problem was difficult to diagnose, however, because no one at > Level 3 was aware of the consequences of leaving that particular field > empty, nor had anyone at the company previously seen the system behave the > way it was behaving._

That is, they didn't know that leaving that field blank is _what caused_ the S to HTF.

<comment><USER16> I can imagine it once they found out the cause.

"Really? That was it? Are you fucking serious?"

<comment><USER17> sounds like most of the manufacturing issues I have been involved in...

'why did the machine break?'

'well the spec says to clean it using chemical X but the cabinet with X is 75 feet away and the cabinet with chemical Y is next to the machine so they used Y. They use X and Y interchangeably on other machine so the technicians (note: high-school grads, great guys but not chemists) thought it was interchangeable on this machine.'

'well why aren't they interchangeable on this machine'

'Y reacts with the glue used to assemble the machine, which was a change in the newer versions because of EPA regulations, so doing this weekly maintenance task for 8 years was finally enough to degrade the glue'

'so why was chemical Y stored near here?'

'because X has to be kept so many feet from Y. Last year in the efficiency audit we found techs had to walk to far on average to get X so we moved the X cabinet, which resulted in us moving Y to here.'

'has Y been used on any of the other machines when it shouldn't have been?'

'we don't know and we aren't sure how to check'

Fault trees usually make for really interesting reading.

<comment><USER5> Nice.

I'm guessing I can't read the source to this particular fault tree, but I wonder where I might find others. Preferably without digging through e.g. troves of court documents and the like.

<comment><USER17> [https://www.ntsb.gov/investigations/AccidentReports/Pages/Ac...](https://www.ntsb.gov/investigations/AccidentReports/Pages/AccidentReports.aspx)

<comment><USER5> Ooh, interesting. Thanks!

And I'd somehow gotten in my head the NTSB were only aviation, probably from old TV shows. TIL about their actual name.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> I wouldn't consider that to be a technicians misstep. That's poor software design.

<comment><USER19> Yeah, but nobody ever seems to throw the UX designers under the bus, right?

<comment><USER6> TLDR; Ill-conceived design is only part of the problem.

——

You are assuming the entry form was put together with the assistance of a UX designer.

In my experience, back office or configuration software rarely is seen as important enough by the Powers-That-Be to justify all the "extra research and design effort" required.

Usually work like that is tossed over to whichever mid-level software engineer has an extra cycle or two during the sprint.

This is not to imply that software engineers are always bad at UX. In fact, most engineers I've worked closely with care a lot about the end users' experiences, however, when push comes to shove, their leaders (or the overseeing Product teams they are accountable to) push for rapid delivery of features to reach market parity, rather than spending the extra few days to formally validate the right design decisions were made and if the implementation of those designs were solidly understandable.

Going back to your original comment: We should, as an industry, hold designers accountable if their decisions lead to detrimental consequences, especially ones which could be anticipated, like this one.

However, we should also recognize this is never the failure of solely the designer, but rather indicators of systematic issues of the extended team.

A poorly designed feature/function which makes it way through...

      * pre-dev stakeholder reviews
      * development and implementation
      * quality assurance
      * acceptance testing

...before release has been vetted and signed-off by enough people to ensure everyone is complicit.

It is a failure of culture and leadership if no one along the chain had been comfortable or able to raise a flag if they disagreed or foresaw a problem.

Edit: Fixed formatting and this ended up to be longer than I expected when I stared typing. Also, typos.

<comment><USER19> 100% agree with everything you say here.

I strongly recommend:

[https://deardesignstudent.com/a-designers-code-of- ethics-f4a...](https://deardesignstudent.com/a-designers-code-of- ethics-f4a88aca9e95)

and:

[https://medium.com/@monteiro/designs-lost-generation- ac72895...](https://medium.com/@monteiro/designs-lost-generation-ac7289549017)

from someone who's done _way_ more thinking about these sorts of issues than I have...

</comment></comment></comment></comment><comment><USER20> I always thought that it's a very strange default in SQL: if you don't specify which rows you want, the operation affects everything.

<comment><USER21> It's like one of the most common user errors with cisco cli. When you want to add an interface to a vlan you would type:

      switchport trunk allowed vlan add $vlan

But if you by accident omit add keyword you would replace all interface vlans with $vlan

      switchport trunk allowed vlan $vlan

<comment><USER22> ...and, if especially unlucky, that would be the trunk you're using to connect to that switch.

<comment><USER23> Which is why you usually have a seperate OOB network for logging into switches and routers.

If it's very mission critical, even an entire seperate cable infrastructure for OOB is not uncommon.

</comment></comment></comment></comment><comment><USER24> that is an impressive flaw. why would you ever assume a wild card across all parts of a phone number? I get a lot of spam calls where there area code + prefix matches my number and I just ignore them.

I have a hard time justifying even wildcard values for the last four digits in whole, partial wild card yes to get a PBX or such

<comment><USER25> I rarely answer calls from numbers I don't recognize anymore, unless it is to simply fuck with the scammer and waste their time.

<comment><USER26> I never even answer to mess with them because then they know it's a good number.

<comment><USER27> The sheer fact that it routed to a line that rang is enough for them to know it's a good number. Their auto-dialer could be configured such that answering it increased the cadence of calls or something such as that. But the absence of the call being routed to a not-in-service/no-longer-available response is enough of a signal for them to know it's a good number.

Source: I did data management for a company that performed a high volume of outbound business dials (not consumer lines). At one point we evaluated productizing our non-valid numbers list, so that businesses could do things like flag when their main contact at an account was no longer at the company, triggering an automatic alert to follow up with the remaining contacts at the company and re-establish a relationship. CNAM lookup services like Twilio Lookup[1] don't do so well at this use case, since companies tend to reserve a full block of phone numbers (always showing as active when doing a CNAM lookup), but when an employee leaves their line will temporarily be de- activated internally until it's re-assigned to a new employee.

[1] [https://www.twilio.com/lookup](https://www.twilio.com/lookup)

</comment></comment></comment></comment><comment><USER28> Title seems misleading - a poorly chosen default behavior caused the outage</comment>


15-Year-Old Finds Flaw in Ledger Crypto Wallet - <AUTHOR> https://krebsonsecurity.com/2018/03/15-year-old-finds-flaw-in-ledger-crypto-wallet/ <comment><USER2> For those concered about any security issues, it might be worth your time to look at the methods outlined in glacier protocol[0].

0: [https://www.bitcoinarmory.com/downloads/glacier- protocol.pdf](https://www.bitcoinarmory.com/downloads/glacier-protocol.pdf)</comment>


Work on light-triggered genes overturns old assumptions about how memories form - <AUTHOR> https://www.quantamagazine.org/light-triggered-genes-reveal-the-hidden-workings-of-memory-20171214/ <comment><USER2> The Deisseroth lab has a materials list of the proteins utilized to do these neural optogenetic studies [1].

And if you want to play with those proteins yourself or design your own, you can use our software to explore others' designs and modify them as you'd like [2]. (see specifically those proteins with "light sensitivity" like ChETA, AsLov, ArchT, Jaws, SwiChR, or ReaChR).

The optogenetic tools are very creative synthetic proteins using domains from within the human genome, as well as from many other sources to create light- sensitive ion channels and neural activity where there was none before.

Here's the mouse's brain being controlled by blue light by means of the synthetic ChR2 protein [3].

[1] [https://web.stanford.edu/group/dlab/optogenetics/sequence_in...](https://web.stanford.edu/group/dlab/optogenetics/sequence_info.html)

[2] [https://serotiny.bio/pinecone/](https://serotiny.bio/pinecone/)

[3] [https://www.youtube.com/watch?v=v7uRFVR9BPU](https://www.youtube.com/watch?v=v7uRFVR9BPU)

</comment><comment><USER3> So basically previous thinking was that memory formation and recall used the same nueral circuit.

This research shows that there is a heavy and slow write path and a secondary read path that is quick. This affects response time for memory recall.

Reminds me of database design.

<comment><USER4> If your implicit model for the brain is that "it's a computer", it's moderately unsurprising when your results show computer like behavior.

I think this is useful and groundbreaking research, but when articles use words like "neural circuit" it frustrates me. Circuit is a word with a specific meaning, and to talk about neural circuits seems to be projecting an implicit model that we don't really have justification for. Also the imprecision of the term "memory", in the sense of "this is where a memory is stored" seems also to overstate what is being measured, which is of course, behavior in response to stimuli. That is related to memory in the broad sense, but is it a memory? Is it even reasonable to think of memories as distinct and discrete things?

<comment><USER5> The term "circuit" is used in neuroscience all of the place.</comment></comment></comment>


He created a Wikipedia article per day for a year, including on his wedding day - <AUTHOR> https://blog.wikimedia.org/2017/09/07/pranayraj-wikiyear-challenge/ <comment><USER2> Amazing, apart from obvious benefits of being Wikipedia article it's necessary to note that it was written in one of the oldest regional Indian language - Telugu; so it will serve as good medium for language preservation as well.

<comment><USER3> What would make one regional language older than another one?

<comment><USER4> I think there are a couple of ways to prove this. Archeological records of say, inscriptions in one language would help. If an inscription is older than any inscription in another language, it's possibly older. Another way would be linguistic analysis that demonstrates that one language is derived from another. For example, in India many languages are influenced by Sanskrit so Sanskrit is probably older than all of them, with a few exceptions like Tamil, which show much less influence.

In India this is a pretty contentious issue. People like to claim that they're a part of a much older tradition and that makes their culture better. This is related to the claim by people who speak more widely spoken languages that these languages should replace the older, less popular languages - for example "why can't you Tamil speakers learn to speak Hindi?"

<comment><USER3> Two regional Indian languages spoken today are, by necessity, equally old. It's not so common for new languages to form.

> in India many languages are influenced by Sanskrit so Sanskrit is probably > older than all of them

Sanskrit is older than modern languages in the sense that it is from a premodern period. That doesn't apply to living languages. We can say that Latin is an older form of Portuguese; it is nonsensical to say that Portuguese is older than Spanish. They're both Latin.

Spanish has a noticeable amount of influence from Arabic, since Arabic speakers conquered the south of Spain and ruled there for a while. I don't see how this is evidence that Arabic is an older language than Spanish is, though.

<comment><USER4> No, I don't think so. If people have been speaking Language A for 2 millennia, it's 2 millennia old. If they've been speaking Language B for 15 centuries, it's 15 centuries old. Just because A and B are both spoken today doesn't make them equally old. That's as absurd as saying you and I are both alive today so we must be the same age.

It's interesting that you mention Spain. Are you familiar with the Basque language? It has almost no influence from the Romance languages spoken in all areas surrounding Basque country like French and Spanish. It's the last descendant of the pre-Indo-European languages spoken in Western Europe. Would you claim that Basque and Spanish are equally old?

Influence doesn't imply that the influenced language is younger. A language being entirely derived from another, like Hindi from Sanskrit and the Romance languages from Latin, does imply that they're younger than Sanskrit and Latin.

<comment><USER3> > Would you claim that Basque and Spanish are equally old?

Think. How could it possibly be otherwise?

> If people have been speaking Language A for 2 millennia, it's 2 millennia > old. If they've been speaking Language B for 15 centuries, it's 15 centuries > old. Just because A and B are both spoken today doesn't make them equally > old.

But you just made that up. As has already been pointed out, _all modern languages_ have been spoken for exactly the same period of time, with a few rare exceptions. The fact that two languages are both spoken today is sufficient to conclude that they are equally old, unless you happen to know exactly when one of them originated.

<comment><USER4> Ah, I think I'm beginning to understand what you're saying. So Spanish might have have evolved from Vulgar Latin after the Romans brought it to the Iberian peninsula in 210BC, but in your eyes, its the same age as Latin itself. So although the Romans conquered Gaul (France) in 50BC, beginning the evolution of French, you reckon that French and Spanish are the same age.

Let me know if I've understood you correctly. If I have, then I think that's a perfectly valid way of looking at it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> It may not necessarily mean a new original article every day. A huge number of articles are simple translations of the english version (or vice versa). Which doesn't make them any less useful. But it makes it easier to produce a large number.

<comment><USER6> And this btw where a lot of people could contribute - just translating a good article into an under-represented language (or, alternatively, an article unique to some language into more languages) would be much easier for an unexperienced contributor than writing a good one from scratch, and the impact is pretty much as large.

</comment></comment><comment><USER7> How many were immediately deleted citing bureaucratic reasons?

<comment><USER8> Seriously right? smh. The frustration from that is where my HN username comes from if anyone is wondering...To this day there's no real alternative encyclopedia that is a legit competitor to Wikipedia unfortunately.

<comment><USER9> Care to elaborate what's the problem? I'm a happy end user and I don't notice this at all.

<comment><USER8> Have you ever tried to make a page? Like genuinely tried to make a page? Not spammed them with bs. I am not bitter because I couldn't spam them with low quality nonsense. Just the opposite actually, I am a longtime Wikipedia editor. I love the site to be completely upfront (contrary to my username), but their notability guidelines is mind bogglingly frustrating. They've deleted pages I've tried to make for local ice cream shops, ma and pa stores that have real stories (and real citations!), and local investors/entrepreneurs who might not be as famous as Mark Zuckerberg but are notable. It's maddening when you're work gets deleted. I've given up making newer pages and let the higher ups do it and just improve the pages once they are fairly mature. There are no real alternatives to Wikipedia with the same altruistic base vision unfortunately. The only notable sites are RationalWiki, Everipedia, InfoGalactic, and Wikia (if you can really even count that), but all of these are a mere fraction of a fraction as big and reputable as Wikipedia, so back to them I keep going (and back to deleting my articles they continue to do).

<comment><USER10> Even a page [1] made by Jimmy Wales himself was deleted 22 minutes after creation [2]. It was later undeleted and nominated for deletion again, sparking a rather lengthy debate [3].

[1] [https://en.wikipedia.org/wiki/Mzoli's](https://en.wikipedia.org/wiki/Mzoli's) [2] [https://www.quora.com/Has-any-article-created-by-Jimmy- Wales...](https://www.quora.com/Has-any-article-created-by-Jimmy-Wales-on- Wikipedia-ever-been-deleted-or-been-nominated-for-deletion) [3] [https://en.wikipedia.org/w/index.php?title=Wikipedia:Article...](https://en.wikipedia.org/w/index.php?title=Wikipedia:Articles_for_deletion/Mzoli%27s_Meats&oldid=161854477)

</comment></comment></comment></comment></comment><comment><USER11> What is the benefit of preserving rarely-spoken languages?

<comment><USER12> It is not a rare language as it is spoken by more than 72 million people[1]

Yet, there are languages that are in decline, because the population has dispersed or has been assimilated into other cultures. Some have less than 100 speakers, some are extinct. These languages are not just only tools for communication. They have evolved along with their speakers and thus reflect their culture and history.

Just as examining the DNA of a species can shed light on where it originated from, its habitat, challenges it evolved against and so on, so can the morphological analysis of the language text and word etymologies, enable one to map out invasions and associations with different cultures, periods of famine and plenty, the important aspects of the culture etc. For example, Eskimos have numerous words for snow because their lives depend on nowing the nuances of different types of snow and adapting to it. The movement of people in Central Asia, thousands of years ago, can be deduced from the tree of languages that have branched out from the original settlers. I will try to add references soon.

Languages are a part of history, a part of human culture, a part of us. Death of a language is death of a civilization, a way of life (though the people themselves may live on). Preserving the vestiges of a dying language is a noble act in service of the human civilization, future and past.

[1] [https://en.m.wikipedia.org/wiki/Telugu_language](https://en.m.wikipedia.org/wiki/Telugu_language)

Edit:fixed typo

<comment><USER13> I apologize if I misunderstood your post, but I feel as though you still did not answer the parent's question. (And I'm aware Telugu is not a dead language, but I ask following questions in general)

What is the tangible benefit (in excess of the time investment) of dead languages?

And this may be a little naive but, it is nice to preserve human history in its original format, but how can that help the average person?

</comment></comment></comment><comment><USER14> Yeah, I tried to contribute to Wikipedia and I almost died.

<comment><USER14> I did actually. I tried to commit suicide.

</comment></comment><comment><USER15> 15 minutes of fame acquired</comment>


The Oatmeal + Indiegogo + 20,000 people = Gosh Darn Tesla Museum (Infographic) - <AUTHOR> http://www.indiegogo.com/blog/2012/08/the-oatmeal-indiegogo-20000-people-gosh-darn-tesla-museum-infographic.html <comment><USER2> It's exciting to see things funded like this. Hopefully we'll get some private space exploration this way!</comment>


S.F. startup looks to unused commercial space for housing crisis fix - <AUTHOR> https://www.bizjournals.com/sanfrancisco/news/2017/11/17/san-francisco-group-housing-crisis-starcity.html <comment><USER2> I was interested to see how they get around zoning laws for this, but the article is paywalled.</comment>


Eugene Debs Was Jailed for Speaking Out Against WWI, 100 Years Ago This Week - <AUTHOR> https://www.smithsonianmag.com/history/fiery-socialist-challenged-nations-role-wwi-180969386/?no-ist <comment><USER2>
       "The working class have never yet had a voice in declaring
       war," Debs declared. "If war is right, let it be declared
       by the people – you, who have your lives to lose."

       Those were dangerous words in June 1918.

They still are. Little has changed in the past 100 years. The war is still declared by the rich, and the poor dies, on both sides.

<comment><USER3> War is a highly profitable enterprise - many of the industrial giants of the 20th century were built off the back of armaments, supplies (clothing and rations), and finance.

As long as war remains wildly profitable, war will continue - and war always has been profitable, and likely always will be - right up until the point that there's nothing left, and the profiteers realise they can't eat a number in a ledger.

<comment><USER4> > War is a highly profitable enterprise

No, this is a relatively _new_ phenomenon that arose after WWI, when warfare became highly industrialized and too costly to fight personally for the rich.

During WWI, the aristocracy led from the _front_ , as was their traditional calling, and they were mowed down in droves just like the most common soldier.

For the British, an entire generation of their sons were killed at Marne, Verdun, the Somme, Ypres, and other large battles, and the effect was stark:

 _At the outset of the 1870 's, the British aristocracy could rightly consider themselves the most fortunate people on earth: they held the lion's share of land, wealth, and power in the world's greatest empire. By the end of the 1930's they had lost not only a generation of sons in the First World War, but also much of their prosperity, prestige and political significance._ [1]

This largely held true for the Austro-Hungarian elite (they were decimated and the empire was torn apart), the Germans, and every other participant in the fight.

Note that historically, _European aristocrats were military elites_ and were descended from the knightly class. The whole reason they were a cut above the population was because they would fight and take the danger first. The realization after WWI that war was simply a number's game doomed the legitimacy of their leadership in all countries.

[1] [https://www.goodreads.com/book/show/750411.The_Decline_and_F...](https://www.goodreads.com/book/show/750411.The_Decline_and_Fall_of_the_British_Aristocracy)

<comment><USER5> I don't see how your post contradicts madaxe_again's. Are you saying those elites didn't profit from the pre-WWI wars?

Yes, the early 20th century was a turning point, but it only changed _who_ was profiting.

<comment><USER4> Yes, the vast majority those elites did not profit, either in an economic (they mostly owned land, not corporations) nor more important (they / their sons were dead) sense; something like 1 in 4 young men were killed.

Even at the turn of the century, the foundation of the wealth of the British aristocracy rested on ownership of land, agriculture, and control of the Empire. The Great War disrupted all three greatly.

It was mainly the merchant and upper middle class that owned stocks, ran businesses, and profited from the war, with a tiny fraction of aristocrats benefiting.

Most of the rest saw the value of their land go towards zero, their manors used for wartime purposes while their servants were conscripted away, their sons killed on the field of battle, and confiscatory tax rates imposed to help fund the war effort.

This pattern was repeated again in WW2.

There's a reason _Downton Abbey_ is set on the eve of WW1 and goes into the interwar period — that's when the British aristocracy was systematically taken apart piece by piece.

Common people largely supported monarchical, aristocratic governments before WW1. One reason was because their elites that _actually_ put their money (and their lives) on the line for their nation... although sometimes with disastrous consequences.

Note that historically, the world wars were when wealth inequality _dropped_ the most quickly. The US raised marginal tax rates to 90% during WW2, and most wealth was real assets, which obviously suffered greatly all throughout Europe. In a total war, everyone can give up their lives, but the wealthy can _also_ lose their wealth.

<comment><USER5> I don't think you read my post carefully; I wrote "pre-WW1". I understand they did not profit from WW1 itself.

You wrote that wars being a profitable enterprise is a relatively new phenomenon that arose after WW1. What I'm saying is that pre-WW1 wars were already a profitable enterprise (for that aristocracy - exactly in terms of extra land, etc), and that WW1 only changed _who_ profited from them.

</comment></comment></comment></comment></comment></comment><comment><USER6> This was one of a clutch of related cases before the Supreme Court that gave us the pro-censorship cliché about "shouting fire in a theater."[1]

The Espionage Act that they were convicted under is, of course, still on the books, and now primarily used against whistleblowers and leakers.

[1]: [https://www.popehat.com/2012/09/19/three-generations-of-a- ha...](https://www.popehat.com/2012/09/19/three-generations-of-a-hackneyed- apologia-for-censorship-are-enough/)

<comment><USER7> > now primarily used against whistleblowers and leakers.

It's primarily used against leakers. Throwing "whistleblowers" in there makes the statement misleading, since none of the leakers the Obama administration prosecuted under that act were whistleblowers.

The controversy was that some of the leakers prosecuted were _journalists_ , not whistleblowers.

<comment><USER8> Here's a whistleblower who was prosecuted by the Obama administration: Thomas Drake, who revealed massive overspending and incompetence within the NSA. He was charged under the Espionage Act and the prosecution wanted to give him 35 years in prison; he ultimately plead guilty to "exceeding authorized access to a computer."

[https://www.wired.com/2011/06/drake-pleads- guilty/](https://www.wired.com/2011/06/drake-pleads-guilty/)

</comment></comment></comment><comment><USER9> This is more about Woodrow Wilson, than Debs. Wilson, like many progressives, thought that you should never let things like the constitution get in the way of doing "good".

His version of "good" was that he was a massive racist. Among other things, he resegregated the federal government, ending the careers of many who were not white.

He also did not like freedom of speech or the press. He prevented magazines and newspapers he disagreed with from going through the mail. Nice piece of work.

<comment><USER10> Woodrow Wilson helped start the 20th century version of the Klu Klux Klan and re instituted segregation in the federal government. That does not sound very progressive, Helen Keller was his contemporary and she was against those things and for Eugene Debs and workers' rights and women's rights.

<comment><USER11> Yes, those parts weren't very progressive. Wilsonian Progressive reform, which is one of the things he's most famous for (and creating the League of Nations) was pretty progressive, though. It's why he's historically known as a progressive.

</comment></comment></comment><comment><USER12> I didn't know we had anti-sedition laws during WW1. Another reason not to like that notorious racist Woodrow Wilson. I half expect them to come back, and I'm not being sarcastic.

I worry about my own teenage son getting drafted for a pointless war. It seems we couldn't be trying harder to repeat the actions that lead up to the depression and 1930s pre-war any better. Replace Japan with China, maybe Germany with Russia and you can start arguing that we don't need trade with these countries. Destructive tariffs, breaking trade connections that should have been reducing the appeal for conflict.

</comment><comment><USER13> For some color, watch Mark Ruffalo read Eugene Debs: [https://www.youtube.com/watch?v=zuGp-0G1p4M](https://www.youtube.com/watch?v=zuGp-0G1p4M)

<comment><USER14> Or this version, read by Bernie Sanders: [https://www.youtube.com/watch?v=PvMu70olQtU](https://www.youtube.com/watch?v=PvMu70olQtU)

<comment><USER15> This is far too leftist for HN.

<comment><USER16> I can only pray that posts like this one will slowly raise class consciousness in the HN crowd.

</comment></comment></comment></comment><comment><AUTHOR> Bit of a meta comment: how often do HN mods typically change post titles? I've noticed posts I've submitted which have their title's changed (sometimes for good reason), have the change made after garnering the majority of their upvotes.

</comment><comment><USER17> "Land of the free"

<comment><USER15> Unless you speak out against capitalism, then you get shot in the head. MLK also shot for this reason, see: Poor Peoples Campaign.

<comment><USER16> I don't disagree in the sentiment but I think it is ahistorical to say that MLK was shot for speaking against capitalism.

</comment></comment></comment><comment><USER18> The era most similar to ours could arguably well be the pre-WW1 era, with several imperialist powers vying for larger markets and better raw material supplies, without any real threat of a socialist revolution, which at the core had the notion of workers unity across nation borders. It is mainly the reason that socialism is not a threat that differs: then socialism had not yet proven itself as a viable form of government; now it has been disproved.

It makes we worry that we have no real leverage against the modern-day imperialists that are increasingly sounding their trumpets of war.

<comment><USER19> > The era most similar to ours could arguably well be the pre-WW1 era, with > several imperialist powers vying for larger markets and better raw material > supplies, without any real threat of a socialist revolution, which at the > core had the notion of workers unity across nation borders.

Uh, false? One of the major factors in the breakout of WWI was that all of the major European powers had massive, divisive conflicts (largely related to class), and their leaders felt that a war would be a good way to help bring unity to their own country while looking over at their competitors and feeling that a war would push the other countries over the edge.

<comment><USER12> Replace the conflicting and overlapping disputes and treaties in pre-ww 1 Wurope with the same thing in the middle east today. I expect the middle east will trigger the next great war.

</comment></comment></comment><comment><USER20> all in all, the best option is to run as far away from war as possible

<comment><USER21> Leaving any faction willing to actively seek out and start wars to win by default, unopposed even by a faction only willing to use it to protect itself and it's allies?

I'm not saying there's any perfect formula for only using warfare for protection. Who counts as deserving protection? What exactly are the circumstances in which war is justified? How aggressively should war be used even for protection in any particular circumstance? these are difficult and contentious issues.

However there absolutely are people out there who don't care a fig for any of that, will gleefully use war to further their aims and will pursue it to their maximum advantage if free to do so. Those people have to be stopped somehow.

<comment><USER20> Sure, but when a nation has been propped up into war, there's no point into going against.

If I may rephrase my previous comment, war is a like a tsunami, it's absurd to stand up to it, find voids and wait until it's over.

<comment><USER22> That strategy won't work against a sufficiently determined adversary, if they're willing to eliminate all potential enemy combatants (= civilians) and capture all the resources of the defeated entity for themselves.

<comment><USER12> There was WW2 and then everything else in terms of clarity between good and evil. The vast majority of conflicts the US has been involved in were not so clear cut, like say Vietnam, Iraq 2. I guess all the atrocities weren't visible at the start of WW2; there was a clear difference with Japan and Germany, and they could have won ww 2. Imagine a war today with the US vs China, fought over say freedom of access to the ocean, those atolls in the South China Sea.

<comment><USER23> > There was WW2 and then everything else in terms of clarity between good and > evil.

Was it that clear? I think the difference between sides was on the sense of scale. Before the war, eugenics was in vogue, Jewish people were hated everywhere, the idea of lesser races wasn't even questioned, and a lot of ideas that Nazi German executed on were inspired from across the Atlantic. What the 3rd Reich did was package all these ideas into a formal ideology and industrialized death for the 'undesirables'. IMO it was less of 'good vs. evil' and more 'not-good vs. evil'.

<comment><USER12> There was certainly anti-jewish hate in the us, remember the country clubs that wouldn't let jewish people in. the kkk might have wanted to her jews but very few people in the us, afaik, didn't want to hurt them.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> It is just socialist, anti-capitalist, not anti-war:

> "I know of no reason why the workers should fight for what the capitalists > own," ... "I will never go to war for a capitalist government,"

It is ironic how later "socialist" country manage to kill their own civilians.</comment>


Hubzilla: Build a community of connected websites - <AUTHOR> http://hubzilla.org/ <comment><USER2> Somehow this reminds me of the "webring" era of the internet, before search engines and social networking the best way to find more websites was to start from one you knew and look at the "ring" it belonged to.

<comment><USER3> The "community of websites" idea is perhaps misleading that way. Websites in this context are, pretty much, analogous to your Twitter or Facebook page.

</comment></comment><comment><USER4> I had a quick look but can't see what Hubzilla does different from Tent and Diaspora who also shipped their own open source software/protocol which was not compatible with anything else out there. I'd like to believe otherwise but for now it seems to me like just another bulet point on [http://indiewebcamp.com/monoculture](http://indiewebcamp.com/monoculture)

<comment><USER5> Problem of course is that _everything_ is kind of a mono culture at first. Tent.io at least had multiple projects working on implementations, but never seemed extremely active to me.

EDIT: that said, thank you for the indiewebcamp link, there are some very interesting things and ideas there! You might want to submit that to HN if it hasn't seen a big discussion already.

<comment><USER6> It was posted 3 and then 1 year(s) ago; no discussion so far.

</comment></comment></comment><comment><USER7> Spending two years with IndieWeb convinced me that people generally are not interested in sustainable solutions as long as centralized services make it more convenient to post cat pictures. (Also see: Slack vs. IRC)

<comment><USER8> IndieWeb seems to still be active. Is it just a community of people making communities? Or what?

Anyway, the big fatal flaw in all this is that the technology isn't the only thing. You need adoption. You need a social network with at least a million people on it already. Then you can deploy it to various networks as open source.

You need something for social the way Wordpress is for blogs. Not totally peer to peer distributed. But something that an organization installs locally.

Hubzilla says all the right stuff but how many users do they have?

We have 300,000 at the moment. [http://platform.qbix.com](http://platform.qbix.com)

<comment><USER4> Just FYI,there are plugins for your wordpress installation to connect to the rest of the social indieweb community [https://wordpress.org/plugins/indieweb/](https://wordpress.org/plugins/indieweb/)

</comment></comment></comment><comment><AUTHOR> Formerly known as RedMatrix.

The lead developer is the creator of Friendica, which is still kicking: [http://friendica.com/](http://friendica.com/)

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

<comment><USER9> "Friendica is what Diaspora should have been."

Federated social networks are technically interesting, but somebody has to figure out some way to get a user base. It's encouraging to see that Frendica has a few more sites than it did six months ago.[1] But 28 sites isn't many. Especially since many of them seem to be down.

I registered for Friendica.eu, which appears to be one of the larger servers. There are a total of 80 people and groups. Response time for any request is 5-10 seconds. (Behind the scenes, it's PHP.) There's an IRC server, but nobody is on the #friendica channel. Overall, it feels like using a BBS system from the 1980s.

There's already spam. "Natrol Fat Intercept Tablets, Green Coffee Bean with Raspberry Ketones…" "Galaxy Phone..."

I'd like to see someone replace Facebook with a federated system, but it doesn't look like Friendica can do it.

[1] [http://dir.friendica.com/siteinfo](http://dir.friendica.com/siteinfo)

<comment><USER10> I think you've hit the nail on the head with the spam comment.

In a federated system, it is up to everyone to protect themselves against spam.

We put up with it for email, because in the most part it pre-dated other solutions. I don't think people will put up with it for social networking.

<comment><USER11> Closed social networks have plenty of spam. I'd say the main difference is that on email, you get messages from everyone, whereas in most social networks, you need to voluntarily subscribe to someone's feed to get their messages; that alone massively cuts down on the efficiency of spam.

<comment><USER2> All social networks need an "introduction" system of some sort so people can find you, and some of those introductions will be spam. For example, on twitter there are fake accounts that will follow you in the hope of getting you to look at their spam profile.

</comment></comment></comment></comment></comment><comment><USER12> Hm, this kind of things always seems to tackle the problem in the wrong way. Instead of aiming for decentralized, why is no one building a completely distributed solution instead?

The only work being done I can think of, that is still active is IPFS today, that at least is trying to build a distributed technology, that services like this could be build on top of.

<comment><USER6> Indieweb does, see [http://indiewebcamp.com/webmention](http://indiewebcamp.com/webmention)

</comment></comment><comment><USER13> Damn that name! Now I have to rename my software for automatically translating GitHub pull requests into Bugzilla bugs ;)

</comment><comment><USER14> As a disclaimer, I'm working on a competing(ish) protocol called Muse.[1]

Unfortunately the documentation for the federated social projects I'm aware of is always severely lacking (believe me, my own included). It makes some key points very difficult to understand. With that caveat aside, this is what I _think_ I understand about the general system architecture of Diaspora, Hubzilla, and Tent:

* Everyone runs their own server. Data on the server is plaintext at rest, but encrypted in transit.

* The protocol (only text-based?) governs communications between servers. It describes the kind of things you would expect social websites to need to do: make comments, have profiles, etc. Examples of protocol outputs: Tent[2], Hubzilla[3], Diaspora[4]

* Internally, the servers deal with privacy, sharing, etc. Your personal server and their code together determine what data is acquired, stored, shared, etc.

If this mischaracterizes any of the above protocols, I would be really grateful for corrections. It's to everyone's benefit to understand the high- level technical details of these projects. However, the system architecture described above is not, in my mind, a tenable approach to distributable social applications. Simply put, this kind of "private server as my digital avatar" \+ "protocol so avatars can talk" paradigm completely misses the appropriate choice of abstractions and division of concerns for social applications.

First and foremost, this is still yet another example of "privacy by promise". It just so happens that the promise is given to you by the servers of whomever you're sharing with. But then, as data is decrypted at rest, you must also trust their coding ability, their deployment ability, their... this gets very messy, very quickly. The security footprint for implementing these protocols is immense.

Secondly, this approach focuses on one specific use case: websites. The vast majority of publicly-networked applications will, at some point, have a need to perform identity, sharing, or content management. However, they may not necessarily have anything to do with text: for example, a distributed sensor network might communicate only using binary messages, but that doesn't make it any less social. Since bytes are the more basic unit, any general-purpose social protocol should therefore support them natively.

A much more robust approach is to address the "social protocol" at a much lower level: to provide only the bare minimum that any social application will need, giving transport-layer bytestreams cryptographically-enforced privacy with many-to-many capability. Only then can you escape requiring everyone to operate their own web service, which is, I firmly believe, an unrealistic goal.

[1] [https://github.com/Muterra/doc-muse](https://github.com/Muterra/doc-muse)

[2] [https://raw.githubusercontent.com/tent/tent.io/master/source...](https://raw.githubusercontent.com/tent/tent.io/master/source/docs/api_examples.json)

[3] [https://github.com/bartekrutkowski/hubzilla/blob/master/exam...](https://github.com/bartekrutkowski/hubzilla/blob/master/examples/request_dump_example.json)

[4] [https://wiki.diasporafoundation.org/Federation_protocol_over...](https://wiki.diasporafoundation.org/Federation_protocol_overview)

</comment><comment><USER15> Author(s) would really gain some credibility by adding information about their identity inside the hubzilla website.

I first wondered whether this was a mozilla project, then looked for a name, thing is visible. Why should I trust them then...</comment>


Apple Just Cannibalized the MacBook Air - <AUTHOR> http://www.clear-coat.com/blog/apple-just-cannibilized-the-macbook-air/ <comment><USER2> The price difference is $200 in the U.S. The wedge profile of the MBA makes it feel a lot smaller than the MBP (e.g. when shoving it in your briefcase). The trade-off for the lower-resolution screen is much better battery life. The MBA gets 15+ hours for web browsing with Mavricks. [http://www.macrumors.com/2013/10/23/13-inch-2013-macbook- air...](http://www.macrumors.com/2013/10/23/13-inch-2013-macbook-air-gets-up- to-15-hours-of-battery-life-with-mavericks)

I'm upping my MBA to an rMBP, but I can totally see why someone would get the former instead.

<comment><USER3> Apple made it abundantly clear that they wish to differentiate current Airs on battery when they doubled battery life instead of adding a retina/touch screen like the competition. However the 2013 Air is actually slightly slower than the 2012 one in CPU benchmarks [1]. I think this is the last hurrah for this generation of Airs. The current Air body is about as old as the Pro was then the Retina refresh occurred. I think next June Apple will release a new Air body and I can't wait to see it.

[1] [http://anandtech.com/show/7085/the-2013-macbook-air- review-1...](http://anandtech.com/show/7085/the-2013-macbook-air- review-13inch/3)

</comment></comment><comment><USER4> Unless they come out with an 11" Macbook Pro, I'm sticking with the Air. If you have a 13" Air then yes, the pros have made more sense for awhile IMO. For me the 11" Air with 8 gigs of ram, i7 processor and a solid state drive plus a Thunderbolt display is the ideal setup. Super portable and powerful enough for anything but the latest 3d gaming plus the display for when I'm in the office.

<comment><USER5> I'd like to hear more about your experience working on the 11", when you're away from the external display. Are you cramped because of the resolution? Keyboard and trackpad?

<comment><USER6> I think the screen and trackpad are the same size for all MacBooks.

<comment><USER7> The trackpad on the 11" is smaller.

</comment></comment></comment></comment><comment><USER8> The battery life is missing from the table, probably because it contradicts the author's linkbait title.

<comment><USER9> Is the battery life that big of a deal? It's something like 9 hours to 12 hours (or something close) for MBP vs MBA. I just don't see that as a major difference - it's not like a 1.7g vs 2.8g CPU.

<comment><USER2> Battery life is a way bigger deal than a 1.7g versus 2.8g CPU. My 2010 MBA with its circa-2008 CPU (Apple hung on to the Core 2 Duo for a long time) is plenty fast for me, even for development work. At this point, I'd much rather have a machine that I only had to charge once a week.

<comment><USER9> I think you sort of missed what I'm saying - we're talking about a MBP that has better battery life already than your 2010 MBA. The 2013 MBP has a 9-hour battery life compared to the 12-hour 2013 MBA battery life. That's a "difference" but is that extra three hours of battery life worth trading for a 60% faster processor? I don't see that as a good trade off.

<comment><USER2> Sorry, I read out the word "the". I thought you were saying "battery life is good enough."

I would rather have the 3 extra hours than the 60% faster processor (though I would rather have the retina display than the 3 extra hours). My aging MBA compiles LLVM, the biggest thing I ever build these days, in 10-12 minutes. Do I care if that number is 7-8 instead? Not really.

On the other hand, three extra hours can mean leaving the charger at home.

</comment></comment></comment></comment></comment><comment><USER10> IMHO the "real" MBA, from the point of view of what happens when you use it as your main computer, is the 11" version, and there is a huge difference between that computer and the MBP 13".

The MBA11 means that your computer is from the point of view of portability no much more than an iPad with a keyboard. It has a minimal weight, minimal impact even on a very small table, and when you close it you can walk with it in your hand like if it was a tablet.

Also it is a computer comfortable to stay near the couch if you want to grab it and quickly search for something. It has impressive battery life.

Basically the MBA is a different computing experience, IMHO. I use solely that and in my normal business I just attach it to a big screen, keyboard, wireless mouse, external backup disk, and so forth (everything except the screen is just a single USB cable that goes to the Hub).

When I grab it, I restart working from the bathroom or while waiting for my son music lesson, exactly from where I left.

<comment><USER11> Among the apple products, the 11" air seems like a oddball option to me. Two things

1\. For people who say it is like an iPad with a keyboard, I find that the iOS apps I use (games, camera, touch based things) are very different than those on the MBA (Developer tools + Adobe stuff). So not sure what the connection to the iPad is. It is not even touch enabled. How can you say you are getting an iPad/Tablet experience without touch??

2\. I find the 11" pretty cramped (keyboard space and screen size) to be honest. Especially if you spend more than a few minutes working. Looks like you find it too, given you have to put in additional paraphernalia (keyboards, external disks etc.) to make it work. It also has a much poorer battery life compared to the 13" counterpart.

<comment><USER12> Umm, the 11" and 13" use the same keyboard -> [http://blog.timecenter.com/content/uploads/2010/08/macbook-a...](http://blog.timecenter.com/content/uploads/2010/08/macbook- air-2010-116-vs-133-thumb-600x493-45.png)

<comment><USER11> Nope. Look at the keyboard pad space, much smaller on 11". Unless you have baby size hands, your wrists will feel like they are hanging in the air and become uncomfortable pretty soon.

</comment></comment></comment></comment><comment><USER13> The retina display on the 13" MBP actually results in less application real estate at native resolution than the 1440x900 on the MBA. It's also half a pound heavier, more expensive and with significantly poorer battery life. In my opinion, the 13" MBA is the best laptop Apple makes, and is the best computer I've ever owned.

</comment><comment><USER7> As an owner of the Air, I really do not see why would I want to upgrade to the Pro. It is heavier(marginally,but still!), and the Retina screen is something I would really struggle with. I have the 15" Retina as well,and it's only usable in either the native mode,or at half the resolution. Any resolution in between introduces blur which drives me crazy. The problem with the 13" Retina is, that at half the resolution, you end up with....less workspace than on the 13" Air! And the native resolution is way too small. So why would I swap my Air for the Retina Pro? I really don't know.

<comment><USER14> Exactly how I feel.

My wife has MBP 15' Retina and I simply don't find its screen better than my MBA.

I only use applications in maximized screen mode (but have 7 desktops that I switch between). So the whole 'Retina is better' mantra is lost on me.

</comment></comment><comment><USER15> The author does not do a fair comparison in price... The Air costs $1299 for 256 Gb SSD with ~12 hours battery life the 13-in Pro is $1299 with 128 GB flash and ~9 hours of battery life. The pro's advantage is Retina display and better processor, but let's get honest, who needs more than a dual core 1.3 GHz for most stuff? The battery life is worth the decrease.

</comment><comment><USER16> Can't believe nobody mentioned this, but for me the Air is still the winner because it has more usable screen space.

The 13" rMBP, while nice, only has an effective resolution of 1280x800, which I find to be unusable.

With the Air you get 1440x900 at a DPI that's still pretty nice.

<comment><USER17> Nope, got the new 13inch retina today, and it has 1680x1050 resolution. It astonishingly usable in that resolution, although I was sceptical before, my doubts are gone. Only thing: When working with my 17inch macbook, suddenly everything looks so freakishly large!

<comment><USER16> It has scaled-mode resolutions including 1440x900, 1680x1050, and maybe 1920x1200, which all have noticeable annoyances.

</comment></comment></comment><comment><USER18> I'm not able to create the author's specced out 13" MBA on Apple's site right now, I can't find a way to get the 512GB SSD.

I also think the price comparison is disingenuous, as you have to opt for Apple's very expensive upgrades to get even close to the price of the MBP.

The MBP is also upgraded, but the SSD upgrade (most important IMO) comes stock in the MBA, and adds at a minimum $200 to the MBP. Much more if you actually go with the 512 GB as the author suggested.

The stock MBA is plenty powerful for your average user, and hundreds of dollars cheaper than the MBP.

</comment><comment><USER19> I really don't see the need for the Air at this point except to go to the eleven inch size. The 13s are just to close in price with Pros and the Pro has such better resolution for very little more.

The disappointment I have with Apple is that I have to start with the top of the line FIFTEEN inch Pro to get discreet graphics. (non Intel).

That half pound difference won't even be noticeable to me, not with everything else I cram in my case.

</comment><comment><USER20> Some people prefer the 11' MBA for portability and perhaps the MBA still has more battery life: 12 hours potentially 14-15 hours with Mavericks while the rMBP is announced at 9 hours. However, I think you would eventually be right, rMBP and MBA might fuse into one product in further generations due to their rapproaching similarities.

</comment><comment><USER21> "Would you buy a MacBook Air after the latest MacBook Pro update?"

I can't see why anyone has bought a 13" MBA since the first retina screen was announced 2+ years ago.

I'm still nursing a late 2008 MBA along until there is a retina option. Why bother otherwise ?

<comment><USER22> Pixel art is a disaster on Retina. It's rare but I could see an indie gamer/game programmer going for the bigger pixels of the Air.

I'm sure there are other applications that also don't translate well.

<comment><USER23> It's true, there are some issues, but Retina is amazing for the day to day. Being able to see the pixels that constitute a glyph or image has become distasteful to me.

</comment></comment></comment><comment><USER24> At this point, I wouldn't mind them coming out with a new form factor for the MacBook Air with the same screen from the iPad Air. Lots of pixels and a 3:4 ratio[1].

1) Truthfully, a retina 11 1/4" 3:4 Macbook Air would be a dream

</comment><comment><USER25> Exactly what I was thinking I currently got a air 13 inch & i'm like fuck for 0.5 pound I much prefer having the new 13 pro.

Specially since upgrading the air cpu (& being still less powerful) puts you roughly at the same price.

</comment><comment><USER26> I was kind of wondering about this as well, the line between the smallest low end Macbook Pro and the high end Macbook Air is blurring. Perhaps they will eventually roll all the Macbooks into one product line again?

</comment><comment><USER27> The 11" Air is the ultimate hacker computer. I take it everywhere because it's so small and light. That I can be hacking within moments wherever I am is too appealing for me to consider anything else.

<comment><USER28> A few years ago mine was a 10" tablet with the apple bluetooth keyboard in an origami stand.

> That I can be hacking within moments wherever I am is too appealing for me > to consider anything else.

This is more attractive to me than other specs, and I suppose there is a lot of intrinsic value in a device that makes me _want_ to code more often and in more places.

</comment></comment><comment><USER29> As the proverb says, "If you don't cannibalize yourself, your competitors will do."

Maybe off-topic. Sorry.

</comment><comment><USER17> Did the flamewar mechanism of HN kick in for that article :-) ?

</comment><comment><USER30> The author is a moron. The MBA is a much better machine for the average user and their pricing reflects that. As a developer, I would take the 13" MBA over the MBP. Also the author forgets the 11" Macbook Air.

This is just dumb. I don't think the author understands how business works, or more specifically how Apple works.

<comment><USER31> Why does criticism of Apple products bring out rage in people as if they're being personally attacked?

Why do users need to 'get' or furthermore 'approve' of how Apple works?

> As a developer, I would take the 13" MBA over the MBP

Weird thing to say considering the decrease in specs with the MBA. Are you the type of developer that compiles code and wants to do so quickly?

<comment><USER32> He only uses vi.

<comment><USER30> Actually, I do primarily use VIM.</comment></comment></comment></comment>


FSF Europe launches peer-to-peer search engine - <AUTHOR> http://www.itworld.com/software/228393/free-software-activists-take-google-new-free-search-engine

<comment><USER2> I like the idea, but I think a p2p search should also include human filtering and trust. I.e. i know the keys of my trusted friends and sites/pages they've "approved" rank higher for my searches.

<comment><USER3> Once you implement this, there would be lots of privacy concerns. But when done by smaller company / non-commercial entities, the concerns might be lesser.

</comment></comment><comment><USER4> Um, am I alone in getting a sinking feeling that the word "security" appears only in one place on their site, and it's in regard to having your searches snooped? Hint to FSF: not everyone on the web is an altruist.

</comment><comment><USER5> I tried a few test searches, and didn't seem to get many useful results at all. Searching for [debian] did not produce any debian.org results anywhere on the first page. Similarly, searching for [google] did not produce google.com (or any other google domain) on the first page. Searching for [lwn] produced one random LWN comment, but nothing else. Searching for [linux] produced a page full of links to the Wikipedia articles on Linux in numerous different languages, in no sensible order.

</comment><comment><USER6> Interesting code base. Java with a templating engine (de.anomic.server.serverObjects) I have never seen before. Worth some reading time.

Bigger picture: YaCy would need to reach a large critical mass of nodes before being useful, so it would seem to be difficult to get enough people to donate server resources.

Also, it is not clear how to keep anyone from doing SEO by running nodes that make it a priority to spider promoted web sites.

<comment><USER2> What if it indexed your bookmarks. I'd find that very useful.

</comment></comment><comment><USER7> Well, it sounds cool, but the first result for "Google" is a Youtube Video Converter, and it appears to randomly change between German and English.

</comment><comment><USER3> Is there a way they check the validity of every peer database ? What if I edit the index in my computer so that my website comes at top of the result for high competing terms (similar to google link bombing) ? And if I can lease 100s of computers, then I would be first on the result ...

</comment><comment><USER8> So this spreads the index across all nodes, right? I probably don't want an index of the entire web on my hard drive. But at the same time, how efficient can it be to hit a bunch of different nodes every time I search? How is it going to affect me when people hit my node?

<comment><USER9> I imagine that nodes could be classified as cache-only, storage-only, or cache-and-storage.

</comment></comment><comment><USER10> I downloaded the peer software... how do I know to how many peers I am connected, how do I know what does my computer actually do, and why does "local" yacy returns 0 results to everything?

Questions, questions, questions.</comment>


Python's Meta-Object Protocol (2012) [pdf] - <AUTHOR> http://laser.inf.ethz.ch/2012/slides/vanRossum/laser-mop.pdf <comment><USER2> One of the things I really like about python is that constructors are basically just regular functions with some extra metadata unlike languages like JavaScript where you are required to use the special keyword "new". Python's approach makes it much easier to use constructors in higher order functions.

<comment><USER3> You aren't "required".

        function C(x) {
          var self = {};
          self.x = x;
          return self;
        }

        C(1).x === (new C(1)).x

The thing about javascript is that the concept of constructors and prototypes is so simple and flexible that there's many different ways you can go about structuring your code for inheritance. That's the reason there's so many frameworks that do inheritance differently.

EDIT: On re-reading your post, I wonder what you mean by saying that python's constructors are more similar to functions, compared to javascript's? In javascript, there is no difference at all between constructors and functions. They are simply functions that construct an object and that's it. The capital letter is simply a convention. The use of `this` and `new` is a facility for an implicit variable that javascript provides, but is no less powerful without it.

EDIT 2: Reworded EDIT 1 because I might be confusing python's classes with constructors. I wonder if the parent referred to `__init__`.

<comment><USER4> I haven't done any JS in about 7 years, but back in the day I used to program like this:

        var make_person = function(name) {
          var say = function(what) {
            console.log(name + " says: " + what);
          };
          return {
            name: name,
            greet: function(who) {
              say("Hi " + who.name + ". It's " + name + ".");
            }
          }
        };

        make_person("John").greet(make_person("Jane"));

I wonder if this was ever idiomatic.

<comment><USER5> This method is less efficient than using prototypes because the created instance will lug around an object with its own function, instead of sharing one. Sometimes I use "factories" for cases where my instance only needs one method or if the number of instances is going to be relatively small.</comment></comment></comment></comment>


Don't end your urls with .exe - <AUTHOR> http://www.mattcutts.com/blog/dont-end-your-urls-with-exe/ <comment><USER2> Better yet, don't end your URLS with ANY extension. Params are ok (kinda) but extensions are so 2005.

<comment><USER3> Options +MultiViews

I love it.

</comment></comment><comment><USER4> Honestly, this reads like a (poor?) PR move on Google's behalf - explain why .exe is a bad idea to cover up the obvious flaw in blocking .0 extensions. Everyone knows exe is executable, but .0 can (very easily and clearly) refer to non-executable stuff...

</comment><comment><USER5> From the submission just 3 or 4 entries above yours, entered a few hours earlier:

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

</comment><comment><USER6> I strongly recommend not ending your URLs with cfm.</comment>


Good bean counters? Starbucks has paid no tax in UK since 2009 - <AUTHOR> http://www.independent.co.uk/news/business/news/good-bean-counters-starbucks-has-paid-no-tax-in-uk-since-2009-8212579.html <comment><USER2> how come royalties are taxed differently? simplify the tax code and make everyone pay the same tax at the same rate and stop this shenanigan of a company paying intellectualproperty royalties to itself. they are not independent franchises</comment>


Ask HN: Near future SF anthologies? - <AUTHOR> I'm looking for a near future SF anthology to read, similar to Black Mirror, but for short stories. Any suggestions? <comment><USER2> speculative fiction that's optimistic: [https://www.amazon.com/Hieroglyph- Stories-Visions-Better-Fut...](https://www.amazon.com/Hieroglyph-Stories- Visions-Better-Future-ebook/dp/B00H7LUR3K)</comment>