Rainbow (Arc implementation in Java) - <AUTHOR> http://github.com/conanite/rainbow/tree/master

<comment><USER2> Does anyone know if this is a full Arc implementation? Like... does it have call/cc?

<comment><USER3> Don't know, but you could try looking at the author's submissions and comments in the Arc Forum, which include discussion of Rainbow:

<http://arclanguage.com/user?id=conanite>

</comment></comment><comment><USER4> Very cool - how do you do Java interop? Also, Java has the curse of portability so you can't assume a unix, which Arc does, I think. How has that worked out?

<comment><USER5> Some Java interop instructions are here: <http://www.arclanguage.org/item?id=8819>

Arc runs on all platforms that MzScheme runs on, which includes Windows.

<comment><USER4> Ah, so apparently PG didn't go with the unix integration he mentioned once.

Your Java interop looks good, yet the code is a bit more verbose than the equivalent in Java. Also, can Arc lists and hashes be used as Java List and Map collections?

<comment><USER6> rainbow converts arc lists and hashes to and from java List and Map equivalents.

rainbow also uses 'defcall from anarki so you don't ever have to call java- invoke: you can put your java-object in functional position, followed by the method name, followed by the arguments. For example,

      (my-object 'hashCode)

is the equivalent of java's myObject.hashCode(); ... essentially the same number of tokens. I expect to wrap the most popular java libraries behind arc- sounding macros/functions.

rainbow comes with a tetris and a simple arc editor called welder, they both use java's Swing library, take a look if you'd like to see an example of this kind of wrapping. Or try <http://www.fnargs.com/2009/01/calling-java-from- arc.html>

I think "official arc" still assumes a unix for some functions ... I don't know what PG's final position on this is.

<comment><USER4> Apologies for the days of delay - I'm on a reduced HN diet.

So, in Clojure you can't use Java objects with the great sequence and hashmap libs:

(def h (new java.util.HashMap))

(. h put :a 1)

(. h put :b 2)

user=> h

#=(java.util.HashMap. {:b 2, :a 1})

Hashmaps in Clojure are, like Arc's, callable:

user=> ({:a 1 :b 2} :b)

2

But not if they are Java Maps:

user=> (h :b)

java.lang.ClassCastException: java.util.HashMap (NO_SOURCE_FILE:0)

So rainbow does the right thing - let's you use Arc functions on Java objects?

By the way, Clojure's .. macro is pretty handy:

(.. System (getProperties) (get "os.name")) expands to:

(. (. System (getProperties)) (get "os.name"))</comment></comment></comment></comment></comment>


Ask HN: Books - how do you read? - <AUTHOR>

I'm having problems finishing up books lately.
My info intake is usually online, and to some extent, I feel it's becoming a fast-food diet.
On the other hand - I can't finish up books from cover to cover. I become easily bored, distracted, paranoid.
Any advice? <comment><USER2> If you become easily bored, distracted, and paranoid, then reading is the least of your problems.

Attention and focus can be trained-- this is what most meditation techniques consist of.

There are a lot of centers around teaching meditation, that don't require any membership, fees, or particular sets of beliefs you must subscribe to. See if there's one near you.

</comment><comment><USER3> If you fall into a positive feedback loop where your mental responses to a particular goal starts to negatively affect your ability to complete it, step back for a moment then chop the goal down into chunks.

With technical books, I get those post-it flags and place a green one at the end of the chapter that I'm reading. In the chapter itself, I place purple flags at intervals of about 20 pages. Now I peg my attention to the amount of pages in those small intervals (rather than staring at some huge tome) and it relieves a huge amount of emotional burden because the goal is more clearly defined and realistic.

I read one of those chunks a day or ever other day. As I read, I highlight all the relevant info in the subsections with two different colors (one for "concepts" and the other for "practical application of the concept").

This method works great for me because going back to read the highlighted area indulges that "fast food" information intake and solidifies my understanding of what I'm reading. Doing it every other day also takes a lot of load off of the mind. A pot of coffee gets filled drop by drop.

</comment><comment><USER4> What kind of books? I discover that I'm usually cherry picking chapters or section in technical or books where there is no strong interrelationship between the various elements or the topics. As already pointed previously, marking or taking notes inside those kind of books is useful to keep a trace and easy find back what you discovered or learned in a technical book.

There is a good reading about taking notes and especially the approach of thinking while relying on our current readings : Notebooks of the Mind, Exploration of Thinking, Vera John-Steiner (ISBN13 978-0195108965).

We are often learning at school to always finish a book even if we don't like it or we have some difficulties to read it. I tend to agree for the difficult books where sometime, you have to force yourself to finish it. But sometime, giving up is not so bad and relaxing your mind with more "easy to read" or "easy flowing" books is helping us to relax before reading more complex books. That's why I always keep around 4 or 5 books in my reading queue... and jumping back to some of them when my mind is more ready.

<comment><USER5> "We are often learning at school to always finish a book even if we don't like it or we have some difficulties to read it."

could you elaborate on this?

<comment><USER4> From my experience in EU school, a class is given a book (often fiction) to read and everyone should have read it for a specific date and everyone got a test about that book. So we are "forced" to finish the book as the test is usually including question to be sure that the student actually read the book. So by doing so, the school indirectly told the student that not finishing a book is not appropriate. I think (IMHO) this is just an effect of the evaluation process but not really a good effect to improve reading or thinking about your own reading process.

</comment></comment></comment><comment><USER5> i don't have 'solutions' for your "easity bored, distracted, paranoid", but can point out to interesting comments here :

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

hope it helps.

It helped me understand that I am not alone in reading books at a sloth's pace (and feeling guilty about it)

</comment><comment><USER6> [http://www.theatlantic.com/magazine/archive/2008/07/is- googl...](http://www.theatlantic.com/magazine/archive/2008/07/is-google- making-us-stupid/6868/)

[http://www.npr.org/templates/story/story.php?storyId=1273705...](http://www.npr.org/templates/story/story.php?storyId=127370598)

<comment><AUTHOR> Thank you

</comment></comment><comment><USER7> I am not sure that its a problem.

See it all depends on why you're reading a specific book, is it to a story which shouldn't be interrupted or is it a technical book that you just need one thing from. You see the difference?

Better and faster access to information means we can optimize the time spent on retrieving information that we need.

I no longer feel guilty about not finishing books(although I try to do that), because i found out that I do finish them if they're interesting enough but technical books i just read enough to get what i want and then abandon.

</comment><comment><USER8> Depends on the book. Technical programming books i can never finish, i tend to skip topics and read them in phases. I don't think thats bad, in fact i tend to favor books written to be read this way, books that both teach you a technical topic, but can later be used as a reference.

Whit fiction, i also have trouble, mostly because im not a fiction fan, but if its good enough i just don't push it, i read the book little by little, and naturally i would like to find out how it ends.

</comment><comment><USER9> This is the only thing that has worked for me and it worked fantastically:

1) Hemmingways Hack: <http://www.secondactive.com/2009/08/boost-your- productivity->

...

2) And the Pomodoro Technique <http://www.pomodorotechnique.com> This has hemmingsways hack built in. If done right (read the PDF) it is amazing.

</comment><comment><USER10> Paranoid?</comment>


Integer Overflow Bug in Boeing 787 Dreamliner - <AUTHOR> http://www.engadget.com/2015/05/01/boeing-787-dreamliner-software-bug/ <comment><USER2> Might be time to remove working on the 787 from my resume. I feel like the poor thing has been one disaster after another in the news.

I can't speak to the quality of the A and B level (most critical) code, but the development process for the C level software I was working on definitely could have used a lot of improvement. Messy code, tests and documentation were an afterthought/checkbox item, etc. The incentives were just wrong.

I think there's a ton of room for process innovation in avionics software development. One thing I wanted to build for a long time was a tool for tracing. In theory, every industry requirement (DO-178B, etc) was supposed to trace to a hight level Software Design Document (SDD) requirement, which was supposed to trace to a Software Requirements Document (SRD) requirement, which would trace to a code function. We maintained all of that BY HAND. It was a huge mess. Perfect example of something that could have been an extremely valuable development tool, but ended up just being a hassle to try and maintain.

Then of course there's language choice. C is king, which isn't necessarily a bad thing, but it's certainly not the safest, even in the restricted forms used in avionics. Sadly, my very first ever project as a programmer was porting an Ada codebase to C for the 787 (off by one errors for days...). It's almost cliche to say nowadays, but I would be really excited to see Rust gain some traction in avionics over the next 20 years or so. Because that's how far behind avionics is. We were using Visual Studio 6 in 2011!

<comment><USER3> I work in the medical device field, and we have a similar process requirement (traceability from Design Input Requirements -> Software Specification -> Software Verification Procedure (and implicitly, the actual code function) -> Software Verification Report). We're currently wrangling with a giant-ass spreadsheet to keep track, and it totally sucks.

<comment><USER2> Ah yes I completely forgot SRD -> TESTS -> Then Code. Maybe that's because we always did it the other way around...

I'm telling you, there's money to be made building tools for this stuff. I think a big part of the reason things aren't being improved is that the people in a position to recognize bad process and tooling maybe aren't the type of people to see an opportunity to make money solving the problem rather than putting up with it. I wouldn't associate most of the engineers I knew at Honeywell as the type to stay up until 2AM every night for 3 months working on a side project to pitch to their boss.

I think it's really exciting what's happening in healthcare right now though. The innovative culture is exploding. Ultimately I care much more about what happens in medicine than avionics, as long as planes aren't falling out of the sky every 248 days...

<comment><USER4> There are already tools for this stuff. Problem is that they are all various forms of crappy and the market is so small that there is little incentive to improve them. I work in Medical Devices and one of the tools I'm supposed to use (we find every excuse to avoid it) has a UI like a 2001 Swing app and while it works, it is insanely painful to use due to its absolutely counterintuitive interface.

We're actually integrating more and more of our work in to Visual Studio since its tools are excellent. The problem is that the organization needs to validate any tool before we can use it as a part of Quality Management and that process can take forever.

<comment><USER2> Visual Studio is awesome. I'm really excited to see how Code turns out on Linux, especially for things like building GUI apps and 3D stuff.

</comment></comment></comment></comment></comment><comment><USER5> Windows 98 had a similar bug where the system would hang after 49.7 days: [https://support.microsoft.com/en- us/kb/216641](https://support.microsoft.com/en-us/kb/216641)

Although IIRC, the impact was limited, because it was quite a feat for a Windows 98 system to stay up for 49 days :)

<comment><USER6> I found 98 respectible. It was 95 that didn't last a whole week!

<comment><USER7> "Windows Millennium Edition" was the worst.

<comment><USER8> "Malfunction Edition" as it was sometimes known

</comment></comment></comment></comment><comment><USER9> I recall a long time back, when Linux was configured as standard for 100Hz ticks (aka "jiffies"), the counter was initialized close to wraparound instead of 0.

The result was you typically encountered "jiffy wraparound" after a few minutes of uptime. You learned whether your system was stable in this situation fairly quickly, rather than 248 (or 497) days later. Kernel developers typically don't have uptimes measured in days. Starting the counter close to wraparound increased the likelihood it was going to get code coverage.

<comment><USER10> I really love this methodology. If an exceptional case exists, and it's cheap to cause the exceptional case to occur during standard usage, then do it so that the code is well-exercised.

</comment></comment><comment><USER11> I found it curious that the journalist refers to the bug as a "vulnerability". This is could be misinterpreted given that's a term is more commonly used in a security context.

<comment><USER12> >journalist

There's your answer right there. They write stories for a living, not programs.

<comment><USER13> Some journalists still care to acquire correct terminology. If somebody is reporting from the court and call somebody accused of car theft "murderer" because you don't know the difference between the two, they'd probably get laughed at.

</comment></comment></comment><comment><USER14> They're actually not alone, Dell's EqualLogic (a big & expensive storage array) had the same problem, after 248 days.

They would initiate a controller failover and reboot: [https://ma.ttias.be/248-days/](https://ma.ttias.be/248-days/)

<comment><USER15> There was a similar issue in the Linux kernel in version 2.6.32 where the kernel would crash after 208 days: [http://www.novell.com/support/kb/doc.php?id=7009834](http://www.novell.com/support/kb/doc.php?id=7009834)

This was a serious problem in some storage systems too: [https://www.ibm.com/developerworks/community/blogs/anthonyv/...](https://www.ibm.com/developerworks/community/blogs/anthonyv/entry/208_day_reboot_bug3?lang=en)

</comment></comment><comment><USER16> I find it, well, interesting to read that the "Fail Safe" mode is to deactivate all power systems on the plane.

<comment><USER17> I find it troubling that the generators can't reboot w/o continuing to supply power, that reboots aren't staged to ensure that the plane continues to have power and that power from the generators it necessary to control the aircraft. Isn't there battery backup to enable the plane to continue operating normally while the generator reboots?

From the article it looks like their whole failsafe/redundant system architecture is flawed.

Just like buffer bloat, reboot times and corruptible system state are a chronic systemic flaw in modern technology.

The only stuff that works is the stuff that is used all the time. Look towards crash only software [1] and microreboots [2,3]

[1] [https://www.usenix.org/legacy/events/hotos03/tech/full_paper...](https://www.usenix.org/legacy/events/hotos03/tech/full_papers/candea/candea.pdf)

[2] [https://www.usenix.org/legacy/event/osdi04/tech/full_papers/...](https://www.usenix.org/legacy/event/osdi04/tech/full_papers/candea/candea.pdf)

[3] [http://dslab.epfl.ch/pubs/perfeval.pdf](http://dslab.epfl.ch/pubs/perfeval.pdf)

<comment><USER18> The actual reboot takes something around a minute, and the plane is designed to keep flying while rebooting. It's during take off or landing that this would be a real problem.

Think Starship Enterprise. You can't turn off the whole ship, or everyone suffocates. You run diagnostics system by system and keep the warp core online as much as possible so you don't run out of power.

</comment></comment></comment><comment><USER19> Reminds me a little of the floating point precision bug in the patriot missile targeting systems, where the longer it was left on, the less accurate it got.

[http://fas.org/spp/starwars/gao/im92026.htm](http://fas.org/spp/starwars/gao/im92026.htm)

</comment><comment><USER20> I file it under "funny" but certainly it is nothing unusual or surprising. Software, like anything else, has faults and breaks. Even on an airplane.

It mostly is funny to us, developers, because we have all been trying to convince our bosses that "it will never happen". That object_id being an int4 sequence? You would need one object a second for 70 years to overflow. And yet, somehow, it does, e.g. because someone loaded data with object_id set to 1.9B and the sequence followed from there.

P.S. My favorite pastime? Watching Aircraft Disasters series in an airport. Not brave enough to watch it during the flight yet. Karma might be a bitch and I do not want to test it 10 km up there ;-)

<comment><USER21> Like everything else? What was the last time the Golden Gate bridge collapsed? :) Everything else does not include the most of the engineering output. In software faults are more common because of the tools we are using and because there is no life in danger if Twitter is down. On the other hand, we cannot allow a bridge to collapse or an airplane to fall down from the sky because it has a fault. There are several techniques to build reliable systems out of non-reliable parts.

<comment><USER22> Bridge collapses are actually not that uncommon. While often times overloading or damage is the cause, sometimes it's due to design flaws.

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

<comment><USER21> I think the point is the frequency.

</comment></comment></comment></comment><comment><USER23> Presumably all of Boeing's _other_ planes have such counters in their systems, and don't have this bug (or if they did, it was corrected already), so why only the 787? That's what I find most surprising.

Edit: one theory that seems plausible is that they were "overly paranoid" and put in overflow checks, on a time counter whose overflowing would not have had negative effects otherwise since the other code was designed to handle a wraparound correctly.

<comment><USER24> Software tends not to be reused between planes unless you go back to the same vendor and there are no major hardware changes with the component as well. Aircraft software is kind of a broken world.

<comment><USER25> Broken Aircraft software makes me wanna rethink the notion of correctness, or broaden the scope of failure and function.

<comment><USER26> Right? If aircraft software is broken, but my linux desktop is supposed to be the picture of success, I'm not sure the definitions are meaningful. :-)

<comment><USER25> And I was serious. We should study this and see why what could be described as a fault, a bug, etc ... is actually not that meaningful.

<comment><USER27> Those are features!

</comment></comment></comment></comment></comment></comment><comment><USER28> Could have abstract interpretation ([http://www.astree.ens.fr/](http://www.astree.ens.fr/)) or some other formal method prevented it?

<comment><USER29> Someone wrote something like:

      int32_t ticks; // 100ths of a second

which overflows in 248 days, a particularly unfortunate amount of time because it doesn't show up during testing.

Although it would be a good engineering choice, a formal verifier would say that:

      int64_t ticks; // 100ths of a second

is also incorrect, since it also overflows (after 10^9 years).

In a hard real time system,

      mpz_t ticks; // 100ths of a second, infinite precision libgmp type

is still formally incorrect, since as the the number grows in size it will eventually exceed a time limit or memory (after 10^10^9 years)

The overall lesson from formal methods is that it's impossibly to write formally correct useful programs. So programmers just muddle through.

<comment><USER30> > int64_t ticks; // 100ths of a second

I would go with uint64_t

as it documents "ticks" as a variable that can not hold negative values and also doubles its range of positive values.

<comment><USER31> I would go with

uint64_t ticksOfDuration10ms; // No comment necessary

<comment><USER32> The concept of timer "ticks" is well established as a unit of time in embeded programming, it's almost universally included in your embedded (realtime-)OS and might increase at any conceivable rate, both limited by the hardware constraints (e.g. a fixed, simple, 16-bit ripple counter that is clocked by the main CPU clock of 8 MHz will clock at 122.07 Hz) or at your application requirements (you let a slightly more configurable timer only count to 40000 at half the CPU clock to get exactly 100 Hz). Hence you shouldn't explicitly inscribe the tick rate in your symbol name, as it can change when requirements change.

You'll almost always have a global variable, preprocessor define... or something similar to get the frequency (or time increase per tick), which you should use whenever you have to convert "ticks" to actual physical units. If the actual effective tick rate is visible at many places in your code, both as a symbol name or as a comment, you are most certainly doing something wrong.

<comment><USER31> I think you kind of missed the point of my post (which was a bit tongue-in- cheek). The original code fragment had the tick duration embedded in a comment, so changing a global variable which defines it something other than 10ms is going to cause all sorts of problems in maintaining that code. (Leading possibly to the very problem Boeing had).

<comment><USER32> ...well, then my irony-detector is broken ;-).

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> This failure mode in particular was deemed _exceedingly unlikely_ by Boeing, which got them an exception to some initial airworthiness issues with the RAT, which in turn would have made a total loss of power catastrophic.

<comment><USER34> They can deem things unlikely? That seems broken in general. I would deem it unlikely they'd ship with any errors they _didn 't_ deem unlikely; those are precisely the failure modes we should most look for...

<comment><USER22> The entire aircraft is an electro/mechanical system with many thousands of things that could go wrong, but are deemed unlikely. All engines could fail at the same time, but it's deemed unlikely. Redundant hydraulic systems could fail together, but it's deemed unlikely. There is no certainty in systems this complicated.

</comment></comment></comment><comment><USER35> IIRC, the VisualWorks VM had such a bug that would mysteriously crash an automated airport people-mover after some interval, like 45 or 90 days. (Software crash, not train-hardware crash! Train would simply stop.) Also, as I recall, the train software project did not use automated tests at all! (By that time, VisualWorks VM was implementing them.)

(Learn from history. Don't cling so hard to the notion that your language will make you into super-programmers. Certainly, some tools are better in certain contexts than others. However, group culture and the quality of working relationships often have an effect even greater than choice of language. Besides, people often dislike someone who projects an air of superiority.)

</comment><comment><USER36> FYI - Engadget has very intrusive advertising that you can't close on a mobile device: [http://i.imgur.com/nqgc2p7.png](http://i.imgur.com/nqgc2p7.png)

<comment><USER37> "tech for ladies", aka a power bank with a led flash and a "designer" case...

</comment></comment><comment><USER38> Is that it really an overflow bug? Or a counter wraparound bug?

For example, incorrectly using a X > Y comparison on values that are congruential (and do not overflow) isn't an "overflow bug". You can only locally compare values that are close together on the wheel, using subtraction.

The simple thing to do with tick counts is to start them at some high value that is only minutes away from rolling around. Then the situation reproduces soon after startup, rather than days or months later, and its effects are more likely to get caught in testing.

<comment><USER38> Another thing you can do is reduce the range of tick counts. Say you have a 32 bit tick count which increments a hundred times a second, but the longest period (biggest delta between any two live time values) you care about in your module (driver or whatever) is well within 30 seconds. That's only 3000 ticks. Then, whenever you sample the counter, you can mask it down into, say, the 13 bit range [0,8192): effectively a tick counter that rolls over every 81.9 seconds (which you treat correctly as a 13 bit value in your calculations like is_before(t0, t1) or add_time(t0, delta)).

<comment><USER39> There's no need to reduce the range, you can just treat correctly the full counter range (see my other comment).

<comment><USER38> Well, it's a tautology that if you _treat correctly_ anything, you don't need any defensive tricks.

Treat all the ones and zeros correctly and everything else takes care of itself.

<comment><USER39> You mentioned correct treatment first :) I'm just saying that masking the clock is unnecessary and doesn't make correct treatment any easier.

</comment></comment></comment></comment></comment><comment><USER40> Current workaround: Restart the estimated 28 U.S. planes at least every 120 days[1].

Wonder how long it could take for the update to be actually available (after testing, approving, ...). Are we talking weeks, months, years?

[1] [https://s3.amazonaws.com/public- inspection.federalregister.g...](https://s3.amazonaws.com/public- inspection.federalregister.gov/2015-10066.pdf)

<comment><USER41> Actually I am a bit surprised that somebody would want a plane to be powered on for such a long time. There is no way one could fly for that long anyway and they are regularly taken to service between long hauls.

<comment><USER16> I completely agree with you - on at least three of the dozen or so flights I've taken this year, when there was a problem with the passenger area (Audio in one case, WiFi in another, and finally my _POWER_ connector in the third) - the flight attendants power cycled the entire system, which took about 15 minutes, and let me watch the Linux boot process on the back-of-seat console.

My suspicion is the "Reboot" approach is pretty common to aviation systems. It wouldn't surprise me that many of the components are rebooted daily, and almost certainly on a weekly basis.

120+ days without a reboot sounds unlikely to me.

<comment><USER42> Jtsummers, userbinator: This 787 bug shuts down the generators which I understand provide only the AC power aboard the aircraft? How critical is this AC power?

<comment><USER43> B787 is a mostly electric airliner. There are far fewer hydrolic/cable operated systems than in previous planes. This is much safer since a explosion/leak/breach/clog in a hydrolic line won't take out an entire hydrolic system (most planes have 3 systems and fuse valves to mitigate this).

However, since there are so many electricly operated systems, you really need power. The B787 as is No Bleed [1], so electrical power is also used to pressurize it [2]. Need Electric Power.

[1] [http://www.boeing.com/commercial/aeromagazine/articles/qtr_4...](http://www.boeing.com/commercial/aeromagazine/articles/qtr_4_07/article_02_1.html) [2] [http://www.airliners.net/aviation- forums/tech_ops/read.main/...](http://www.airliners.net/aviation- forums/tech_ops/read.main/218933/)

<comment><USER16> Isn't most of that DC power though? How much of it is AC power (like the power that each passenger seat gets?)

That's the power that I was talking about requiring a reboot. Not sure if it's related to the AC power associated with the bug in question - possible there are two AC power systems on the plane?

</comment></comment></comment></comment></comment></comment><comment><USER44> Wow, how can something like this happen? I thought airplanes had triple redundant software systems using 3-version programming [1] in order to avoid such bugs/problems. Can anyone familiar with flight technology shed some light on this?

[1][http://en.wikipedia.org/wiki/N-version_programming](http://en.wikipedia.org/wiki/N-version_programming)

<comment><USER45> Not an airplane programmer, but I seem to remember that the literature says that it's not generally a cost-effective way of finding bugs. In particular, you multiply the cost of development by (say) 3x (which is fine, on its own) but also the places where bugs are inserted are typically the hard parts; so you don't reduce the number of bugs as much as you'd like; it can easily be more cost effective to invest the few million in static analysis etc.

As much as we'd like plane manufacturers to test things to death, it'd become too expensive too quickly. For all we know, this software could be written by a contractor, or the firmware for a third party part.

As far as I know, N-version programming was effective when software systems were small (shuttle ran on 50k lines of code) and where poring over every single line was possible, because the hard part was coming up with the spec.

Nowadays a big plane like the A380 might be expected to have 100M lines of code in its subsystems, and it's simply too expensive.

<comment><USER46> > Nowadays a big plane like the A380 might be expected to have 100M lines of > code in its subsystems,

Why does an airplane require 100M lines of code?

<comment><USER47> Linux kernel alone comes in at 15m SLOC. Now add an userland subsystem and you're at 20-30M just for one device.

Multiply by all the little and big subsystems, the embedded chips, in-flight entertainment, network gear... 100m SLOC is too low, I think.

<comment><USER48> Sorry if this is incredibly ignorant, but I can't believe flight control systems are running Linux?

Do these systems not have hard real-time requirements about the execution time and periodicity of tasks which can't be guaranteed by the time-sharing scheduling algorithms in Linux?

<comment><USER49> Real time systems will be running a RTOS: VxWorks or QnX or something equivalent to that.

They'll definitely build a prototype using Linux but they won't get that certified so it literally 'won't fly', it's just a means to speed up initial development.

<comment><USER50> Is the order of magnitude of lines of code in QNX different from that of linux? At a first approximation, I don't see why it would be.

<comment><USER49> The QnX kernel is very small compared to the Linux kernel.

Small enough that I could-reimplement it in approximately 3500 lines of code + another 850 for the virtual memory management.

<comment><USER50> Wow, I had no idea. Since their source is closed and untouchable I had no way to check either. Is there any reason there aren't several certified open RTOSes around?

<comment><USER49> I don't know if there aren't _any_ open certified RTOS's around, but I can explain the 'why' part easily: if you pay for the certification of an open RTOS then everybody that can use one will say 'thank you' for the effort and that's that, since the certification would apply to any and all copies of that particular version. So you're essentially paying for the privilege of cutting your competitors a break.

This could only work if the entity paying for the certification had a way of making that money back somehow and I don't see how that could be done.

<comment><USER51> Not an RTOS, but seL4 is a correctness-proven open-source ARM microkernel: [https://sel4.systems](https://sel4.systems). Looks like a mixture of public and private funding. It's part of the L4 family, [http://en.m.wikipedia.org/wiki/L4_microkernel_family#Univers...](http://en.m.wikipedia.org/wiki/L4_microkernel_family#University_of_New_South_Wales_and_NICTA) which includes OKL4 (deployed on 1B+ ARM-based mobile phones) and [http://genode.org](http://genode.org) (x86/ARM) from Dresden.

<comment><USER52> Not to detract from the fine work done by the sel4 folks, but there is a large gap between what they have and what DO178 C requires for level A software. Like many other bureaucratic organisations, the FAA (and other regional equivalents) have a process with it's own set of rules (MCDC testing, requirements/design traceability artifacts, etc).

It would cost a significant amount of money to develop the necessary artifacts and engage the FAA to obtain a certification.

<comment><USER49> That's absolutely true but something like this could be a good starting point.

What I think the whole thread above misses is that the economics simply aren't there, cost isn't the limiting factor for the OS licenses for avionics but an extra certification track (especially for a fast moving target) would be, besides, it is not just the OS that gets certified but you will also have to (separately) certify (usually) the hardware that it runs on (unless you're going to use a design that has already been certified).

That means that modifications are expensive and that 'known to be good' trumps 'could be better' or 'could be cheaper in the longer term'.

Someone would have to come up with a very good reason to see open source trump the existing closed source solutions.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER53> I remember a legacy web service system we used to support which will crash after couple of days, after hogging all the resources. The first thing we did was to set up a monitor with a daily restart scripts. That was much cheaper and quicker fix than the fixing the memory leaks which took 3 months to reach to production.

<comment><USER54> I had a memory leak in a Python program (that's a really rare thing), that would trigger OOM kills in about 3-4 days. After a few days of investigation that yielded nothing, I put a restart job every day or so, and returned to it only after a few months when I had some time. Eventually it came down to someone replacing dict.get() with dict.setdefault() in a lookup dictionary in some utility library, causing each miss to leak a small, non GC-ed empty entry in an otherwise small lookup table.

</comment></comment><comment><USER55> This and other stories are claiming it is an integer overflow, but I've seen no source for that. It seems to be just speculation based on the observation that a 100 Hz 32-bit counter would behave similarly.

</comment><comment><USER56> Coming soon: OTA updates for Boeing aircraft. What could possibly go wrong?

</comment><comment><USER57> well, at least it's not a pacemaker.

It's a terrible oversight, and makes me wonder about the rest of the code, but are there very many airliners that are online for that long at once? I don't know much about how commercial air travel works behind the scenes.

</comment><comment><USER58> The Lord could not count grains of sand with a 32-bit word

</comment><comment><USER59> This reporting comes on the heels of an GAO study on hijacking airliners. It is not clear why the Congress ordered a study on hacking airliners, though there's a long list of things (MH flights, Carter's claims of a 'cyber Pearl Harbor') that some people might speculate over.

Does anyone know the impetus behind the study?

<comment><USER18> Probably part of a larger security initiative with money to pay for studies. I'd wager there's a Congressional committee tasked with writing policy to secure critical infrastructure like power plants and such. After 9/11, you can bet planes and FAA systems would be a part of this.

<comment><USER59> There are definitely security initiatives like this, there have been since before 9/11 (and an uptick afterwards), but it is unusual for the Congress to be involved or to demand a study.

</comment></comment></comment><comment><USER60> How come it is not Java?

<comment><USER61> In its current incarnations, it is considered uncertifiable for high criticality levels under DO-178C. May be used in entertainment systems and such though.

<comment><USER60> You mean it is considered to be crap?)</comment></comment></comment>


Ask HN: Can you compile laws? - <AUTHOR>

Laws are logical somewhat similar to how computer code is logical.
Should we(HN community) make a compiler that can both analyze logical errors and compact laws?
I think Washington is a bit code-bloated, and it would probably be better if it was more nimble.
Thoughts? <comment><USER2> Laws are not similar to code. Laws are abstract and their implementation requires non-deterministic judgement and interpretation, which is why we have judges. They are the terrain of the game through which the modern trial- by-(lawyerly)-combat is performed. That game more closely resembles Mao than it does Go.

</comment><comment><USER3> _The life of the law has not been logic; it has been experience... The law embodies the story of a nation 's development through many centuries, and it cannot be dealt with as if it contained only the axioms and corollaries of a book of mathematics. -- Oliver Wendell Holmes_

[https://en.wikipedia.org/wiki/Oliver_Wendell_Holmes,_Jr](https://en.wikipedia.org/wiki/Oliver_Wendell_Holmes,_Jr).

</comment><comment><USER4> While laws can be seen as more complex than some simple - straightforward, deterministic - logic of a program, modern programming evolve fast to include more complex models.

Advancements of machine learning, applications of Bayesian networks can produce programs with outputs similar to applications of laws. Laws themselves - by their nature - have to have an abstract element in them and a degree of generality, which makes them similar to computer code. It is those other features of laws which represent difficulties - from a programmer standpoint - which are left to be modeled with enough accuracy to be useful.

</comment><comment><USER5> Aristotle wrote that laws are for the general case and judges for the specific. In other words, they are guidelines but you want a human to interpret them and apply them to a concrete situation. Hence "hard cases make bad law." And just the other day someone here was asking about the value of reading the Classics. :-)

</comment><comment><USER6> You can play with Prolog or rule-based programming.

[https://en.wikipedia.org/wiki/Rule- based_system](https://en.wikipedia.org/wiki/Rule-based_system)

For some laws, it should be possible to detect flaws or inconsistencies.

<comment><USER7> Flaws and inconsistencies are _usually_ introduced with negation. A very neat theory for negation in first-order rule-based systems called "Well-Founded Semantics" ([https://en.wikipedia.org/wiki/Well- founded_semantics](https://en.wikipedia.org/wiki/Well-founded_semantics)) has the "side-effect" of assigning the "undefined" logical value to propositions that can't be proven true or false in a well-founded manner (think Russel and his barber). People have experimented with Prolog, the Well-Founded Semantics and rules used to infer information about mental disorders ([http://www.psychiatry.org/practice/dsm](http://www.psychiatry.org/practice/dsm)) in exactly the context mentioned here. Maybe unsurprisingly, some of those rules were found to be...unfounded (pun intended) :)

</comment></comment><comment><USER8> there is some research in this field from members of my faculty check this links to get started:

[https://scholar.google.com.ar/scholar?safe=off&es_sm=122&bav...](https://scholar.google.com.ar/scholar?safe=off&es_sm=122&bav=on.2,or.r_cp.&bvm=bv.96783405,d.cWw&biw=1600&bih=809&um=1&ie=UTF-8&lr&cites=10072386619481769293)

[http://ed.fbk.eu/people/sisai/home/publications_files/pdf/cl...](http://ed.fbk.eu/people/sisai/home/publications_files/pdf/cl.pdf)

</comment><comment><USER9> [https://www.judicata.com/](https://www.judicata.com/) is less compiling code and more pattern recognition and mapping, like a genome.

</comment><comment> vezzy-fnord Making the assumption that laws are like code with strictly defined execution paths makes you lose out on jury nullification, among other benefits.</comment>


LowRISC: Open-source RISC-V SoC - <AUTHOR> http://www.lowrisc.org/ <comment><USER2> Hm... the link only talks about the CPU, but calls itself a SoC. There's a lot more than needs to go on any chip that calls itself a "SoC", and much of it is very poorly served by existing "open source" solutions:

        + DRAM
        + I2C
        + GPIO (with stuff like 3.3v, tristate outputs, pull up/down, etc...)
        + USB2 host/device
        + SD/MMC

And that's just at the very basic level. Once you get into the consumer world you need to start talking about video output, camera input, video decode and encode acceleration, programmable GPUs,...

Really the CPU is, in some sense, the most solved problem from the perspective of open source. The designs themselves may be closed IP, but the instruction sets are meticulously documented and their behavior is very standard across many vendors and ISAs.

<comment><USER3> The peripherals you list span a _wide_ range of complexity.

GPIO, I2C, and SD interfaces (in approximately increasing order of complexity from my point of view) are one-person jobs for the right person. I've been in charge of all the GPIO for complex mixed-signal chips several times in the past, and I could crank these out in no time. But someone who's never designed for ESD and latchup, beyond-the-rail inputs, etc., would probably find these pretty nasty.

Forget using fab-supplied GPIO; those designs are almost always much (3-5x or more) larger than they need to be, and in advanced nodes, they tend to add additional processing cost. Specifically, most fabs want to stick with per-pad snapback clamps, which are (1) big and (2) require (in processes newer than about 0.13u; you can get away without it in earlier nodes) an additional "ESD" layer to fix doping gradients so that the devices don't destroy themselves as soon as they snap back. A much better solution, for many reasons, is transient rail clamps and steering diodes. First, because diodes can handle insane amounts of current per micron of perimeter (think: easily 50 mA / um of perimeter for a diode, vs single digit mA / um for snapback devices), their layouts are more compact, and they don't require ballasting to prevent current crowding. Second, and more importantly, clamps and diodes can be simulated (and the simulations, if not correct, are at least predictable in the way they fail depending on the models the fab gives you). Snapback is effectively voodoo: design what looks like it should work, test it, and hope that some circuit you accidentally put too close to the pad doesn't change the behavior enough to cause failures.

DRAM controllers are another step up in complexity. Depending what standard you're going after, this is going to take some reasonable work.

USB2 is, in a word, hideous. A team starting fresh is looking at several person-years (or more) for a well-designed physical interface, control logic, etc.

One wonders if they can convince someone to donate designs. Come to think of it, I'd do their GPIO/ESD/latchup design for them just for the fun of it; my current employer certainly wouldn't object.

<comment><USER2> USB2 has a fairly sane external PHY specification though with lots of parts in the market. I was thinking about USB in the context of the data layer, which (to my mostly-software eyes) seems comparatively straightforward and sane.

But absent some random hackery on opencores.org, no one seems to have really put effort into doing it on an open part in a serious way.

</comment></comment></comment><comment><USER4> RISC-V looks like MIPS but with some of the more dubious design decisions of the time (e.g. branch delay slots) fixed. The mix of 16-bit and 32-bit instruction lengths is reminiscent of ARC.

In other words, the characteristics of SoCs using this core will likely be _very_ similar to the many out there using MIPS: cheap and simple, with performance that's acceptable for applications like routers and other embedded devices.

<comment><USER5> That raises an interesting point -- the original MIPS ISA hasn't been patent encumbered in quite a while (and even then, only two non-essential instructions were patent protected). Why should a person is this unknown ISA instead of MIPS?

<comment><USER4> I think it may be to avoid any political/legal issues - despite the patents having expired, MIPS still sells ISA licenses. On the other hand, RISC-V basically _is_ most of MIPS (but most RISC ISAs are very similar anyway).

They also avoided the patented instruction issue completely by removing all alignment restrictions from the regular load/store; probably a good idea, with memory bandwidths being the bottleneck now and buses growing wider - the extra hardware is also negligible, basically a barrel shifter and logic to do an extra bus cycle if needed.

<comment><USER6> The specification ([http://riscv.org/riscv- spec-v2.0.pdf](http://riscv.org/riscv-spec-v2.0.pdf)) clearly states the reasons. It has nothing to do with political/legal issues. There are very good technical reasons for designing a new ISA.

That RISC-V resembles MIPS is a testament to what was good about the MIPS design, however if you look closely you will find the many ways in which RISC-V is different.

Truly, the specification is highly readable and the footnotes enjoyable. Having implemented multiple MIPS cores and so far one RISC-V core, I'm deeply impressed with the care that went into the design.

</comment></comment></comment></comment><comment><USER7> That hardware implementation of RISC-V listed on their website is written in Scala (using Chisel). That's very cool. I want to see synthesis results.

<comment><USER8> Hi, are you talking about the Sodor cores? I wrote those and wouldn't mind answering any questions about RISC-V or Chisel.

Regarding Sodor, they're designed to be instructional (we use them on our undergrads at Berkeley) and open for anybody with a C++ compiler so they can learn about Chisel and RISC-V. I pushed them through synthesis once just for kicks, but I didn't work on making them FPGA-ready. Chisel will give you the Verilog of the core, but you'd still need to write a test-harness that's specific to your FPGA.

The RISC-V user manual lists some of our existing RISC-V silicon implementations (8 so far, listed in Section 19.2), whose RTL aren't (yet) open-source.

<comment><USER9> Hey, I've been interested in RISC-V and Chisel, and am a bay area local (Live in Oakland)... what is the best way to get in contact with you and others at UCB?

<comment><USER8> Hmmm, I actually have no idea!

Chisel has a google group that you can post any comments or questions you have (chisel.eecs.berkeley.edu). If you wait a week, we should have something similar up at (riscv.org) too.

Chisel has an occasional "boot-camp" where you can come and learn how to use it, and RISC-V will have something similar too I believe in January.

</comment></comment></comment></comment><comment><USER10> _Volume silicon manufacture is planned_

I highly doubt it. But if it's true, that would be the missing link for all open source hardware design.

It would also be nice if they gave some idea of the kind of performance or implementation they are considering.

<comment><USER11> People are making volumes of Bitcoin ASICs for surprisingly small amounts of money, so it is possible. The question in my mind is who's going to be buying volume quantities of this chip and why.

<comment><USER12> A company like Silent Circle/Blackphone could buy a million or two in the future. Maybe some Raspberry Pi competitors, too.

<comment><USER13> One of the team members was a co founder of the Raspberry pi.

</comment></comment></comment></comment><comment><USER14> I'm not familiar with the IP issues. Would it be possible to center open- source processor development around the ARM instruction set?

It looks like the privileged part of the RISC-V ISA is not finished yet. This is a great project, but it seems a long way off.

<comment><USER15> I'm surprised they don't just use OpenRISC, there's already hardware shipping that uses ASIC implementations of that internally.

<comment><USER16> They discuss their reasoning briefly in the manual [1, p. 3]:

 _We are far from the fi rst to contemplate an open ISA design suitable for hardware implementation. We also considered other existing open ISA designs, of which the closest to our goals was the OpenRISC architecture. We decided against adopting the OpenRISC ISA for several technical reasons:_

 _\-- OpenRISC has condition codes and branch delay slots, which complicate higher performance implementations._

 _\-- OpenRISC uses a fixed 32-bit encoding and 16-bit immediates, which precludes a denser instruction encoding and limits space for later expansion of the ISA._

 _\-- OpenRISC does not support the 2008 revision to the IEEE 754 floating- point standard._

 _\-- The OpenRISC 64-bit design had not been completed when we began._

[1] [http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-54...](http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-54.html)

</comment></comment></comment><comment><USER6> (Disclaimer: I'm developing my own RV64 FPGA implementation.)

I wish the page was a little more clear on what the intentions are, etc, but seeing RV64 in silicon would be immensely exciting. Producing a simple in- order machine, even with usual set of peripherals isn't very hard at all and nor that expensive on an older process node, but there's a world of difference if we start talking superscalar out-of-order multi-core SMP. Seeing OpenRISC on the Advisory Board I suspect it's more the former than the latter.

</comment><comment><USER17> I've spent some time with Robert Mullins and he is an absolutely stand-up guy. It was a pleasure to be taught by him.</comment>


Ask HN: Which is better, Avast or McAfee? - <AUTHOR>

I need your opinion guys. Which is better? Avast or McAfee? <comment><USER2> Better is relative. I always recommend Avast. It's free, and it works. McAfee, back when I used it, used a lot of memory and slowed down my parents' computer. It also had one feature that is now taken care of by User Account Control. Based purely on my memory, I say go with Avast.

</comment><comment><USER3> I find the use of FOSS operating systems to be the best form of antivirus, but if you must use MS Windows, I've heard that AVG Free (as in beer) is top notch.

</comment><comment><USER4> If it's a Windows machine, I would recommend Microsoft Security Essentials. It's surprisingly good.

</comment><comment><USER5> Mac OS X

(or Avast)

</comment><comment><AUTHOR> Thanks for your suggestions, guys.</comment>


The Ecological Fallacy - <AUTHOR> http://blog.statwing.com/the-ecological-fallacy/ <comment><USER2> The notion that rich _people_ voted for Romney while rich _states_ voted for Obama may also be misleading. While you can attempt to prove this by comparing the incomes of voters at the 100k+ breakpoint, I'm fairly certain the correlation disappears if you set a breakpoint at 250k+. You can see this trend illustrated in the 2008 election exit polls[1]. Obama won the lower income ranges and McCain won the 100k - 200k ranges. However, Obama also won the 200k+ income level. In other words, if you look at those with incomes greater than 100k, it appears that McCain won the rich; however, if you look at those with incomes greater than 250k, the rich seem to favor Obama.

While I suspect something similar holds true for the 2012 election, such granular breakdowns weren't reported in this cycle's exit poll summaries. The answer is probably hidden away in Edison Research's database, but the raw data hasn't been released yet. For now, you can get a good feel for the income breakdown by looking at Reuters polls[2], and doing the cross-tabs yourself, but there are quite a few undecideds and the sample-size is small.

And I agree that the 250k+ breakdown is also arbitrary, though slightly less so, since it's the lower bound for what many politicians define as "rich". But who knows who those with incomes of 1 million+ voted for? I suspect it was probably Romney. But how about billionaires? The point is that setting such broad and arbitrary breakpoints can be misleading. I'm sure this fallacy has a special name, I just don't know what it is.

[1] <http://www.cnn.com/ELECTION/2008/results/polls/#USP00p1>

[2] <http://elections.reuters.com/#poll>

</comment><comment><USER3> It's important when discussing this fallacy to be precise in your terminology, because phrases like "more likely" have different meanings depending on context.

>U.S. states with proportionally more immigrants have proportionally more households with income above $100k.[1] Ergo, immigrants are more likely than non-immigrants to have household incomes above $100k.

Whether or not that's a fallacy really depends on how you interpret that statement. If my only information about the world is what is stated above, then finding out that someone is an immigrant should increase my estimation of the likelihood that their household income is above $100k. Being an immigrant is evidence of living in a state where it's more common to have a household income over $100k. Living in a state where it's more common to have a household income over $100k is evidence of having a household income over $100k. When I learn more about the world, my model will change, and I'll stop being wrong about this particular thing.

The fallacy comes when you say that the group correlation _implies_ a correlation at the individual level.

</comment><comment><USER4> As my first introduction to the ecological fallacy, I thought it did a good job concisely stating the fallacy, with good examples to illustrate it (both intuitive and non-intuitive).

The next question that would inevitably come up is: how do you know? I'm guessing there isn't a way short of looking at the data for individuals. It would probably be safe to always assume group data does not imply individual data.

And, of course, this is another way that people can use statistics to lie to you. I would not be surprised at all to find people intentionally using this fallacy to their benefit.

<comment><AUTHOR> Unfortunately, I'm not aware of any good heuristics for identifying when the ecological fallacy is or is not an issue. As you suggested, that implies that one should always consider it to be an issue if the individual level data isn't available.

Does anyone know of anything I'm missing here?

<comment><USER5> Recommended reading "Proofiness: The Dark Arts of Mathematical Deception" by Seife. Talks about this fallacy and others in depth.

The best approach is multi-variate analysis. Which is to say for each correlation you find, identify another correlation that would be true (and is measurable) if the cause was what you hypothesize is the cause. Its a great way to write a paper too.

You start with "look at this correlation", we hypothesize that cause is "Q" and now we go look at the following correlations to prove or disprove our hypothesis, ... analysis and graphs ..., as you can see our hypothesis is thoroughly {proven | disproved} by these correlations.

If the data isn't available to do additional analysis then you are stuck trying to collect that data somehow. You can end up with inconclusive results in that case.

</comment></comment></comment><comment><USER6> One example of this that I recently read about was the measurement of development in india, that for a long time happened on a family level and so missed a lot of inequality and lacking of basic capabilities and freedoms for women. Not only did this mean that the information was wrong, it also lead to it taking longer to acknowledge just how important empowerment of women is in fighting poverty.

</comment><comment><USER7> For the chart showing "% Vote for Romney vs. Median Household Income (2010 data)" isn't that actually a positive correlation? It looks like the income is moving in lock step with the vote for Romney percentages.

<comment><AUTHOR> Thanks for the question.

The fact that income moves very tightly with vote for Romney means it's a _strong_ correlation. Since one variable goes up while the other goes down, it's a _negative_ correlation.

You can have any combination of strong/weak and negative/positive correlation.

The image on wikipedia is good for wrapping your head around the distinction between the strength and the direction of the correlation (and the distinction between strength and the actual slope of the line of best fit). <http://en.wikipedia.org/wiki/Correlation_and_dependence>

Apologies if I misunderstood your question.

Cheers!

</comment></comment><comment><AUTHOR> OP here. Thoughts/questions/comments?

<comment><USER8> I would recommend toning down the advertising a bit. Leave it in the beginning, or at the end, but not both.

<comment><AUTHOR> Duly noted. Thanks for the feedback.

edit: Deleted the ad at the end, replaced with a link to the front page.</comment></comment></comment>


Amazon Shoppers Misled by Bundled Product Reviews - <AUTHOR> https://www.theguardian.com/technology/2019/apr/05/amazon-shoppers-misled-by-bundled-product-reviews <comment><USER2> All I know is it gets even worse in technical products where not just different versions, but entirely different products are bundled together equally as often. Worse is when you have what is the same product listed as 2-3 different items in the search results. Which one do you pick?

I wish there was an "Amazon Only" version of the site, with only products sold and distributed by Amazon and high quality affiliates only. Of course with comingled inventory, this is much less useful.</comment>


Web Pages That Suck - <AUTHOR> http://www.webpagesthatsuck.com/

<comment><USER2> I remember a time when webpagesthatsuck.com didn't suck. Now it's full of ads.</comment>


The Apple Watch Series 3 ripoff: how carriers want to charge for zero data use - <AUTHOR> https://theoverspill.blog/2017/09/15/the-apple-watch-series-3-ripoff-how-carriers-want-to-charge-for-zero-data-use/ <comment><USER2> Of course it makes no sense - from a consumer perspective. They charge for anything they can get away with. Remember when they charged for SMS? SMS cost carriers nothing. [https://www.wired.com/2008/12/text- messages-c/](https://www.wired.com/2008/12/text-messages-c/)</comment>


The Monster Truck Madness 2 website has been taken down - <AUTHOR> http://www.microsoft.com/games/monster/?hn <comment><USER2> Way to go HN this is why we can't have fun things.

(C'mon MS don't be jerks, be proud of your history and leave that up!)

Edit: in fact, want to sell Windows' awesome backwards-compatibility? Make 1 edit to that site, detailing how to make the trial of the game run in Windows 8.1. Then leave it as a testament to the OS's huge legacy. Be proud of it. Wear it as a badge of honour.

<comment><USER3> As a marketer myself, this makes the most business sense. Leverage your legacy. People (lots of people) find it cool for various reasons. Leave it up, and call attention to how it can still be played even on new systems.

This was a PR win before they took it down. They have the ability to turn it around and continue to make it a positive, but they have to do it fast.

</comment></comment><comment><USER4> It's because of [http://nypost.com/2013/11/05/microsoft-com-is-stuck-in- the-1...](http://nypost.com/2013/11/05/microsoft-com-is-stuck-in-the-1990s/)

<comment><USER5> That is truly a horrible article. Meant to be nothing but mean about Microsoft.

I am fairly critical of Microsoft myself, but usually for stuff that they actually do wrong. Keeping a webpage about an old game unchanged online, what is wrong with that? It's not like they came out with 3 updates to the game without modernising their webpages.

My list of negative things about the article:

      1. There is no author named
      2. Picture of Bill Gates is irrelevant
      3. Title is misleading
      4. Second paragraph is too open to interpretation
           - Should be "1 of 9^9^9 pages on microsoft.com remain untouched"
      5. Third paragraph uses "such as" to imply there are more titles
      6. Calling the hn thread fiery and inaccessible, what exactly is inaccessible about a thread on hn?
      7. Second to last paragraph only tried to poke fun at microsoft. Essentially like complaining that a tesla car only runs on electricity.
      8. Last paragraph, why not just add another 500 words explaining all the other browsers that the webpage might not work on without doing any testing.

<comment><USER6> It's the New York Post; expecting anything other than a hit piece from that rag just seems wrong.

<comment><USER7> Is this the famous "impartial" American media I hear so much about?

<comment><USER8> I don't think anyone, anywhere makes a claim that the American media is impartial.

However, there are widespread, strong claims that in American media, everyone is _free_ to share their opinion, leaving it up to the American people to take in the numerous opinions and decide for themselves.

What you see here, a bunch of people freely pointing out that one of these media is utter garbage, is absolutely how the system is supposed to work. We accept a bit of chaff, rather than let vested interests dictate to us.

It's a shame that enough people believe in shit like the NYPost to keep them in business, but it's nothing compared to the hell we'd be in if we accepted the news sources of non-free government sources unflinchingly.

</comment></comment></comment></comment></comment><comment><USER9> Somewhere a forgotten IIS 3.0 server has caught fire, burned to a crisp, and is now in Windows NT heaven.

These two are still available in all their glory, at least:

[http://www.microsoft.com/games/motocross2/](http://www.microsoft.com/games/motocross2/)

[http://www.microsoft.com/games/midtown/](http://www.microsoft.com/games/midtown/)

<comment><USER10> Also one of the most underrated game of those glorious times, Urban Assault : [http://www.microsoft.com/games/urbanassault/](http://www.microsoft.com/games/urbanassault/)

<comment><USER11> I came across with a forum where a fan-made remake is being orchestrated:

[http://forums.metropolisdawn.com/viewforum.php?f=29](http://forums.metropolisdawn.com/viewforum.php?f=29)

</comment></comment></comment><comment><USER12> If you don't get why this is an interesting (and fun!) fact, you probably missed this thread from yesterday: [http://news.ycombinator.com/item?id=6672029](http://news.ycombinator.com/item?id=6672029). The web page that is now gone had been up, more or less unchanged, from when the game was released back in 1998.

</comment><comment><USER13> Supposing we wanted to organize a letter (well, email) writing campaign to try to convince microsoft to change their decision and leave it up as a heritage site....which department/manager would we email?

In particular, I wouldn't want them to go on a purge of old game pages now they're aware they still have some, all because of Hacker News + a NY Post article.

</comment><comment><USER14> Hopefully it will remain here - unchanged forever: [https://web.archive.org/web/20131105002953/http://www.micros...](https://web.archive.org/web/20131105002953/http://www.microsoft.com/games/monster/default.htm)

<comment><USER15> I made sure to save it to Archive.org as soon as it hit Hacker News; figured someone was going to realize it was still up and take it down.

EDIT: There were older versions of it, I just wanted to grab that snapshot in time. Here is the bookmarklet I use to do this:

javascript:void(open('//web.archive.org/save/'+encodeURI(document.location)))

</comment></comment><comment><USER16> Nothing but contempt for this barbaric destruction of its own history. A new low point.

<comment><USER17> Umm, there's still the Wayback Machine, which is where this belongs. It's kind of ridiculous to expect Microsoft to host completely out-dated content forever.

<comment><USER16> This isn't bit rot. It's ridiculous to remove a product because it got minor media attention.

They are ashamed of their own history and have no sense for public relations. Many successful companies build museums and archives, support outdated products, sponsor enthusiasts of old crap, etc. In return these companies have dedicated fan bases, enthusiast clubs and whatnot.

But MS doesn't get it, because they are too concerned with their quarterly earnings and the only marketing they understand is paying an agency big bucks for pretty lies.

<comment> w0rd-driven A thousand times this. My fanboyism dies a little each time shit like this happens.

</comment></comment></comment></comment><comment><USER18> Wow. Thanks for spoiling the fun Microsoft.

<comment><USER19> At least the Motocross Madness 2 site is still up ([http://www.microsoft.com/games/motocross2/](http://www.microsoft.com/games/motocross2/)). Same for the page on Outwars ([http://www.microsoft.com/games/outwars/](http://www.microsoft.com/games/outwars/)).

Maybe it just broke for the first time in 15 years. ;)

<comment><USER20> Outwars is mechanically interesting. Controls sort of like Starsiege: Tribes (there's a jetpack), and you can control the legs and torso separately ala MechWarrior.

<comment><USER18> Back when big games studios, you know, tried to do things differently and be refreshing.

</comment></comment></comment></comment><comment><USER21> So HN reminded a Microsoft sysadmin to purge old directories.

<comment><USER22> And even more interesting the response time for that change was very short. Honestly, I had supposed it will take days for a large company like Microsoft to do so.

<comment><USER23> A change control request to setup a redirect on a site from 1998 that will have the absolute minimum possible impact to anything else isn't going to take more than a signature or two even in a company as large as Microsoft. It might even be outside of the scope of needing any kind of official change control due to its age. While working at Xerox I had authority to kill off long forgotten public facing sites that had slipped through the cracks over time.

<comment><USER24> At my bank, any type of change requires a 48 hour cool down from request approval to change. Sure you can put it through as an emergency change but then a committee of SVPs and EVPs has to approve it and they pretty much never approve anything.

<comment><USER23> Even for something so old and outdated? Because I have done consultancy work for some banks and have seen things (mostly incorrect data to be fair) changed in under half an hour once pointed out.

<comment><USER24> There are three types of people at my bank:

1\. Business users. So unbelievably locked down it's ridiculous. Anytime they ask for access rights it's "can't, because of audit".

2\. Application IT users. As locked down as possible while still allowing them to somewhat do their job.

3\. Infrastructure IT users. Domain admin rights with their standard user login. Ability to bypass any proxy server restriction by default.

It's basically the worst of all worlds. The business users and application IT people can't do anything in the name of following "security best practices" while the infrastructure IT people (including the business analysts and non- technical people in that group) have carte blanche because "they couldn't do their job without it". They don't even follow basic security practices like using a non-privileged account for everyday use and having an elevated account for when they need to do something. It's a complete mess.

So thinking about it more - the infrastructure IT people make instant changes all the time.

<comment><USER23> Yup that is pretty much my experience of a dozen blue chips and banks. It is either all or nothing. A lot of this is Microsoft's fault due to how crap things were done back in the XP and earlier days and while we have moved on a lot of places stick to how they used to do things rather than re-evaluate how things can and should be done now. Sucks but that is the way the corporate world is it seems.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> My adolescence has just been put in a shoebox and buried in the back yard.

</comment><comment><USER26> It's a real shame. You don't just go and delete your history!

</comment><comment><USER27> In the early 1990s there was a Nintendo game released called _Wally Bear and the No! Gang_. It was an insipid platformer with graphics from a MECC Apple II game and a thudding "stay off drugs" message. It got some attention in the mid-2000s when the Angry Videogame Nerd reviewed it.

And then in 2006, on some message board, a gamer discovered that the 1-800 number advertised in the game was still running, and you could still call in and hear the voices of Wally Bear, Toby Turtle, and all their friends. As soon as word spread about it, though, the 1-800 number was disconnected. By the time I had discovered it, Wally had already been silenced... forever.

<comment><USER28> Running an toll free number isn't cheap, especially when you set it up in the 90s and a bunch of random internet people are calling it. Given that the companies behind the game seem to have petered out, I imagine they had given some amount of sales to the people running the 1-800 number in the 90s and the money finally ran out.

</comment></comment><comment><USER29> I am sure that this nypost flame-post, combined with the increased traffic from HN made a 35+ year old department mananger spill his coffee in the morning. MS has no balls.

<comment><USER30> Wrong, they now have coffee flavored balls.

</comment></comment><comment> martin-adams I suspect they saw a surge in traffic and realised that they aren't redirecting it to a page selling their current products and services.

<comment><USER31> Or a MS employee reads HN.

<comment><USER32> More like a PR employee for MS reads HN. Seems like a move by a concerned PR person and not an engineer who most likely would have recognized the significance of the positive feedback on sites like HN.

Let's hope someone with some history at MS rectifies the situation and rel- launches the site with the accompanying HN post announcing it.

</comment></comment></comment><comment><USER33> This goes to show that Microsoft employees, too, procrastinate on HN.

<comment><USER34> But not enough.

</comment></comment><comment><USER35> [http://web.archive.org/web/19981206154756/http://microsoft.c...](http://web.archive.org/web/19981206154756/http://microsoft.com/games/monster/)

Likely the only Microsoft page with the words " _YEEE HAAAAA!_ " on it.

</comment><comment><USER36> Somehow this reminds me the story of shell.windows.com: [http://blogs.msdn.com/b/oldnewthing/archive/2009/01/14/93177...](http://blogs.msdn.com/b/oldnewthing/archive/2009/01/14/9317706.aspx)

</comment><comment><USER37> Why is ?hn added to the linked url?

<comment><USER38> Because it doesn't actually affect the site and it gets around HN's duplicate detector.

</comment></comment><comment><USER39> Man thats a shame I had a wicked blast of nostalgia seeing geocities back online again : )

<comment><USER40> try neocities.org

</comment></comment><comment><USER41> About time people start using "HN Effect:" prefix for title of posts like this.

</comment><comment><USER42> Let's murder this one too: [http://www2.warnerbros.com/spacejam/movie/jam.htm](http://www2.warnerbros.com/spacejam/movie/jam.htm)

</comment><comment><USER43> I'm glad I saved all those sample WAVs.

<comment><USER44> Please put them on YouTube or somewhere else. I wish I downloaded the trial version while I could. What a disappointment.

</comment></comment><comment><USER45> What does it mean? #WarrantCanary

</comment><comment><USER46> Too bad. It was 'refreshing' to step back in time to an old pc game!

</comment><comment><USER47> I still get seizures from MS websites.

</comment><comment><USER48> Aww man...I liked that site.

</comment><comment><USER49> They'll opensource it next.

</comment><comment><USER50> Why is there a _?hn_ referral in this submission its URL?

<comment><USER37> I was wondering the same thing. Makes me think there's some corporate involvement in the link.</comment></comment>


Install OpenWRT, Chillispot, FreeRadius Based Managed Hotspot(s) Including PayPal Payment Gateway - <AUTHOR> http://www.howtoforge.com/openwrt-chillispot-freeradius-chillifire-hotspots-including-paypal-payment-gateway <comment><USER2> Not to be a douche, but how often does a person find themselves out of range of an open access point? In my neighborhood alone there are 10. I had to start using WPA just to keep myself from stumbling onto other, lower signal power SSIDs when I'd fire up my laptop's wireless at home.

With Starbucks and other chain operators apparently going over to an unlimited access plan, and typical coffeehouses, etc. offering free wireless, and cellular services (RIM, iPhone, etc.) that allow a perfectly reasonable simulacrum of wireless connectivity -- I guess my question is, why go to this much trouble?

<comment><USER3> Heh, I take it you don't live in a small town in the Midwest. ;)

</comment></comment><comment><USER3> Very cool!</comment>


U.S. job openings at record high, skills mismatch emerging - <AUTHOR> http://reuters.com/article/newsOne/idUSKCN11D1UX <comment><USER2> Wanted: Graduate developer with 10 years experience.

Until job ads like this become less endemic I'm unwilling to entertain any notion of a skills shortage.</comment>


Show HN: Stocks+ a 1-for-1 replacement for the Apple Stocks app - <AUTHOR>

This is our take on what the iOS stocks app should be. Would love to hear feedback on it.<p>https://itunes.apple.com/app/stocks+-alerts-real-time-stock/id667161120?ls=1&mt=8 <comment><USER2> You app looks great! Reminds me of the vim solarized theme. One thing I've always wanted was an easy way to track common commodities like oil, gas, gold, and silver prices. This is often best done by tracking multiple ticker symbols. Having a simple way to track all of these would be a killer feature (i search oil and all the oil related tickers are combined into one handy visual). Cannot see anything wrong with your app. Nice work!

<comment><AUTHOR> Thank you! That's a really good point. We'll be adding a Commodities watchlist in the near future!

Are there any particular tickers that you use? With oil, there's spot and futures. The ones on yahoo are mostly futures dated the next month. It would be more involved to have to keep updating it monthly as opposed to an index.

It would probably be more straightforward to use an index like iPath S&P GSCI Crude Oil TR Index ETN (OIL)

What do you think? Thanks!

</comment></comment><comment><USER3> Link: [https://itunes.apple.com/app/stocks+-alerts-real-time- stock/...](https://itunes.apple.com/app/stocks+-alerts-real-time- stock/id667161120?ls=1&mt=8)

</comment><comment><USER4> This app is great. One thing I would suggest is adding performance indicators for the chart period you are currently viewing.

</comment><comment><USER5> Why is it free?

<comment><USER6> The question is how is it free? They must be pulling the data from some free source else these real time stock quotes cost a lot.

<comment><AUTHOR> Yes, we are. We might have to move to a proper paid service like BATS when this gets bigger.

[http://www.quora.com/Stocks-financial/Where-do-sites-such- as...](http://www.quora.com/Stocks-financial/Where-do-sites-such-as-Google- Finance-get-real-time-financial-data-from)</comment></comment></comment>


Free resources made by designers at Facebook - <AUTHOR> http://design.facebook.com <comment><USER2> The license on the IOS GUI: [http://facebook.github.io/design/license.html](http://facebook.github.io/design/license.html)

You can't use any of this in an actual application. So, I make a mock up and show it to someone and then my finished work has to be different from the mock up to avoid copyright infringement? In that situation, I would say I have intentionally defrauded my customer(/employer) and they should refuse to pay (or fire me) and win.

(More likely still, I use them anyway since a graphic artist has made the mock-up and I presume they created or correctly sourced the graphics.)

<comment><USER3> Summary: I don't see an actual problem here.

"...found in the public release of iOS 9." Facebook can't claim copyright on Apple's UI elements by simply recreating them in a Photoshop mockup.

Upon further reading of the license, I see that it says you can't embed the Facebook Design Resources in an app. In other words, you can't redistribute their Photoshop files.

<comment><USER2> Now I am even more confused. What is Apple's license on Apple's UI elements that facebook can make this derivative work?

From reading the description it sounded like they were making original elements in the style of Apple's for apps with non-native features that need to blend in.

<comment><USER3> I'm sure the license that allows me, a 3rd party app developer, to make 'derivative works' (native applications) that use Apple's UI elements, also permits this kind of use. However, I am currently disinclined to read the current developer license agreement to find out if this actually is the case.

</comment></comment></comment></comment><comment><USER4> Very minor note: The page for the hands is named handskit. In Swedish that would translate to handpoo. (Or perhaps handcrap.)

Got a small chuckle out of it, because poo.

That said: Nice share, will probably come in handy. (rimshot)

</comment><comment><USER5> "Diverse Device Hands" looks... handy. (Sorry, I'll get my coat.)

</comment><comment><USER6> What's the economics behind many tech companies sharing their tools?

<comment><USER7> They get to spend less on training, making employees more commoditized.

<comment><USER7> I'm curious as to why this is downvoting while the top-voted response has this exact same thing in it. Is HN just allergic to anything that isn't cheerleading the software industry?

</comment></comment></comment><comment><USER8> Facebook are nailing it at the moment. I love the look of Origami ([http://facebook.github.io/origami/](http://facebook.github.io/origami/)). I wonder how long until it can export to react(-native) components...

<comment><USER9> Wow, that's great! I have missed something like that, not just for designers and developers to connect, but also for single developers to reach themselves. Sometimes I want to visualize for myself in order to see what works, and to see what I want.

</comment></comment><comment><USER10> Origami looks really nice, can someone that has used it for some time share their experience with it?

<comment><USER11> There's been a flood of these types of tools recently, Origami being one of the early ones. I found this handy comparison chart:

[http://www.cooper.com/prototyping-tools](http://www.cooper.com/prototyping- tools)

</comment></comment><comment><USER12> So, if you are a designer or a product manager, you cannot use Linux. I wish that Facebook, with all its money, could have supported cross platform design frameworks.

<comment><USER13> They are giving these assets out for free, and they most likely use Macs internally.

If you want them for Linux, feel free to provide your own to the community.

<comment><USER12> I can't. I neither have the resources nor the ability. However, locking it to the Mac ecosystem eliminates possibilities for third world countries (like India and China) which are using Linux right from schools.

<comment><USER14> I believe the appropriate idiom here is: "Don't look a gift horse in the mouth".

<comment><USER2> > "Don't look a gift horse in the mouth"

The winners apparently write both the history and the idioms. The Trojans would have done well to look a gift horse in the mouth.

A wooden horse can be full of physical soldiers and a digital horse with legal ones.

<comment><USER15> Looking at a real horse's teeth shows how worn down they are over age. Looking at a horses teeth is to check its age.

The idiom could be modernized to: 'dont check the odometer of a gift car'

<comment><USER2> Yes, and the assumption is that a horse is worth between $0 and some number so there is never a reason to refuse a gift horse.

In the case of other "gifts" the value can be negative. The trojan horse, software, and blankets from Lord Jeffery Amherst all need careful examination.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: Why learn a back-end stack? - <AUTHOR> I am 30, and working in a call center. I think there is no future in this job. So I am looking for a change in career. I have no previous experience in programming. I like building and working on new ideas. So I want to learn coding. Is coding right choice? What do you suggest me starting from? <comment><USER2> You are going to receive many suggestions and many words of advice in this thread. Here is mine, so that you can consider this as well while making your final decision.

\- Coding is a good choice but like any profession, it has its pros and cons. Pros could be immense job satisfaction in creating something that has a tangible effect on the world. Cons could be having to work for terrible managers that could turn a fantastic job into a very depressing one.

\- I suggest you start with Python and Django. Complete the Python Tutorial. Complete the Django Tutorial. With these two under your belt, you could apply for entry level Python-based web development roles.

<comment><USER3> I second this. Python is an easy language for beginners and getting your foot in the door opens other possibilities for you later. Just start with something and keep at it until you land a coding position somewhere.

</comment></comment><comment><USER4> Coding is the right choice if you have a passion for it. If you don't have CS background, then for self-learning you will need a lot of dedication. Generally, for all popular languages, you will find free video tutorials on YouTube. If you don't mind paying a little, then Udemy also has very good set of tutorials. Be ready to put one solid year of effort into it though.

As a first step learn one language well. I would suggest one of:

1\. Javascript: Runs everywhere. You can make Mobile, Web and Backend applications in it.

2\. C# and .Net Platform: You can make Mobile, Web and Backend applications in it.

3\. Java: A solid choice for Backend and Android apps.

4\. Python: Good choice for backend and machine learning.

<comment><USER5> I wouldn't say js runs everywhere... If you're getting started out it's possible they might use shared hosting instead of roll a VPS..so while js/jquery will work everywhere... NODE/JS as a backend won't unless nodejs is installed.

However PHP + Jquery is a good option and it DOES literally work everywhere.. I've run laravel from shared hosting... wanted to kill myself and can't run everything like using a redis cache...

You can also use laravel for backend, frontend, and mobile (as an api). A good mix is laravel api + cordova or ionicframework for the mobile part.

</comment></comment><comment><USER6> Coding is a good way to build things and work on new ideas, but certainly not the only way. And you can make as much or more money in a field that does not require as much knowledge or skill. DBAs, system administrators, network engineers, and other fields allow you to work on problems and make a living without having to immerse yourself in complicated languages and years of studying different solutions to problems.

<comment><USER7> It is being asked from sysadmins and network engineers to be able to code in at least 1 language (typically Python or Ruby).

</comment></comment><comment><USER8> >Is coding right choice?

"Coding" is always the right choice. Some people might even say that not being able to code is a form of illiteracy in the modern, computer-dependent world. That doesn't mean that you should solely focus on programming and disregard all other skills (like a linguist?), but coding combined with other skills and knowledge brings us the seemingly wondrous stuff we use every day.

If you are going to do it professionally, you will likely never truly struggle with finding a job, though job satisfaction may vary depending on management/perceived impact.

>I like building and working on new ideas.

This is the right attitude - if combined with persistance. Remember also that programming in itself is mostly defined by not knowing something and having to google it.

You are probably best off by first working your way into a language with a hello-world tutorial or two, followed by checking smaller code-challenges (Advent of Code, or just a list of "Common Coding Interview Questions") to get a more moderate in-depth view on things and topics to check out. (and also get into the problem-solving mindset)

Afterwards (or alternatively), try to come up with something moderately small that you want to code yourself but don't know how to do (e.g. a small calculator employing native UI?) and research your way through it.

Overall, I recommend against trying to memorise every little thing you learn upfront - there's more things that can be known than the human mind has capacity for, and you will have to face the more common concepts/problems often enough that you learn them anyways due to natural repetition or because you are annoyed that you have to look them up constantly. (e.g. binary and hex numbers, logic operators/gates, etc.)

</comment><comment><USER9> Given you are interested in working on new ideas, it seems like you are looking at programming from entrepreneurial point of view. If that's true, focus on the problem you want to solve and then pick up tools along the way. Programming is a great skill to have and will go a long way.

If you are looking at programming to gain employment then probably I would pick up data analysis within customer support domain rather than software development at this point in your career. Your employment prospects will improve many folds if you are able to perform data analysis providing industry insight having worked in the industry. Don't throw away your experience, use it for operational analytics.

</comment><comment><USER10> I tried learning backend over the summer and it confused the shit out of me. If you're a beginner I suggest you check out [https://www.turbo360.co](https://www.turbo360.co) since that's what I've been using to start. The guy who runs it posts a lot of tutorials on how to make sites with complicated backends, so learn that and once you've got the hang of it you can go on the more complicated programming

</comment><comment><USER11> Way to go on wanting to embark and double down on a new path! I love coding and although it will be a hard choice I think it will be a good one. I feel that back-end or front-end for web would be a good start. I would start by working through Free Code Camp: [https://www.freecodecamp.org](https://www.freecodecamp.org). I believe some of their students have actually landed jobs working through all the curriculum.

</comment><comment><USER12> Try some MOOCs. There's "Python for everybody" specialization on Coursera, it's newbie-friendly but you get to build a little product that does something. IMO, that should be your first milestone - build something small that works and see how you feel about that. If you find it interesting, you can go for more courses and after some time you'll know where to go next, but if you're not really amused maybe you should give something else a try.

</comment><comment><USER13> If you decide to do Javascript, I highly recommend FreeCodeCamp. [https://www.freecodecamp.org](https://www.freecodecamp.org)

</comment><comment><USER14> Programming is surprisingly local because different industry's prefer different languages. I suggest looking at local job adds to get an idea for what to learn.

</comment><comment><USER15> I would highly recommend learning JavaScript, php and Laravel a rapid web application development framework to get ideas off the ground quickly. There are a lot of free online resources to learn Laravel and a great community behind it.

</comment><comment><USER16> Yeah coding is a right choice, there is plenty of work in this field.

My advice is : Pick a language (any language is good) most trendy currently for backend are : python, nodejs, ruby, java and follow a beginner course on this language.

</comment><comment><USER17> Right choice if you want to do it for money (at the moment you never know what's ahead).

You basically have 2 options in my opinion

1) technologies in demand ( js,java,c#,mobile,rails,python,sql etc)

2) do it for fun (pick whatever you want)</comment>


Dataviz: How much do doctors really make, after opportunity cost? - <AUTHOR> https://www.statnews.com/2017/07/18/doctors-salary-specialties/ <comment><USER2> Don't think the visualization is working correctly, I always get the same difference no matter what subject I choose and even though the visualization itself is changing in shape.</comment>


An idea for a mobile mouse - <AUTHOR> http://www.whatifceo.com/better-mobile-mouse/

<comment><USER2> Backwards. We don't need mobile mice, we need desktop multitouch.</comment>


What Would It Take to Disrupt a Platform Like Facebook? - <AUTHOR> https://hbr.org/2016/03/what-would-it-take-to-disrupt-a-platform-like-facebook <comment><USER2> I think one thing it has been good at is adding features or networks. twitter never really evolved.</comment>


New Features in C# 7.0 - <AUTHOR> https://channel9.msdn.com/Events/Connect/2016/105 <comment><USER3> I for one am incredibly excited for both Pattern Matching and proper Tuples.

I have code bases that are about to become significantly shorter because of both. I do need to sit down and perform an analysis to understand the performance implications of this, thought I suspect there aren't many.

I'm not sure what to make of local functions. I've read and re-read about them but I still don't see the utility over a private function, unless they were intended to alleviate the performance issues that come with using a local Func<> inside of a method.

<comment><USER4> I'm torn about these features. On one hand I can see the usefullnes, but on the other hand I also expect them to be used in bad ways.

Pattern matching for example on types may indicate an OO design problem. Tuples may indicate an expression problem; often times a properly named class expresses intent much better.

As with any tool it is possible to misuse it, but pattern matching and tuples feel to me somehow as an _especially_ fit tool to misuse.

<comment><USER5> The sweet spot for tuples are single-use cases local to a function, not global tuples flying around

</comment></comment></comment><comment><USER6> Mutable tuples look like a really weird design choice. The most important reason I used tuples in python is the immutable semantic they have - <USER2> won't change.

<comment><USER7> Tuples are value types, so every new reference to a tuple is a copy. This avoids a lot of the situations you would normally get.

</comment></comment><comment><USER8> Previous discussions: [https://news.ycombinator.com/item?id=12356259](https://news.ycombinator.com/item?id=12356259), [https://news.ycombinator.com/item?id=12971841](https://news.ycombinator.com/item?id=12971841)

</comment><comment><USER9> Can we get a [video] tag?

<comment><USER3> Also, here is the raw slide deck in case anyone wants to skip the video:

[https://view.officeapps.live.com/op/view.aspx?src=https%3a%2...](https://view.officeapps.live.com/op/view.aspx?src=https%3a%2f%2fsec.ch9.ms%2fsessions%2f69613110-c334-4f25-bb36-08e5a93456b5%2f105WhatsNewVBandCSharp.pptx)

<comment><USER10> Thanks, that was a great slide deck.</comment></comment></comment>


Putin Signs "Digital Iron Curtain" into Law - <AUTHOR> https://safehaven.com/tech/internet/Putin-Signs-Digital-Iron-Curtain-Into-Law.html <comment> g-erson When a state enforces a law like this, forcing all traffic through routers they control, presumably it makes it easier to detect traffic using VPNs/Tor? I'm guessing this would have to be done through some kind of heuristics based mechanism?

<comment><USER2> Where was anything about forcing traffic? They just made fake news and criticising the state fineable offences.

<comment><AUTHOR> > The package of harsh restrictions is called the "digital sovereignty bill", > which requires all Russian telecoms companies to reroute internet traffic > through the state telecom regulator, Roskomnadzor.</comment></comment></comment>


The Pope on Twitter - <AUTHOR> http://thenextweb.org/2008/10/28/the-pope-on-twitter/

<comment><USER2> while not religious in any sort of way myself, i WOULD actually subscribe to any sort of up to date instant publication by the pope, or dali lama, or philosopher like dawkins.

you don't have to agree with the messenger, but the message can provoke great new lines of thought and understanding.

<comment><AUTHOR> Good point. I only wish religious people were as open minded as you are... :-)</comment></comment>


Would be thankful for some feedback on new Opinion Polling site, just launched - <AUTHOR> http://www.betabooth.com/ <comment><USER2> Way, way too similar to Digg. "Prop It" is painfully similar to "Digg It". You need to create a unique feel in order to attract users to an already saturated idea, you can't do that by mimicking something that already exists.

The site doesn't have any focus. Its just polls on 'stuff'. You _need_ to have focus. You are a latecomer in a busy field that has negligible entry barriers, without focus you won't get any traction.

The interface is slickly done, at least the login popup looks nice. But I know that I won't bother going past a login barrier to vote on polls about stuff that is trivial and not interesting to me (again, relates to lack of focus).

What it comes down to is that the UI is nicely done, but that it doesn't matter if the UI is nice if it isn't something that people want to do in the first place.

I don't think this idea is compelling. The implementation is strong, but I don't have any desire to use your site. I think the best investment you can make is to focus on a niche so that your site is somehow relevant to a group of people even if it is a small group, instead of irrelevant to everyone.

</comment><comment><USER3> Really, really slick looking, but not KISS enough for a poll site I reckon.

The main thing I noticed is that the current results -- which would be the most interesting thing to me -- are very hard to find. I reckon some indication of them should be on the home page right there with the polls listing. The run-down should at least be on the poll page.

Also, when I (finally) found the View Results button, the results appeared down about a whole page (in Firefox 2.0, but worked in IE7).

I agree with willarson about not signing up to vote on trivialish polls. Or at least make it much easier to sign up -- I had to enter my religion and 10 other things before it let me past. At most to vote you should just have to enter your username/password/email. I understand why you want that stuff -- for poll demographics -- but it makes it just too hard to vote on a simple poll.

</comment><comment><USER4> Get rid of the Prop It button and sort by number of votes instead.

Don't make me register to vote. I bailed as soon as I saw that. Just use cookies to identify users. If you get popular enough that you start to see abuse, deal with it then.

Colors not very cheery.

Titles alone are not enough to explain polls (e.g. Who's the bigger train wreck?) Why not put the options on the frontpage with the title instead of making users click through to see them?

<comment><USER5> Yeah second this .. loose the registration to vote. I'd love to vote on some of this but just won't do it if I have to register.

I observed that search doesn't work on option's. So although "which cola drink do you prefer? " has pepsi as an option .. searching for pepsi yields nothing. The reason it's important to have this is often I'm looking for what people feel about some product (pepsi/iphone/ubuntu) etc I don't want to guess what the question is.

Also I don't know what your monetization strategy is .. but I would hate to see something influence the choice of votes. like this [http://www.betabooth.com/poll/What-Non-cola-Sugary-Drink- Is-...](http://www.betabooth.com/poll/What-Non-cola-Sugary-Drink-Is-The-Best) If you want to have adverts make it non related to the questions asked.

</comment></comment><comment><USER6> Hey everybody...

Thanks a lot for all the feedback! It's amazing some of the things you sort of assume while you're developing something, but then when they're brought to your attention, it's obviously relevant :). We're working to redevelop our ranking system so that it's tied in with voting. Therefore, voting will constitute support for that poll. We're also streamlining the first-time user experience so that you can successfully vote without signing up.

These were all great comments, thanks so much for taking the time to check out the early iterations of our site. Development is now full-time, so if you ever have any more opinions, we'd love to hear them!</comment>