We Need More Operating Systems - <AUTHOR> http://blog.acthompson.net/2013/01/we-need-more-operating-systems.html <comment><USER2> It is interesting how folks who come from a commercial exposure to OS'es hated UNIX. I admit I was one of them, I was a big TOPS-20 fan, thought RSX-11M had a lot going for it, Unix not so much. Then I went to work for Sun Micro and later joined the kernel group there.

Operating systems are 'easy' in the sense that a small group can create them, and pretty much do all the legwork needed to get them into a product. Building hardware is more complex, it involves coordinating manufacturers, part suppliers, and the software to run it.

What happens then is if you're a hardware manufacturer _and_ an operating system supplier, then you can tell your designers to make the hardware like you want, you can write the libraries you need in the OS, and everyone leverages the work of everyone else. In the Windows world the 'duopoly of Microsoft and Intel' led to an artificial relationship between hardware manufacturer and OS vendor but it was the same.

But if you're _not_ a hardware supplier, you spend an inordinate amount of your operating system resource trying to deal with random bits of hardware you might want to use. Then your OS makes as few assumptions about the hardware as possible and it becomes as simple as it can in order to avoid incurring a huge overhead in getting new hardware into the system. It was this latter feature of UNIX which I really didn't appreciate until I went to work at Sun.

I agree with Thompson that it would be nice to have more general purpose operating systems. They are out there, Spring, Chorus, eCos, VMX, Qnx, Etc. but generally they target a more specialized niche whether its embedded or research or some level of security. I'd love to see more accessible OSes as well.

One of the projects I started a while back has been an OS for ARM systems that is more like DOS or CP/M or AmigaOS than UNIX or Windows. The thought was something simple that was straight forward to program, not your next Cell Phone OS or something that you'll need a couple of Gigabytes of memory to run, just something you could write and deploy code on for fun or educational purposes. It has been fun to look at "apps" like this. Imagine something that had a shell that was sort of like the Arduino processing UI except self contained. But again, its not general purpose. It's just a tool.

I think the next wave in the 'real' OS wave is going to be something very much different than what we think of today, something where it assumes there is a network behind it and that the rest of itself is out there somewhere as APIs. Of course civilization may collapse first :-)

<comment><USER3> > I think the next wave in the 'real' OS wave is going to be something very > much different than what we think of today, something where it assumes there > is a network behind it and that the rest of itself is out there somewhere as > APIs.

I'd be quite interested to hear more about this, if you have more ideas and care to elaborate.

<comment><USER2> Understand that I'm a networking guy from way back so I tend to see in that light :-)

So there are a number of forces at work in the market, one is the decreasing cost of compute and storage, another the increasing availability of wide bandwidth networks. A seminal change in systems architecture occurred when PCI express, a serial interconnect, became the dominant way to connect "computers" to the their peripherals. Now sprinkle in the 'advantages' of keeping things proprietary, with the 'pressure' of making them widely used, and those bread crumbs lead to a future where systems look more like a collection of proprietary nodes attached to each other by high speed networking than the systems we use today.

From that speculation emerges the question, "What does an OS look like in that world?" and so far the only thing I can think of that seems to work is a bunch of 'network apis.' Lets say you build your "computer" with pieces that are connected by 10Gbit serial pipes and a full bandwidth cross bar switch. Your 'motherboard' is the switch, the pieces are each completely 'proprietary' to the manufacturer that built them but the API is standard. This is not a big change in storage (SAS, FC, and SCSI before it have always been something of a network architecture) its becoming less uncommon for video, and why not compute and memory? Memory management is then a negotiation between the compute unit and the memory unit over access rights to a chunk of memory.

The Infiniband folks touched on a lot of these things 10 years ago but they were a bit early I think and they aimed pretty high. But they have some really cool basic technology and show how such a system could be built. Trivially so if there were a 'free API' movement akin to the FOSS movement.

This removes the constraint of size as well. And if you're cognizant of the network API issues amongst your various pieces you get to the point where your 'OS' is effectively an emergent property of a bunch of nodes of various levels of specialization co-operating to complete tasks. Computers that can be desktop, or warehouse sized, and run the same sorts of 'programs'.

<comment><USER4> Have you seen Plan9?

 _A Plan 9 system comprises file servers, CPU servers and terminals. (...) Since CPU servers and terminals use the same kernel, users may choose to run programs locally on their terminals or remotely on CPU servers. The organization of Plan 9 hides the details of system connectivity allowing both users and administrators to configure their environment to be as distributed or centralized as they wish. Simple commands support the construction of a locally represented name space spanning many machines and networks._

<http://plan9.bell-labs.com/sys/doc/net/net.html>

<comment><USER2> Yes, I am aware. I was at a Usenix conference where Rob Pike presented a paper on it, back when it was a bright idea out of Bell Labs. It is the curse of brilliant people that they see too far into the future, get treated as crazy when they are most lucid and get respect when they are most bitter [1]. I was working for Sun Microsystems at the time and Sun was pursuing a strategy known as "Distributed Objects Everywhere" or (DOE) but insiders derisively called it "Distributed Objects Practically Everywhere" or DOPE, it was thinking about networks of 100 megabits with hundreds of machines on them. Another acquaintance of mine has a PDP 8/s this was a serial implementation of the PDP-8 architecture, Gordon Bell did that in the 70's well before serial interconnects made sense. It was a total failure, the rest of the world had yet to catch up. Both Microsoft and Google have invested in this space, neither have published a whole lot, every now and then you see something that lets you know that somebody is thinking along the same lines, trying to get to an answer. I suspect Jeff Bezos thinks similarly if his insistence on making everything an API inside Amazon was portrayed accurately.

The place where the world is catching up is that we have very fast networks in very dense compute. In the case of a cell phone you see a compute node which is a node in a web of nodes which are conspiring to provide a user experience. At some point that box under the table might have X units of compute, Y units of IO, and Z units of storage. It might be a spine which you can load up with different colored blocks to get the combination of points needed to activate a capability at an acceptable latency. If you can imagine a role playing game where your 'computer' can do certain things based on where you invested its 'skill points' that is a flavor of what I think will happen. The computers that do shipping, or store sales will have skill points in transactions, the computers that simulate explosions will have skill points in flops. People will argue whether or not the brick from Intel or the Brick from AMD/ARM really deserves a rating of 8 skill points in CRYPTO or not.

[1] I didn't get to work with Rob when I was at Google although I did hear him speak once and he didn't seem particularly bitter, so I don't consider him a good exemplar of the problem. Many brilliant people I've met over the years however have been lost to productive work because their bitterness at not being accepted early only has clouded their ability to enjoy the success their vision has seen since they espoused it.

</comment></comment></comment></comment></comment><comment><USER5> (upfront confession: I love Linux)

Ah yes, the old "why did UNIX win? OtherOS was so much better!" chestnut. Reading the article, and yes, the usual suspects come up: VMS, TOPS-20, etc, etc. What I'd like to know is _why_ these OSes were supposedly better, or at least list some of their advantages (eg, versioning filesystems[1]). I'm not questioning the pedigree of the author (someone who actually worked with almost a dozen really different OSes), but the article is almost vacuous, and entirely predictable.

I don't doubt that maybe back then UNIX was a dog (just look up the UNIX haters handbook sometime), and it would be really neat to see some revolutionary research in OSes gain traction (my interests in this area include too many to list, but Plan9, Coyotos and Oberon come to mind).

But I think a few important factors have lead to Linux leading the pack: first, it's open source. Second, "worse" is better[2]. And perhaps most important, Linux will (probably) be the last OS[3].

[1] - [http://en.wikipedia.org/wiki/Versioning_file_system#Files-11...](http://en.wikipedia.org/wiki/Versioning_file_system#Files-11_.28RSX-11_and_OpenVMS.29)

[2] - <http://dreamsongs.com/RiseOfWorseIsBetter.html>

[3] - [http://linux.slashdot.org/comments.pl?sid=101317&cid=863...](http://linux.slashdot.org/comments.pl?sid=101317&cid=8633695)

<comment><USER6> > Linux will (probably) be the last OS[3]

As a long time linux user I sincerely hope you're wrong about that.

There is definitely room for something more modern.

<comment><USER7> Are you talking about a new kernel or a new userspace? It's an important distinction.

<comment><USER6> I'd be very happy to see something like QnX, unix on the outside, robust message passing kernel with clustering built into the heart.

QnX is _much_ more than just a neat little kernel to do embedded stuff with.

<comment><USER8> I remember working with QnX back in the mid-90s and found it quite fun (compared to Unix at the time). A friend of mine worked at a company that made commercial X servers and that company's fastest X server ran on QnX (yes, even with the overhead of message passing, it was faster than their Unix version on the same hardware).

<comment><USER6> Hummingbird by any chance?

<comment><USER8> No, it was Metro-X from MetroLink.

<comment><USER6> That vaguely rings a bell but I don't think I've seen it in action. Pity!

Maybe the future will bring us something like that again, I sure wouldn't mind. The nay-sayers argument that 'micro kernels are slow' seems to be mostly limited to those that have never actually used a micro-kernel based OS for anything. What I remember was - for the time especially - nothing short of astounding performance, 30K slices / second on a lousy 486/33 was not exceptional at all. At the time most other OSs were doing 20 or so...

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'd like to twist the title to be, "We need to solve more hard problems".

A considerable amount of what we do in computing is either (1) re-solving old problems with a new shell/language/os/widget library or (2) plumbing between said solutions for communication. This is a fairly ridiculous state of affairs. At the risk of being a snob & starting a flamewar, I'd like to point out that node.js doesn't need to exist: it reimplements systems that already existed, and forces a contorted programming style. Why isn't that energy poured into Erlang or better libraries in C++ for event handling? The same argument can be made for a number of different technologies (why do we have F# divergent from OCaml, why do we have D instead of a better C++? why does MS have to keep spinning their APIs and forcing rework?).

My point is, when something is solved, it's good to move on until a compelling reason is found. Operating systems are largely solved, but most of the research stems from the 60s-80s, AFAICT. A number of concepts brought up back then got dropped in the rush to PCs and DOS. One that I particularly remember is the idea of multilevel security partitions. OK, maybe that's a bad idea. But it'd be good to look into it again. What about operating systems written in dynamic languages? What would that look like in a multicpu/multithreaded/multiuser environment? It'd likely be absurdly slow, but maybe it doesn't have to be. There's got to be some great work that was done in Genera that can be leached into the modern world.

Why, for instance, is the most common text entry solution a QWERTY keyboard? Why even a keyboard? Isn't there a better solution (voice has worked really badly for me, sadly). Isn't there a better way than what amounts to a revamped typewriter? What about the mouse? My mouse looks suspiciously like Englebart's mouse from '69 or so. Tablets are a _great_ step in this regard. I don't really _like_ them, but I have great respect for Apple, Google, and MS for trying to move beyond the WIMP paradigm. Even if in a decade we still use it, at least we know it's a local maxima. :-)

</comment><comment><USER10> An OS just needs to get out of the way and let applications work so that people can actually get things done. If the OS is succeeding in allowing the required applications to be made, then we don't need more operating systems. If it is failing to cater to the specific needs, then a new operating system will be created to run those apps - see iOS, Android.

You don't build an OS and then build things for it. You build things you need to run, and then you build an OS if you can't run them without it. The article has this relationship backwards imho. In the same way, many people create frameworks and then try to fit them to problems instead of creating frameworks to solve problems.

</comment><comment><USER11> I think the time that new operating systems are able to gain traction is right on our doorstep.

The bar for making a desktop OS has been lowered from needing to support Microsoft Office or implementing a feature-equivalent office suite, having a full fledged UI system and many system libraries to just needing webkit to be ported to it.

When your operating system supports html and javascript it can already run 90% of what most people do with their computers.

To add to that, hardware that is easier to boot (ARM SoC's) is becoming cheap enough to produce that almost anyone (Raspberry Pi, OUYA) can launch a new hardware platform.

So the distance is being closed from both sides.

I personally think the next step to really making operating system development a popular field again is a new programming language. Yes, really, I think a new C would really be great. A C that has sane syntax and semantics, allows you to structure your code and supports integrating higher level constructs.

<comment><USER12> In what way does C fail to have sane syntax and semantics? You may not _like_ the syntax or semantics, but they are reasonably simple and clean; I would say they are eminently sane. The portion of the C spec that defines the language (chapter 6) is actually quite straightforward compared to most language specifications.

The syntax is especially straightforward. I can find a few complaints about the semantics (mostly that there would ideally be less implementation- and undefined-behavior), but no worse than my complaints about any other language.

<comment><USER13> The syntax may be familiar, but I've always thought it's rather arbitrary. There's relatively little over-arching design: it's like they just stuck together features until they had something relatively big. The exact selection of syntactical forms only seems reasonable because it's been around so long and influenced so many popular languages, not because it's particularly neat or simple.

Some syntactic forms are rather annoying. For example, you have different ways to write pointer types: int* foo vs int * foo. (Hmm, I am no good at escaping asterisks in HN comments.) This just causes confusion; conceptually, the * is part of the type, but syntactically it isn't! The array syntax is also rather arbitrary. Why can you do foo[0] or 0[foo] when every other similar operation is an infix operator? Why do you write int foo[] when the type of foo is really an int array (say int[]) rather than an int? Why have both an if- statement and a ternary operator? (Actually, the whole statement/expression divide is annoying especially in how it influenced a whole bunch of other languages.) There are a ton of other little inconsistencies and annoyances (let's not even talk about the C preprocessor). Ultimately, the main thing C syntax has going for it is familiarity, but that seems to be more than enough. I certainly find the syntax strictly worse than a bunch of non-C-like languages, although it's difficult to compare them because they have vastly different semantics.

The semantics are also a problem. As you mentioned, the overabundance of undefined behavior is certainly not good. This certainly causes very real difficulties for even experienced programmers. Then there are a whole bunch of classic C errors that cause rampant security problems and hard-to-debug behavior. Now, some of these are inevitable due to C's providing low-level access for memory management, but others could probably be avoided with different design decisions.

Now, C is obviously a practical and widely-used language. But, as ever, a language's popularity is far more a social issue than a function of its design. The main reasons it seems simple and clear is because it's been around forever, it's influenced the syntax of most popular languages and everyone has either learned C or a very C-like language.

<comment><USER14> "Why have both an if-statement and a ternary operator?"

Because one is for control of statement execution and one is an expression that returns a value. Two similar-in-purpose but different-in-meaning constructs.

In my experience, if the ?-: operator is written in the same way as the if- else (condition, true, and false parts each on their own line), nested expressions are quite clear and understandable.

</comment></comment></comment></comment><comment><USER15> Seconded, but Linux and OSX seem to be the root causes of this (Net-/Open-/FreeBSD people flocking to these).

What happened to all the extremely interesting efforts like EROS (<http://www.eros-os.org/>) with its global persistence (i.e. can basically recover back to the previous state from switching off the system), Amoeba ([http://en.wikipedia.org/wiki/Amoeba_distributed_operating_sy...](http://en.wikipedia.org/wiki/Amoeba_distributed_operating_system) multiple hosts seen as one) and others that actually brought extremely useful (even from today's perspective) new paradigms to the table?

Most new OS-related efforts seem to happen around virtualization nowdays.

<comment><USER16> A truly distributed OS would be incredibly useful in times like this where people may have a mobile phone, a tablet, a desktop workstation and maybe even their own server.

Having all files, processes and system resources accessible from all my devices would be great.

<comment><USER17> Another Thompson has worked on it with others: It's the Plan 9 project, and later Inferno. Currently efforts are headed right in that direction both at OS and language level.

What you describe is already under way for devices of the same brand/manufacturer is already happening (I'm a afraid make it happen between vendors is going to be a much longer story). It seems to me like a strong selling argument and I don't understand that some big consumer electronics vendor like Sony or LG didn't make it happen already. Maybe the technology isn't cost effective yet.

I think that the next major step is to make these technoknowlegies both user- friendly and programmer-friendly in order to make them mainstream. The innovation the author wishes for already happened 20 years ago. What really needs to happen is that someone take it out of the cupboard and use it.

</comment></comment></comment><comment><USER18> There are two primary issues. First is the performance of a monolithic kernel versus a message-passing microkernel. Linux has been tuned pretty extensively; as a monolithic kernel with a lot of eyeballs trained on it, it's hard to beat.

Second is the fact that the vast majority of OS kernel source represents deep OS _design decisions_. There are a lot of decisions to make. If you're going to make a lot of decisions that are the same as the Linux set, there's not much point in writing your own code. User space has a set of expectations; Linux conforms. Traction is difficult with non-conformance.

</comment><comment><USER19> Rob Pike actually wrote something similar in his short, self-proclaimed polemic, "Systems Software Research is Irrelevant":

<http://herpolhode.com/rob/utah2000.pdf>

"Only one GUI has ever been seriously tried, and its best ideas date from the 1970s. Surely there are other possibilities. (Linux's interface isn't even as good as Windows!) There has been much talk about component architectures but only one true success: Unix pipes. It should be possible to build interactive and distributed applications from piece parts. The future is distributed computation, but the language community has done very little to address that possibility."

"The world has decided how it wants computers to be. The systems software research community influenced that decision somewhat, but very little, and now it is shut out of the discussion..."

And particularly relevant to the HN community at large: "Be courageous. Try different things; experiment. Try to give a cool demo."

</comment><comment><USER20> Up front: I like Unix and Linux. But I think a big part of why Unix/Linux won is you could acquire them. 90% of life is showing up. In the bad old days you could not buy machines or OS's. Until IBM got investigated for anti-trust you leased them with a huge service contract. You had to sign non-disclosures just to use the things. BSD/Unix was available and then became unavailable during the Unix wars, giving Linux an entry.

</comment><comment><USER21> > I expect some innovative OS research is being done in universities.

Sadly, this statement is predominantly false. That's not to say that there aren't interesting ideas being tried out -- there are. It's just that the ways in which Unix is flawed aren't significant enough to warrant switching to a new system. Yeah, the security model of 'sudo' for any permissions at all sucks, but it gets the job done on production systems, and there are (ugly) workarounds to get better security. Yeah, dependency management sucks, but we have VMs to work around versioning issues. There are tons of people proposing solutions to these types of problems in academia, but Unix is entrenched, there's tons of software written for it, and industry is not going to adopt an alternate platform unless it is 10x better than what's out there. Academia is proposing systems that are 10% better, not 10x better, and add complications to the relatively simple process / file model of Unix.

</comment><comment><USER22> I don't think we need more operating systems. We just need more ideas, and to make sure that our existing operating systems are modular enough to allow them to fit into the picture.

Trying to recreate an entire operating system from scratch is almost universally doomed, even when the end result is something "better" -- Plan9, BeOS, take your pick. Doomed. Because if it's too great a departure from existing platforms all at once then after you're done reinventing the wheel somebody has to go out and build all new roads before you can actually deploy it at scale. All the apps people expect have to be ported (and who is going to port them to an OS nobody uses because it has no apps?), all the drivers for all the different hardware have to be written (and who is going to write them for an OS nobody uses because it has no drivers?), on and on.

Which doesn't mean they aren't useful as research projects rather than operating systems: You build something that works on one hardware platform and has no apps, but does something cool, and now you've got a proof of concept and the operating system(s) people actually use can adopt it. And then after they do, the research project OS fully dies because it no longer offers anything novel and it still has no apps and no drivers and no developer community hunting bugs and so forth.

The thing we need is an operating system modular enough to allow the implementation of new ideas. Which we pretty much have; and if you can identify an exception, kindly do your part and submit a patch.

Most people don't need a versioning file system, but if you do, they're available. And if you don't like the existing ones then you can write your own and plug it in without having to write your own SATA controller drivers. The list of features in Plan9 is basically a TODO list for the Linux community with a good chunk of the boxes already checked.

Evolution beats revolution better than 99 times out of 100. All competition is simultaneously healthy/necessary and a wasteful duplication of effort. Having the competition occur at a lower level of granularity reduces the reduplication. Once you get one piece right, that piece can stay as long as it fits while you keep iterating on everything else, without having to reinvent and reimplement all the things that already work.

Saying "we need many more operating systems" is like saying "we need many more mutually incompatible version of Internet Protocol" -- even if you can point out a hundred reasons why IPv4 and IPv6 are both terrible, you're still wrong. There are areas where it's better to work collectively toward getting it right the first time (or at least, getting it right the second or third time instead of the thousandth time), because incompatibility and wasted reduplication are not without cost.

</comment><comment><USER23> _After all you would have to compete with an OS that is firmly entrenched on 85-90% of desktop systems on one hand and a free operating system on the other_

Linux proves this wrong. People built that when the market was completely dominated by Windows.

I think the author misses the real reason we don't see a bunch of new OS's: Unix variants and Windows solve their problems very well, and at this point most of the improvement is at the GUI/application layer (a la OS X).

<comment><USER24> But the server OS market was much more fragmented, and that's where Linux had its original success.

<comment><USER25> Also, the phone OS market was much more fragmented, and that's where Linux had its other success.

The desktop, on the other hand… let's say there is disagreement there as to whether Linux is a success there at the moment.

</comment></comment></comment><comment><USER26> I'm writing open source networking software that has potential to become an operating system like Cisco IOS. I see a niche opening up here because networking firmwares running on hardware have been doing a great job for years but are now being squeezed out by virtualization. There's room to replace them with new software (but we have to act fast before everything but the kitchen sink is shoehorned into the Linux kernel).

This is open source so if you want to do some relevant OS-style hacking then you're welcome to get involved. It's called Snabb Switch and it's at <https://github.com/SnabbCo/snabbswitch/wiki>

</comment><comment><USER27> I'd like to suggest we actually need more diversity on every level of the stack. Just about everything being sold as a "computer" is a modernized version of the IBM 5150 that runs (and sometimes is built to run) Windows. Those that don't, run something either inspired or directly derived from AT&T's Unix. Every computer you buy today has one or more CPUs connected to a single memory address space. When they have non-volatile memory attached, it's treated like a disk drive.

Sometimes, when I treat a file, I have the disturbing feeling I'm reading a stack of cards... Palm and Newton didn't even have files. I spent far too much time trying to hammer trees into serial stores and vice-versa because those were the tools of the time. There has to be better ideas needing exploration.

And a new OS idea, for the first time ever, does not require you to give up a usable collection of software - most software that make up a modern Unix desktop require little more than X and POSIX. Regardless of how weird your underlying OS is, as long as you have that, programmers will be able to use your OS and work on it, which is the only real way to make them write software for it.

</comment><comment><USER28> I wish there was a reasonably speced out microkernel OS that, if not gaining traction, wasn't based in conspiracy theory or academia but in the practical benefits of having it.

I see a very beautiful world where a small kernel could handle preemptive scheduling, virtual memory, and provide a virtual file system and virtual socket abstraction. Devices could use the socket layer and file system to take control of DMI devices provided by the firmware, but still run in userspace. If you used the plan9 "everything is a file" model, system devices could easily exist in their own directory, etc.

Then you use a newer privilege model, where an application derives its rights from its parent, who can either down-cast their rights or keep them at the same level as the parent, and the privileges influence the application specific view of the file system (like in Plan9).

For IPC, I'd really want to put in an effort to use the lower range ipv6 addresses in a highly optimized virtual socket dispatch so you could have _one protocol to rule them all_. Every IPC and remote communication, to any device, to any service on any machine, could be done over an abstracted ipv6 layer. Screw the maligned utility of dbus, unix sockets, RPCs, etc, use what you already have and optimize the hell out of that.

Also, I'd like to see a reasonable and sane file system. I like how /usr in Unix has nothing to do with a user anymore. How some systems expect /cdrom to be a thing in an era where a tremendously small fraction of machines have baked in CD roms, and those would be SATA devices if not USB externals. The Linux and OSX top level file systems always drive me nuts.

I'd use that visibility privilege model to have multiple users - an all user, public user, root user. System binaries would be under root, users would have visibility on themselves and any other user they are given access rights to (passworded or not) including the all and public. You can install and compartmentalize binaries and libraries appropriately. If you want a jail, create a user without any access privilges on other users, and they can only run in a personal vacuum. If you do a good security model where only applications within +/-1 of the privilge heirarchy can see in the socket layer another process, a jailed user would only have visibility on _servers_ like what we have in pulseaudio and X instead of hardware like the gpu or alsa, and those services could be steeled against aggressive input.

Such a system I feel would be a breath of fresh air for writing applications. If the runlevels were something like:

0: kernel 1: hardware devices and init 2: hardware service servers, daemons, and login manager 3: max privilge user session, possibly more login managers and daemons to support lower privileged users. 4..n: restricted user sessions with limited views of other contexts.

Any layer could explicitly passthrough a higher level service or daemon to visibility on the lower tiers, but it would need to be explicit, you have a very limited scope by default.

I'd love to write software in a context like this. Security sounds better to me, communication is unified, and what you see (in the filesystem) is what you get.

<comment><USER29> Have you seen <http://en.wikipedia.org/wiki/MicroC/OS-II> ?

<comment><USER30> And don't forget <http://www.minix3.org/> which, although unix-like, certainly tries some new things (e.g. the reincarnation service).

</comment></comment></comment><comment><USER31> What is the point of having more OS if even Linux isn't well supported by driver suppliers or software developers? Just to have more fragmentation?

Sure, I love the idea of Plan9, I love small OS like MINIX and revolutionary UI ideas... but let's face the hard truth, most of this projects are destined to live in the research field.

</comment><comment><USER32> I'm wondering if it would make sense to build an OS based on principles important in functional programming, such as immutability. I can't think of any benefits right off the bat, but I'm also no OS designer..

</comment><comment><USER33> This may seem silly, but I'd love to see an extremely simple, single user, single tasked OS like CP/M, but written to exploit modern hardware.

The incredibly tall software stack we all live on makes our hardware seem much slower than it actually is, I've long wondered what we could actually get out of modern hardware if we treated it like we used to treat hardware back in the 80s and early 90s - close to the metal and highly optimized.

<comment><USER34> > The incredibly tall software stack we all live on makes our hardware seem > much slower than it actually is

Actually, it doesn't really. Modern OSes take up far more RAM (because more services are kept available) but when you're performing operation solely in user space on a modern system, the OS doesn't really interfere. The only impact on any multitasked system -- process scheduling -- is carefully written to have an undetectably small overhead when there's only one busy process.

The reason why computers can still occasionally feel slow is:

1) They are processing millions (sometimes billions) of times more data than 1980's era computer.

2) You can always fill up the resources on your computer or overwork your hard disk. This can slow your computer down a 1000 fold.

<comment><USER33> Sorry I should have been more clear. I'm thinking about modern webapps written in Javascript, living in browser, on top of a modern OS pushing all that around (while managing security and virus scanning everything crossing through I/O) with dozens of services running, listening and/or polling various bits of hardware controlled by a scheduler -- once had a printer driver that ate 100MB of RAM and 5% of CPU time background checking to make sure I had paper and enough ink. Sure the convenience of all that is wonderful, but I can't help wonder if things should be much faster than they are.

It really does seem insane to me that I can, at times, type faster than my computer can keep up.

</comment></comment></comment><comment><USER35> It's interesting to me how different the opinions are of people who are interested in research and advancing technology vs. business people and consumers who, ultimately, are the ones using that technology.

I love seeing new progress but I have to admit that my job would be a lot easier if there was one operating system and one browser!

<comment><USER5> It's particularly interesting to people like me (and I suspect many others on HN), because we straddle the line ("wear many hats"). I personally love crazy ideas ( _everything_ is a file! No, really, look at Plan9!) and wild research directions. But for my day to day work, where I have to ship? Linux just works. But I also like having options, both to play with (personal) and to solve problems (work). In many respects, Linux already has enough flexibility and options to satisfy me.

As for fragmentation, get used to it; it's part of the job. Things are more unified now than they've ever been, it might not stay that way, and one of the major thrusts of the OP (and many comments here) is that there may be _too_ much unification, and not enough variety and options.

</comment></comment><comment><USER7> Whenever these discussions come up people tend to blur kernel and userspace. It's happening here, and it's not unforgivable since most operating systems package both together. That's actually half the reason Richard Stallman wants you to say GNU/Linux, the technical correctness of the name (the other half is what makes that annoying).

What adventures like Debian on FreeBSD (kFreeBSD) and even Android teach us, though, is that you can take a great kernel with its sweeping hardware support and build something better on top of it. The hardware work has been done for you. Apple could have _easily_ built OS X and Darwin on top of Linux-the- kernel instead of Mach (what an interesting world that would be), but they had a limited range of hardware to target and the resources at their disposal to tailor Mach to their known hardware targets.

The kernel for the Intel architecture is, I think, at this point mostly figured out. Microkernel had its shot and on Intel we have seen that it's too slow (even though it makes more sense on paper). Linux is pretty darned good, and I think any attempt to be better will, after a few years, end up looking like Linux from several years ago. The Intel architecture has been stable for a long time, and a lot of clever minds have come up with ways to squeeze every drop out of the machine in Linux.

When people say "I want a new operating system!" I'm not hearing them desire a complete kernel rewrite; that's doomed to fail for a plethora of reasons including hardware drivers. I'm hearing them desire a new userspace and GUI. Make something like OS X based on Linux and I'd spend $500+ to buy it and fund its development.

<comment><USER36> "The kernel for the Intel architecture is, I think, at this point mostly figured out. Microkernel had its shot and on Intel we have seen that it's too slow"

Does that judgment include QNX? I'm under the impression that it has quite a good performance for a microkernel.

<comment><USER37> It has great performance. And on top of that, it is as stable as a rock. Disclaimer: I love microkernels.

</comment></comment></comment><comment><USER38> In order to transcend the modern operating system we need to transcend the modern programming language paradigms.

<comment><USER30> Why, may I ask? Isn't that a bit like saying to truly understand the human brain, we'll need to transcend the use of English?</comment></comment>


Dropbox.com redesign - <AUTHOR> https://www2.dropbox.com/login

<comment><USER2> What's new? It's looks the same to me :(</comment>


Leaked AI-Powered Game Revenue Model Paper Foretells a Dystopian Nightmare - <AUTHOR> https://www.techpowerup.com/240655/leaked-ai-powered-game-revenue-model-paper-foretells-a-dystopian-nightmare <comment><USER3> This came up a while ago in the PC community and the consensus I saw was that it's a fake. It uses too much language that is deliberately evil in tone like "bait and switching" etc.

That said, Activision (or maybe EA?) recently received a patent for matchmaking technology that "encourages" you to buy items by first allowing you to be demolished by them, and then if you purchase you're allowed to demolish others so that you feel vindicated.

<comment><USER4> I've seen conference proceeding on youtube, mostly about some mobile gaming, that used this kind of language. It's not exactly rare, and such meetings are more targeted to the investor/business owner types rather than devs. Also the videos are rarely posted on any video sharing sites.

There are so many startups right now that focus on real time video analysis to determine activities like intrusion detection. Though these developments are focused towards defense and border security, I feel they can easily be retrofitted/repurposed for data collection as described in the slides.

If the argument that the slides are fake is based on how evil they sound, I just can't buy that.

</comment></comment><comment><USER5> It looks fake, if not because of the sci-fi tech then because slide decks don't go into this much detail. But it has that ring of _Black Mirror_ plausibility that means people will pay attention to it.

A "hashlib of engine noises" for determining user social class, ha! Fitbit spent millions of dollars just trying to accurately convert wrist movement into steps taken.

<comment><USER6> The first slide, which names the presenting company as "[redacted] data broker llc" already had my bullshit alarms firing. Does someone really name their company that? Who would trust such a company?

<comment><USER7> And why would the "[redacted] Data Broker LLC" text be left-justified while the other title lines are centered? Why not redact the _entire_ company name instead of leaving "Data Broker LLC", which is presumably part of the actual company name?

</comment></comment></comment><comment><USER8> If you've ever interacted with drug dealers and/or pimps, you know people are frequently this sleazy on a daily basis. People devise schemes to sell heroin to miserable people, and hook prostitutes on it so that they'll turn tricks in exchange for doses, operating brothels out of hotels.

What. Video poker and slot machines are the limits of this kind of business model?

Maybe what's really going in the comments here, is forum sliding and engineered flak.

<comment><USER9> The ones I have interacted with were nothing like you say here. There was this one that came from another city one time that was probably like that, but he did not last long in this city. I suppose the environment they have to work in has various factors they may make more of them do certain things in certain ways? Or perhaps you just trying to infer some kind of thing from pop movie culture or something?

I hate to see others read something absolutist like that and assume it's true, or mostly true more often then not, which I don't believe is true, even if it is some times.

Unless of course you are talking about the reps from the big pharma companies - then I might side with it's more true then less true.

Isn't the gamification of feeds in fbook and instagram basically this - <USER2> that make the ux designers pimps and the machine learning systems that hook people on the drip content the dealers?

People would work their fingers to carpal tunnel for some wow gold not long ago and kids have died in bathtubs as hooked parents were glued to facebook.

It would appear the synthetic digital heroin is worse than the natural stuff and affects people in their homes more so than hotels.

</comment></comment><comment><USER10> This is why you shouldn't play free-to-play games, or perhaps we should say "99.99% of android and ios games".

I mean, it's not quite this bad ... mostly ... yet. But it's very clear that this is where it's going.

<comment><USER6> Does the average f2p shovelware author really have the resources to implement a system like the one contemplated in this presentation? I doubt it.

<comment><USER11> "Does the average f2p shovelware author really have the resources to implement a system like the one contemplated in this presentation? I doubt it."

It doesn't matter. Take a look at Summoner's War, the top revenue MMO game right now. I could easily see COM2US (the developers) taking advantage of a lot of those things.

SW has a business model where you can certainly spend thousands a month if you have the money to throw away. I'd be very curious to know what it brings in from the average player per year.

</comment></comment></comment><comment><USER12> Provided that it's true, this could be stopped by just not giving the game access to the microphone (seriously, why would you?!) and removing the game from memory when you finish playing.

</comment><comment><USER13> I thought this was already called Star Wars Battlefront 2?

</comment><comment><USER14> Who is going to play such games then? It might be good indeed, emulators will be popular for real gaming experience and people might spend more time in nature doing stuff in real-life.

<comment><USER15> The same people that already play freemium games ?

<comment><USER14> I was hinting at a tipping point when most people will say "I've had enough, I am done with any game that abuses me this way". _Abuse_ is the perfect word here, we might even see a hashtag campaign #abusedbyai from this.</comment></comment></comment>


Where we see shapes, AI sees textures - <AUTHOR> https://www.quantamagazine.org/where-we-see-shapes-ai-sees-textures-20190701/ <comment><USER2> There is a misunderstanding here. It's not the algorithm that emphasizes textures over shapes, it's the dataset. Texture is a more informative feature than shape in the datasets used.

"AI" can detect shapes just fine; simply use a different dataset and you'll get a different result with the same algorithm. I mean, just look at the classic MNIST: it's all shape, no texture, and neural nets work great.

<comment><USER3> There's some truth to this, but it's not the whole story. CNNs have limitations in terms of what they can represent and what they can learn. Counting is an example of this. If I create a class of monsters with 10 eyes, and another that is otherwise identical, but with 11 eyes, these will be difficult classes to tell apart.

When it comes to "shape", part of the problem is definitional. In the MNIST example, the network will fairly easily learn features that are nodes, like where two lines intersect, but it has trouble with paths, like "an unbroken line that smoothly intersects itself." CNNs have trouble distinguishing things like a spiral from a set of concentric circles because locally they look the same.

<comment><USER4> It seems to me that the number of eyes problem should be solvable. Just convolve with an eye detector and threshold appropriately. Then feed everything to a single neuron in the next layer and threshold at 10.5. No?

The spiral vs. circles I agree with.

<comment><USER5> Solvable with human guidance, yes, but would any existing machine learning system come up with a successful strategy like this by itself? Most deep dream style images suggest the networks don't even realise that dogs have two eyes.

</comment></comment></comment></comment><comment><USER6> My take on this: if we want vision ML to succeed at recognition in the same way as humans, perhaps we need to pre-process and present visual information in the same way as the human vision system? As far as I'm aware, we get a lot of info from our eyes about lines and orientation that assists in recognizing shapes.

I'm not well-informed about the current state of visual recognition DL, perhaps someone who is can tell us more about whether that approach makes sense.

<comment><USER7> When you train a deep convolutional neural network, the first couple of layers appear to take on this role, detecting simple features like edges and textures, which the higher layers build upon to see more complex objects.

For example [https://www.researchgate.net/figure/Visualization-of- example...](https://www.researchgate.net/figure/Visualization-of-example- features-of-eight-layers-of-a-deep-convolutional-neural_fig2_279068412), where you can see (somewhat, if you zoom in) that layer 1 neurons are interested in very simple features, like strong horizontal edges, or particular gradients.

</comment></comment><comment><USER8> I'm a little confused by the assertion of "artificial intelligence's preference for texture over shape". The article makes it sound like an intrinsic issue with AI, when to my understanding it's just an outcome of popular image classification algorithms. Couldn't one create classifiers that depend more heavily on object shapes?

<comment> swagasaurus-rex I'd guess animals have a lot of compute dedicated to finding out the shape based off of various visual cues:

Lighting changes indicating edges

Gradients indicating a smooth curve

Texture maps that discern between matte, smooth, translucent, often in depth enough to determine the texture material itself.

Reflectivity

Changes in reflectivity when reorienting oneself or the object

Binocular Vision

Parallax effect between frames

A large database matching objects to memories and experiences

Many other techniques for tracking and seeing movement.

In the above, Parallax and Binocular vision, and consulting one's memory are the only ways to determine the _sizes_ of the objects being looked at.

It's why those optical illusions tiny/big rooms work so easily; neither we nor CV algorithms would be able to discern the sizes of objects without prior memory of such objects or by walking around it.

</comment></comment><comment><USER9> Babies use their hands to feel shapes. Maybe brain works hard to make the connection between the inputs provided through touch and vision.

Understanding shapes/outlines is useful for manipulating objects and avoiding obstacles.

Maybe the object recognition develops a bit later and builds on top of how brains already understand the world.

<comment><USER10> I think babies also have pretty crappy sharpness of vision. Maybe that's on purpose to help with initial learning how to see...

<comment><USER5> It seems they reach healthy adult sharpness by 6 months [1]. By the time they are sitting and starting to move they are certainly extremely good at finding tiny bits of fluff etc. to put in their mouths!

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

</comment></comment></comment><comment><USER11> Depends on the training data.

These networks are correlation-finding machines, and will simply latch onto the simplest correlation possible that produces the correct results. Only by explicitly controlling the correlations in the training data can you force the network to focus on the attributes that you wish.

This is why domain-randomization (such as the approach that NVIDIA is taking) helps support generalization -- it's a very direct and efficient form of regularization, removing correlations that do not generalize, forcing the network to work harder to find correlations that _do_ generalize.

This also has the added benefit of being something that we can tie back to requirements and physical properties, an important ingredient in making these systems understood and safe.

</comment><comment><USER12> So, a person with a gray texture of elephant skin shirt is classified as elephant ?!

<comment><USER13> One of the most archetypal failure modes of current NN-based classifiers is, for example, happily reporting seeing a spotted feline given a picture of a couch with a leopard pattern.

<comment><USER14> Well, if I'm given the task to enumerate what I see in that image maybe I would also add the feline label. But I would add the picture_of attribute, if that's a thing.

<comment><USER13> I don't think today's classifiers are anywhere sophisticated enough to have a concept of something vs. a picture of something, a type of use–mention distinction, or _ceci n'est un pipe_ if you will. The point was that people think they trained their classifier to recognize leopards, but in actuality it just learned to recognize the leopard _coat pattern_.

</comment></comment></comment></comment><comment><USER15> Does this have anything to do with AIs always learning from 2D photos when we learn from binocular vision so every image contains a lot more 'shape' information.

<comment><USER16> Not only this, but we when we see things _even when we are still_ our eyes/head move a small amount. Shape information is preserved in these multiple perspectives relatively more than texture information.

</comment></comment><comment><USER17> Yann LeCun (Chief AI @ FB) puts this article in perspective: [https://www.facebook.com/yann.lecun/posts/10156068737942143](https://www.facebook.com/yann.lecun/posts/10156068737942143)

TLDR: The use of texture is inherent to the ImageNet dataset and not to deep learning / ConvNet. Training on less-textured versions of ImageNet drives the ConvNet to focus more on shape.

<comment><USER18> Sure, but just because you can coerce an algorithm into doing something different does not mean the algorithm itself does not have fundamental tendencies.

</comment></comment><comment><USER19> I can't wait for the Hollywood version of this idea, _à la_ the Infrared viewer from _Predator_ or the machine's eye view from _Terminator._

</comment><comment><USER20> This shouldn't be news. Most computer vision NNs are CNNs where the convolutions are basically translating the image into small "textures". "AI sees textures" yeah because that's how we present data to it!

<comment><USER21> I wonder what would happen if we fed it SVGs instead of JPGs. (Shape files)

<comment><USER22> At that point it's less a task in the context of image processing and more one of graph learning / language processing, depending on how you want to formulate it.

<comment><USER23> Human vision certainly contains a component where we do 3d reconstruction and adjust our perception based on that. Many optical illusions depend on this step.

If we want more human like machine vision then having passes in image processing that deal with more abstract data sounds like a great idea

</comment></comment></comment></comment><comment><USER24> I thought that's why edge detection preprocessing etc is in use?

Doesn't quite seem like a break through insight to me?

</comment><comment><USER25> Just a temporary restriction until we start training AI in robots by interaction with the real world.</comment>


.NET Core WebSockets – Cross-Platform WebSockets From DMZ to API - Service Zone - <AUTHOR> https://github.com/NetCoreStack/WebSockets <comment><USER2> I find the description of the project pretty weird. It uses security related terms (DMZ) that you find mostly in corporate architectures, but doesn't provide any description of what makes this websocket implementation adapted to this use case. It also doesn't provide any kind of benchmark.

It looks like someone from a consulting company created an open source project based on what he's done for a customer.

<comment><AUTHOR> There are two websocket protocol implementations on .NET side which are ClientWebSocket and WebSocket classes. .NET Core Middleware uses the WebSocket class to handle all incoming websocket protocol connections on server side. This project provides easy manage the connections for all application layer with simple configuration and different message types (Binary or Text).

I preferred this description it because I wanted to associate it with the use case but you can call it a proxy, client or whatever!

</comment></comment><comment><USER3> Just to clarify since the naming might be a little confusing - NetCoreStack is Gencebay's project. Looks very cool, I'll mention it on our next ASP.NET Community Standup ([http://live.asp.net](http://live.asp.net)). The ASP.NET team recently released a WebSocket implementation ([https://github.com/aspnet/WebSockets](https://github.com/aspnet/WebSockets)) but it's not very full featured yet. For instance, the NetCoreStack project has some proxy handling, whereas I don't think the ASP.NET team's implementation handles proxies yet.

SignalR for .NET Core is under active development ([https://github.com/aspnet/signalr](https://github.com/aspnet/signalr)), but a release date hasn't been announced. SignalR brings in things like connection and group management, and the update can take advantage of some of the performance and architectural changes in .NET Core.

[Disclaimer: Microsoft employee, Nazgûl]

</comment><comment><USER4> I'm a C# developer currently developing and maintaining projects using WebAPI, MVC and ASP.Net Core. My main application uses WebSockets as the primary communications channel.

From the README and a quick scan of the code, I have no idea what this project does. It uses unusual terminology in the description, and doesn't seem to even address what problem it's solving.

Presumably those upvoting the post understand and see the value. Can you please help me understand?

</comment><comment><USER5> I'm somewhat new to websockets but that code looks suspiciously like the "non- scaling" broadcast mechanisms that .NET remoting used to offer. Can I safely assume this mechanism for pushing updates to clients doesn't scale in the same way most use cases (except single-use client requests) in .NET remoting don't scale too?

<comment><USER6> Could you explain the scaling issues with .NET remoting I knew there were issues but didn't know the specifics.

<comment><USER5> silver bullet. The idea was a wonderful new world where you could have remoted objects and not have to care about where and how they were. Except, you did have to care. The process of not caring resulted in a world where round-trips were not isolated and an excess of them occurred resulting in awful performance.

I forget the precise table but there were many means of using .NET remoting and basically all the "fun stuff": client-activated server-based objects, sever-based publishing (i.e. like this implementation of websockets), and server-based singletons all had immense problems with scaling. The only means of using .NET remoting that did scale was one-time-use server based services so to scale you'd end up just using .NET remoting like webservices/RPCs or REST APIs and effectively 3/4s of the features were "worthless".

It was an interesting diversion and was eventually "replaced" by WCF. It is still very much used under the covers of a lot of things though. IIRC COM still uses .NET remoting or aspects of it to communicate with .NET apps.

</comment></comment></comment><comment><USER7> What exactly is the difference between this and the standard .NET Core websockets?

<comment><USER8> Perhaps its not dependent on OS version like the stock one?

<comment><USER7> The stock one in .NET Core is a pure managed implementation.

[https://github.com/aspnet/WebSockets](https://github.com/aspnet/WebSockets)

</comment></comment></comment><comment><USER9> What happened to SignalR? That was easy to use and scalable.

<comment><USER10> Ongoing rewrite for ASP.NET Core:

[https://github.com/aspnet/signalr](https://github.com/aspnet/signalr)

<comment><USER11> On mobile so can't inspect the changes but is it really a rewrite?

If really so, that's a bit disappointing because I thought converting to core was going to be trivial.

<comment><USER12> .NET Core has a lot of things that are still in development unfortunately. Image processing is another major one that I don't think has been solved yet. I really like .NET Core from what I've done with it. Though my like for .NET in general is a bit tainted due to the pure joy of Visual Studio as an IDE.

</comment></comment></comment></comment><comment><USER13> Just a note that SignalR is being worked on, we announced as much in the .NET Core 1.0 blog post here: [https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcin...](https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing- asp-net-core-1-0/)

(The above says "later in 2016" which was a bit optimistic of us, but its being worked on)

</comment><comment><USER14> Is there any place where I can see some numbers for how many connections it can handle and at what benchmarks?

</comment><comment><USER15> Don't suppose there's any chance of getting this working in Unity?</comment>


Prototype: discussion groups only accessible with certain email domains - <AUTHOR> Hi,
I've been thinking about an idea for a while, and would like to know how other people think of it.
The idea is to automatically create a forum for each email domain, so that people within the email domain can have open discussions in the forum, but people outside the email domain can't access the forum.
Some scenarios where it may be useful: (1) a university of students with the @someUniversity.edu email can access an exclusive forum that automatically created for them (and they "just know" that it's their); (2) a company of 20 people use their @someCompany.com email to get an online discussion place for free.
The deeper idea behind this service, is that a person may be more open to other people with a similar background, and email domain seems to be a good indicator of "similar background". For example, there're a lot of topics a student may be open to discuss online, if he/she knows that the discussion is only visible to people with the same .edu email.
I spent some time to implement the idea, and a prototype was just released at www.commonbuzz.com
It's an over-the-weekend hack of Flarum(www.flarum.org), but at least show the essence of the idea. Feel free to check it out.
Cheers, - Andy <comment><USER2> In a corporate environment, people are already likely to have discussion channels for company business, such as Slack channels and e-mail lists. And if employees want to discuss politically sensitive issues among themselves, the last thing they'd want is for their private discussions to be traceable to their corporate e-mail accounts. Not to mention that their management and HR would have e-mail addresses in the same domain, which would really restrict open conversation.

Same for universities, where undergrads, grad students, faculty, adjunct faculty, administrators, support staff and alumni can all have addresses in the same domain. These groups have little in common, and don't really want to share their private thoughts with each other.

</comment><comment><USER3> The problem I see with this is that the need seems largely filled where it is real: where a common email domain represents a real community, it's often already a group that has closed discussion fora. Where it's not (most ISPs and webmail prroviders), even if they don't have private fora, it's unlikely that there is much demabdmmnd for a way to communicate exclusively with people with the same email domain.</comment>


Ask HN: Show us your work in progress - <AUTHOR> Are you working on something that's half baked? Or have you been meaning to release your project for ages but worried it's incomplete?<p>Show us! <comment><USER2> I'm developing the arduino package index. Basically an online repo where people can share their code/schematics with others. It is in the same spirit as the python package index. Have already integrated it into the Arduino IDE, and currently building the webapp. Should be done by next week. Currently talking with the arduino core team to see if this is something they would integrate into the ecosystem.

[https://github.com/ASIMUV/Arduino](https://github.com/ASIMUV/Arduino)

[https://github.com/ASIMUV/arduino-package- index](https://github.com/ASIMUV/arduino-package-index)

</comment><comment><USER3> It's not really "in progress" for the moment since I've essentially solved the problem for myself, but I examined several different techniques to enable real-time transliteration in OSX (in the vein of [http://www.translit.ru](http://www.translit.ru) — "chego" turns into "чего" as you type) and implemented most of them to varying degrees of completeness. I'm now happily using technique #1 (input method binary) in my everyday life and it's so, so much better than the default or phonetic Russian keyboards. Eventually, when I have some free time, I want to generate pre-compiled binaries, do some refactoring, create a pretty home page, fix the documentation, and add some extra features. But if you'd like to use it now, you can pull the code and compile to your heart's content. You can even change the transliteration input/output map to anything you want — the format is simple JSON!

[https://github.com/archagon/cyrillic- transliterator](https://github.com/archagon/cyrillic-transliterator)

</comment><comment><USER4> Working on a compiler for data collection. It's a simple programming language that allows you to launch surveys on android devices. We can also compile to an embedded webserver using (webtoolkit.eu) or a desktop survey using wxWidgets, but are they are lagging behind the mobile device at the moment, and building this is not documented

We are Open Source, the project is here

[https://github.com/neilxdsouza/xtcc- qscript](https://github.com/neilxdsouza/xtcc-qscript)

I just update the readme with build instructions and this was done in a hurry, I will be happy to clear any issues people face (but's it's late night here and about to head out to sleep). Lots of dependencies - emscripten, bison, flex, g++, node, phonegap (2.7.0 is what we are currently using) and android dev kit.

If you want a test account, please write to me, we have compiled and built the compiler on our server ([http://xtcc-qscript.com](http://xtcc-qscript.com)). Please don't use the account for anything serious and please use a different password as we do not have a ssl certificate in place.

</comment><comment><USER5> I'm developing a notification service that lets people sign up to be notified when something they are interested in occurs, and most importantly only when that occurs. The goal is to be agnostic and let people be notified any way they like (email, app notification, SMS, phone call, letter in the post box etc) and for developers to be able to send notifications for a wide range of specific events (e.g. tickets on sale for this band in this city) using an API in their language of choice.

A basic version of the website is up right now:

[http://bullhorn.io](http://bullhorn.io)

I'm really looking for feedback on what to work on next. Is this a service that you could use in your company? If not, what's missing?

The next directions I'm looking at are:

0\. Improving the look of the website.

1\. Adding API support starting with REST.

2\. Adding more notification methods (e.g. SMS).

3\. Adding ability to create multiple-fire notifications and parameter based notifications (e.g. notify me whenever the weather in TOWN is > TEMPERATURE).

4\. Adding built-in notifications such as weather, stock, etc.

Comments welcome.

</comment><comment><USER6> We are going live with our Toothbrush Subscription company in a few weeks and I would love your candid feedback before our launch: [http://maverickbrothers.com/](http://maverickbrothers.com/) Please comment on pricing, product, website design or anything else that you like or dislike. Thanks in advance! Marcos Founder

<comment><USER7> This is funny. I was pretty skeptical when I read your post, but when I looked at your site I realize how seldom I replace my toothbrush if my wife doesn't buy me a new one. Then I remember how much better a new toothbrush feels. So I think this might work!

I wouldn't use the service, but a little feedback:

\- I couldn't tell the difference between what you get for $1/month, and what the $19 is for. Is the $19 for your first toothbrush with a stand?

\- The images of "classic" toothbrushes kind of turn me off. They look like objects I would not want going near my mouth. I understand the appeal of a classic razor, but I have never thought of toothbrushes as having any historical appeal at all.

Good luck!

</comment></comment><comment><USER8> A game - I haven't worked on it in exactly ten months now :'(. My willpower is drained.

Here's the pathfind & boid/flocking - I am going to rewrite it, it's incredibly buggy and ugly as of now :( [https://dl.dropboxusercontent.com/u/1367825/coop_pathfinding...](https://dl.dropboxusercontent.com/u/1367825/coop_pathfinding.mov) \- sorry for the dirty screen, I couldn't record the screen because of performance.

Here's the menus - saw a presentation by Martin Johansson on "Make it jucy" (or something along those lines) it somehow stuck with me. I'm experimenting with jucyness here [https://dl.dropboxusercontent.com/u/1367825/wip.mov](https://dl.dropboxusercontent.com/u/1367825/wip.mov)

<comment><USER9> [https://www.youtube.com/watch?v=Fy0aCDmgnxg](https://www.youtube.com/watch?v=Fy0aCDmgnxg)

Here's the presentation. It's a pretty fantastic watch that shows what just a few small design decisions can do for a product's impressions on an audience.

<comment><USER8> Ah... brings back memories. Martin (amongst others) is sorta of an inspiration.

Thanks for bringing it up.

</comment></comment></comment><comment><USER10> My side-project tries to improve NBA game recaps/box-scores by adding more context from analysing the play-by-play.

[http://recappd.com/](http://recappd.com/)

Click on a score to see an enhanced box-score. Click on a players name to see their game logs. Almost none of the links in the banner work, so it's clearly unfinished.

It started out (and remains) a way for me to learn Rails, as my career has been spent developing non-web software. I am desperately trying to put in enough hours (I average about 5 a week) to get it to an MVP state (e.g. all the links actually work). Keep in mind this is my first web project and I have no design background whatsoever (it shows).

<comment><USER11> Fuck that's awesome! It needs a lot of work, but I love the ideas behind it. Keep chugging away!

</comment></comment><comment><USER12> Export Org mode files to OPML: [https://github.com/edavis/org- opml](https://github.com/edavis/org-opml)

I think OPML[1] is way more powerful and interesting than most people realize. It could be the lingua franca of transmitting structured information if more tools supported it.

My problem was I couldn't find an outliner I was happy with. Then I remembered using Org mode a few years back and decided to dust it off again. Turns out it has a very powerful export engine and I was able to whip something together pretty easily.

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

</comment><comment><USER13> So "in progress" it doesn't have a front page that actually shows what it does...

[http://precis.gopagoda.com/url/https://news.ycombinator.com/...](http://precis.gopagoda.com/url/https://news.ycombinator.com/news) (click the [+] and magic should happen)

also [http://precis.gopagoda.com/rss/https://news.ycombinator.com/...](http://precis.gopagoda.com/rss/https://news.ycombinator.com/news)

(will probably be very slow)

Someday I'll have time to finish it. It's not terribly awesome but it's the closest thing I have to a finished project so far.

</comment><comment><USER14> Yeah, um, you want to clarify what you are asking people to post? Because I have two webcomics I could use feedback on and I seriously doubt anyone would think that fits here, on HN. But your question is broad enough to toss it out there as a reply. However, I mean, this is HN, so I assume you don't mean that.

Edit: Then, feedback welcome (publicly or via email or whatever):

[http://www.novemberwest.com/](http://www.novemberwest.com/)

[http://lilnovember.blogspot.com/](http://lilnovember.blogspot.com/)

When I am posting updates more regularly, I plan to post them to mefi projects but I am not ready for that yet.

Thanks.

<comment><AUTHOR> I feel like anything goes. Getting feedback on something from all kinds of minds is a good thing.

</comment></comment><comment><USER15> Well i have been working on the following project for some months whenever i manage to find spare time. Between working 8 hours a day and playing professional basketball, time is hard to find.

www.fitorganizer.com It is a personal trainers appointment scheduler. It is still in early alpha stages, and i am working on making a better calendar at the moment ( which is open source on github ), adding hours and figuring what needs to go where is harder from what i thought it might have been.

The version on line is a bit old, as i havent updated it for a few months. My local one is much better and fixes several bugs, with a newer database design.

Feel free to break stuff.

</comment><comment><USER7> I've been working on Educator News, a clone of HN for the education community.

[http://www.educatornews.net](http://www.educatornews.net)

It's been tried before and was well-received initially, but the people behind the project were not developers. They tried to build it on a framework that wasn't really designed for building web apps, and the project disappeared pretty quickly.

I need to optimize some of the queries before the project gets too large, but the most basic functionality is there. It's pretty satisfying to have a project that I'm confident will fit a pretty significant need.

</comment><comment><USER16> [http://reporeader.com](http://reporeader.com) is my first project built using Ember.js and Rails. The idea behind RepoReader is that it gathers events from your favourite open source projects (hosted at GitHub) and shows it in a "grouped" way so it should be easier to follow high traffic projects like Rails, Ember, etc.

At some point I just lost interest in that idea and now the project is living it's own life...

</comment><comment><USER17> FairTutor went through a nice little closed Beta, got a bunch of good feedback, had a good group of remote tutors interviewed and ready to go...

... and then I had a kid.

It's still that ready. I just need to kick myself back in to gear and find a couple spare weeks to re-interview a new crop of teachers, fix what needs fixing, and flip it live.

Any day now...

[http://www.fairtutor.com/](http://www.fairtutor.com/)

<comment><USER7> How old is your kid? The hardest part I have with building a second career as a programmer is making time around my (fairly new) family's needs. My motivation to make meaningful projects is higher than it has ever been though, because I want to help make a better world for my son.

As he grows up, which is happening as fast as everyone says it does, I will have plenty of time again. I enjoy every day with my family now, but I also look forward to having enough time to polish some of the projects I have started.

I get an hour or two in the morning before I have to go to work, and maybe an hour at night if I'm not exhausted by then.

</comment></comment><comment><USER18> Just shipped out my project to the app store yesterday.

[https://itunes.apple.com/us/app/hakka-news-ycombinator- hacke...](https://itunes.apple.com/us/app/hakka-news-ycombinator- hacker/id814328129?ls)

I want to add more features like search and do a little more polishing. Couldn't even submit this to showHN because I got banned while fixing the html scraper inside libHN.

</comment><comment><USER19> I've been trying to learn Clojure and develop this in the process:

[https://github.com/verma/dakait](https://github.com/verma/dakait) More info and screenshots: [http://udayv.com/dakait/](http://udayv.com/dakait/)

Helps you download remote files to your local servers using simple tagging over a web-interface.

</comment><comment><USER20> [http://frinlet.com/alpha_1.0](http://frinlet.com/alpha_1.0)

An HTML5 video game. Going into this I would have never thought making a game could be so much work. Still very much a prototype and only really works well in Chrome.

Here's a screenshot: [http://cl.ly/image/1x3X1X1I0s0Y](http://cl.ly/image/1x3X1X1I0s0Y)

<comment><USER21> I liked the demo :-) I wanted to know what was beyond the horizon so I kept walking for a little while, and some birds apparently were afraid of me and flew away when I was close. I wonder what the gameplay idea is?

<comment><USER20> I'm glad you like it. I plan on it being mostly a game of discovery, exploration, and collection. I plan on there being several hundred species of plants, animals, and insects each with their own special use within the game. I want the world to feel very alive and dynamic, obviously I'm not there yet but thats the goal. :)

</comment></comment></comment><comment><USER22> I've been learning rails and recently began a personal project to build an app to automate the reinvestment of cex.io profits (i.e. bitcoins into bitcoin mining contracts - Gigahashes/sec). It's very minimalistic at the moment, but it works! [http://lazycexio.herokuapp.com/](http://lazycexio.herokuapp.com/)

</comment><comment><USER23> An introductory tutorial about web development. The plan is to assume the reader has no prior knowledge, start at the basics, and hopefully walk all the way up through building a dynamic web application. It's only just started, [http://trevorhunsaker.com](http://trevorhunsaker.com)

</comment><comment><USER24> [https://www.dawndata.com](https://www.dawndata.com) \- Google Analytics on Google Glass. Positive response so far so thinking of adding more like YouTube Analytics, AWS CloudWatch metrics/alarms, Heroku data clips, etc. Very open to feedback, critiques, comments, and questions!

</comment><comment><USER25> up, a bash function to make walking up the directory tree easier.

It allows walking up by passing in a _\--level_ commandline option:

      $ cd home/helpermethod/projects/bash-specs
      $ up --levels=2
      $ pwd
      /home/helpermethod

or by passing in a basename:

      $ cd home/helpermethod/projects/bash-specs
      $ up helpermethod
      $ pwd
      /home/helpermethod

It's written in pure Bash (no external dependencies) and features autocompletion for options and basenames.

It's more or less finished implementation-wise but lacks documentation and installation instructions.

[https://github.com/helpermethod/up](https://github.com/helpermethod/up)

</comment><comment><USER26> Working on a CRM for small business owners. Currently aligned towards the pet service industry and in the future other small business verticals

Production - www.petworkslabs.com QA - www.petworkslabsqa.com (admin login - firstname.lastname@example.com/password)

Feel free to forward it to your dog walkers!

</comment><comment><USER27> I am working on a small VM called Carp. It's pretty darn limited but as of now looks kind of like MSP430 (from TI). Take a look:

[http://github.com/tekknolagi/carp](http://github.com/tekknolagi/carp)

</comment><comment><USER28> [http://www.hn-sentiment.com](http://www.hn-sentiment.com) I wrote this for a hackathon over Christmas. Does sentiment analysis on an entered topic against hacker news posts and comments.

<comment><USER13> I'm getting an error for an unterminated string literal - it looks like all the google analytics code isn't there.

<comment><USER28> Hey thanks, sorry somehow the js tracking code got messed up, should be working now.

</comment></comment></comment><comment><USER29> Working on a iPhone app, it's in the store but is still a beta release. Working out a couple of bugs, adding walk through, and a couple of features.

Http://protactapp.com

</comment><comment><USER21> I've started building a website with warming smiles:

       http://a.warming-smile.org/

Feedback welcome :-)</comment>


ComputerVisionWiki.org - <AUTHOR> http://ComputerVisionWiki.org

<comment><USER2> If anyone is considering building apps in this area, I'd strongly suggest checking out OpenCV.

It's _far_ more powerful than Pixcavator, well supported, liberally licensed, and provides some really awesome high-level API's.

<comment><AUTHOR> If you know what 'the Laplacian of the Gaussian' is, definitely go for OpenCV. If you'd like to see something based on high school math, try this wiki.

</comment></comment><comment><USER3> Could any one suggest a good book on Vision. Something like Cormen for algorithms.

<comment><USER4> The reason there isn't a definitive text on vision is that vision doesn't work. Algorithms work, and so to have a definitive text, you just collect up all the notable ones that work, and write about them in a book. When you have a totally unsolved problem like vision (outside of certain highly constrained domains, like robot soccer, where the colors are guaranteed, or industrial tasks, where basically the whole scene is guaranteed), you basically have to choose which methods that currently don't work might have a chance of eventually leading to something that does work. There are many possible sets of choices for that, which is why you can't really have a definitive text.

<comment><USER5> What do you mean 'work'? There are many highly nontrivial successes in computer vision. Take a look at some of the examples here: <http://yann.lecun.com/exdb/lenet/index.html>

They're pretty surprisingly effective. Or how about melanoma detection and discrimination from benign lesions here: [http://scholarsmine.umr.edu/post_prints/00312091_09007dcc803...](http://scholarsmine.umr.edu/post_prints/00312091_09007dcc8030bc07.html)

Or with this thing? [http://www.polartechnics.com.au/IRM/Content/products_solar_o...](http://www.polartechnics.com.au/IRM/Content/products_solar_overview.htm)

Mathematics was hardly cut and dry before Bertrand Russell wrote Principia Mathematica, but that book still have tremendous value (if only as a beacon!) There was plenty more to discover in geometry when Euclid wrote the elements.

A good computer vision book, even one that simply cataloged important successes and failures, would be quite valuable. It's not that it hasn't been written because it can't be, it's that it hasn't been written because no one has really gotten around to it. Good textbooks require a massive amount of effort to get right.

<comment><USER4> It doesn't work in the sense everybody most wants it to work, which is to slap a cheap CCD camera or three on top of a mobile robot and have it tell the robot everything about its surroundings, like human vision can. Yeah, if you point a camera at a very restricted specific set of objects, all lit the same way, and all in generally the same basic configuration, you can do some vaguely useful statistics to get some information out of it, but that's kind of a painfully limiting thing.

Put it this way: At Anybots, we have a robot with 16 cameras on its head. We pump all those cameras back to an operator station, stitch them all together in a vaguely fitting-together way, and then project them onto a big bank of monitors. Plop a human operator in front of the monitors, and he knows exactly the orientation of the robot, the configuration of its limbs, and has basically a 3d map of the entire scene and a model of the lighting, minus occlusions. I'm pretty sure nobody knows how to write a computer vision system to do that. I'm not even sure that anybody knows how to use the overlap in the cameras to figure out how to make a coherent nice projection of the cameras onto the monitors.

<comment><USER6> It's interesting -- I started writing this exact definition of "works" in my post above. Anthropomorphic bias, right?

Even with this understanding, though, I can't wrap my brain around what you're saying above. Computer vision doesn't "work" (for our definition of "work") because it's not feasible to get enough processing power together:

O( 3e10 ) neurons * 100 Hz/neuron = more cycles than you can rent on an NSF grant.

We've definitely got some exponential growing to do before we can even start meaningful experimentation. Does that mean no work should be done in the meantime?

<comment><USER4> I don't think we're doing _that_ much processing to do vision. It's never the case that even close to all the cells in the visual cortex are being used. It's always a tiny fraction of that. Yeah, we have a bunch of cells that neuroscientists think are somehow related to doing vision, but there's no evidence that they're doing some kind of horribly computationally intensive thing all day long. If they were, we'd see it on MRI's as soon as we put a picture in front of somebody.

No, I think we just haven't figured out what to do, not that we're limited by computational resources. I think there are a bunch of pretty strong assumptions hardwired into the brain, so we can see physical objects, but then you can fool us by showing us images that mess with the assumptions (aka optical illusions).

(Not that this is a particularly useful idea, mind you. I'm not about to solve computer vision. It's just a random philosophical idea.)

<comment><USER6> _It's never the case that even close to all the cells in the visual cortex are being used. It's always a tiny fraction of that._

This is also true of any individual transistor in a processor. An ALU contains hardware to perform many operations, but at most performs one per cycle. You can increase utilization through parallelism and pipelining, but you pay for it with more synchronization and control hardware that only switches on to resolve conflicts. And nowadays, half of all the transistors in a CPU are part of a cache (every cycle, you need a word or two, but get the whole block). You can't conclude that they're not making a contribution to output from the fact that they're often inactive.

 _No, I think we just haven't figured out what to do, not that we're limited by computational resources._

Based on what evidence? We know that the brain is hugely complex. We know it can sort through hugely complex problem spaces at least some of the time. Doesn't it seem like wishful thinking to assume _both_ that the brain is really inefficient _and_ that most of the problems it solves actually have simple hueristic solutions?

I'll step up and take ownership of the end result of this argument: If what you say is true and understanding is all we lack, why have these problems proved so stubborn?

<comment><AUTHOR> >If what you say is true and understanding is all we lack, why have these problems proved so stubborn?

Understanding is hard, why is this so surprising?

<comment><USER6> Because understanding is almost always easier than data collection and tool- building.

Pure lack of understanding -- having all the data and having no idea what it means -- can keep a problem open for a generation or two. Einstein is famous because he solved a problem in EM physics that was at most 30 years old.

Lack of data or meaningful investigative techniques can keep a subject crippled for centuries. Physics went from rolling marbles to detecting radio waves in the two hundred fifty years since Galileo, while biology was pretty much stagnant. Without organic chemistry, even scientists were willing to believe that living organisms were made of some special God-stuff. Contrast that to the last 20 years. The human genome has been sequenced by biologists on their way to designing new organisms while physicists have been stuck throwing models around since the 1970s. Petri dishes are cheaper than supercolliders.

Now let's look at AI and machine vision. Our primary tools, brain imaging and computer simulation, are getting better every year. Maybe new ideas in algorithms or parallel architecture will bring "real" computer vision closer. In fact, they probably will. But even if they don't, this approach will _definitely_ succeed eventually:

<http://news.bbc.co.uk/2/hi/technology/6600965.stm>

<comment><AUTHOR> I don't have as many examples but here is one. Galileo discovered his principle by conducting very simple experiments with no special tools or a lot of data collection. How do you find the relevant data or build relevant tools if you don't have a clue about what you are supposed to discover?

What computer vision needs is mathematics, in my opinion. And math has nothing to do with "data collection and tool-building". It is entirely about understanding.

The link provides a good example of how people try to solve problems without any understanding. They don't know how the brain operates, yet they build its "model". And then they expect this model to solve the problem for them...

<comment><USER6> How can you say Galileo didn't use tools? He invented the _telescope_ fer God's sake. He timed the descent of falling objects by hiring musicians to keep a beat (no watches). When he couldn't time things, he built ramps and arches to compare things side by side. Much of his machinery was didactic because he often needed to demonstrate his ideas to the courtiers who supported him. We credit him with the invention of the experimental method today because described them in language reminiscent of geometric proofs.

I agree with you about the CV thing, though. We should talk sometime...

<comment><USER7> Yeah, Galileo is a particularly bad example. I believe he had a professional instrument maker working for him full-time. Newton would illustrate the point better.

Galileo didn't invent the telescope, though. What he did do first is use telescopes for astronomy.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Part 2: In Arbitration, a 'Privatization of the Justice System' - <AUTHOR> http://www.nytimes.com/2015/11/02/business/dealbook/in-arbitration-a-privatization-of-the-justice-system.html <comment><AUTHOR> I find this section absolutely amazing:

 _" REPEAT BUSINESS

Fearful of losing business, some arbitrators pass around the story of Stefan M. Mason as a cautionary tale. They say Mr. Mason ruled in favor of an employee in an age discrimination suit, awarding him $1.7 million, and was never hired to hear another employment case.

While Mr. Mason's experience was rare, more than 30 arbitrators said in interviews that the pressure to rule for the companies that give them business was real.

Companies can even specify in contracts with their customers and employees that all cases will be handled exclusively by one arbitration firm. Big law firms also bring repeat business to individual arbitrators, according to documents and interviews with arbitrators. Jackson Lewis, for example, had 40 cases with the same arbitrator in San Francisco over a five-year period."_

AND

 _" For Ms. Pierce, the most astounding moment came when her lawyers asked Mr. Kalogredis to sanction the defense for breaking the rules of discovery and destroying evidence. He fined the defense $1,000 after investigating the matter, then billed Ms. Pierce $2,000 for the time it took him to look into it.

"I kept thinking, 'I'm not a lawyer, but this can't be right,' " said Ms. Pierce, who had to take out a second mortgage to cover her legal expenses, which included a $58,000 bill from Mr. Kalogredis.

After the ruling, Ms. Pierce's lawyers wrote to Mr. Kalogredis's arbitration firm questioning his qualifications. The firm, American Health Lawyers Association, responded that it was not its responsibility to verify the "abilities or competence" of its arbitrators."_

Wow!

</comment><comment><USER2> Binding Arbitration == Kangaroo Court

[http://www.creators.com/opinion/jim-hightower/corporate- kang...](http://www.creators.com/opinion/jim-hightower/corporate-kangaroo- courts-supplant-our-seventh-amendment-rights.html)

</comment><comment><USER3> A discussion of Part 1 can be found here: [https://news.ycombinator.com/item?id=10483024](https://news.ycombinator.com/item?id=10483024)</comment>


Ask HN: Tips for writing a stellar resume - <AUTHOR> I have started a job search after being in the same company for 6 years and am finding it extremely difficult to come up with a resume that looks good, is concise, and conveys everything I would like to. I've basically forgotten the skills of making a good resume after being in one place for so long. I have a few questions that I hope the community can help me out with:
1. How important is the resume for a developer? Could I get away without having a resume?
2. Does it make sense to hire someone to do this resume writing for me? I would prefer someone who would talk back and forth with me and eventually come up with a resume that would highlight my best qualities. Do such services exit?
3. Are there any tips on making the resume look "good"? I have come across resumes that use the perfect layout coupled with the perfect font and color selection, and I can't figure out how to do that for myself without spending a lot of time researching fonts and colors and their combinations.
For reference, I am in a senior developer position looking for a similar role going forward.
Thanks. <comment><USER2> Reach out through my profile and I can give you a basic free review of what you have (redux13 only please, I typically charge for reviews). I run a Shanghai based English resume/LinkedIn Profiles (and other services) editing and enhancement business. I create them multiple times a week for clients globally and received training from the US standards bearer, the National Resume Writers' Association. Previously 24 years on Wall Street, East coast resident, native speaker and liberal arts graduate from good smaller upstate NY college. Speak to you soon.

</comment><comment><USER3> 1\. Pretty important. Probably not.

2\. Can't hurt.

3\. Talk about the value you delivered. No one is going to care if it's printed in Times New Roman instead of Georgia, or whatever, if you demonstrate how you deliver real value to your employer. No one cares that you implemented a CI system. They _will_ care that your CI system implementation found and prevented several serious regressions from taking down production systems.

</comment><comment><USER4> If it matches your style, [https://novoresume.com](https://novoresume.com) has good looking templates.</comment>


Russian video game maker gets a year in jail for buying F-16 manuals on eBay - <AUTHOR> https://www.rt.com/news/462243-russian-fighter-prison-us/ <comment><USER2> Wow, he spent a year in prison waiting for his trial. That's pretty awful for such a minor act. The gov security people really know how to overreact.

How is it breaking arms exporting laws when his stated intention was to create a video game, and not, you know, producing arms or working with the Russian government (who most certainly has long ago acquired these documents)?</comment>