Was It Too Soon to Be Sustainable? - <AUTHOR> http://www.nytimes.com/2014/12/04/garden/was-it-too-soon-to-be-sustainable.html?smid=fb-nytimes&smtyp=cur&bicmp=AD&bicmlukp=WT.mc_id&bicmst=1409232722000&bicmet=1419773522000 <comment><USER2> TLDR; Their mistake was building a gigantic house, based on emerging sustainable-energy tech, whilst in their 70s.

Any two of these things might have been reasonable, though I feel that the sheer size of the house is ultimately the problem - it's going to be a lot of work to maintain a house on this scale in the best of circumstances.

</comment><comment><USER3> Nothing of the mentioned tech is bleeding edge. At least in Germany everything of the mentionend installations you could have installed without a raised eyebrow twenty years ago. The only thing which changed is the price of PV, which really came down over the last 10 to 15 years.

And with the blinds, not to automate this is foolish, because this is something which has to be done constantly. Unlike snow and dirt which only has to be removed occasionaqlly.

</comment><comment><USER4> They were too ambitious and used bleeding edge tech. A great many software projects have foundered for the same reason.

</comment><comment><USER5> Well, isn't it what Nest and others are promising? Having a house that can operate itself. Hopefully they'll work toward more standardization of solar panels console and heater so that they no longer have to be operated by humans.

</comment><comment><USER6> > there is plenty of free power

But there isn't. Maintenance costs are still costs. TANSTAAFL.

<comment><USER7> I'm also skeptical that the power is really "free". It's not as if the power company is making a market decision to buy the excess electricity produced by their solar panels: Vermont state law requires it[1]. While their net consumption may equal or exceed their net production, that doesn't mean the net value of the electricity they produce and consume is 0. The electricity they're "feeding" back into the grid at 10am may not be worth what they're pulling out at 7pm after the sun sets.

[1] [http://publicservice.vermont.gov/topics/renewable_energy/net...](http://publicservice.vermont.gov/topics/renewable_energy/net_metering)

</comment></comment><comment><USER8> It is easy to just add retrofit items to your rooms, for automating blinds you can use solutions like www.igg.me/at/R/x/9152529 or similar, but automation is not what adds value it is making your office smart.

</comment><comment><USER9> They need to invite some undergrad CS/EE/ID majors to unleash their talents on their property for a summer or something. Would make a great research project and be a great boon to the student's talents and the couple's property and lives.

</comment><comment><USER10> These people are crazy. Right up there with all those nutjobs that buy up huge amounts of land, plant useless weeds on it and then spend all summer going up and down the plot of land to rid it of the excess weeds like caveman. /s

</comment><comment><USER11> Home automation tech might be able to help with those blinds, but then you're adding more moving parts.

</comment><comment><USER12> On suggestions for automating the blinds: it almost begs that a homeowner should be an engineer.

Back in '01 I went to a job interview at a home automation company. At the time, there was some major hype surrounding the industry and I was very interested in the topic. The meeting was in a fancy conference room showcasing their flagship product: a touchscreen built into the wall that controlled some lights and such. More than anything, it was internet access built into the wall, showcasing things like Netflix and videoconferencing.

I showed up to the interview completely unpresentable: jeans, tshirt, sneakers. Everyone there wore suits and ties. The CEO interviewed me and told me upfront that I was not the right person for this job. He still went through the motions of asking me some questions and then gave me advice on my future endeavors. Just before kicking me out the door, he hesitated and then asked me what I knew about home automation.

I told him about my window shade controller that I built using some NPN transistors, a free H-bridge sample that I got from National Semiconductors, and a worm gear salvaged out of a dead VCR. For a U-joint connecting the motor shaft and the shade hook, I used a small length of duct tape. Wiring was CAT-5 (for signal and power), rotational position sensor was a bent contact switch and software was written in C running under Linux. Hardware interfacing was done via parallel port, since you can have 8 outputs and 2 inputs via any printer port (memory little rusty, but I had a few spare ISA cards that gave me additional I/O ports). A cron job opened the shades in the morning so I can wake up to sunlight, and closed them in the evening for privacy.

He chuckled, disbelieving that I could have pulled off such a project. So, I gave him a live demonstration -- using his product, I pulled up the control panel webpage (you guys remember days of dyndns?) where he could see a live webcam with timestamps pointed at a window, and demonstrated the "close" and "open" shade operations while he watched. He hired me on the spot.

Fast forward to a year or two later: "home automation" as an industry was apparently never into automating homes. Instead, they went for very expensive home theater setups with glittery control panels and a couple of remotely controlled light switches as an afterthought. We had so much technical capability, but instead settled for very artificially-priced gimmicks ($10k for a "base model".) I asked my boss why our price sticker was so shockingly high for something that does next to nothing, and his reply made all the sense in the world: "Because that's not the market we're aiming for."

In other words, the home automation industry of 2000s was aiming for the comfortably wealthy segment, who could afford these prices built into their mortgage for a prestige label ("home automation"). The companies built up partnerships with home builders, but only cooperated on the cosmetic level of home automation without doing any actual home automating. IMO, if you are doing any serious home automation, the best time to build the technology in is while the house is being constructed, and these industry behemoths ruined the name for anyone doing serious house integration.

Nest seems like a great leap forward, but mostly the leap is in the interface. Arrays of confusing buttons got replaced with a knob. Instead of entering the secret handshake to select Tuesday morning, you can just turn the knob down on a Tuesday morning. However, that's not home automation quite yet: that's airconditioning automation. For a whole system to work in concert, a thermostat would work in a designed unison with window shade controllers, with temperature sensors, with wall sensors, with air pressure sensors, with charge level indicators from the solar array and ... things I never even thought about. Designing homes with all of these subsystems in mind would be a forward stride.

<comment><USER13> Netflix and videoconferencing in '01?</comment></comment>


Show HN: Run the unmodified iOS kernel image on the VIM3 development board - <AUTHOR> https://forum.khadas.com/t/run-the-unmodified-ios-kernel-image-on-the-khadas-vim3-1/7621/2 <comment><USER2> How does one go about gaining the skills to do something like this? Love the demonstration of real low-level engineering and understanding.

<comment><USER3> A lot of reading. There's a couple of linked blog posts that this one relies on that you might find interesting as well.

<comment><USER4> A lot of adderal. Or a lucky brain.

</comment></comment></comment><comment><USER5> > _What is CryptoPlugin? No information has been found online?_

I found this on page 262-3 of [0]:

> _ARMv8 Cryptography Extensions require a separate package, which is subject > to export license conditions. Contact ARM for details._

Could that be what CryptoPlugin is referring to?

[0] [https://static.docs.arm.com/100964/1161/fast_models_rm_10096...](https://static.docs.arm.com/100964/1161/fast_models_rm_100964_1161_00_en.pdf)

<comment><AUTHOR> Yes seems need pay money to buy a Business version

</comment></comment><comment><USER6> This looks like great progress but it ends abruptly, apparently without the system fully booting. (The last two screenshots don't load for me.) If this reaches the point of getting launchd to spawn processes, it will be a terrific feat.

<comment><AUTHOR> If there is a corresponding debugging tool, I think it is not a problem to load launchd(launched should be the first userspace process). May be can use qemu to debug it.

</comment></comment><comment><USER7> archive.org snapshot, since the site is unresponsive right now: [https://web.archive.org/web/20200403170513/https://forum.kha...](https://web.archive.org/web/20200403170513/https://forum.khadas.com/t/run- the-unmodified-ios-kernel-image-on-the-khadas-vim3-1/7621/2)

</comment><comment><USER8> I hope Apple would not go after this the way of Correlium. Kudos for the impressive engineering!

<comment><USER9> Somewhat hope it does. Apple deserves more bad press.

</comment></comment><comment><USER10> First time I've seen Apple use Github extensively.

<comment><USER11> They don't for Darwin (apple/darwin-xnu is a mirror of content released on opensource.apple.com), but Swift uses it for everything, I believe.

<comment><USER3> An out of date mirror, I might add.

</comment></comment></comment><comment><USER12> Is there an emacs version?

<comment><USER3> Of course: [https://en.wikipedia.org/wiki/EMac](https://en.wikipedia.org/wiki/EMac)</comment></comment>


Wave accepted into the ASF incubator - <AUTHOR> http://apache.markmail.org/message/ux4cn77ioxfhpc7g

<comment><USER2> while not having an army of google employees hacking on it will obviously slow down development, personally i'm much more comfortable and likely to use and rely on the tech now then when it was just another google service.

how long until we can apt-get install wave?

<comment><USER3> I'm surprised at this sentiment. Could you elaborate by any chance?

The reason for my surprise is because a significant portion of the Wave code base is geared around the user interface — which was, in many ways, the least attractive aspect of Wave (at least from the experiences of those I've spoken to). The other main parts of Wave were the various Operational Transform work — which, again, to my understanding from those who have looked at the OT framework released by Google last year, is inherently hard to scale up.

I had always assumed that these and the general market disinterest to be the reasons that Google had abandoned the Wave project — so am very keen to understand why you would be so excited... thanks!

<comment><USER4> The Wave-in-a-Box interface is quite barebones. Having to hack together something different in GWT is a pain though.

The big advantage is the Federation protocol. Not only do you get OT between users, but between servers as well. You also get existing gadgets/robots functionality.

With Federation, there will be alternate Wave server implementations to choose from. I'm working with creator of lightwave to develop a very different interface:

<https://code.google.com/p/lightwave/>

And here are some of the UI concepts:

<http://fleetinbeing.net/tensor-v1/> (miller columns for long, deeply nested waves. the top and bottom bars are totally unresolved, and will probably get cut) <http://fleetinbeing.net/tensor-notes-v1/> (more intuitive inline- replies)

If anyone has suggestions, I'd love to hear 'em. I've been trawling HN for critiques of Wave's UI.

</comment></comment></comment><comment><USER5> As someone who doesn't know anything about the Apache Software Incubator, what are the implications of this? What does the ASF incubator bring to the project? Resources? Credibility? Grants?

<comment><USER6> The ASF has a process for managing open source projects, that starts with new projects entering the Incubator. The project is monitored by a committee for things like how well the project is able to attract developers, whether they are able to form a common vision / roadmap. Once the project is deemed to have gained sufficient traction, it is promoted to a top-level Apache project.

tl,dr; credibility + ASF management.

</comment></comment><comment><USER7> what is the difference between the Wave protocol and websockets in HTML5? To me, they seem very much the same, yes?</comment>


Help HN: Commit to something publicly here. - <AUTHOR>

While it's a well-known strategy for self-motivation, seeing it mentioned again here (http://news.ycombinator.com/item?id=2131110) inspired the following exercise:
There's a goal you've been meaning to work toward. You're the only one holding yourself to it, and you haven't made the progress you want to so far.
Where should you be on it one month from now? Is it completable in that timeframe? How far along do you want to be? Post it here. Next month, in a follow-up thread, post an update. <comment><USER2> As I mentioned in the other thread, there is actually plenty of evidence _against_ this view, evidence showing that publicly announcing your goals actually reduces your motivation.

Here is the same short TED talk I posted on the subject in the other thread: <http://www.youtube.com/watch?v=NHopJHSlVo4>

Don't mean to rain on your parade, just trying to get all the relevant numbers out there. Your brain may vary.

</comment><comment><USER3> While HN is a bit different, I find that a lot of content aggregation sites are big timewasters. (Most notably Reddit.) What does it matter if you have spent 20 minutes composing your life's story (or opinion) when it's going to be downvoted and forgotten in a day or two? That's 20 minutes (plus 3 minutes here and there to check for replies) that you have now wasted. Yes, your opinion matters, yes you are a shining star, a special snowflake... but what matters more, your goal or the satisfaction of showing them that your insignificant opinion matters?

Also, people learn and work best in short intervals. Spend 20 or 40 minutes focussed and then get up and go to the window. Stretch. Don't go to the fridge, you little piggy. Center yourself and still your mind. Flip the album over and go back to work.

Also, setting an unrealistic time goal might just drag you down, as you'll spend more time kicking yourself for having missed it than you will working to achieve it. Set milestones, and they don't have to be perfect. The output doesn't have to be perfect if you can prove to yourself that you've got the socket open and it isn't crashing. Refinement should be it's own milestone, anyway.

You can do it. Don't take my word for it, only your own.

<comment><USER3> Lol, I just gave you a pep talk when you were mentioning a strategy and wondering who out there had goals to discuss. I've got goals (some private, some professional) but I'd prefer to not discuss them til I've got some code to alpha. I'll leave my comment here, maybe it'll help you. I swear I won't waste time checking for replies, but just writing that all out was good for me. I'm a code from home type, and I'm now all covered in sweat from dancing around, having spent all day learning node.js.

</comment></comment><comment><AUTHOR> As for me, I plan to have a rudimentary command of Cocoa by then, just enough to sketch a UI prototype for an app.

</comment><comment><USER4> If people don't meet their goals, the thread will full of crickets or excuses.</comment>


Ask HN: Any London or NYC startups looking to hire a contractor? - <AUTHOR>

I am currently out of work and would really like the opportunity to work outside the Bay Area for a while. Would love the chance to work for 3-6 months at a London or NYC startup. Anyone know of a company looking?
I am an engineer. Few years experience. Worked at startups including one that was recently acquired. Would make an excellent hire even if temporary.
If you know of a company please mention here. Or if you are a company, leave an email/Twitter/Facebook and I'll promptly responde to you. <comment><USER2> Hey,

Would love to chat with you regarding a London/US start-up. Please email me your portfolio/resume to: firstname.lastname@example.com

Thanks and Happy Holidays!</comment>


Microsoft Surface RT Reportedly Coming to Third-Party Outlets Soon - <AUTHOR> http://www.maximumpc.com/article/news/microsoft_surface_rt_reportedly_coming_third-party_outlets_soon777

<comment><USER2> Microsoft needs the help getting rid of those

</comment><comment><USER3> Won't help.</comment>


Why Can't Programmers Program? (2007) - <AUTHOR> https://blog.codinghorror.com/why-cant-programmers-program/ <comment><USER3> I'm really conflicted when I keep hearing that programmers can't program, especially in such a high number (199 out of 200).

I've done a fair bit of interviewing (on both sides), and while I've seen some bad people, it seems like if 199 out of 200 candidates couldn't write code, then we'd have a lot of out of work coders, since as everyone also complains about, everyone has to write code when doing interviews.

Just because someone can't do exactly the type of program you're looking for, or in a particular way, doesn't mean they can't program. It only means they couldn't program what you asked in the way you asked. A fail for sure, but that doesn't always mean what you think.

I always like to let a candidate go to their strongest area, if that is a particular technology or problem, or bit of code they've written, because then I know I should be able to ask them deep questions (performance, design tradeoffs) that actually matter on their job, instead of fizz buzz or inverting a binary tree.

There's also just the possibility of nerves, or other factors as well. It's fun to follow people on linkedin and keep up good relations even if they're a no-hire, to see if your hunch was right, or dead wrong.

<comment><USER4> _> hearing that programmers can't program, especially in such a high number (199 out of 200)._

Fyi... that 199/200 quote came from J Spolsky that he got from D E Shaw.[1] That's a hedge fund and like other computational finance firms, they would look for strong programmers who had very good math skills (statistics, probabilities, etc).[2]

Therefore, the typical web programmer who knows the difference between HTML tags and CSS selectors, or knows text slicing with Python/PERL, will not pass the rigorous interviews. Using that criteria, it's very realistic that less than 0.5% of applicants would be hired.

Another way to put it: those trading firms are looking for _math nerds_ who happen to know how to program more than programmers who happen to know some math. Including them in the general discussion about _" what's wrong with hiring"_ will skew the discussion. Most everybody else is just looking for CRUD/web/iOS/etc programmers.

[1][https://en.wikipedia.org/wiki/D._E._Shaw_%26_Co](https://en.wikipedia.org/wiki/D._E._Shaw_%26_Co).

[2][http://www.streetofwalls.com/finance-training- courses/quanti...](http://www.streetofwalls.com/finance-training- courses/quantitative-hedge-fund-training/quant-interview-questions-answers/)

<comment><USER5> Does it make me a math nerd if I point out that accepting 0.05% of applications would mean rejecting 1,999 out of 2,000?

TL;DR: I think you mean 0.5%

<comment><USER6> 0.5% of pontificators can pontificate

</comment></comment></comment></comment><comment><USER7> I taught myself to program as a child, and I didn't know any other programmers until I was around thirty and took my first professional job as a programmer.

To me it seems like 60% to 95% of the people employed as programmers _should not be_. In other words, most people cannot program, even if they are working as programmers.

:-(

I have no idea what, if anything, to do about this.

(It absolutely shocked the shit out of me the first time an interviewer asked me to write fizzbuzz. He had to convince me he was serious. Double-you tee eff, folks.)

<comment><USER8> I have a similar background as yourself but I'm not as negative about other peoples' programming skills.

What I do find a lot of is that people can write code just fine, but they often just do the simplest thing that they can get out the door, regardless of whether or not they're doing things the correct way.

I often find myself refactoring systems that are hard to reason about, where they put something into configuration that still requires a code change to reconfigure, or deploy scripts with internecine external dependencies (bash scripts) when the deploy platform can accomplish the same tasks.

Given enough time and guidance I find (almost) anyone can write code, but it's the architecture stuff that's hard and I think it's something a lot of programmers do not spend enough time working on.

</comment></comment><comment><USER9> All in all, I'd say this 'classic' post was overly influencial. It has damaged to the software industry, and only contributed to making the hiring process more adversarial than it already was at the time. It's no fun being presumed incompetent everywhere you go.

More importantly, I have never met any one of these supposed incapable programmers. A better title might have been 'Why Can't Jeff Atwood clean up his recruiting pipeline ?'

(Or was he just stressing candidates out?)

</comment><comment><USER10> A majority of my career has been CRUD (occasionally "advanced" CRUD). Ive worked in (and coded non-trivial things) in PHP, Python, node (lol) & Golang. I've learned a ton of server management.

I've literally coded a linked list once, years ago, when reviewing an algorithms book (never played in anything more advanced). I don't have a CS degree.

Am I a programmer in the eyes of these interviewsers? It feels an awful lot like the answer is "no". And "hope you never get an intense technical interview!"

What do y'all think?

<comment><USER11> A linked list is probably literally the simplest data structure in all of CS. No, you'll probably never need to write one in real life because most modern languages come with one, but exactly because it's so simple and so ubiquitous, it speaks quite loudly about the level of abstraction at which you operate if you can't implement one quite quickly.

<comment><USER12> Is there a problem with operating at that level of abstraction? Are we here to serve our egos, or business needs?

I'm sure I could implement one, but it'd require googling. If that ever kept me from a position, they could gladly keep it.

<comment><USER13> A linked list is so simple that you _should_ know how to implement one off the top of your head.

It's literally:

        struct list_node {
            struct list_node *next;
            ...
        };

There, you know how linked lists work :)

<comment><USER12> That's what I came up with in my head, but my issue is, in an interview I'd not be confident with that kind of an answer. I've never done that before, I've never had a reason to do that before. I've contributed to Rails, graphing libraries, written docs for complex JS projects, implemented caching solutions, written authentication and authorization backends- but this here is like asking an architect to cut down a tree.

Sure, he can figure it out, but he's gonna look stupid for the first few minutes.

<comment><USER14> The figuring it out is entirely the point of the interview. When I interview someone, I need to work on a problem with them. The simpler the problem we can work on together, the more likely that I'll learn what they're like to work with, not whether or not they've memorized some trivia like how to implement quicksort in 10 lines of Python.

<comment><USER12> That's fair, and a totally valid way of going about it. But if I'd been devving for a few years and hadn't heard the term "linked list", and the interviewer scoffed at having to answer the question of what it was, I get uninterested real fast.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Should we put a (2007) on this? It is still a relevant subject, perhaps one of the more timeless pieces Jeff has written, but it is from some time in the past.

<comment><USER16> I love how the next article is titled: You want a 10k rpm boot drive.

</comment></comment><comment><USER17> Who writes a linked list in Javascript? Or Python? Or even C++? I haven't had to code a linked list since the 1990s.

How much low-level knowledge does a programmer need today? There's an old- school approach to computing that starts with explaining binary, then goes on to gates, progresses to a full adder, and goes on to an entire arithmetic unit. Few people need that today.

But they probably need to know too much about CSS selectors. Statistics is becoming more necessary to programmers than binary logic. Programming today is following an endlessly churning mess of APIs.

(Today's grumble: the author of the serial port library, "pyserial", decided to change the API so that baud rate is set by "ser.baud = N" instead of "ser.setBaud(N)", breaking existing code. This isn't progress, it's faddism.)

<comment><USER18> >Who writes a linked list in Javascript? Or Python? Or even C++? I haven't had to code a linked list since the 1990s.

Neither have I, but I didn't write that bloody circular queue in SPARC-V9 assembly language for nothing!

But, seriously, so many interviews are full of these sorts of questions. It's almost like they're trying to hire a reference book... or they don't know how to interview and just use the same sort of methods they were exposed to.

</comment></comment><comment><USER19> I know how to do the fizzbuzz and swap questions but I'm terrified there will be that one "simple" question that I won't be able to do under 3-5 minutes. Sorry, I don't know every trick in the book but I figure things out eventually.

</comment><comment><USER20> It's hard, man. I think most people who call themselves programmers could write some simple programs or tinker together a really simple app that was fragile and buggy. To do programming _right_, where your software has real impact on people's lives and you can't afford to kinda sorta get it right...that's not something most people have in them. And there are levels to this. I've worked alongside people whose code made me recoil in horror. It's like watching a toddler skipping merrily through a minefield, just no clue how careless they're being. On the other hand, I've worked with others who pointed out things I've done or an approach I was considering, and I've had to blush when they pointed out how I was sprinting headlong into a world of error...but their filter for bad logic was so fine and accurate that many other people wouldn't have thought twice about the work in question. Computers are machines, they're cold and unfeeling and they won't meet you half way...either you've codified your logic and presented it to the computer perfectly, or you lose. In other words, the best programmers may not have to be cold or mechanical in personality, but without fail they can wield logic with mechanical precision--as much as human beings are capable of, anyways. I'm not sure we know exactly what we're asking when we're trying to find the meat bodies who best interface with machines.

</comment><comment><USER21> I'd rather candidates had empathy, a willingness to learn, and an appreciation of testing & CI, than the ability to implement a linked list in under 10 minutes.

In over a decade of software development including web systems, games development, command line tools and distributed systems, I've never had to implement a linked list. If you haven't used the modulo operator, FizzBuzz isn't necessarily obvious.

<comment><USER11> If you don't know the modulo operator, your claim to be a good programmer is rather suspect, so that's probably OK.

<comment><USER8> Where have you ever had to use the modulo operator in your programming career, especially on the web side of things?

Outside of challenges where it's almost required (FizzBuzz), the only thing that I can think of that I've ever used modulo for is to set an upper limit on random numbers. I can probably count the number of times I've needed to do that on one hand and for every one of those I've used several hundred other math functions like abs, floor & trig functions.

I don't really do a lot of math in my code anyway.

It's one of those things I see how to do in the language when I'm first learning the syntax and then move on.

<comment><USER4> There are lots of everyday uses (not mathy domains) for % operator.

Some examples...

Outputting a text report with columns. If there were 5 columns, use the "col=i%5" to put it in the correct column as "i" is incremented.

date/time calcs such as...

x%7 is often used for day-of-the-week algorithms

x%3600 and x%60 is often used for converting raw seconds (e.g. convert 86400 seconds per day into hh:mm:ss)

(If programmer doesn't know modulus "x%7", he might hardcode a big switch statement with 7 cases -- which will work, but it's not as elegant.)

round-robin in discrete integer values --> use % modulus

round-robin in continuous values --> use trig sin(), cos()

<comment><USER8> Working with dates and time has so many edge cases and gotchas that I think it's irresponsible not to use a library for working with them. Any good Date(Time) library should abstract this away from you.

Say Hello to Leap Seconds for me.

<comment><USER4> It's common to have a value called "total_elapsed_seconds" which comes from job logs, traces, etc and "leap seconds" wouldn't be relevant. You just want to "pretty print" it into hhh:mm:ss and %mod is the easiest way to calc that.

I've used % for various unrelated tasks for more than 20 years. Another example... in languages that didn't have bit shifting like C/C++, I used % to convert bytes to a hex string (e.g. x%16).

<comment><USER8> I guess what I'm saying is... is calculating it easier than going:

      x = Time ( now )
      ...
      total_elapsed_time = Time ( now ) - <USER2>
      print strftime ( total_elapsed_time )

I've actually used your hex example once before!

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> I believe that students feel that everything is possible to accomplish with a library, let's say, <list>. When you ask them to create a list by hand (using classes or structs), they simply don't know, because they always used the library. This is the plumber analogy: "they know how to _connect_ the pipes; they don't know how to build them."

<comment><USER23> This is the exact opposite of my problem. If you ask me to use a list, I'll roll my own every time. Ask me to do anything, and I'll go to paper and try designing a data structure. Ask me to setup a web page and I'll probably start designing my own web protocols. :)

<comment><USER22> do you have infinite time?

<comment><USER23> If you can't build something yourself, then you won't know how it works and what the consequences of the relevant design decisions are. I do it because my goal is to learn how to do things right, not to get things done quickly.

<comment><USER24> That's cool, and I indeed like to understand things too, but how do you deliver anything of value to a business if you start of designing a CPU? ;)

<comment><USER25> CPU? Your jumping all the vital underpinnings. What if the copper was of low quality or the silicon was a low grade? I'm in a cave rubbing sticks together to make fire.

<comment><USER26> What an absurdly high level of abstraction to begin with.

First, I create the universe.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> I like coding questions because I have an easier time then most.

That said, I have sympathy with those who struggle with whiteboard questions. Even for an easy problem, you have to context switch to the language and problem type then simultaneously communicate and code, without the environment and tools to which you're accustomed.

It's easy to forget some basic concept or misunderstand the question just because you're not in your element.

Edit: That being said, there's plenty of developers that can't code. But there's plenty of false negatives in interviews too.

</comment><comment><USER28> What's changed since 2007? I'm under the impression that interviewing standards are much higher than they used to be. (Sometimes terrifyingly arbitrary, but higher.)

</comment><comment><USER29> There has been a recent proliferation of posts raging at even the simplest programming questions. Fizzbuzz? Unrealistic so what's the point? DFS/BFS? When was the last time you needed to write BFS/DFS _in real world application_? And so on. So maybe it is 199 out of 200.

</comment><comment><USER30> This is so weird and arbitrary. Of course if you accept any random person who applies to any job, sometimes because they have to apply to jobs to keep their benefits, yes, you'll see a lot of people who have no clue.</comment>


Feedback for Phactory - A Database Factory for PHP Unit Tests - <AUTHOR> http://phactory.org

<comment><AUTHOR> I released the first public version of Phactory yesterday, and I'd like to get some feedback from developers here on HN.

Phactory was born from a desire to have something like Factory Girl for my day job writing PHP. A couple of my co-workers and I have been using it for a few weeks now, and we're finding it really useful.

If you have time to give it a try, any feedback/criticism would be much appreciated.

What features would you want to see in a library like this?</comment>


Ask HN: Which YC startups from the past 4 years are making a profit? - <AUTHOR> Or at least breaking even.
To clarify that would be the period between 2013 and 2017/now
I would also be interested to know which are already defunct. <comment><USER2> See this:

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

<comment><AUTHOR> Thanks but that only has the ones that aren't dead or were sold, the active ones includes ones that probably make no money and still depend on investors to go on

<comment><USER2> There is a specific checklist for dead. U dont see that ?

<comment><AUTHOR> And? I'm looking for the ones that aren't dead or sold but make a profit, that list doesn't shows that</comment></comment></comment></comment>


Slack raises $120M Led by Google Ventures and KPCB at $1.12B Valuation - <AUTHOR> http://techcrunch.com/2014/10/31/slack-confirms-120m-fundraise-led-by-google-ventures-and-kpcb-at-1-12b-valuation/ <comment><USER6> I must be in the minority (based on the comments that I have read), but I hate it. The other day the PHB announces to the office: We are going to use Slack and move away from IM, Skype, etc. So I signed up. What I don't like: -you need to keep a a tab open all the time,

-you need to keep an eye on that tab in case something comes up,

-the 'notifications' don't work all the time (Archlinux + Firefox)

It's like somebody took all the bad qualities of IRC, and shoehorned it into a web-page and all the horror that brings. The features that I don't understand:

search-able logging of messages. Email and/or Pidgin already does that.

Group messages: Email already does that.

Transferring of files: Email and/or corporate LAN shares already do that.

But it does add the necessity of stopping my workflow every 5-10 minutes so I can check to see if there are any messages that _might_ apply to me.

The quicker it can be killed with fire the happier I will be. Or am I missing the point? curmudgeonly - <USER4>

beard - <USER4>

Unix admin - <USER4>

Perhaps there is no hope for me. Next thing you know people will want to take pictures with their cellphones! =)

<comment><USER7> Look at all the sibling replies.... You just have to get a Mac - works great there! It's like Windows of 15 years ago, redux.

I've had the same experience as you with Slack and Hipchat. The front end guys with the shiny tools love it, and I live with it.

To the extent you're missing the point... it lets people that might not be able to set it up otherwise have secure messaging across desktop and mobile, and a unified place to have all the features that you mentioned vs getting familiar with nc/scp/ftp, grepping chat logs, etc.

That said, they must have one hell of a demo deck (or secret master plan) to get a $1B+ valuation.

<comment><USER8> Yup, I evaluated Slack and HipChat about a year ago and went with HipChat mostly because of Slack's lame Windows user experience. (IMHO, the Slack client also had too many bells and whistles. I would've like a default "simple" mode that just is an IM client with group chat.)

<comment><USER9> Slack's lack of a native Windows app sunk it for our org - then the rest adopted Hipchat and I think it is too late for us. I would love to use Slack, alas.

<comment><USER8> Yeah, HipChat definitely has its own issues. The notifications are kinda crude and the integrations aren't as good as in Slack.

</comment></comment></comment></comment></comment><comment><USER10> The most interesting things to me is that Campfire was around before this and Hipchat before that. It goes to show that execution is everything, Slack has completely crushed it from a feature and integration standpoint and the polish is amazing. We switched from Hipchat and we didn't really have a good reason - it just felt better.

If Campfire was growing $1MM a month I am pretty sure 37signals would now be called Campfire and not Basecamp.

<comment><USER11> > We switched from Hipchat and we didn't really have a good reason - it just > felt better.

This is interesting. How many employees are using it? Slack costs 4 times as much as HipChat ($8/user/month vs. $2/user/month) so it seems silly to jump to a much more expensive product for no reason.

<comment><USER12> In my experience, if a tool provides any business value at all, worrying about $6/employee is a complete waste of time. If Slack saves each employee 6 minutes _per month_ then it has paid for itself.

Developer tools generally charge far too little for their offerings - <USER5> point is probably not even a consideration for most companies, as long as its within an acceptable band.

<comment><USER13> > If Slack saves each employee 6 minutes per month then it has paid for > itself.

But does it [compared to HipChat]? (asking as someone who has used HipChat but never Slack)

<comment><USER14> I use both on a regular basis, because our company has split personalities about which chat client is best.

I don't think it's meaningfully different or better than HipChat. The most obvious differences are that it automatically retries sending messages if your network glitches, and that it's proponents are more irrationally positive than HipChat's.

They're interchangeable. People who argue otherwise don't have enough actual work to do.

</comment></comment></comment></comment></comment><comment><USER15> For the people who say group messaging is fine in email: are you all masochists? Seriously, if I have one more 45-email thread between 3 different people, I'm going to smack somebody. There is a time and place for email, but group chat is not it.

</comment><comment><USER16> Everyone praises Slack here but I find e-mail + IM completely sufficient and I work in a very large company.. Something urgent? Use IM. Something can wait? Use e-mail. It's that simple.

<comment><USER17> I work at a small company (<10 employees) and we use HipChat all day. Since we are geographically dispersed, it helps to maintain the inter-team communication that is hard to do remotely. We probably only use it for 40% "work." The rest is random news items and discussions about sports.

<comment><USER18> > We probably only use it for 40% "work." The rest is random news items and > discussions about sports.

Which probably means that you have a coworker or two that's passively annoyed at you and/or actively ignores the channel.

<comment><USER17> We're a sports company and everyone is usually involved with most of the discussions. I catch your point, but it's pretty easy to ignore if you are heads down coding. You can get someone's attention (for important stuff) but addressing them directly (@username).

</comment></comment></comment></comment><comment><USER19> IRC FTW. Slack gets big, gets acquired, integrates with Outlook, SAP, etc., becomes Outlook & SAP, nobody ever got fired for using Slack, etc., etc., Stewart becomes a billionaire, yadda yadda.

Meanwhile, IRC.

<comment><USER20> Why would I forego the use of a tool that gives me dramatically more productivity _right now_ than I could get even spending 100 hours configuring and managing an IRC server on the prediction that some years from now Slack is going to suck?

I understand using IRC because of privacy concerns or you have very specific workflows, or just because you like managing your own services. But the threat of future changes is not a credible reason to avoid Slack. When it starts to suck, you just switch.

<comment><USER21> It takes less than an hour to set up an IRCd, even with SSL.

Slack has a bunch of advantages over irc, though: clients for many platforms, connections go over HTTPS (non-issue for firewalls, whereas IRC connections are sometimes non-trivial), cross-platform notifications, inlining of some content (slack calls this "unfurling").

Their trump card, however, is the simple third-party integrations support. In ~30 seconds, I can write an integration that e.g. watches the git repository on a machine and sends a message to a specific slack channel when the HEAD changes.

Yes, you can do this with an irc bot as well, but: you have to get that irc bot (maybe it's a library, a binary, whatever) to where you want to run it, and you have to write a few lines of code. Whereas with Slack, you can just curl an https endpoint from bash. There's no need to deploy anything, it's all there, and it's simpler to use.

I've seen less-neck-beardy teammates throw together slack integrations that have helped out quite a lot.

Slack lowers the bar to not just team chatting, but making the team chat work for the team's environment. In that it's a bit like emacs. It lets the team change it to fit their usage.

</comment></comment></comment><comment><USER22> HipChat slacked (I know..;) ). They had this IM for business covered. Then The Slack people came in and took the integration thing seriously.

HipChat seems to have felt the competition and now they are taking it seriously. I use HipChat with my distributed team and it works VERY well. HipChat has Android and Windows native clients and have now set up a serious API. The Windows app need some work though.

HipChat is free and you can get all and more of what Slack offers at a VERY affordable cost of $2/month.

HipChat also uses standardized protocol of XMPP.

Sqwiggle now looks like it could be very attractive to slack with their video technology. Except that raise a lot of money soon, I'm predicting an acquisition.

PS: I have no relationship with HipChat. I am just a happy user :)

<comment><USER23> We switched from HipChat to Slack (my devs just made the "executive decision" one morning last April and we were done!) As a "Biz" guy I liked HipChat more. I thought it was cleaner and simpler to use and initially had better support for Android. And then when they added video/voice support (after we stopped using it) I cried a little as that's the only reason I still keep Skype open. Still I suspect Slack will use these $$'s to solve voice/video and I love the backstory so it's likely the right long term option for us.

<comment><USER24> I don't understand why so many people use Slack, while it is completely lacking voice and video.

Looking at HipChat and Slack now, I would select HipChat because of the video and screen sharing features.

</comment></comment></comment><comment><USER25> I'd love to know more about why did Slack were able to get so much traction and raise that much money compared to Flowdock/Groove.io/Hipchat.

I've used Flowdock in the past and tried Hipchat too. I've also been a huge IRC fan when I was younger. I don't see that much of a difference between those and Slack.. Maybe:

      - More intuitive for people who don't already know IRC.
      - Really cross-platform
      - Well integrated with various tools people love.
      - Very good "on-boarding" flow.

But still, the difference in term of traction is _massive_ , am I missing something?

Personally, I think we switched because I was a bit frustrated about the status quo. IRC was too complex for non-tech and didn't have a good cross- platform integrated solution. Hipchat app just felt so clunky and ugly.. same with Campfire, it felt really old. I've used and liked Flowdock but I thought it was just _too much_ with widgets all over the place and smart inbox, where what I wanted was "just" a "IRC" I could use with colleagues.

Thoughts?

<comment><USER26> The difference in traction is insane! Slack has 15,000 companies paying them in a few weeks after launch. In the article it says they have $1m/mo revenue - that's incredible for such a young company.

Investors are making a bet that this is indicative that slack are going to take over the entire enterprise communication space.

</comment></comment><comment><USER27> Wow.

Just goes to show that this is definitely a great time to raise money!

Personally, I think Slack is smart to take the cash, although obviously it's going to require some serious discipline from them to make sure that it only helps them rather than hinders them.

I'm not an employee/investor/etc but I've been convincing freinds to apply to work at slack recently, I think if you are obsessed with productivity tools or communication tools, Slack, Asana or Quip are all companies worth looking at.

There's a compiled set of info on working at slack [1]. Disclaimer: I compiled it!

Back to my first point - now they have a _ton_ of cash to hire a _ton_ of people - very curious to see @slack in 6-12 months.

[1]: [http://www.breakoutlist.com/slack/](http://www.breakoutlist.com/slack/)

</comment><comment><USER28> I just don't see how SaaS at this scale can ever be profitable. Asana, Slack, and the like have to support large teams while the enterprise sales cycle is extraordinarily expensive. If you're Oracle and can charge $5k a seat plus consulting fees, then sure, I understand it. If you're an also-ran SaaS business charging $8 a user, you're never going to be profitable.

All of these are just different spins on the same communication features. There's nothing that's really defensible about any of them.

<comment><USER29> Asana engineer here. With such a large market size, we can scale the sales process to make it inexpensive. We only have a couple sales people. User operations, i.e. keeping customers, is larger but still in all less than 10.

</comment></comment><comment><USER30> Multiple folks have told me that Slack is the very first app that they check when they wake up in the morning. And then they use it for hours every single day.

To me, that's an incredibly powerful fact. Not many apps comsume user attention like that.

<comment><USER31> While that's true, I mean I _have_ to as that where the communication for my team happens. It's not like Slack did anything particularly inventive. They just happened to be "not HipChat" (Which we used to use but Slack just had that "cool new" factor)

<comment><USER32> That's exactly the point.

"Just" being a "not Google" just might make you a trillionaire.

</comment></comment></comment><comment><USER33> Having used Slack I found it ammusing the way they describe it:

Slack, the enterprise collaboration platform

It actually is true and a great way to market.

1.2B valuation seems high, but I guess this is a lesson that you can do the same thing everyone else has done, but do it better ( or at least differently) and actually be successful. Sometimes hard to believe that.

</comment><comment><USER34> Our (small) team adores slack. I didn't even realize what the pricing was when we first started - I thought it was free forever with some freemium features. Then all the sudden we hit our quota (after a month of heavy, heavy use), and paying for the full subscription was a no-brainer. The product truly is fantastic, and we'll pay for it all day long.

<comment><USER35> It is free forever, as long as you don't require more than 10,000 searchable messages in the archive or over 5 external integrations.

</comment></comment><comment><USER36> I don't really see how this is worth a 1.12B valuation - even with this amount of users. I also think that the pricing for Slack is over the top.

I used Flowdock [https://www.flowdock.com/](https://www.flowdock.com/) for about a year for a distributed team, before Slack even existed.

From what I can tell Slack is a direct copy of Flowdock from top to bottom in regards to features, while Flowdock charges $3/mo/user.

<comment><USER37> Slack is massively better at dealing with documents.

<comment><USER38> dealing with documents is a billion dollar feature?

<comment><USER39> Companies aren't valued on features. They're valued on how much money investors think they can make, which is usually a function of how fast they can acquire users, which is often greatly affected by their execution on simple features.

</comment></comment></comment></comment><comment><USER40> In my experience and having tried everything since Google Wave, Slack is the first platform to come along that has really significantly reduced email usage while improving team communication.

I predict that it is really going to be huge.

</comment><comment><USER41> Serious question, can someone explain why a team using Hipchat should switch to slack?

<comment><USER42> The major benefit of slack over hipchat is slack comes with integrations by default. IE: instead of having to use Zapier or such to hook into Trello slack can handle it for you.

HipChat only has an API you push to, whereas Slack can pull from other services.

We tried it and kept with HipChat. I found Slack's interface/text to be less readable than HipChat. It might look better, but for reading information and usability HipChat won. Our entire team is happy with our choice.

</comment></comment><comment><USER43> Slack has been around since February 2014. An eight-month-old company raising $120M is damn impressive, no matter how you spin it.

This is just another testament to b2b software. They only have a couple thousand customers, but that's enough to get them a $1.12B valuation. If my mental math is right, that's roughly 200k per current customer? This is probably a strategic play on the part of GV/KPCB, moving into the enterprise market where they already have investments. They will leverage partnerships with other portfolio companies to multiply Slack's revenue, likely bringing that valuation in range closer to $XX,000 per customer -- far more reasonable in Enterprise.

Nice job Slack!

<comment><USER44> ~$15k per current customer

<comment><USER43> Sounds like a bargain.

</comment></comment></comment><comment><USER45> I basically hate every one of these services that I've ever used. Crashy, resource-intensive clients.

At work we use HipChat which is "better than skype", but still pretty crap. In stark contrast to the rest of the Atlassian suite which is basically good.

IRC, in the form of irssi+screen on some kind of unix host, is however awesome. There's no great mobile solution, and OTR crypto should be available on top.

What's amazing to me is so many companies in this space and so much money and all the products suck.

<comment><USER46> I believe you can use IRC clients to connect to both HipChat and Slack.

<comment><USER45> XMPP clients (e.g. Pidgin/Adium).

But they block OTR (at least HipChat does), and you lose most of the functionality.

<comment><USER47> isn't the point to block OTR. a core concept of both of them is knowledge capture and searchability which can't be done properly if your only having part of the conversation.

<comment><USER45> I have no desire to have knowledge capture and searchability when I IM a coworker with a password.

</comment></comment></comment></comment></comment><comment><USER48> There are no discernible improvements over HipChat. I don't understand what the fuss is about. We're in a bizarro-world.

</comment><comment><USER49> I feel like Slack is what Campfire should've been. Or what IRC with a fast, searchable history and a decent GUI is.

</comment><comment><USER9> Is anyone on this thread using Slack (or Hipchat et al) outside of development? I've seen it be useful (along with Hipchat) with development and, to a lesser extent, design (UX/UI) - but outside of that no one seems interested. Just curious if others have the same experience. I was talking to a VP of Sales from another company that had adopted Flowdock and asked her what she thought of it - her response: "I hate it." Saw the same reaction to Salesforce Chatter.

With $120m, I hope they bring group video chat to Slack and a dedicated windows client.

</comment><comment><USER50> I've been using Slack by myself as a replacement for email notifications from various services for my side projects and open-source projects. Works quite well!

</comment><comment><USER51> The issue with slack is that they have these NUX notifications all over the place. If your product is that complicated, there's probably a deeper issue.

</comment><comment><USER52> How Atlassian of them.

</comment><comment><USER53> What I really like about Slack is that it reduces the amount of office email. I also love the number of integrations they have.

For me Slack + Trello really work for an enterprise.

I know they are looking for a Windows Phone guy to build their WP app, good time to join them I guess.

</comment><comment><USER54> $1.12B kind of blows my mind, but me and my team really do love the service.

</comment><comment><USER55> Also, the Slackbot is the friendliest bot I've come across.

</comment><comment><USER56> I will add this to the list of things that I thought can never be worth so much :-(

/me just do something already

</comment><comment><USER57> First thought: "Why is Google VC investing in Slackware?"

Made my heart rate accelerate I little bit.

</comment><comment><USER58> Nice to see a decent Flowdock competitor, but I still don't see a reason to switch.

<comment><USER59> We switched for largely arbitrary reasons. I do really like the Slack experience, I'd say I prefer it in some ways. But Flowdock was also great, no real complaints there at all.

<comment><USER60> A sign that the switching costs are maybe not that big. We went from campfire to hipchat to slack. And each time we were happy to move on despite a history of chat messages (old documents aren't that useful since anything important is in Dropbox). Interesting phenomenon.

</comment></comment></comment><comment><USER61> I know you should take money when you can, but part of me is wondering if this is indicitive of some kind of "winter" coming for VC funding. If slack is growing that quickly, why not wait another 6 months and drive for a better valuation?

<comment><USER62> The growth seems baked into this (really high) valuation to me.

<comment><USER63> There's a lot of money in replacing (a significant portion of ) email with an actual better solution.

</comment></comment></comment><comment><USER64> I'm so happy for them. Great team and great product.

</comment><comment><USER65> Wonder if they'll offer to buy MetaLab now.

</comment><comment><USER66> Anyone remember Yammer?</comment>


The Edward Snowden clips NBC didn't broadcast on TV - <AUTHOR> http://thedesk.matthewkeys.net/2014/05/edward-snowden-unaired-nbc-clips/

<comment><USER2> Regardless of your opinion of Snowden, the 4th Amendment has been trampled. Its words and simple and clear:

"The right of the people to be secure in their persons, houses, papers, and effects, against unreasonable searches and seizures, shall not be violated, and no warrants shall issue, but upon probable cause, supported by oath or affirmation, and particularly describing the place to be searched, and the persons or things to be seized."

I lived through the cold war. I remember how Americans held our country up as the better example when compared to the intrusive internal snooping of the communist bloc.

Now (in this regard) we are them!

</comment><comment><USER3> I can't believe they left his comments on the 4th amendment out, yet half of the interview was asking him about Russia. Such a typical mainstream media interview. It shows that the mainstream media cares more about him being in Russia than about the US government's surveillance abuses.</comment>


Surviving the App Store - <AUTHOR> https://github.com/amirrajan/survivingtheappstore <comment><USER2> >>A successful iOS game makes $4,000 annually (this goes for any app frankly). A successful Android game makes one seventh of that (one third at best)

Not true.

Source: I run a mobile apps company with popular apps on Android.

<comment><USER3> I also would deeply contest those number claims.

To speak specifically to the Android claims, this author does what so many others have done: Long after the hype has worn down (hype that including mainstream media attention) they eventually get around to an Android port and then report miserable Android sales.

Well, no kidding. I mean if it doesn't have the word of mouth pitch, does this look compelling-

[https://play.google.com/store/apps/details?id=com.yourcompan...](https://play.google.com/store/apps/details?id=com.yourcompany.adarkroom&hl=en)

It looks like a hello world app. And the com.yourcompany bit is telling.

We've seen this with a number of much more polished games as well: Release on iOS, get tonnes of press and attention, and then long after the hype has died down release something on Android. Do these people really think those users just sat waiting?

<comment><USER4> > _does this look compelling_

It actually does. It looked intriguing enough that I bought it without hearing of it beforehand when it came out.

</comment></comment></comment><comment><USER5> How do I read this? Click the manuscript folder and then click through the md files in an arbitrary order? Or is there some better way I'm missing?

</comment><comment><USER6> The book was just pushed to Github 3 hours ago, so it is likely still in progress. There is no table of contents, but this page gives a bit of info about the structure of the book, and how to read it:

[https://github.com/amirrajan/survivingtheappstore/blob/maste...](https://github.com/amirrajan/survivingtheappstore/blob/master/manuscript/how- to-read-this-book.md)

</comment><comment><USER7> Title: "Surviving the Appstore, How to Make it as Indie Game Developer"

</comment><comment><USER8> eCPMs on Android are about 1/3 of iOS but you tend to get more installs so we make about 1/2 on android as we make on iOS. Not sure where the 1/7 comes from

</comment><comment><USER9> Thanks for making it available!

PS: Does anyone know how to build an epub from it?

<comment><USER10> This looks like a source for a leanpub.com book (Book.txt gives it away, and the fact that this is all in a manuscript folder). I don't think they have a command line tool to build epubs, but you should be able to get an epub from their web site if the author published it there

</comment></comment><comment><USER11> Great work on the book and RubyMotion!</comment>


Ask HN: Best architecture for offline-first, cloud-synced mobile app? - <AUTHOR> So I've been grappling with a technical design decision for a few days now and wanted to see what HN thinks, since I imagine there are a bunch of people who have run up against this problem and might have opinions/experience.
I've built an iOS app that uses Rails as a backend, this has worked well as a stack for me in the past, but the wrinkle is that this app now needs to be truly functional offline - I need to persist every object locally for offline use, but then also have that synced to the cloud for backup and to enable other features like sending emails and notifications containing users' content.
There are obviously plenty of straight-forward options to handle the local persistence (CoreData, SQLlite, Realm, etc.), and I'm happy to use any of them, but there seems to be no great option for persisting/syncing the local stuff on the cloud.  Each of the options I've come across has significant drawbacks:
Realm Platform - prohibitively expensive (> $2000/year) if you want to access the server data to do anything other than communicate with a Realm client, also migrations are a pain
iCloud + CoreData - people might not have iCloud space or iCloud enabled
Google Cloud Firestore - in beta, some people experiencing issues with locally created objects not getting persisted, locked in to platform
Google Firebase Realtime - seems like this is effectively on the way to getting deprecated in favor of Firestore
Rolling my own solution where I write a background process to sync the client's data with my Rails server - lots of complex code, prone to bugs
Any opinions on this problem or things I should consider?  Would be greatly appreciated! <comment><USER2> 1) Couchdb

2) AWS AppSync Client (not Amplify) + AWS AppSync service + Cognito + a few Lambdas + some db

<comment><USER3> CouchDB has the advantage of implementations for mobile (CouchBase Lite for iOS and Android) and web (PouchDB).

</comment></comment><comment><USER4> I just leave this link here. Quip is one of my favorite offline-first cross- platform app. They use leveldb (realm is also based on leveldb) on the client and use mysql on the server. Protocol buffers are used for communication although thats just a communication method.

[https://medium.com/@btaylor/react-with-c-building-the- quip-m...](https://medium.com/@btaylor/react-with-c-building-the-quip-mac-and- windows-apps-c63155c1531b)

</comment><comment><USER5> Have you checked out MongoDB Mobile/Stitch?

[https://www.mongodb.com/cloud/stitch](https://www.mongodb.com/cloud/stitch)

<comment><AUTHOR> No, never heard of this option, definitely going to check it out - thanks!

</comment></comment><comment><USER6> You could use Realm Object Server instead of signing up for Realm Platform.

Another option you can investigate is AWS AppSync.

You also can just configure your data layer to get from the cache if offline, and get from your Rails app if online. You can use the Reachability framework to get notifications when an Internet connection comes back online.

<comment><AUTHOR> My understanding is that just "using Realm Object Server" means using Realm Platform Self Hosted, which starts at $2000/year. The hosted Realm Platform starts at $30 month, but I've read you need to upgrade to a similarly expensive $1500-2000 enterprise plan if you want to access the data from non- mobile-Realm clients. That is to say, I'm very open to just using Realm Database on the client for local persistence, because it's free and really nice to use, but don't think Realm for sync is viable.

AWS AppSync looks like it's worth investigating, thanks!

Agreed a custom data layer/cache might be the way to go, I think it gets a bit more complex once you have a bunch of objects being edited and deleted, and I've also spent some time with iOS background networking in the past and I know it can be buggy/frustratingly non-deterministic, which is why I'm reluctant.</comment></comment>


Find the Helium - <AUTHOR> https://www.npr.org/templates/transcript/transcript.php?storyId=751845378 <comment><USER2> > You cannot send a rocket to space without helium. > You need helium to > launch a rocket - like, to push an astronaut into space.

Not quite correct. Helium is usually used for pressurizing tanks of rockets, but it's not a mandatory gas for this. Korolev's first satellite rocket used nitrogen for pressurization of tanks. Saturn-V upper stage used the components itself for pressurization.</comment>


Impossible Foods – burger now available in NYC - <AUTHOR> http://impossiblefoods.com/ <comment><AUTHOR> found a more informative link: [http://momofuku.tumblr.com/post/148004390068/impossible](http://momofuku.tumblr.com/post/148004390068/impossible)</comment>


Bacteria can travel thousands of miles through the air on their own - <AUTHOR> https://www.earth.com/news/bacteria-travel-thousands-miles/#.XJq0byhKiUl <comment><USER2> Link to the actual study (which the article never provides): [https://royalsocietypublishing.org/doi/10.1098/rstb.2018.009...](https://royalsocietypublishing.org/doi/10.1098/rstb.2018.0092)

</comment><comment><USER3> The evidence seems super speculative to me. Is there anything else to corroborate this?

<comment><USER4> Fine dust gets lofted high in the atmosphere. Some bacteria can handle being dried out for long periods and act as fine particles. As I recall, one of the victims of the anthrax terror attacks was a woman who lived several miles downwind of an affected Post Office.

But good for these researchers for working out the details, and I'm sure there's a lot more in the paper that didn't make it into the article.

<comment><USER5> Is one bacteria landing on your tongue, being sucked up your nose or inhaled into your lungs going to do anything? Are there any bacteria and virus that can kill with just one making contact?

<comment><USER6> It's called "infectious dose", and it's largely about probabilities.

See this question that I asked a while ago (and associated answers) on Biology SE: [https://biology.stackexchange.com/questions/5442/are-all- kno...](https://biology.stackexchange.com/questions/5442/are-all-known-germs- benign-in-small-enough-quantities-i-e-why-do-we-wash-our-h)

EDIT: added missing URL.

<comment><USER7> Apparently for Anthrax the LD1, the dose expected to kill 1% of the population exposed to it, is just 1 to 3 spores. So it's possisble that woman downwind of the post office might have just inhaled a single spore.

[http://www.cidrap.umn.edu/infectious-disease- topics/anthrax](http://www.cidrap.umn.edu/infectious-disease-topics/anthrax)

</comment></comment></comment></comment></comment><comment><USER8> *on their own

<comment><USER9> I believe the title is grammatically correct.

<comment><USER10> Garner's Modern English Usage recommends the plural form, and cites a 7:1 current usage ratio in favor of plural.

<comment><USER9> Thats interesting. I did not know about that. Can you post the URL of the source?

<comment><USER10> Sadly, it's not online that I know of. Here are pictures of the text:

[https://www.dropbox.com/s/5sa0m8l9u6211y4/2019-03-26%2019.21...](https://www.dropbox.com/s/5sa0m8l9u6211y4/2019-03-26%2019.21.53.jpg?dl=0) [https://www.dropbox.com/s/dwbh9i7a4dcx84g/2019-03-26%2019.22...](https://www.dropbox.com/s/dwbh9i7a4dcx84g/2019-03-26%2019.22.08.jpg?dl=0)

The book [[https://www.amazon.com/Garners-Modern-English-Usage- Garner/d...](https://www.amazon.com/Garners-Modern-English-Usage- Garner/dp/0190491485)] is worth owning.

<comment><USER11> Although based on that book, with which I agree here, the plural seems unambiguously the preferred term for this article's context, I'm not convinced of the book's examples of incorrect use of the singular form. It seems like in the given examples, the word "bacteria" is treated as singular when referring to a specific _strain_ of bacteria. It seems unwieldy in referring to one particular strain, IMHO, to say "the bacterium that causes <x>", since one typically gets infected by a vast quantity of the individual entities, not just one. Thus I think "the [strain of] bacteria that causes ..." [for one strain] sounds just as natural as "bacteria that cause <x> include <a>, <b>, <c> ..." [referring to multiple strains].</comment></comment></comment></comment></comment></comment>


Getting started with the F# and .Net ecosystem - <AUTHOR> http://www.prigrammer.com/?p=363 <comment><USER2> I was introduced to F# 3 years ago at work, and have been developing with it for more than 2 of those years (in production, some apps mixed with C#, others pure F#)

My quick thoughts: Beautiful language. There's quite a bit of a learning curve for some of the more advanced features, but a large portion of the language is very readable and succinct Additionally, I love how the language has helped me become a better developer. Far fewer bug, and none of them are null-related After my former lead left, I've had difficulty introducing new teammates to the language. It's hard to convince C# devs to try it out I've been looking around for a long time, but there seem to be very few teams that are hiring F#. It doesn't help that many aggregate job posting sites fail to show useful results when searching for "F#" Negatives aside, I really enjoy programming in F# and if you were on the fence, I'd say to give it a try!

</comment><comment><USER3> I'd love to use F# in production on a Linux/Mac OS environment. I find the tooling to be problematic and quite hacky on these platforms. In the same time the library ecosystem around manipulating PDF/Word/XLSX documents, CPU/GPU math accelerated libraries, machine learning, stats, charts and DB connectors are not that mature and production ready. If you just stay withing the F# and .NET core library ecosystem then it's fine. I'd need more support for the ecosystem to be able to fully switch from scala to F# for production. I'm so looking forward to having Microsoft get the full .NET to Linux.

<comment><USER4> I have been feeling this way for quite awhile. I never want to detract from anyone's hard work, but I simply hate Mono. I hate having to fool around with it to get something else to work. When MS released C# for .net-core, I was extremely pleased. I'm not a big MS fan, but C# is really good! Being able to run it on Linux is a great step forward. I know MS has a roadmap to get F# going, so I'll be anxiously waiting.

</comment></comment><comment><USER5> There was a nice video on F# 101 on MSDN recently:

[https://channel9.msdn.com/Shows/On-NET/A-tour-of-F-with- Phil...](https://channel9.msdn.com/Shows/On-NET/A-tour-of-F-with-Phillip- Carter)

There are two passages that I found amusing.

First the guest mentions the merits of F#'s deep implicit typing, where the use of a function at the top may determine the typing of other nested functions. And as one would expect with this level of things happening implicitly, it is very easy to get lost in what is going on, which is exactly what happened to the guest at minute 27, where he couldn't figure out why the F# compiler wasn't implying the correct type.

Later on the guest mentioned that for all their API, they actually create a signature file (i.e. a header file) where you have to declare every function signature separately from the implementation. The host diplomatically mentions that perhaps this might maybe be a little bit cumbersome to maintain. The answer is that it's not a problem, as the program simply doesn't compile if you have a mismatch.... Hum.

I like certain aspects of it, not using too many special characters (kind of python/vb style), the immutability, etc. But I can't say I am sold and ready to switch though. And many of what are presented as key features are just not the kind of things I have any use for, like declaring lists of consecutive numbers (can't remember the last time I needed one) or F# type providers (I rarely have to deal with unexpected file data formats).

<comment><USER6> Yes, to be honest in languages with type inference you have to rely on your editor/IDE to show you types on demand. You do need that to be able to work smoothly on a day-to-day basis. Of course you can and should learn how to reason about the types, but you still need quick feedback about whether the compiler agrees with your reasoning.

To your second point, about the 'header' (interface) files in ML-family languages like F#--that is a really great feature because it lets you do _abstraction_ and _access control._ The interface file specifies what callers are allowed to see, you can use them to make your types truly abstract and prevent access to your modules' internal functions.

About lists of consecutive numbers ... not sure what that is referring to exactly. About type providers ... yes, I agree with you that not everyone finds a use for them. In general, I will say that the killer feature of F# and other ML-family languages is that they dramatically increase code refactorability (low-ceremony static types) and dramatically reduce lines of code (simple, 'math-y' syntax).

<comment><USER5> For consecutive numbers I am talking about the [1..99] notation. Very useful in academics to make a demo when you don't have real data. But less so in the real world. What I mean is that many of these demos tend to address problems that I do not have personally.

Multithreading is a good example. It is hard to do at a low level. And I totally get why F#'s approach helps a lot. But I find that you get most of the benefits of multithreading by splitting your task in independant subtasks that are not thread safe but do not share writable data, and run a parallel.for at the top. Occasionally you need some locking if you have a common cache but that's easy to get right.

Sure you could optimize it a little bit more by making it multithreaded at a lower level but most of the time that's enough to get 90% of the performance benefit.

I am also a bit uncomfortable with the liberty F# takes with memory. To make everything immutable you create a lot of copies in memory. All the .net performance articles I have read mostly focus on taking it easy with the garbage collector and reducing the number of allocations. Intuitively it doesn't sound like an obvious trade off (thread safety vs more garbage to collect).

<comment><USER6> Oh, the range notation. It's a little convenience that can save a bit of typing here and there. Not a tremendously important feature, to be honest.

About multithreading, not sure what you mean but F# definitely has parallel collections in addition to its general async capability that lets you handle concurrency in a safe way. If you haven't already, check out the Hopac project ([http://hopac.github.io/Hopac/Hopac.html](http://hopac.github.io/Hopac/Hopac.html) , scroll down to the Description section).

About memory use, yes you create copies but at the same time immutability means you can have persistent data structures which share and thus save a lot of memory. Also, in general performance is good enough that you don't really have to worry about it, and when you do, you can always measure, profile, and see what's actually causing the memory pressure.

That said, it's true that functional programming languages have a different memory profile than imperative languages, and implementations which have been designed with this profile in mind perform really well. E.g. check out OCaml's performance in this GC pause benchmark: [https://making.pusher.com/golangs- real-time-gc-in-theory-and...](https://making.pusher.com/golangs-real-time-gc- in-theory-and-practice/)

</comment></comment></comment></comment><comment><USER7> I know its heresy, but for a while I was actually getting hooked on F# succinct way to write/support OO. On the surface at least, it looked a lot cleaner and more concise than C#.

I wish there were more F# jobs - its a very interesting language.

<comment><USER8> Not heresy at all. Everyone I know that has used it, including myself, really likes it. Yet no one I know has ever used it a real production environment. I guess it has some traction in financial circles, but that's about it. Maybe .NET going cross-platform will lead to some adoption.

<comment><USER9> We at Tachyus use it as the main server-side language in our production environment. Also on Linux/Mono. Jet uses it, and they were bought by WalMart for > $1B. There is no problem running in production. In fact, there is a noticeable lack of problems running in production.

</comment></comment></comment><comment><USER10> in case you'd like to get a quick intro to the language w/o installing anything, check out their jupyter notebook here which you can clone & run:

[https://notebooks.azure.com/Microsoft/libraries/fsharp](https://notebooks.azure.com/Microsoft/libraries/fsharp)

</comment><comment><USER11> Thanks a lot for posting this.

I have been wanting to break into F#. At work I use PowerShell on many Windows computers. I could write PowerShell modules in C#, but F# would allow me to think like I would if they had been written in Haskell.

I am also working on a small web application with C#. (M101N course via MongoDB Uni.) I'm keen on re-implementing in F#, just to see how both compare.

Appreciate the getting started guide!

<comment><USER12> That is my current approach, as I don't get to use anything other than C# (or C++) on .NET/UWP projects, so F# gets used for my own scripts.

</comment></comment><comment><USER13> If you have issues accessing it.

[https://web.archive.org/web/20170607134504/http://www.prigra...](https://web.archive.org/web/20170607134504/http://www.prigrammer.com/?p=363)

</comment><comment><USER14> Does F# have Generalized Algebraic Data Types like Ocaml has?

<comment><USER15> No, but you can get very close using classes/objects. See [https://eiriktsarpalis.wordpress.com/2017/03/20/why-oo- matte...](https://eiriktsarpalis.wordpress.com/2017/03/20/why-oo-matters- in-f/) and [https://www.microsoft.com/en- us/research/publication/general...](https://www.microsoft.com/en- us/research/publication/generalized-algebraic-data-types-and-object-oriented- programming/) for more details.

</comment></comment><comment><USER16> This talks about mono and I certainly think it's a nice option. If you want to use .netcore and F# (even on mac and Linux ) here is a nice getting started vid :

[https://channel9.msdn.com/Events/Build/2016/T661](https://channel9.msdn.com/Events/Build/2016/T661)

</comment><comment><USER17> Any one that uses F# right now, can you tell me if you can create folders in Visual Studio? It seems like it's mentioned here, but I'd like a confirmation.

<comment><USER18> You can via the F# Power Tools; at least in VS2015. In VSCode just create the folder as per normal and hit "F1->F#: Add File to Project" using the Ionide plugin. Admittedly the need for folders in my experience is a lot less than in C#.</comment></comment>


Evidence based smear campaigns - <AUTHOR> http://www.badscience.net/2010/05/evidence-based-smear-campaigns/

<comment><USER2> _But for people who placed themselves ideologically to the right of center, the correction wasn't just ineffective, it actively backfired: conservatives who received a correction telling them that Iraq did not have WMD were more likely to believe that Iraq had WMD than people who were given no correction at all._

There is this thing called "commitment fallacy" - once you make up your mind and _express_ it you are much more likely to defend that point later on, compared to not having expressed it. Perhaps reading through a text that plays into your beliefs creates an "internal narrative", which in turn evokes the false commitment. Interesting.</comment>


Ask HN: Should I learn Kotlin or Golang? - <AUTHOR> Edit: I have worked with Java/Python/JS extensively. To be honest not very fond of the Java/JVM platform for all the usual reasons. <comment><USER2> Or dart and flutter - all 4 being supposed first class citizens at Google.

My personal philosophy has been to solve/implement the issue at hand using a language that I consider to have "native" proficiency. Because, the list of languages propping up claiming to be the next best thing is large: 1\. Kotlin 2\. Go 3\. Dart/flutter 4\. Rust 5\. Swift 6\. Scala 7\. Haskell 8\. F#

The advent of llvm has drastically cut down the time to market for new languages. I'm certain a few more will get added to this list soon, so just get the job done following best practices and without incurring technical debt. This will make your work language proof

</comment><comment><USER3> I do recommend you should learn both to help you gain experience to tackle different problems, many workplaces lack programmers of those experiences. It's like a triathlon that we aren't made to learn only one language.

Likewise, I like the concept to encourage learning 8 languages rather than 2.

[https://www.kickstarter.com/projects/834569564/codescontext-...](https://www.kickstarter.com/projects/834569564/codescontext- learn-8-programming-languages-the-fas)

</comment><comment><USER4> RE Java/JVM just try Clojure for a bit... it's really rather good.

Otherwise, do Go. Really useful for high performance. Channels are easy as pie for concurrency. Web services, command line tools, etc; lovely. Downside is that it's verbose and if you hate loops then there's no salvation for you.

<comment><USER5> If you worked extensively in Java, you will find Golang really easier to pickup.

</comment></comment><comment><USER6> Perhaps both together.

[1]: [https://www.scientificamerican.com/article/the- interleaving-...](https://www.scientificamerican.com/article/the-interleaving- effect-mixing-it-up-boosts-learning/)

</comment><comment><USER7> Did you already work with any another programming language (are you beginner)? And which problems do you want to solve? Without answering these questions, there's no chance that you get a helpful answer.

<comment><USER7> Ok, you are now answering the first question. What about my second?

Are you actually engaging with the users who reply to your question?

<comment><AUTHOR> Sorry for the late reply. My work has been mostly business applications and web site backend stuff, and I am happy to continue doing it. But I also like to learn native mobile app development (bothe iOS and Android) to expand my skillset.

<comment><USER7> If you want to go mobile, then golang is obviously out. If you choose between iOS and Android, then I suggest to start with iOS first. It's much easier to learn because it's not fragmented and thus results in a simpler platform API. This said, go with Swift for iOS. It's great and also very similar to Kotlin. I have programmed years with both besides many other languages. I however believe that platform independent programming tools such as React Native will become more important in the future. Still it helps a lot knowing native programming itself. I personally enjoy developing for devices the users can touch. If that's the case for you, too, get involved with iOS programming next.

</comment></comment></comment></comment><comment><USER8> Why you do not like Java? Does Kotlin solve some of those problems?

</comment><comment><USER9> What are you looking to do with said new language?

<comment><AUTHOR> will mostly be business applications and web site backend stuff. Also I would like to learn native mobile app development to expand my skillset.

</comment></comment><comment><USER10> Go... or maybe Elixir ;)

</comment><comment><USER11> Why not Erlang?</comment>


This is what happens to your servers when you are under DDoS - <AUTHOR> I added SYNPROXY to netdata and posted here: https://www.reddit.com/r/linux/comments/4dyqdj/realtime_monitoring_of_linux_antiddos_protection/
Then they attacked, today, the netdata demo server, twice!
Do you want to see what happens to your servers when you are DDoS?
1. Go to http://netdata.firehol.org/#netdata
2. zoom out the netdata.requests chart completely (if you follow the link, it will be just on your screen, just under the pop-up) (zoom out using SHIFT + mouse wheel, on chrome and opera only - sorry no zoom on firefox and IE yet)
3. you will see 2 spikes
4. Zoom in to any of them and then navigate to the all the other charts.
This is what happens when you are under DDoS! Check nginx, CPU, interrupts, the connection tracker (peaked at 37.000 connections!).
Do it now, the server has a round robin DB, of 24 hours only - it will be available for about 12 hours only.
Unbelievable! <comment><AUTHOR> See the attack here: [http://netdata.firehol.org/#netdata](http://netdata.firehol.org/#netdata) (follow the instructions above)

My post to reddit: [https://www.reddit.com/r/linux/comments/4dyqdj/realtime_moni...](https://www.reddit.com/r/linux/comments/4dyqdj/realtime_monitoring_of_linux_antiddos_protection/)

The article at the netdata wiki: [https://github.com/firehol/netdata/wiki/Monitoring- SYNPROXY](https://github.com/firehol/netdata/wiki/Monitoring-SYNPROXY) (and my response to the attackers)

</comment><comment><AUTHOR> direct link to the first attack: [http://netdata.firehol.org/?force_before_ms=1460213988000&fo...](http://netdata.firehol.org/?force_before_ms=1460213988000&force_after_ms=1460213669000#netdata)

direct link to the second attack: [http://netdata.firehol.org/?force_before_ms=1460226227000&fo...](http://netdata.firehol.org/?force_before_ms=1460226227000&force_after_ms=1460225741000#netdata)</comment>


Stop Hiring for 'Culture Fit' & Start Hiring for 'Culture Add' - <AUTHOR> https://www.americaninno.com/chicago/inno-insights-chicago/why-startups-should-stop-hiring-for-culture-fit-and-start-hiring-for-culture-add/ <comment><AUTHOR> They don't always say it out loud but seems a lot of startups want a 'rock star' or a 'ninja' coder as long as you're not over 50, black or a woman. We're not biased they say with a smile, it's just you wouldn't be a good cultural fit.</comment>


Basecamp's video tour of their new email service HEY - <AUTHOR> https://www.youtube.com/watch?v=UCeYTysLyGI <comment><AUTHOR> Watching this, I felt like I was watching the mother of all email demos. I am really liking the thought that they put into common email workflow problems. I haven't tried it yet, has anyone else?</comment>


Time and time correction in Erlang - <AUTHOR> http://www.erlang.org/documentation/doc-7.0-rc1/erts-7.0/doc/html/time_correction.html <comment><USER2> The ultra-short variant of what is going on:

Time in Erlang was historically used for many things: What time is it? How much time elapsed between points A and B? Give me time, use it as a unique timestamp. And so on.

The old way Erlang handled time (with time correction enabled) was to speed up or slow down the internal clock by about 1% whenever the system time changed. This is fine for smaller fluctuations like leap seconds (and correspond nicely to what Google calls leap-second-smearing). But for a large sudden "time warp", the system will be wrong forever because it will never catch up. The 1% frequency difference also means that 1000ms is closer to 990ms or 1010ms.

The new API maintains a precise and accurate monotonic clock which is used to wait on timers, do latency calculations and such. And then a "system time" is kept by noting how the system time is "offset" from the internal monotonic clock. You can monitor time change events of this "system" time, which allows your program to explicitly handle leap seconds, or when the system suddenly gets full NTP connectivity and learns that 14 days has passed since last reboot.

Finally, a seperate API can give unique integers. Earlier, erlang:now() was guaranteed unique (even if called from several different processes at the same time. It would simply "speed up" for a while if the calls were too close to each other). The downside of this guarantee was a big fat lock around erlang:now(), which has been dreadful to anyone who wanted good scalability in their programs. Lock instrumentation could often show serious contention around this lock.

By querying the underlying OS for the best clock source and separating the different time concepts, timer wheels can now be per-core, which results in a massive scalability boost of the system as a whole.

All in all, it is a necessary and very cool change to Erlang systems. It allows one to handle time with the attention to detail which is needed. While the original leap-smearing tactic is fine (and worked well for a long time), this finally allows people to program real solutions to leap seconds and sudden NTP time warps.

(Edit: added a "never" which was needed for a sentence to parse correctly).

<comment><USER3> I'm curious if Erlang system here means just the nodes running on a single machine, or the Erlang system meaning the system of nodes clustered across multiple hosts.

Is time as transparent as the RPC model, is I guess what I'm asking.

<comment><USER2> Time here is on a per-node basis. No effort is made to synchronize time over multiple nodes. Partially because the problem is better solved with NTP, partially because time synchronization is so application-specific you don't want to solve it generically.

Some problems can do away with pretty lax sync, which in turn yields faster execution due to more asynchronicity. Other problems requires global time keeping, or timestamps of the form {erlang:monotonic_time(), node()} where the node-name is part of the timestamp (tuple ordering is lexicographic).

There are already several solutions to the global time problem. Twitter does something in Finagle, and earlier it was snowflake.

</comment></comment></comment><comment><USER4> _The system clock on such a system will typically be way off when the system boots. If the no time warp mode is used, and the Erlang runtime system is started before the OS system time has been corrected, the Erlang system time may be wrong for a very long time, even centuries or more._

There's something incredibly badass about Erlang/OTP's documentation addressing the idea of an OTP app running for "centuries or more".

</comment><comment><USER5> That looks like a well thought out and engineered approach to handle time. Often it left unspecified what happens when time warps. And there a certainly a lot of interesting corner cases.

I've seen system misbehave very badly during time warps. Even if NTP is configured sometimes it will snap the time instead of slewing it.

It is always fun when there is a time delta measurement on absolute time and it moves backwards. Now dt is negative with all kind of wonderful and exciting ramifications "Oh so we are sleeping for 4294967294 seconds, great!"

<comment><USER6> This is why most things along those lines (timers, etc) should be based on number of ticks since a reference point. Or, alternatively, a signed value (where there is a buffer zone near wrap that errors.)

Not that that doesn't have problems of its own.

<comment><USER2> This is essentially what will be possible now, with a 'CHANGE' event if the underlying clock suddenly warps/jumps to a new point in time. Your code has to be "time warp safe" in that it needs to handle this.

Interestingly, most Erlang code will be because most systems will just call erlang:monotonic_time(), leaving the other calls for time-affected applications, which are rarely that many.

</comment></comment></comment><comment><USER7> Cool:

        erlang:unique_integer([monotonic])

I wish this was a more common API function. Being able to do ordering without having to think about time and concurrency is _really_ nice (I know x86 has an interlocked increment that you could just use on an arbitrary global variable, but that means that you're not safe across crashes).

<comment><USER8> This is elixir, but can be called from erlang: [https://github.com/nirvana/flaky/](https://github.com/nirvana/flaky/)

It gives a unique value from any node in a cluster of nodes running this-- without any coordination-- such that you can guarantee they are sortable in order of creation. (to a small increment of fungibility-- two flakes created on different nodes in the same millisecond might be out of order, but they will be unique and in order with any flakes created in other milliseconds.)</comment></comment>