Liquid: Vim and Emacs-inspired editor written in Clojure - <AUTHOR> https://github.com/mogenslund/liquid/blob/master/README.md <comment><USER2> The lambdas in the name are a bit much. On another note, this looks really cool! The mindmap demo in particular[0] is really impressive (and probably requires lots of screwing around with terminal fonts). Evaluating files as Clojure (with the e key in normal mode) is obviously stolen from Emacs, but probably better since more people know Clojure than they do elisp. I'm continually impressed with the number and quality of alternative text editors out there and I hope that this one gets the critical mass userbase necessary to sustain its development and ensure that every language imaginable supports it as a development environment, as Emacs and Vim do now.

[0]: [https://github.com/mogenslund/liquid#salza-%CE%BBiquid- text-...](https://github.com/mogenslund/liquid#salza-%CE%BBiquid-text-editor- is-designed-with-clojure-developers-in-mind)

<comment><USER3> The lambdas in the name are definitely overkill, but also totally the kind of esoteric thing I would expect from a clojure engineer.

</comment></comment><comment><USER4> Looks pretty cool. I wish people stopped dismissing Clojure because for uninitiated it looks "weird". It is an amazing language.

</comment><comment><USER5> This is great!, but.. IJKL instead of HJKL for char movement will keep vim users away, so it doesn't really have emacs nor vim keybindings (nor sublimetext, vscode, etc..), this can stop lots of users from giving it a try IMO. Not implying that there is anything wrong with that if the author desires it to be that way.

<comment><USER6> This bothered me too. Fortunately you can reconfigure key bindings the way you want.

</comment></comment><comment><USER7> I'm so impressed it can just be launched with the Clojure cli tools (not sure if I'm phrasing that correctly). Very cool project. I've recently admitted to myself I don't actually like modal editing (but love keeping my hands on the keyboard) so I'm happy with default emacs (caps-lock to control always!) but I hope this project gains some appreciation.

Clojure has been so fun to learn and I really like the community. The various projects and tools coming out seem to really jibe with my wanted approach to learning this whole software game.

</comment><comment><USER8> I like Clojure a lot. I'm sure it would be a great language for configuring and extending an editor (I should know, I've written basically the same plugin for Vim [0] and DrRacket [1]).

However, one thing I don't like is JVM for CLI software. I even downloaded the jar to see if the startup is as slow as I expect (it is). I wonder if running this as ClojureScript on Node.js or compiling with GraalVM could speed things up.

OTOH when I started playing around with lisps I considered switching to Emacs for a while. I didn't because I was put off with the trouble of learning a completely new interface, the slow startup and the high resource usage. But I guess I'd still rather learn Emacs than some new quite unknown editor.

[0]: [https://gitlab.com/code-stats/code-stats-vim](https://gitlab.com/code- stats/code-stats-vim)

[1]: [https://github.com/dancek/code-stats- drracket](https://github.com/dancek/code-stats-drracket)

</comment><comment><USER9> I've seen so many embeddable text editors with a server-mode recently. Anyone know if there's a common API standard for editor-as-a-service yet?

</comment><comment><USER10> Can you end a holy war by mixing both sides together?

<comment><USER11> evil-mode already exists

<comment><USER12> spacemacs takes it all the way: [http://spacemacs.org/](http://spacemacs.org/)

<comment><USER11> Eh. YMMV

Some of us prefer a lean emacs, rather than the kitchen sink.

<comment><USER13> Even though I know it'd be better, I can't rationalize the time investment needed to port the subset of distribution that I use into a standalone config. Despite being very opinionated, I think spacemacs gets many things right by default, for example everything being evilified, linting and code completion working out of the box, the popup that shows all possible next code sequences, etc.

I do wish there was something more lightweight, but until I'm annoyed enough about that, I'll stick with the current state.

<comment><USER11> Personal customizations for quickly navigating IRC is one example of many why I put in the time investment a few years ago.

Integrating emacs with my CMAKE workflow was another.

</comment></comment></comment></comment></comment></comment><comment><USER14> Very cool Mogens! This is exactly the reason I keep reading HN. I wonder how challenging it was to get the JVM to perform with file IO... and how well it performs with large files. Would be great to have this running on top of LLVM instead of Java for a more native feel.

</comment><comment><USER15> The best Christmas presents are free and come from hacker news

</comment><comment><USER16> > You get a kick of doing everything in Clojure

I'm a fan of Clojure, but having this is the first reason to try an app is unattractive. It's saying that this project is first about the technology and second about solving your problems. That's fine and I wish them luck. But for those of us who aren't enthusiasts but just use editors to get work done it's a dissonant sales pitch.

<comment><USER17> It says "Emacs-inspired" on the tin. So, it shouldn't really be just an editor. It should be an editor-shaped interactive environment for some language. Sure, it would be nice for this environment to contain a good enough editor to be mistaken for one, like GNU Emacs sometimes is. Liquid is much younger and doesn't seem to have gotten to this part of wishlist yet.</comment></comment>


When do you decide to become a manager from a programmer - <AUTHOR> https://medium.com/code-to-craft/when-do-you-decide-to-become-a-manager-from-a-programmer-6d52d14a6860

<comment><USER2> It must be about some ideal world, where people become managers to do better good (as opposed to e.g. maximizing bonus or doing more talking than working).

<comment><USER3> Management is really hard, don't blame the faults of the bad managers on the good ones. I moved into a management role recently for the reasons described in the article: I wanted to get more done than I could do myself.

Also, management is a people oriented job. It's not surprising it involves a lot of talking.

<comment><AUTHOR> Well said!</comment></comment></comment>


Discord outage postmortem - <AUTHOR> https://discord.statuspage.io/incidents/62gt9cgjwdgf <comment><USER2> > Our service discovery system is resilient to various failure modes within > etcd, however, we did not anticipate a client being able to write a corrupt > record due to improper HTTP handling. golang's net/http module — which is in > violation of the HTTP 1.1 specification in this specific case — introduced > an additional failure case which we did not anticipate. It is expected that > a Content-Length header and an incomplete body should be rejected by a > server as being incomplete. Unfortunately net/http does not check that the > bytes read from the body portion of the request match the Content-Length > header.

Whichever engineer wrote puts too much weight on the theoretical aspects of HTTP.

The reality is that any of Discord's software could have had erroneous code that announced an empty service list. This would have crashed all of Discord regardless -- transient network errors and mismatched HTTP Content-Length headers _need not apply._

A _resilient_ HTTP server will try to handle whatever the HTTP client sends it, and then the specific endpoint can enforce whatever levels of strictness are needed by the application. It's nice to be able to point a finger at "not my code", but how many popular web server libraries (not standalone web servers like nginx or apache) out there will actually flat out reject the entire request because of a simple Content-Length mismatch, rather than handing that decision off to the endpoint?

If an empty string is not a valid value for your service discovery system, you should reject those from the database with a CHECK CONSTRAINT if possible, or with the code that sits in front of the database if CONSTRAINTS don't exist (like I believe is the case for etcd). It's also not a bad idea for the clients to validate what they receive and filter out values they can't handle to enhance robustness.

You definitely shouldn't rely on nothing ever _attempting_ to put a bad value into the database.

The web server's willingness to accept "strictly" malformed requests when the engineers were unaware of this fact was certainly a contributing factor, but I don't think it was the root cause in this case, as they're heavily trying to suggest.

(I think it would be neat to have a "strict" mode that you could turn on for every web server, especially when being used as an internally-facing service, but most companies want to make it as easy as possible for their customers/partners to integrate with their service... and that means accepting requests that aren't always academically perfect.)

<comment><USER3> I think it would be nice if the HTTP server could at least optionally validate that the length is expected. For example I would really not expect a malformed chunked encoding lacking a terminating zero length chunk to silently succeed.

However, I think you are dead on the money. Etcd is not validating the values but Discord's software seems to assume the etcd values must be valid. That seems like a recipe for future outages if the mentality were kept this way.

<comment><USER4> Yeah, this is reliability engineering 101 - don't ever expect that outside content won't be malformed, even from 'trusted' systems. There was a codepath somewhere that went from an unmarshal error into a crash - and that's something that should not pass any code review.

<comment><USER5> In Erlang (and Elixir) systems, turning unexpected errors into crashes is what you're supposed to do. Unfortunately, it's pretty easy for that to spiral into node shutdown/restarts, everybody ends up learning that one the hard way.

Supervision trees really do need to be considered, but what are you expected to do when the service discovery system is unreachable, broken, or filled with bad data? There's certainly options, giving up isn't necessarily the wrong one.

<comment><USER3> This may be true, but malformed input that is unchecked is not, imo, an "exceptional" case but nominally expected, and kind of dangerous since it is one of those things that isn't likely to happen often since it requires another bug or fault to reveal itself.

It's probably an unpopular opinion at this point but I definitely appreciate Go's approach to error handling here. Error cases are in-your-face by default for the most part, leaving nearly only programming errors and critical faults to panic ideally.

<comment><USER5> The important idea of the Erlang approach is not to leave things unchecked; the idea is that the proper response to most errors is to restart from a known good configuration.

Of course, restarting the service discovery client may not help, especially when the service discovery system's state is stable but broken. I don't know what you're supposed to do if you're dependent on services, and the service discovery system you use to find the services is not reachable or is returning garbage information. Better logging is always nice, but you can't serve the traffic.

</comment></comment></comment></comment></comment></comment><comment><USER3> In my opinion, the HTTP server's Request.Body's io.Reader should return an error on read when the request body ends unexpectedly, rather than having every use of the request body try to sanity check the length which seems cumbersome and error prone.

<comment><USER6> I believe it should, but it's likely a userspace proxy like HAProxy is in the way causing errors to be swallowed, as there's no way with the current sockets API to intentionally send an error over the wire.

<comment><USER3> Hi Jasper :)

Do you think so? I checked the Go http server code and my not-so-careful reading seems to confirm their suspicions: it just reads from the body io.Reader, which doesn't seem to validate length. (They DO use a limit reader to prevent DoSing with huge bodies, at least.)

Now if they were phoning out to a remote server, I'd assume some kind of fabric or load balancer. But I assume they've got a local etcd on each node or something along those lines so it is very possible that it's all local networking.

Though in most cases, outside of this use case, I'd agree that this is not particularly useful because it would never be terribly reliable. I know for a fact Amazon ELB rewrites the entire request, as an example...

<comment><USER6> I was talking about getting an error when reading from io.Reader, like a TCP timeout. I was quite sure the error would bubble up, but it of course wouldn't if there was no error to begin with, with something like HAProxy in the way.

</comment></comment></comment></comment><comment><USER7> As part of the fix, they mention changing the Python etcd client code to send the request in a single packet. How would one force that behavior? And is that even a good idea?

It seems like TCP fragmentation would be handled at a much lower level in the Python networking stack.

<comment><USER4> No idea. This 'fix' doesn't make any sense.

<comment><USER8> It makes perfect sense as "makes it 95% less likely to hit this bug."

Notice from the write up that they already _also_ modified their code to be resilient against the bug being hit at all, so "reducing the number of times the resilience code needs to be invoked by 95%" on _top_ of that is a net win.

</comment></comment></comment><comment><USER9> We used Discord for the "We vs Virus" hackathon last weekend and I was baffled how much better than Slack it is.

Everything runs much smoother, voice chat is like with TeamSpeak back in the days. Solid product.

</comment><comment><USER10> The level of detail in this is pretty nice. But I also feel like it's too much- some of the comments here are poking holes in the write-up. Is there a mis-translation from geek-speak to lay-speak (maybe due to the short turnaround)? Is it better to not mention some of these details at all?

</comment><comment><USER11> It sounds like they were maybe pattern matching to strictly. If the value is always a string just save the empty string and try to discover that service. If it doesn't exist, oh well, it doesn't crash the process.

</comment><comment><USER12> > unexpected deserialization error

I've had this with Boost.Serialization. Not fun. No exception, just a crash.

</comment><comment><USER13> [https://jepsen.io/analyses/etcd-3.4.3](https://jepsen.io/analyses/etcd-3.4.3)

</comment><comment><USER14> "All times are PDT."

A daily reminder that one can do anything and everything in JavaScript, except display information in UTC.

<comment><USER15> The reason (it seems) they stick to one timezone, are comments /updates can be added to status page incidents. It can be conflicting to talk about event times in a comment, and the post has different times. Here's an example from slack, where it's mixed, comments in PDT and posts in the local timezone. [https://status.slack.com/2019-06-28](https://status.slack.com/2019-06-28). I think it's a setting in statuspage, but it's tough decide which is best. I definitely wouldn't prefer looking at it in UTC.

</comment></comment><comment><USER16> FYI for anyone using discord - dont use the web client. Often users with web client can only be heard by certain people and vice versa.

</comment><comment><USER17> It's a good thing that everyone makes their own discord "server", which naturally is resilient to any failures upstream by virtue of being its own fully contained, self-hosted software stack.

Wait, no, Discord just aped that word to gaslight users into behaving in a way which makes them more money.

<comment><USER18> That does not seem like a very generous interpretation.

I'd wager that most of Discord's clientele don't have any specific expectations for the word "server". Regardless, I think "server" was carried over from the Mumble / Ventrilo / Teamspeak gaming community.

<comment><USER19> That's where it came from. Before discord, gamers set up actual servers with Teamspeak or Mumble and handed the IPs and ports to their guildmates. The "Teamspeak server" was where you met for voice chatting, and since Discord just wanted to supplant Teamspeak with their own product, they kept the "server" part in the name of the thing that gamers were supposed to meet for voice chatting.

It is a pure marketing ploy. Internally they call the "server" thing a "guild" AFAIK, which is technically just as much BS as the "server" moniker, but for other reasons (not every community using Discord is a "guild" in the commonly accepted meaning of that word in the gaming world, which is a long-term organizational group doing stuff together in an MMORPG).</comment></comment></comment>


Oculus Cuts Prices of Its Virtual Reality Gear - <AUTHOR> https://www.nytimes.com/2017/03/01/business/oculus-cuts-prices-of-its-virtual-reality-gear.html?em_pos=small&emc=edit_dk_20170301&nl=dealbook&nl_art=6&nlid=65508833&ref=headline&te=1 <comment><USER2> Not that surprising with all the new companies jumping into the VR market</comment>


Show HN: Real-time Team Collaboration on top of your LinkedIn Social Graph - <AUTHOR> http://www.discoursehq.com/

<comment><USER2> First of all, congrats on launching. Looks interesting. You seem to be using disqourse and discourse interchangeably, is that deliberate?

<comment><AUTHOR> We are fixing this right now. First idea was to use Disqourse (we still have disqourse.com) because discourse.com was taken. Now we've seen that Google is changing all the queries from disqourse to discourse so we've changed our domain name to discoursehq.com :)

</comment></comment><comment><USER3> What made you decide to use Django?

</comment><comment><USER4> Cool, rock on. Will test soon.

</comment><comment><AUTHOR> What do you guys think of our system?

</comment><comment><USER5> nice. django. I approve!</comment>


Glenn Greenwald: "You have no idea what is coming" - <AUTHOR> https://twitter.com/ggreenwald/status/346098545226563584

<comment><USER2> This has _zero_ content. Why do we waste time looking at fluff? Once there is actual information to discuss, we can discuss, but for the moment there is just nothing there.

</comment><comment><USER3> What else is left? Maybe there is a network of civilian spies, and half the americans are on it? A Flu virus that turns you to an informant?

I 'm not sure i like this tv-series-style unraveling. If it was something the planet depended on they wouldn't tease us with it for Guardian's page views, right? Anyway, i have no idea what is coming, truly

<comment><USER4> It makes sense really. If you dump everything all at once you risk overwhelming people, and for it to be ignored or forgotten. By dragging it out it remains fresh in minds of the voting public; something that will be remembered for a long time. This makes it more likely that change will result. Doing otherwise would be like running one ad and expecting to create a strong brand. The way a strong brand is created is through repeated exposure.

<comment><USER5> You can do that without doing "teasers" like this. Just publish it when it comes.

It's the Guardian, people will see it if it's posted. No need to publicize it beforehand.

<comment><USER4> No need to publicize it before hand? Why do movie studios run trailers and promote the hell out of what's coming?

Teasers tease and get people interested. It keeps people talking and when people are talking, there is a greater reach. This is really basic marketing at work here and it's a very wise move.

<comment><USER5> because this isn't a movie. This is about news. The facts will speak for themselves, and people are looking.

I'm not saying it's not good marketing, I'm saying it's a bit tasteless. I'd rather he spent more time looking over his articles so that there don't have to be 100 corrections after the fact.

<comment><USER4> It's naive to think that just because something has been published, people will beat a path to it. It doesn't matter whether it's a movie, news, or programming language; things have to be promoted if they're going to be widely noticed.

I'm not sure what 100 after-the-fact corrections you're talking about though.

</comment></comment></comment></comment></comment></comment><comment><USER6> The accusation that Greenwald is using the leaks for self promotion are the same accusations that were/are used to smear Assange.

</comment><comment><USER5> The Verison metadata issue was pretty big I thought, but am I the only one who didn't really think much of PRISM? I mean isn't PRISM just a name for "send out NSLs to these companies that have a bunch of data"? Something we've known about forever?

Someone please enlighten me, I'm not trying to be sarcastic/edgy/whatever.

<comment><AUTHOR> I think there is more to PRISM than we know right now. You should read Glenn Greenwald's latest article if you haven't' already. [1]

In my opinion, he makes a lot of good points in it.

"If, as NSA (and Silicon Valley) defenders claim, Prism is nothing more than a harmless little drop-box mechanism for delivering to the government what these companies were already providing, why would Yahoo possibly be in court so vigorously resisting it and arguing that it violates their users' Fourth Amendment rights? Similarly, how could it possibly be said - as US government officials have - that Prism has been instrumental in stopping terrorist plots if it did not enhance the NSA's collection capabilities? The denials from the internet companies make little sense when compared to what we know about the program. At the very least, there is ample reason to demand more disclosure and transparency about exactly what this is and what data-access arrangements they have agreed to."

[1] [http://www.guardian.co.uk/commentisfree/2013/jun/14/nsa- part...](http://www.guardian.co.uk/commentisfree/2013/jun/14/nsa-partisanship- propaganda-prism)

</comment></comment><comment><USER7> I understand that dumping everything at once would probably be a bad idea but the tweeting of teasers? If it's really going to be such a big deal it should be treated with respect.

edit: Hopefully this will come out on Monday, start of the week is always a good time to release stuff that you want eyeballs on.

<comment><AUTHOR> Greenwald is getting a lot of hate mail via Twitter. I don't blame him for the teasers who are usually aimed at people who are doubting him. If he dumped all the data at once, the story would blow over way faster. It's also been helpful that other people have came semi forward, such as the Democratic congresswoman from California who basically pleaded for someone to leak for information because it's that bad. This strategy also makes it easier to catch the U.S. government and company telling lies and contradictions. Also, it's way harder to run damage control when you don't know what information the other side has.

</comment></comment><comment><AUTHOR> (From the first tweet at the top of the original link.)

"Ellsberg: "There has not been in US history a more important leak than Snowden's –and that definitely includes Pentagon Papers 40 years ago""

Ellsberg sounds very definitive on the importance of the Snowden's information. I wonder if Greenwald has shown him information that the general public hasn't seen yet.

</comment><comment><USER8> If he's got facts why does he not present them rather than cocktease?

50% of HN is just conjecture and NSA conspiracy theories.

<comment><USER9> This was an @-response to another commenter's claim that this story will be forgotten in a year. As such we shouldn't see it as a promotional 'tease' \- it wouldn't even appear to all @ggreenwald followers. It's merely a specific refutation of that dismissive commenter's judgement based on incomplete information. (It looks more self-servingly promotional only because it's been ripped from its context.)

<comment><USER8> Not quite sure what you mean. I'm honestly starting to lose track of what is actually true here. Would be great if somebody who has studied this in some depth could summarize what we actually know for sure.

<comment><AUTHOR> You have to scroll to the top of the page to see the full conversation. The tweet posted is Glenn Greenwald replying to a Twitter user who sent a tweet at him.

This is how the conversation went down:

Glenn Greenwald: "Ellsberg: "There has not been in US history a more important leak than Snowden's –and that definitely includes Pentagon Papers 40 years ago""

Twitter User: "@ggreenwald Sorry, a year from now we'll be snoozing about this. Not against you, just tired of your self-promotion."

Glenn Greenwald: "@TerenceBegleyNJ You have no idea what is coming; and I'm promoting the leaks, not myself"

</comment></comment></comment></comment><comment><USER10> This is basically a retweet. Why is this an HN post?

</comment><comment><USER11> I read this as a statement of fact, not as a teaser. People are doubting the relevance of what he has to say and he simply says: why are you already drawing conclusions about something I haven't published yet?

</comment><comment><USER12> If he waits too long, nothing will come.

</comment><comment><USER13> I'm sure that even if the Americans were giving candy to babies Glenn Greenwald would hate it.

<comment><USER14> I don't know about Glenn, but I certainly would. Why in the world would you try to get them hooked on something so unhealthy so early?

</comment></comment><comment><USER15> I think Terence Begley is right.</comment>


The slow currentTimeMillis() - <AUTHOR> http://pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html <comment><USER2> This post has a confused notion of why the TSC isn't used. It has nothing to do with integration with NTP -- it's because the kernel thinks the TSC doesn't work right on the machine in question. The kernel logs should explain why. Also, on some hypervisors, there are TSC problems, but the situation is slowly improving.

Also:

> The second value is the nanoseconds time, relative to the last second, > shifted left by gtod->shift, Or, rather, it the time measured in some units, > which becomes the nanosecond time when shifted right by gtod->shift, which, > in our case, is 25. This is very high precision. One nanosecond divided by > 225 is about 30 attoseconds. Perhaps, Linux kernel designers looked far > ahead, anticipating the future when we'll need such accuracy for our time > measurement.

That's not what's going on. This is straightforward fixed point arithmetic, where the point just happens to be variable.

<comment> Const-me > why the TSC isn't used

Because on most modern CPUs, clock frequency is extremely unstable: Turbo Boost, SpeedStep, Cool'n'Quiet, etc. These features make TSC not suitable for time measures.

<comment><USER3> Please check for what features like constant_tsc or nonstop_tsc are for before spreading misinformation

<comment> Const-me That thing is intel-only, or at least Linux kernel thinks so: [https://github.com/torvalds/linux/blob/master/arch/x86/kerne...](https://github.com/torvalds/linux/blob/master/arch/x86/kernel/tsc.c)

And even on Intel, TSC is not reliable: [https://lwn.net/Articles/388286/](https://lwn.net/Articles/388286/)

<comment><USER4> AMD CPUs have supported constant_tsc and nonstop_tsc since the Phenom era too.

</comment></comment></comment></comment></comment><comment><USER5> Theo Schlossnagle and Riley Berton have recently implemented and discussed timing functions with the following performance characteristics (25-50ns):

      Operating System  Call          System Call Time  Mtev-variant Call	Speedup
      Linux 3.10.0      gettimeofday  35.7 ns/op        35.7 ns/op          x1.00
      Linux 3.10.0	    gethrtime     119.8 ns/op       40.4 ns/op          x2.96
      OmniOS r151014    gettimeofday  304.6 ns/op       47.6 ns/op          x6.40
      OmniOS r151014    gethrtime     297.0 ns/op       39.9 ns/op          x7.44

Here is the article: [https://www.circonus.com/2016/09/time-but- faster/](https://www.circonus.com/2016/09/time-but-faster/)

They also use TSC and (CPU-bound) background threads to update shared memory.

The implementation is available as C library for Linux and Illumos/OmniOS: [https://github.com/circonus- labs/libmtev/blob/master/src/uti...](https://github.com/circonus- labs/libmtev/blob/master/src/utils/mtev_time.c)

</comment><comment><USER6> Related and required reading if you're doing microbenchmarking: [https://shipilev.net/blog/2014/nanotrusting- nanotime/](https://shipilev.net/blog/2014/nanotrusting-nanotime/)

Also the, _tsc_ CPU flag is not sufficient since early tsc implementations had issues that made them unusuable for walltime measurements. There's also _constant_tsc_ and _nonstop_tsc_ which are relevant because they indicate that tsc keeps ticking independent of frequency scaling and CPU low power modes, only then do they become usable for low-overhead userspace timekeeping.

hotspot and the linux vDSO generally take care of doing the right thing, depending on CPU flags, so the TSC is used for _currentTimeMillis_ and _nanoTime_ if it can determine that it is reliable, otherwise more expensive but accurate methods are used.

The article's own conclusion:

> The title isn't completely correct: currentTimeMillis() isn't always slow. > However, there is a case when it is.

It only happens under circumstances where the TSCs are not used.

<comment><USER7> These points are all made in the original article...

<comment><USER6> My point is that the heading is misleading. On modern systems linux/hotspot generally do the right thing(tm) and no tinkering with sysfs should be needed, if the right cpuflags (check /proc/cpuflags) are available. Some virtualization solutions may cause issues here.

</comment></comment></comment><comment><USER8> Is this really new? I remember when System.nanoTime was introduced in the early 2000s largely because of the reasons stated here. System.currentTimeMillis was slow and had jitter which made it non-monotonic but it was the best method to call if your timestamp needed to interact with the world outside the JVM. In contrast, if all you cared about was relative times, you'd get a speed and accuracy boost from using System.nanoTime since it actually was monotonic and while a single nanosecond value was pretty meaningless, the difference between two nanosecond values was basically accurate.

Benchmarks are a class of problems where the overall time doesn't matter, only the relative time (end - start). The fact that he's using System.currentTimeMillis for his start and end values doesn't give me confidence that he's very knowledgeable about what's to follow.

</comment><comment><USER9> Good analysis, and yet again, this is why we use TSC at Netflix. I benchmarked them all a while ago. I also put "clocksource" on my tools diagram, so people remember that clocksource is a thing: [http://www.brendangregg.com/Perf/linux_perf_tools_full.png](http://www.brendangregg.com/Perf/linux_perf_tools_full.png)

</comment><comment><USER10> > The vDSO is mapped to a new address each time (probably, some security > feature). However, the function is always placed at the same address as > above (0x00007ffff7ffae50) when run under gdb (I'm not sure what causes > this).

GDB (≥ 7) disables ASLR by default:

[https://sourceware.org/gdb/current/onlinedocs/gdb/Starting.h...](https://sourceware.org/gdb/current/onlinedocs/gdb/Starting.html#index- set-disable_002drandomization)

</comment><comment><USER11> "The way to test the performance of System.currentTimeMillis() is straightforward"

I'd be worried about that claim. The article executes System.currentTimeMillis in a loop and sums the values. That takes care of dead code elimination, but it will still be subject to other distortionary effects ([https://shipilev.net/#benchmarking-1](https://shipilev.net/#benchmarking-1)). Maybe the fact that System.currentTimeMillis() is implemented using native code reduces some of the JIT induced benchmarking pitfalls, but I would still prefer to try and use JMH to test.

I'm also surprised that performance of System.currentTimeMillis can fall down so far under some circumstances. In one of Cliff Click's talks (maybe [https://www.youtube.com/watch?v=-vizTDSz8NU](https://www.youtube.com/watch?v=-vizTDSz8NU)), he mentions that some JVM benchmarks run it many millions of times a second.

</comment><comment><USER12> This is especially relevant if you're running in the cloud.

We've recently run into slow performance with gettimeofday on Xen systems, such as EC2 (see: [https://blog.packagecloud.io/eng/2017/03/08/system-calls- are...](https://blog.packagecloud.io/eng/2017/03/08/system-calls-are-much- slower-on-ec2/)) This hits particularly hard if you're running instrumented code. Switching the clocksource from xen to tsc seems to help and we're still evaluating the ramifications of doing so (various sources including the above seem to suggest that tsc is unsafe and prone to clock skew, but others suggest that it's ok on more modern processors.)

</comment><comment><USER13> Most Android developers will know this already, but currentTimeMillis() is probably not the call you want for event timing:

[https://developer.android.com/reference/android/os/SystemClo...](https://developer.android.com/reference/android/os/SystemClock.html)

</comment><comment><USER14> The Windows version is absolutely brilliant: a shared area mapped into every process. Because of the way page tables work, this costs only one page (4k) of RAM and only has to be written once by the OS.

<comment><USER15> The Linux version does the same, actually.

As explained in the article, the Windows version is so small because it can only provide a resolution limited to the timer tick's resolution (2048 Hz in this case, but unless a program explicitly requests a high resolution it can be as low as 64 Hz IIRC). The cost to having a higher resolution is also a higher number of interrupts per second, which wastes power unnecessarily when you are idle[1].

Instead, as the atthe Linux version can provide a resolution limited only by the actual clocksource, which is nanoseconds in the case of the TSC. There is no background process that "updates the fields of this structure at regular intervals"; the updates only need to happen if the speed of the clock changes, for example due to an NTP update. While in the blog post it's measured to happen every millisecond, it can be configured to be lower without affecting the resolution of gettimeofday. There is also a special mode where you make it tick as slowly as 1 Hz on CPUs that have only one runnable process (if you have more than one runnable process, the scheduler needs to do context switches so the kernel cannot tick slowly).

[1] [https://randomascii.wordpress.com/2013/07/08/windows- timer-r...](https://randomascii.wordpress.com/2013/07/08/windows-timer- resolution-megawatts-wasted/)

<comment><USER16> XNU has an equivalent to vDSO: the commpage. It is also used for time.

</comment></comment></comment><comment><USER3> On a properly configured environment TSC is the default clocksource. I have no idea why one would want to precisely measure time with any other clock source.

On relatively contemporary systems clock_gettime(CLOCK_REALTIME) will give you a nanosecond resolution wall clock time and the cost of going through JNI will cost you around 11-13ns, so with a simple native wrapper in java the cost is negligible. Although interesting, the whole study of the cost of obtaining the current time in Java with currentTimeMillis() with clock sources other than TSC is somewhat irrelevant.

<comment><USER17> The Linux kernel may choose to not select TSC as the clocksource, regardless of the configuration. For example, we have a 4 socket machine running CentOS 6 that refuses to use the TSC timer because at boot time the kernel determines (experimentally, I believe) that TSC is not reliable on that hardware. So it falls back to using HPET instead.

We also have a similar 2 socket machine running a similar version of CentOS that has no problems using TSC. ¯\\_(ツ)_/¯

</comment></comment><comment><USER18> So there's a performance bug in Java's currentTimeMillis() implementation on Linux, where it uses gettimeofday() instead of clock_gettime() with a coarse timer (even the TSC method is ~3x slower or worse than the coarse timer, which has sufficient precision for currentTimeMillis()). Is there a bug filed for this? It seems to warrant one.

<comment><USER19> [http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8185...](http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8185891)

</comment></comment><comment><USER20> For what it's worth, currentTimeMillis() shouldn't be used for interval measurements anyway, as it might not be continuous in some scenarios. A better alternative is System.nanoTime().

</comment><comment><USER21> People have been discovering and rediscovering gettimeofday is really slow for a long time now. I remember switching to OS specific equivalents for AIX, SunOS, Ultrix, HP-UX, etc. back in the late 80s and early 90s.

<comment><USER22> yeah, this isn't new news. but it is a very nice write-up and simple enough that any technical person should be able to grasp it

</comment></comment><comment><USER23> I started off being able to mostly comprehend what's going on, but about half way down I got lost in the assembly and realized I barely remember much from my OS/Architecture courses in school.

This was a solid reminder my every day work sits atop the shoulders of giants and I am much appreciative.

</comment><comment><USER24> An easy way to do this from the outside would be to create a JVMTI agent, and make currentTimeMillis call into your JNI version. Here's an example in Rust of me doing it for a bit more involved purpose: [https://github.com/cretz/stackparam](https://github.com/cretz/stackparam). Then people only have to pass your shared lib as a cli arg to get the benefit.

</comment><comment><USER25> > Some background thread regularly updates three double-words there, which > contain the high part of the value, the low part, and the high part again.

So to implement a clock, they are using a different thread that updates a counter every millisecond or so? Isn't this a bit inefficient?

<comment><USER15> It's not a thread, it's an interrupt handler. Windows (on x86) uses the real- time clock's periodic timer, which can be made to tick at any power-of-two frequency between 1 Hz and 32768 Hz.

<comment><USER25> Is that interrupt handler installed for every process that needs the timer? Or is there only one handler globally?

<comment><USER26> It's a hardware interrupt from a hardware clock that is handled by the OS kernel. Regular user processes are usually totally forbidden from touching that hardware stuff.

</comment></comment></comment></comment><comment><USER27> Really love these kind of in depth investigations. However, I still want to know how windows manages to update the value in the shared memory so consistently without any impact to system performance.

<comment><USER28> Why would there be a system performance impact? This is just updating a memory value (that happens to be mapped into the VM of every process) at 2 kHz.

<comment><USER27> Silly me, the time is only updated once every half a millisecond. That's virtually zero CPU usage on a 2GHz chip.

<comment><USER2> It's worse than you might think. There are at least three things happening 2000x/second: getting an interrupt, writing shared memory, and returning. Getting a CPU interrupt takes something like 1k cycles. Dealing with the APIC may be even worse on a system without X2APIC, which is all too common due to crappy firmware (never benchmarked it, though), and returning takes many hundreds of cycles because x86 is very bad at these things. That shared memory write is n basically free unless NUMA is involved, and then it can be fairly bad.

So we're taking maybe 4M cycles per second used here. In practice, there's probably quite a bit of extra software overhead.

</comment></comment></comment></comment><comment><USER29> It's sort of amazing that 600 ns is considered slow.

<comment><USER30> For many of the things we work on, this is not just slow, it is _atrociously_ slow. For analysis of real-time systems I want to put many data tap points throughout the processing chain. If I add 50 (not uncommon), at 5ns a pop most systems (again, IME) are not going to care about 0.25 microsecond extra latency. At 600ns I add 30 microseconds to their processing chain and will likely have to spend some of my time explaining to the owners why my tap points will not affect the system I am helping fix.

</comment></comment><comment><USER31> I think I've also read somewhere about a bug in the java Random class, it was something about after N iterations, the number starts from iteration 1 where N is not very big (i.e. clearly visible pattern/cyclic repeat in the numbers). But I can't find it anymore, if someone knows its whereabouts, please let me know.

</comment><comment><USER32> I've added an update on the nanoTime() to the article</comment>


Stolen cobalt-60 found in Mexico; curious thieves likely doomed - <AUTHOR> http://www.washingtonpost.com/world/stolen-cobalt-60-found-in-mexico-curious-thieves-likely-doomed/2013/12/05/262ef990-5d66-11e3-8d24-31c016b976b2_story.html <comment><USER2> If something is that dangerous, shouldn't there be armored escorts, lojacks and all sorts of other security measures on it?

Isn't it criminally liable to transport something this lethal so carelessly?

I mean people were ready to declare this a terrorist's dream of dirty-bomb material.

We can't take more than 3 ounces of shampoo on a plane but actual dangerous stuff, no problem, just throw it on a truck.

<comment><USER3> I suspect this kind of transportation is far more common than most people realize.

The U.S. Nuclear Regulatory Commission says that "3 million packages of radioactive materials are shipped each year in the United States."[1]

As for security measures: "The shipper must also meet the Department of Transportation's requirements for shipment of the nuclear material including route selection, vehicle condition and placarding, driver training, package marking, labeling, and other shipping documentation."[2] I suspect most of this was in place, or at least the Mexican equivalent.

Nothing about armed escorts is mentioned for general transportation of radioactive material. For spent nuclear fuel, "armed escorts [are required] in heavily populated areas."[2]

For another data point, here's a supplier of Cobalt-60's page on their safety: [http://www.nordion.com/gamma/nordion_cobalt.html](http://www.nordion.com/gamma/nordion_cobalt.html) Again, there is no indication that armed escort would be expected, simply secure vehicles that won't leak radiation while delivering it or in the event of an accident.

All that said, Cobalt-60 is used for sterilization of medical equipment, radiotherapy, food irradiation, and quite a few other things. It's probably not _that_ hard to obtain if you really want it.

[1] [https://forms.nrc.gov/materials/transportation.html](https://forms.nrc.gov/materials/transportation.html)

[2] [https://forms.nrc.gov/materials/transportation/shipping.html](https://forms.nrc.gov/materials/transportation/shipping.html)

<comment><USER2> Basically it sounds like a "dirty bomb" is not if, but when, someday. Lovely.

<comment><USER4> According to the Wired article about the radioactive container in Genoas port (2011, [http://www.wired.com/magazine/2011/10/ff_radioactivecargo/al...](http://www.wired.com/magazine/2011/10/ff_radioactivecargo/all/1)), Cobalt-60 isn't the first choice for dirty bombs. There are nastier isotopes out there.

<comment><USER5> I agree it's not the first choice for a dirty bomb, but if you actually have access to a truckload of it, I can presume it's "good enough" rather than passing on it in the hopes of finding something better.

<comment><USER6> A truckload isn't all that much. I doubt the truck in the article was carrying more than a couple grams of the actual material. The lab grade sources we use (that are considered safe to handle as long as you don't eat them) are on the order of micrograms.

</comment></comment></comment></comment></comment></comment><comment><USER7> In a previous loss of Co-60 in Mexico (back in 1983), the material ended up being melted with recycled steel into rebar and used in all sorts of construction, until it was discovered largely by accident when a delivery truck carrying contaminated materials set off an alarm at Los Alamos[1]

It's also interesting that the Chenobyl Disaster was first detected in the West 2 days after the event, when detectors at a nuclear power station in sweden tripped their thresholds, and nobody could find a local explanation for the numbers[2].

[1] [http://www.window.state.tx.us/border/ch09/cobalto.html](http://www.window.state.tx.us/border/ch09/cobalto.html)

[2] [http://www.iaea.org/Publications/Magazines/Bulletin/Bull283/...](http://www.iaea.org/Publications/Magazines/Bulletin/Bull283/28302793032.pdf)

</comment><comment><USER8> Sounds like a very similar chain of events to the Goiânia_accident [0]

[0] [http://en.wikipedia.org/wiki/Goiânia_accident](http://en.wikipedia.org/wiki/Goiânia_accident)

<comment><USER9> If you understand spanish, I recommend this song: [http://www.youtube.com/watch?v=3YIalaC0M_A](http://www.youtube.com/watch?v=3YIalaC0M_A)

It's a Uruguayan folk song about the accent, it's a really nice song but very very sad.

(If you don't understand Spanish, you might enjoy it anyway).

<comment><USER10> I think you mean accident, not accent. I was a bit confused at first.

</comment></comment></comment><comment><USER11> "They will, without a doubt, die."

Pretty grim news for the thieves but you can't say they weren't warned. Medical waste has pretty big warning stickers all over, and you'd think the radiation symbol would be pretty universal in this day and age.

<comment><USER12> Fortunately/unfortunately, it's also probably not true. A previous incident in which people were exposed to Cobalt-60 over the course of several days caused 3 to die, and several more to become ill. If they just opened it up, saw it was a big chunk of nonsense, and left it on the side of the road, they'll probably be fine.

<comment><USER13> Well according to a comment on the reddit discussion 28 seconds of exposure from a meter away is a lethal dose. No one just opens something for only 28 seconds, or stands a full meter away from it. God forbid if they actually touched the stuff.

<comment><USER14> Wouldn't that require knowing how much Cobalt-60 there was? Or is it always shipped in standard sized units?

</comment></comment></comment></comment><comment><USER15> Those poor idiots.

I feel nothing but disgust reading the comments cheering their lethal poisoning.

<comment><USER2> I could be wrong but it won't just be the idiots that die, innocents that come in contact with their bodies could also become ill.

<comment><USER7> I don't believe Co-60 is capable of activating (making radioactive) other materials to any significant degree, so the danger is really only from direct exposure to the source material. So you get irradiated, but you don't become radioactive. If they were handling the material directly, there's a chance they contaminated themselves and their clothing, which could be transmissible. (c.f. Goiânia incident "[The scrapyard owner's daughter] was also fascinated by the blue glow of the powder, and applying it to her body, showed it off to her mother. Dust from the powder fell on the sandwich she was consuming.")

Obviously the guys opening the shielding and anyone in the vicinity of where that happened, where it was stored, or dumped is at risk, but it also sounds like the sources were encapsulated into pellets which makes incidental dust contamination much less of a problem than in previous incidents where it gets broken up and mixed with dirt, etc.

<comment><USER16> AFAIK, non-radioactive materials are activated by neutron bombardment. Co60 is primarily a gamma emitter.

</comment></comment></comment></comment><comment><USER17> _The prospect that material that could be used in a radioactive dirty bomb had gone missing sparked an urgent two-day hunt_

Seems like this could have been considered beforehand; maybe transporting this stuff in a lone vehicle with no security is not a good idea?

<comment><USER18> Depends. Lone truck with no security shouldn't attract much attention. But, you can satellite track it, and the container and have an always on communication path to the driver, and alert police to be ready if the driver burps in the wrong tone.

</comment></comment><comment><USER19> Poor bastards. Curiosity killed the cat, I guess...

</comment><comment><USER20> Schroedinger's lojackers?

</comment><comment><USER21> Cobalt 60 isn't particularly dangerous. I remember holding it in my bare hand in chemistry lab (encouraged by the teacher). Also, I'm never worried about when this stuff goes missing because it's so easy to detect to the smallest measurement - which means it's usually found quickly as was the case here.

Now if this was Cesium 137 that would be a wholly different matter

<comment><USER22> Cobalt-60 is more dangerous than Caesium-137 in every way except for chemical reactivity. Any significant amount is _extremely_ dangerous. Don't be fooled: what you held in your hand was a vanishingly small source.

This little pdf has some metrics for comparison:

orise.orau.gov/files/reacts/radiological-terms-quick-reference.pdf

Edit: I haven't the brains to make the link above active, but if you search for the link on google it will take you there.

<comment><USER21> Linked failed. Repost please.

<comment><USER23> [http://orise.orau.gov/files/reacts/radiological-terms- quick-...](http://orise.orau.gov/files/reacts/radiological-terms-quick- reference.pdf)</comment></comment></comment></comment>


Really useful anamorphisms in Ruby - <AUTHOR> http://weblog.raganwald.com/2007/11/really-useful-anamorphisms-in-ruby.html <comment><USER2> I feel sad when I have to click "new" to find such interesting links, and the top ten is about the dancer's illusion, relaxation and pattern matching in Ruby.

<here goes your favorite whining about redditization of the Hacker News></comment>


Honey App for Film Festival Submisisons - <AUTHOR> https://chrome.google.com/webstore/detail/film-waiver/igcpmngccbnnfppollaomgpjdelinean <comment><AUTHOR> A free chrome extension that lights up when there is a discount code for your film submission on Filmfreeway</comment>


How Software Companies Die - <AUTHOR> http://www.zoion.com/~erlkonig/writings/programmer-beekeeping.html?so=true <comment><USER2> That was a good article, Was it an excerpt from a book?

I can completely agree with the author's take on computer engineers. Coming from mechanical and industrial engineering background and getting into programming off late, the power to get instant gratification by writing code that works is so much more than in other fields.

In other fields like mech or ind, even if you know the solution, you have to work it out with a few dozen departments or people to get something to work right.

Recently one of the managers I take advice from told me he had to work for 5 years convincing people to get them to accept a very obvious design change. phew!!

Liked the sarcastic humor too!</comment>


John McAfee came back from Belize penniless in 2012 and is now 10M$ in debt - <AUTHOR> https://twitter.com/officialmcafee/status/721122054318268416 <comment><USER2> Everything about his life story is fascinating</comment>


Computers Can Be Understood - <AUTHOR> https://blog.nelhage.com/post/computers-can-be-understood/ <comment><USER2> I share Nelson's belief that we can conquer the rampant complexity in modern software applications. I'm generally in favor of the approach he's advocating for -- working to understand the layers of the stack rather than treating them as a black box.

That said I can't help but feel that the problem is a missing abstraction. As computers and the internet grew we did a lot of experimentation, learned from it, and came up with abstractions to help us conquer higher-order complexity through chunking.

But for cloud-based software today, creating a "simple" (in terms of business logic) backend API requires an insane amount of moving parts and complexity to have it up and running, but there is no underlying abstraction that offloads this complexity from the engineer writing the business logic. It's as if the people writing business logic were hand-crafting IP packets, but instead of juggling bits we're juggling build pipeline definitions and Kubernetes yaml files.

We need higher-order primitives for writing software.</comment>


Pathfinding Laboratory - <AUTHOR> https://github.com/rvhuang/pathfinding-lab <comment><USER2> If you like OP's site, you may also like this one. I keep returning to it whenever I need to mess with pathfinding. It gives a great step by step of the efficiency of each when it comes to specific paths:

[https://qiao.github.io/PathFinding.js/visual/](https://qiao.github.io/PathFinding.js/visual/)

</comment><comment><USER3> nice!</comment>


Best iOS dev program for intrant school iOS application? - <AUTHOR> Dearest,
I would like to submit a small intranet IOS application to the apple app store. I wonder what is the best option (type of dev program) to purchase. The application has normally a login system and it will be used basically by parents and students and may be used later by teachers. push notification is a must.
Many thanks in advance. <comment><USER2> The problem you have will probably be mostly with the distribution end of things. I would be surprised if Apple let you release a small intranet application with very limited appeal to the general app store. For that reason I recommend you pay the extra money and setup an Enterprise Program account. It will be a little more work to get the school to set everything up, but I think it will be easier in the long run.

Your other option is to just start with a standard individual account and then upgrade if necessary. That will let you get started testing on hardware now.

[https://developer.apple.com/programs/enterprise/how-it- works...](https://developer.apple.com/programs/enterprise/how-it-works/)</comment>


Ask HN: Will this site make $500 per month? - <AUTHOR>

SITE: http://33banners.com
IDEA: Sell banner ad templates to individuals and small businesses who don't want to pay a designer to develop their online advertising material.  This includes banners for advertising on both ad networks (like Google AdWords), and affiliate sites.
I just launched what I think is a minimum viable product yesterday, and really want to get lots of feedback. Do you think it is a good idea? What would you do differently? What features would you add to the site to make it better.  AND, most importantly, will this mvp make $500 a month?  This is my goal for a passive revenue stream.  All comments, suggestions, criticisms, etc. are appreciated.
I recognize that it is a pretty "unsexy" idea, and there are a lot of people doing cutting edge stuff with HTML5 ads etc. But I think there is a market for people looking to spend under $50. <comment><USER2> I'm curious if you did any google search term research? How many people are searching for things like "ad banner templates" etc. Once you find those you can more directly provide a solution for what people want.

For example if there are lot of "ad banner builder" , "free banner themes", "how to run ads" etc, it more directly hints at what your customers needs are.

You could also try throwing a couple of your templates on <http://graphicriver.net> and see if anyone is interested.

My main advice is to figure out what type of people want your service. On one hand it seems like you are targeting people that don't know or don't want to deal with banner ads but they feel like they should. I think thats problematic because the people that are prepared to get started with a banner ad campaign arguably know the basics of photoshop. Or if they don't they are going to need something a little more robust than what you currently offer. Then there's the case where a person is 100% happy with a basic banner theme, I'd argue such a person would also need a little more help in actually gaining a return on his campaign. In other words the people interested in an easy, simple, quick and dirty banner design, are not necessarily going to be the people thinking scientifically enough to gain any long term benefits from banner advertising.

This is all just theory though. Hope this helps.

<comment><AUTHOR> I did do a bit of search term research before I got started. There is not insignificant amount of traffic for terms like (banner ads, banner ad templates, custom banner ads, etc.)

The idea for the site came about from a personal need. I had recently published an ebook, and had set up an affiliate program for people to promote the book on their sites. I didn't want to give them really crappy banners to use, and hiring a designer (which is what I ended up doing) seemed like a big expense for an ebook which only makes a few hundred dollars a month. Based on my experiences I thought there would be a market for people in the same situation as myself.

Thanks for the feedback!

</comment></comment><comment><USER3> You're far from your stated goals but I like what you have there. You need more templates tough.

And explicitly say somewhere how do I order custom designs. If I didn't like the 8 or so that you have there what options do I have?

Otherwise what you have there is an e-commerce site sellings a few pre-defined image sets. It's like you said the minimum viable product, which is cool.

And yes, you can make more than US$ 500 per month, if you execute properly :)

<comment><USER4> Agreed - it's a neat product that's attractively priced. I'd say whether you make any money on this depends on two things: 1) As already stated, increasing your range to appeal to a broad cross-section of customers and repeat customers. 2) A good marketing strategy. At this stage I'd say (1) should be your focus but you might want to start thinking about (2) quite soon. Kudos for releasing with a well executed minimum viable product.

</comment></comment><comment><AUTHOR> > 1) As already stated, increasing your range to appeal to a broad cross- > section of customers and repeat customers. 2) A good marketing strategy. At > this stage I'd say (1) should be your focus but you might want to start > thinking about (2) quite soon.

Any one have any good suggestions on number (2)??? I have a few basic ideas, but haven't hit upon anything solid yet.

</comment><comment><USER5> I would use something like this, but, as inerte says, you need a heck of a lot more selection. Maybe you could team up with designers and resell their work, giving them a cut?

<comment><AUTHOR> You're right. That's one option I have thought of. In which case I would like to make it easy for designers to upload their own work to the site and display it. I don't mind being a middle man, as long as I can play that role passively.

I think this would be similar to the logo store on 99designs right?

<comment><USER3> > I think this would be similar to the logo store on 99designs right?

99designs for banners was the first thing I thought when I read your post. I thought that was the direction you are headed to (I think the idea is fine), but like you said, you tried to launch a minimal viable product, which is the right think to do, because now you have a clientele to answer for.

<comment><AUTHOR> Yup, that is one of the two possible directions I would like to go in.

The other would be building a set of tools so that customers could come to the site, choose a template they like (hopefully from a lot more than 6), and then dynamically ad their logo and ad text to the template, see what it looks like, make changes, then buy it all ready to go (without me ever having to do any work).

Or, combining those two together.

</comment></comment></comment></comment><comment><USER6> So, have you sold any yet?

<comment><AUTHOR> I suppose that's the million dollar question ;)

No, I haven't. I launched last night, and turned on a $5 dollar a day AdWords campaign this morning (though I'm not getting any traffic from it yet). Basically all my traffic is coming from my personal blog and HN right now.

Anyone have any ideas on how to increase traffic and make a few initial sales?

I'm setting up an affiliate program, so that will be available shortly.

<comment><USER6> One point of feedback, first glance at your page does not give my brain an initial impression that you're selling anything. I think at least a shopping cart icon on the checkout "tab" would be a normal indicator of "ecommerce". In fact the tabs in general make the whole thing just look like a blog for some reason.

<comment><AUTHOR> Thanks for that! A couple of other people have told me more or less the same thing today. I'll make some layout changes.

<comment><USER6> I'd love to know where/how you found suitable quality design freelancers for $10/hr in the Philippines?

</comment></comment></comment></comment></comment><comment><USER7> Very smart, nice idea.

</comment><comment><USER8> clickable <http://33banners.com></comment>


What are Bloom Filters? - <AUTHOR> https://medium.com/p/1ec2a50c68ff

<comment><USER2> Is a data structure (based in probability) that can be used to do queries about if an item is in a set. If the item is not in the collection you obtain a "100% probability of not in the set", if your item is in the set you obtain instead a "maybe in the collection".

      (ql:quickload "cl-bloom")
      (in-package :cl-bloom)

      (setf *mydiet* (make-filter  :CAPACITY 256 :false-drop-rate *FALSE-DROP-RATE*)
          ;; default false-drop-rate = 1/1000
          ;; returns #<BLOOM-FILTER #x000325FC7B028>

      (add  *mydiet* "hamburguer") ;; add lots of items, returns NIL
      (add  *mydiet* "salad")

      ;; ask if an element is yet in the collection

      (memberp *mydiet* "hamburguer") ;; T (I can be wrong)
      (memberp *mydiet* "orange");; NIL (definitely not)

</comment><comment><USER3> Corsera has a course from Stanford on Algorithm Design. They explain it really well there.</comment>


Elite video game reboot hits funding target - <AUTHOR> http://www.bbc.co.uk/news/technology-20897768 <comment><USER2> The sound effects in the video clip attached to that article make the hairs on the back of my neck stand up!

The level of coding chops in the original game is hard to comprehend by modern standards. It had a (wireframe) 3d engine, eight galaxies each with hundreds of worlds, a dozen or so ship types and lots of different equipment and engines - and an awesome surprise endgame where after scores of hours trading and battling pirates, suddenly out of nowhere (with no warning in the early game or manual) the galactic navy appeared and sent you on a series of missions.

The RAM footprint of this game? 22KB. KILOBYTES. All written in machine code: that's even lower-level than assembler! Something to think about next time you're tempted to brag about your coding l33tness :-)

I'm enormously glad that this game has hit its target, and very, very excited that David B will have the opportunity to make the game he wants without a publisher exerting pressure on him (which was what ruined Elite II).

This game and Obsidian's Project Eternity (also on KS) are being eagerly watched by many people. If they succeed, this will be a massive turning point in the games industry, just as the original Elite was.

<comment><AUTHOR> In ye olde days, machine language and assembler/assembly language were often referred to as the same thing although of course they are different. Assembly language is translated to machine language by the assembler. I believe (but may be wrong) that Elite was written in assembly language as one would have to be a masochist to write directly in machine language.

<comment><USER3> The Elite source code can be downloaded at Ian Bell (the other original author)'s site, <http://www.iancgbell.clara.net/elite/archive/index.htm>. It is indeed written in assembly language (using the BBC BASIC assembler).

</comment></comment></comment><comment><USER4> I really hope they succeed, but sadly, I'm seeing all the typical signals of games that fail to launch, due to gigantic scope and feature creep. When you focus so much on technology and your answers about the game are all "we plan to support that", that's a bad signal.

You start a game with rock solid game design - throwing procedural generation, multiplayer code, and other cool features together gives you a tech demo, not a game. The smallest changes in game mechanics deeply affect things like networking code. Mix this with a crowdfunded project (where everyone who pledged is a stakeholder and wants a different thing) that's a recipe for disaster.

<comment><USER5> I think it's been quite encouraging that, while they are talking about a whole load of features that they'd like to include in the future, they're being pretty clear about the things that they won't support in the first release (landing on planets and so on) and that the pledgers will only influence the game, rather than dictate that any feature must be done a particular way.

The things that I worry about are things that were not a part of previous Elite games like networking, the multiplayer element and, above all else, making the economics and politics work. If other massively multiplayer games are anything to go by, a few large alliances will figure out how to game the rules so as to be able to dominate the game and I bet that the developers will always be playing catch up to that.

</comment></comment><comment><USER6> Make sure to check out this great post mortem of Elite from GDC 2011:

<http://www.gdcvault.com/play/1014628/Classic-Game-Postmortem>

</comment><comment><USER7> Geez, it's been almost a decade since the last good space sim, Freelancer.

I wonder why no one has made a mainstream space sim game since (X3 is a notable exception, though the learning curve is quite steep). Between this and Star Citizen, there seems to be legions of space nerds like myself, ready to throw money at even the possibility of a good game.

<comment><USER8> There you go: 'legions of space nerds' is probably still a fraction of the total market - and the studios are not aiming for that.

That should not prevent smaller operations from succeeding. The 'space' theme is still used (see SPAZ, FTL even if they are indies).

I think that the 'simulation' genre is not as popular as before, flight simulators (combat or otherwise) have become rarer.

<comment><USER9> Actually this is a common problem caused by the large publishers. They don't seem to do much market research other than every once in a while they throw a bunch of small budget stuff out there and whatever genre sells decently gets spammed to hell and back. The other genres are essentially ignored until the selling genre is played out. Then we get the small projects again to repeat the process.

It's an old argument: publishers say "we won't make that game because it won't sell" and the market says "we can't buy that game because you won't make it".

But it's understandable, most of these companies have to show quarterly profits so they are adverse to risk. Creating a game that will cost millions of dollars and years to make for a genre that has stagnated, for whatever reason, is a huge risk.

The small developers are the key to filling this niche. Things like the recent indie resurgence and Kickstarter have made this more evident. The problem is often the large publishers buy these small developers and then proceed to destroy what made them special.

A few space sims, so to speak since SPAZ and FTL aren't quite the same, are out now and there are a few with big names attached in development by independents. If these have decent returns, on small developer terms at least, then I expect the large publishers to follow along spamming the genre.

But only if they can figure out how to get them to be fun on consoles. Which is another side of the problem of stagnating genres but that's a different discussion.

<comment><USER10> > They don't seem to do much market research other than every once in a while > they throw a bunch of small budget stuff out there and whatever genre sells > decently gets spammed to hell and back.

Actually they do a massive amount of market research. It's not that they're ignorant of what the market wants, it's that the type of game _you_ want is unprofitably niche.

By "unprofitable" I mean it's a matter of where to invest their money. It's not that niche titles would be unprofitable, it's that other options will always have a better risk-reward balance.

<comment><USER9> If they do massive amounts of market research then I would say the response to Kickstarter projects and the indie titles shows that they suck at it. It may be a niche game that I want to play but if there's enough buzz out there for a game in that genre then there's profit to be made if one can be bothered to make a game that meets what the market wants.

The rest of your statement seems to support what I was saying about their needs of showing quarterly profits which prevents risky projects.

There's nothing stopping them from going into niche markets if they wanted, just budget accordingly. There is money to be made in the long tail but the large publishers are just unable to see it that way. But the thing is, some of the "niche" markets are potentially huge but they'll never know because they'd rather push out the upteenth version of sports games and military shooters. A number of genres are stagnating right now not because no one wants to play them but because no one is making them.

<comment><USER10> No publisher is looking at Elite: Dangerous (or pretty much any other game kickstarter) and wishing that they'd have funded it first. Even Frontier couldn't justify funding it by normal means and they own the IP.

The game will probably cost at least $5M to make. The kickstarter just scraped $1.25M by calling on the core market. The game still needs to sell at least another 250k at full retail price to break even, and that's after many of the core audience have already bought it through kickstarter. Under perfect conditions, that level of sales on PC alone would already put in in risky territory.

As for indies, well yes, publishers already fund those as part of their portfolios. The ones that look like they're going to break even, at least.

<comment><USER9> I think I stated that the large publishers are not wishing to fund such titles and that I think they do so for the wrong reasons. It's just my opinion and I don't see how your statement is much different than what I've been saying.

The potential problems you describe sound like budget and project scale problems to me, not that the genre couldn't make money. If one wishes to spend 5 million plus on a game that only maybe 250k will actually pay for then you are destined for failure. I don't believe I stated otherwise.

If you have a large publisher funding your project, then you aren't an indie title. Plus I pointed out that they do these small projects from time to time to see if there's a chance a genre will be popular again for them to spam the crap out of. I didn't say that these projects were intended to make money.

<comment><USER10> > If one wishes to spend 5 million plus on a game that only maybe 250k will > actually pay for then you are destined for failure.

Correct. But given that large, complex software projects take time and manpower to create, there is a subset of games and genres that simply cannot be developed and hope to break even.

It's not just the publishers 'at fault'. Developers don't want to downsize or go bankrupt, therefore they won't tend to develop games that won't let them pay wages in future.

There are alternative funding methods, but before kickstarter it was mostly arts grants and the like. Tale of Tales have developed several small art games on art grants, IIRC.

> If you have a large publisher funding your project, then you aren't an indie > title.

No, not at all. ThatGameCompany are an indie company but Journey was bankrolled by Sony. Does that mean that it's not an indie title? Fez was created by Polytron, published by Trapdoor and distributed by Microsoft. I wouldn't be surprised if Microsoft at least partially funded the XBLA version of Minecraft. DoubleFine's Brutal Legend was paid for by Activision, then dropped and picked up by EA (a big court case ensued). As I mentioned above, Tale of Tales have developed games using government money. The list goes on and on, because it's a very common way of working.

<comment><USER9> I'm not saying that every possible genre out there can be developed for and make money. I'm saying that there are genres out there that can make money that the big publishers are ignoring because it doesn't fit within their no risk taking mindset. I don't think we're necessarily disagreeing with each other here.

If Journey was bankrolled by Sony, then no, it is not an indie title. But then "indie title" can mean different things to different people. My definition is the thought that a major publisher was not directly involved in the development of the title. Fez is an indie title despite being "distributed" by Microsoft; I wouldn't give Microsoft much credit as a distributor just because it was on XBLA. Minecraft is clearly an indie title whether Microsoft partially funded the port for their system or not because that was not the original game. There could be debate whether the XBox version is an indie title at that point though. Brutal Legend is not an indie title if funded by first Activision and then EA.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> guard-of-terra That's interesting, but what about a nice turn-based (or otherwise think- bound) strategy or at least an RPG?

It seems to me that all the modern gaming is about running around with guns. Boring and no food for thoughts. I've switched to Roguelikes, but still mourn for a good strategy.

<comment><USER11> What do you consider a good (old) strategy game?

Imho single-player strategy is usually just a puzzle game.

<comment> guard-of-terra Master of Magic. Alpha Centauri. Civilization & Colonization. Master of Orion. In that order.

What makes MoM special? It's PvE. It's so much more replayable than anything else. What makes Alpha Centauri special? There are no things about Alpha Centauri that aren't special.

Also, to the lesser extent, Heroes of Might and Magic series. Hex grid wargames (Battle Isle, Fantasy General, Battle for Wesnoth) are nice too but, having no economy, aren't so interesting.

I don't know what do you mean by puzzle games and why is that a bad thing.

</comment></comment></comment><comment><USER12> Here's David Braben talking about the Raspberry Pi at the BBC:

<http://www.bbc.co.uk/news/technology-13292450>

</comment><comment><USER13> _stunned_

 _may have to eat socks_ (See: <http://news.ycombinator.com/item?id=4748382>)

<comment><USER14> I was always wondering how do you do that in real life?

<comment><USER15> <http://en.wikipedia.org/wiki/Werner_Herzog_Eats_His_Shoe></comment></comment></comment>


Business Card Designs - <AUTHOR> http://www.webdesignbooth.com/creative-and-unique-business-card-designs/

<comment><USER2> They overlooked Kevin Mitnick's business card, which is probably the coolest ever!

<http://www.flickr.com/photos/ranh/106709219/>

</comment><comment><USER3> I made my own acrylic biz cards on a laser engraver. They aren't as slick as these, but very much cheaper, if you can get free access to a laser:

<http://extension.ws/photos/acrylicard.jpg>

</comment><comment><USER4> Most of those look expensive. Too expensive imho. And business cards should be atleast somewhat near standard sized, so that they easily fit to wallet etc

<comment><USER5> Agreed. Expensive business cards, like viewzi's, really have no place in a technology startup. In fact I would say it's a sign to approach with caution if a startup is wasting money on superficial nonsense like that.

However, the designer in me still loves a great card. As print becomes less prevalent I miss the textural experience a screen can't provide such as the feel of paper, emboss, deboss, foil stamps, spot varnishes, die cuts, etc. If you can afford it, I think it's okay to splurge a little here.

<comment><USER6> Most of those cards seem to be for companies with a more artistic nature. Architects, designers, printers and the like. For companies like that spending time and money on business cards is a good idea, since your business card in effect becomes a mini portfolio, and the first example of your work that potential new customers will see. If you're a graphic designer and your business card show no indication of design skills (or worse, bad design skills) I'll probably be less likely to call you if I need design work done.

</comment></comment></comment><comment><USER7> Look at that subtle off-white colouring. The tasteful thickness of it. Oh my God, it even has a watermark.</comment>


SQL Fiddle - like jsFiddle, but for databases - <AUTHOR> http://www.sqlfiddle.com/

<comment><USER2> I'm sad to see there's a giant ad at the bottom of the page now. I understand the hardship in breaking even on a site like this though :(</comment>


Can We Put the 16GB "Pro" Myth to Rest? - <AUTHOR> https://www.zdziarski.com/blog/?p=6355 <comment><USER2> The author listed quite a few apps then:

> A couple apps you won't see on this list are Chrome and Slack

He explained we should:

> in my opinion you should boycott them until the developers learn how to > write them to play nicer with memory

I stopped reading. Selection bias is selection bias, no matter how you try to talk it out.

</comment><comment><USER3> This is either clickbait or outright absurdity apologist nonsense.

I currently have 19GB of swapfiles sitting in /var/vm/ on a maxed out 2015 MBP.

The new MacBook Pro is not professional and it is underpowered. Accept it already.

<comment><USER4> Would you mind indulging the audience (or me specifically) and outlining what you're doing that uses 30Gb+ of RAM? Is this one application with huge data sets, or many applications that must be run at the same time? Genuinely interested...

<comment><USER5> Not OP but this is mine right now and I'm not even doing anything that intensive. [http://i.imgur.com/xYlR8Nw.png](http://i.imgur.com/xYlR8Nw.png)

Programmers stopped caring about memory not too long ago and this is the result.

<comment><USER4> Wow. I thought Eclipse was memory hungry, and given the comments here I also thought Sublime Text was frugal with memory compared with Atom.

For comparison, my development machine with a Docker environment and dev tools running: [http://imgur.com/a/sic5M](http://imgur.com/a/sic5M)

<comment><USER6> I keep seeing Google Chrome Helper over and over and over in these screenshots. And sure, none of them are the biggest single memory user, but...

In my experience, quitting Chrome lowers the memory usage of kernel_task dramatically, so that Chrome is taking up even _more_ memory that you'd think adding up all of the many Chrome-related processes.

I fully believe the OP, simply because they're not running Chrome. And I fully believe each of the posters above me, too, and I'm pretty sure they're all running Chrome.

I guess I'm suggesting that the difference is Chrome.

</comment></comment></comment></comment></comment><comment><USER7> Try running a few docker containers to support development work. A few DBs, messaging servers, Lucene indices, etc. Try prototyping applications using map-reduce for huge datasets.

"Pro" doesn't always refer to the artistic line of professionals. Many developers see this as a huge problem, and there are a lot of us.

Our options now include the 2005-era looking systems at system76.com, running Linux. I love Linux for servers, but I really don't like the GUIs, or acting as my own systems integrator. I want a true modern "Pro" macOS system, and that doesn't exist right now.

<comment><USER8> > Try running a few docker containers to support development work.

Docker containers should not take more memory than the same app running without docker + a few megs for duplicated libraries. What matters is what's running in the containers.

<comment><USER9> Doesn't Docker on Mac run the containers inside a Virtualbox VM running Linux? That should take quite a bit more memory than just running the app directly.

<comment><USER4> It used to, but the newer Docker for Mac uses xhyve which is more lightweight. It also by default runs a pretty stripped down version of Linux. The default VM size is 2Gb, but you can increase that if you need to.

I'm currently working on a project which involves a Docker replication of a production environment. The Docker Compose environment has 7 docker containers including Cassandra, Kafka and Flink plus some nodejs micro-services. This all runs happily in a 6Gb docker container leaving memory free for Eclipse, Atom, Outlook and a bunch of other applications on a 16Gb 2015 MacBook Pro. At no point have I felt that the machine is performing poorly due to memory exhaustion.

</comment></comment></comment></comment><comment><USER10> Let's just ignore very popular apps I don't like that happen to use a lot of memory so I can make a point.

<comment><USER11> Maybe they shouldn't use tons of memory carelessly.

<comment><USER12> But they do. And not necessarily carelessly.

<comment><USER4> There seems to be a pretty consistent pattern of Chrome and apps built with Electron having large memory footprints. You should turn up here when an Atom article hits the front page and see how HN commenters' attitudes to memory consumption change then...

</comment></comment></comment></comment><comment><USER13> Not saying we have to, and the memory constraint might eventually make it infeasible, but my team's developer process is a lot easier when we can run our stack (12 web services, db, message bus, reporting service) at once.

There's definitely some optimization opportunities to address, but since the only immediate bottleneck that's causing is in local dev, our resources are better spent buying beefier dev rigs and focusing on delivering value.

</comment><comment><USER14> My machines are currently 16GB each (I have two MBPs). I imagine increasing the amount of RAM I use in my next machine upgrade.

Anyone working on large scale data problems or doing advanced analytics (Spark, R, Python, etc.) would appreciate having more memory to allocate to their problems.

The analysis in this blog underestimates the complexity of various compute environments.

</comment><comment><USER15> Mine: 14.6GB used, 18GB swap used.

Twitter 2.99GB (old, ad-free client) Java 1.22GB Photoshop 1GB Transmit, Spotify, Sublime, etc - 700MB each. Chrome core 2.8GB and then _79x_ (!) Google Chrome Helper, each anything up to 2GB. Obviously not listing the loads of things in the 200-700MB range.

Currently have Firefox, Safari and VirtualBox closed, though they are often open for testing.

</comment><comment><USER16> similar point here: [https://blog.rinatussenov.com/leave-apple- alone-538d7619ce9e...](https://blog.rinatussenov.com/leave-apple- alone-538d7619ce9e#.2pcdg1po1)

</comment><comment><USER17> I tend to use AWS Windows or Linux machines for work and use the Mac basically for Web browsing, RDP client and occasional Microsoft Office. This has removed my need for a desktop or notebook with more 16MB, effectively lenghting the useful life of my hardware. If I feel I need more RAM (up to 2TB), I just shutdown the AWS instance, change the instance type and start it again. Actually, with this setup, I very rarely have the urge to use my laptop, I have a desktop in the 3 places I usually work from so I'm freed to drag a laptop with me unless I travel.

<comment><USER18> I used a chromebook for about a year, and would RDP to my home desktop when I needed anything beefier... after that I went back to a new rMBP because I needed macOS at the time. The 16gb is rarely an issue for me, but I could easily see certain classes of workload that could make it so.

</comment></comment><comment><USER5> None of the memory consumptions are realistic, I use most of the listed apps. E.g. Xcode using 300 MB? Do you have one file open?

</comment><comment><USER19> Disk cache buffers. It's what's left after all your applications are resident, and often impacts IO performance.</comment>


How I Hacked My Way from TC to YC - <AUTHOR> https://medium.com/@sayangel/how-i-hacked-my-way-from-tc-to-yc-73bc719c6792

<comment><USER2> _" Sometimes I wonder how many things could have gone differently."_

I'm a firm believer that awesome always finds a way, but I love these stories of seemingly small decisions ( _" I could've spent the $500 on something other than a Rift. I could've stayed in bed"_) being major turning points in someone's life.

For me, a pivotal moment was Stanley Kubrick's removal of _A Clockwork Orange_ from circulation in the 1970s, and its subsequent posthumous re-release in 2000. My university cinema had a showing one night; this gave me time to kill on campus after the library closed; during which time I saw a job-board ad for work in a real estate firm.

The job led to a management position post-graduation, which turned into State Operations Manager for a large franchise group, which turned into the business coaching career I've had for almost a decade.

If Kubrick hadn't pulled the film? If he had died a year earlier? Maybe I would have leveraged my journalism degree into that profession instead? From little things, big things grow...

<comment><USER3> Aka the butterfly effect. Similar to your story I got a 20 year gig out of a bet over a bar of chocolate... It's really funny how these things work.

<comment><USER4> I was going to ask you to tell the story, but I guessed it was on your blog, here it is :)

[http://jacquesmattheij.com/content/story-behind-wwcom- camara...](http://jacquesmattheij.com/content/story-behind-wwcom-camaradescom)

</comment></comment></comment><comment><USER5> One gem that stood out to me from the article was the author's take on hackathons: "The prizes were nice, but the knowledge, soft skills, and connections were prizes in themselves" \- which seems like the right way of approaching a hackathon.

<comment><USER6> > the knowledge, soft skills, and connections

To me that kind of points to something I don't like about hackathons: if I want to really dig deep and hack on something, I don't want to be terribly social. On the other hand, I have a lot of fun meeting people and talking, and so on, but at that point, having to go code something is kind of distracting from the social part.

<comment><USER7> The "actual work part" provides the filtering that leaves you with relevant people so you don't end up in a hackathon with lots of wantrepreneurs.

<comment><USER6> I do actual work in an office during the day, or evenings/weekends at home. If I want to get actual work done, it's going to be working on something of my own, not some thing with a random-ish goal, with prizes.

</comment></comment></comment></comment><comment><USER8> I'm overly impressed with those being able to build a project by the end of a hackathon. In my life I haven't had many chances to participate to one, but I'm also the more methodical type (you can call that _over engineering_ and I wouldn't argue on it).

Any advice on how I could switch to this mode from time to time?

<comment><USER9> I've got a few pieces of advice for you to consider. I'm not sure what will work for you so I'll hit a few broad areas.

One thing is to make FIXMEs, TODO lists, and otherwise write down the areas that might need improvement, so that you can mentally dismiss them and focus on your immediate needs.

When I'm making something new I do "modal programming". Turn off the IDE's auto-compilation (so that you aren't distracted by syntax errors) and write large chunks of code in a single go. If you don't know the API for something, make it up. This is the creative mode.

Once the code is written, switch to the debugging mode. This is where you try and get the code to actually run. I've found that by separating the two activities I don't need as much mental effort and it reduces the total amount of time spent or research required.

Back when I participated in collegiate programming contests we'd prepare for weeks by drilling on very similar problems so that I/O and syntax wouldn't trip us up and we could focus on what made the problem unique.

To apply that approach to hackathons, I'd practice the zero-to-prototype step beforehand until you don't have to do a lot of research in order to get a minimal working program. For example, if you normally create android apps, make sure you can get from nothing to a working tic-tac-toe in an hour.

</comment></comment><comment><USER10> It's quiet common, that blog posts from HN leave me behind with a different perspective of things. In this post, this is what made me so:

"Sometimes I wonder how many things could have gone differently. I could've spent the $500 on something other than a Rift. I could've stayed in bed instead of going to a hackathon. I could've worked on another joke app. I could've saved some money and not flown out to Mountain View for a hackathon. But if my parents taught me anything it's that you have to take advantage of every opportunity you get. So I did."

</comment><comment><USER11> Very happy for Angel and wish him the best for the future.. Keep on hacking!

tl;dr I am a harsh judge at Hackathons, and I think that's what we need.

But on the topic of Hackathons and YC Hacks in particular... I expected YC Hacks to be more focused on realistic, actual businesses. I was there and the finalists were mostly disappointing. Vrniture, a cool demo app, is a total non-starter as a business (and I don't think it was ever intended to be one.) The number of people who would have 3d maps of their living space is ~0. The chances of having accurate and well-textured 3d models of sufficient furniture pieces is ~0%. Apparently just getting on "YCs radar" was the intent, and that just doesn't sit well with me unless you're at [http://www.stupidhackathon.com/](http://www.stupidhackathon.com/)

</comment><comment><USER12> > I could've spent the $500 on something other than a Rift.

Like? :) It is often the case when someone is really awesome, most of their choices are really good.

</comment><comment><USER13> >hacked

I don't think that means what you think it means.

<comment><USER14> Did you read the article? It largely describes how he went from a small hackathon to a large hackathon to a YC hackathon to being accepted to YC.

Three distinct "hacks" in a row. Do you object to the word "hack" being used to describe the work that occurs at a hackathon, or are you just being argumentative because you prefer a different meaning?

<comment><USER15> I'm with the original commentary here. Cool -- he upgraded hackathons. I don't see how that in of itself is "hacking" the system. He didn't break ground or do anything crazy. I think people are starting to apply this term too liberally, though I'll admit the complaints (mine included) aren't going to help.

<comment><USER16> It's almost like one word can have multiple meanings.

<comment><USER13> You are right and your comment is interesting!

And by interesting I mean irrelevant, because that's what interesting means to me.

<comment><AUTHOR> would be interested in hearing your take on the word "hack"!

</comment></comment></comment></comment></comment></comment><comment><USER17> Angel is the man!</comment>


How Christian Were the Founders? - <AUTHOR> http://www.nytimes.com/2010/02/14/magazine/14texbooks-t.html

<comment><AUTHOR> This is so scary, and in my opinion the real problem with America's future. History tends to repeat itself. What's next the burning of our libraries, the destruction of our Science Journals?

My Father summed it best in a recent conversation when he said "Your Science." IMHO, this is the sort of mind-frame that will ultimately lead to this country's downfall.

</comment><comment><USER2> As a Christian, my answer is: not very.

There were a few orthodox Christian signatories of the Constitution--notably John Witherspoon-- but the majority of them were Deists. This is not difficult information to discover. If you read the writings of these men, you'll note copious references to "Nature and Nature's God" and theories of a clockwork Universe.

</comment><comment><USER3> This is another one of those articles that's hard to comment reasonably about both sides without getting into a flame war. I hate to do it, because it's an important subject, but I can see no way to have a reasonable conversation about this -- flagged.

<comment><USER4> It needs to be talked about one day, and if HN, one of the smartest communities around, can't do it - who can?</comment></comment>