hacker news with inline top comments    .. more ..    23 Aug 2014 Best
home   ask   best   3 years ago   
Fully Functional 1KB Hard Drive in Vanilla Minecraft
827 points by jonbaer  2 days ago   109 comments top 33
TheLoneWolfling 2 days ago 4 replies      
In recent versions of MC, you can do a much better delay line memory with comparators. You can actually end up being able to store 2b / block (2 and not 4 because comparators have to be placed on something not a comparator.) - it would be half that but there's a trick you can play to avoid requiring redstone dust between comparators.

The delay is faster too - 1 redstone tick / 4 bits, or 40 bits/sec per line, as opposed to this implementation's 1 bit / 8 redstone ticks / line, or 1.25 bits / sec / line. (Note that this implementation of piston tape is decidedly suboptimal: the maximum is actually 3 bits / 4 redstone ticks / line = 7.5 bits/sec/line, as you can actually check for 8 different block types (glass / solid / sticky/non-sticky piston facing 3 directions) and you can make a faster-resetting piston loop.)

The biggest issue with comparator delay-line memory is that there's no way of pausing it.

There's also a way of storing arbitrary amounts of data per block, and that's to use the fact that items with NBT data will stack only when their NBT data is identical. The easiest way to see this is to try to stack renamed items, but there are others. You can make a hopper or dropper chain and encode data in which line which enchanted item is in.

I have yet to see a practical implementation of the above, though.

dkhar 2 days ago 1 reply      
This is a good opportunity to plug ORE, a Minecraft community specifically for this kind of thing:


That video on their main page is mind-boggling to me.

I have a friend who's a regular on that server, and he would occasionally explain to me things like how they take advantage of how Minecraft's redstone handling works to shave precious ticks off the latest ALU design's return time, or how they created a fully vanilla-compatible "internet," to pass data through wires between different people's machines.

They've got mods set up to copy and paste blocks, so you can build modular systems out of components and avoid repetitive block-placing, but AFAIK, everything else is vanilla. It's incredible.

rmc 2 days ago 6 replies      
For people interested in how computers work, I recommend the book/course "From NAND to Tetris - Building a Modern Computer From First Principles"[1]. It starts of with boolean logic and NAND gates, and it steps you through making a computer that can play tetris.

[1] http://www.nand2tetris.org/

dangayle 2 days ago 3 replies      
My nephew and his friends are 8-9 years old, and they're masters at building this stuff. The redstone, the logic, the machines, all of it. It's all they think about, all the time. Imagine what potential this early compsci education is fostering?

We just have to remind them when they're older and are running things and building amazing stuff that it's NOT OK to blow up other people's stuff with tnt.

thejj 2 days ago 3 replies      
This will not work as described.I think his design is a good idea, but still does not work.

I build a better harddrive (with 4 kb storage!) over a year ago, imgur link will follow.

Now to the design problem in this HDD:see that all the blocks are blue in the platter?No way to swap each of the bits without magically creating new green blocks.My hdd solves that problem by having BOTH block types available on the platter. But see for yourself:


userbinator 2 days ago 0 replies      
This concept is known as a delay line memory, although this particular implementation doesn't need any refresh, like a chain of shift registers: http://en.wikipedia.org/wiki/Delay_line_memory
awiesenhofer 2 days ago 0 replies      
Reminds me of http://xkcd.com/505/ "A Bunch Of Rocks"

Although: no need for someone immortal with infinite time and energy to run the simulation, rather lots of people each devoting a small amount of both to it...

atanasb 2 days ago 6 replies      
This is really cool. I really like Minecraft computer components, but I could never help to think that if the guys who build them, started playing with something practical, the results might be more tangible.
zbowling 2 days ago 0 replies      
Someone needs to make a FUSE driver that patches into this with a mod for Minecraft.
wubbfindel 2 days ago 0 replies      
Reminds me of when someone built a scientific calculator in minecraft:


wiml 2 days ago 0 replies      
Interesting, maybe a bit more like bubble memory than a hard drive.
snake_plissken 2 days ago 3 replies      
I always wonder when I see these things, are players placing each block individually? Or are they mapped out in some file and fed to the server to render?
rednukleus 2 days ago 0 replies      
Even if this has no practical reason to exist, it makes me happy to know that it does. The world is a better place for it.
birk5437 2 days ago 0 replies      
The control room actually kind of reminds me of the control rooms for old computers in the 1950's.



IgorPartola 2 days ago 2 replies      
What Minecraft could really use would be a scripting capability of some sort. Basically, once you've figured out how to do something, you should be able to build a machine that does it for you. That would be a pretty sweet game.
Sami_Lehtinen 2 days ago 2 replies      
If you like to play with logic stuff, this is something to try out: http://www.neuroproductions.be/logic-lab/ It's simple, but does it job pretty visually.
munimkazia 2 days ago 0 replies      
What minecraft needs is a way to speed up the game. There have been quite a few people who have made calculators and "electronic" components, which would be a lot more cooler if they could work faster.
Eiriksmal 1 day ago 0 replies      
It hit me on a walk last night: What this needs to be truly complete, more than more KBs or other computer components (like the competing HN article), is the click-of-death when it dies of old age!
linker3000 2 days ago 0 replies      
If he can shorten the duration of the redstone signals to be very small pulses, he'd have a 'flash' drive!

/Working with PCIe flash memory products, so getting a kick..etc..


Fando 2 days ago 1 reply      
What type of circuits are technically possible to build in Minecraft? Could one build a basic CPU with RAM, HDD, and BUS? What is the limit of what one could build?
prawn 1 day ago 0 replies      
You might also like this clock built in Minecraft to (theoretically) outlast the heat-death of the universe:


asiekierka 2 days ago 1 reply      
I'm a Minecraft modder and while mods are really exciting, sometimes the vanilla stuff is where it's at.

Awesome job.

agumonkey 2 days ago 0 replies      
At what point will Minecraft come out of the closet and proudly claim to be the largest computing principles MOOC ?
nkerkin 2 days ago 0 replies      
Reminds me of this 8-bit CPU[0] built in minecraft

[0] http://www.youtube.com/watch?v=yxAmphwLPDY

jafaku 2 days ago 0 replies      
Can someone tell me what's more difficult to create? This hard drive or the scientific calculator that someone else also created in minecraft?
Rikstam 2 days ago 0 replies      
Cool, makes me want to start tinkering with Minecraft, but can't really afford anymore time sinks in my life. Still its amazing what people can do with it.
dbbolton 2 days ago 0 replies      
I hope the author joins forces with the guy who built a programmable computer in MC.
jeremycole 2 days ago 3 replies      
This is clearly a memory, not a hard drive. Kind of expect better from HN...
jedicoffee 2 days ago 0 replies      
peterwwillis 2 days ago 0 replies      
And people say video games are a waste of time.
sebastianavina 2 days ago 0 replies      
for god sake, get a job people
qwerta 2 days ago 0 replies      
Hm, add CPU and we can play chess :-)
fork() can fail
753 points by dantiberian  2 days ago   313 comments top 43
kabdib 1 day ago 6 replies      
When I was young and really didn't understand Unix, my friend and were summer students at NBS (now NIST), and one fine afternoon we wondered what would happen if you ran fork() forever.

We didn't know, so we wrote the program and ran it.

This was on a PDP-11/45 running v6 or v7 Unix. The printing console (some DECWriter 133 something or other) started burping and spewing stuff about fork failing and other bad things, and a minute or two later one of the folks who had 'root' ran into the machine room with a panic-stricken look because the system had mostly just locked up.

"What were you DOING?" he asked / yelled.

"Uh, recursive forks, to see what would happen."

He grumbled. Only a late 70s hacker with a Unix-class beard can grumble like that, the classic Unix paternal geek attitude of "I'm happy you're using this and learning, but I wish you were smarter about things."

I think we had to hard-reset the system, and it came back with an inconsistent file system which he had to repair by hand with ncheck and icheck, because this was before the days of fsck and that's what real programmers did with slightly corrupted Unix file systems back then. Uphill both ways, in the snow, on a breakfast of gravel and no documentation.

Total downtime, maybe half an hour. We were told nicely not to do that again. I think I was handed one of the illicit copies of Lions Notes a few days later. "Read that," and that's how my introduction to the guts of operating systems began.

cperciva 2 days ago 5 replies      
This reminds me of one of the most epic bugs I've ever run into:

    mkdir("/foo", 0700);    chdir("/foo");    recursively_delete_everything_in_current_directory();
Running as root, this usually worked fine: It would create a directory, move into it, and clean out any garbage left behind by a previous run before doing anything new.

Running as non-root, the mkdir failed, the chdir failed, and it started eating my home directory.

azinman2 2 days ago 3 replies      
I see a lot of comments blaming the programmer. This is completely the wrong attitude.

Why are you treating the programmer like a machine? They're not a machine -- they're human. Regardless if they fully understand the API or not things should have have sane defaults for HUMAN FACTORS reasons.

Bugs will always exist. The fact that the Linux kernel has many bugs is just one example of a code base that has over a decade of work put into it by many people with high skill shows that bugs are inevitable.

The goal should be to assume people will do stupid things and make fatal behavior more explicit/difficult. Do we really need -1 for kill to do such behavior? How common is that anyway? It's a pretty destructive behavior, and probably should be removed from kill. The human factors approach would say if you really want that behavior then write a for loop to do over the list of pids, because it should never be within easy reach especially for such an uncommon scenario.

Apple's iOS API is similar. Try to insert a nil object into an array? Crash. Try to reload an item in a list that's past the known objects index? Crash. So instead of doing something sane like reloading the entire list, the user has a shit experience because off by one errors happen easily especially in front-end/model work [1 re: fb's persistent unread chat].

Not recognizing the human part of things leads to issues everywhere.. reminding me of this article on human factors in health care previously posted on HN [2].

Conclusion: design for humans and default to non-fatal situations.

[1] http://facebook.github.io/flux/[2] http://www.newstatesman.com/2014/05/how-mistakes-can-save-li...

spudlyo 2 days ago 3 replies      
If a function be advertised to return an error code in the event of difficulties, thou shalt check for that code, yea, even though the checks triple the size of thy code and produce aches in thy typing fingers, for if thou thinkest "it cannot happen to me", the gods shall surely punish thee for thy arrogance. [0]

[0]: http://www.lysator.liu.se/c/ten-commandments.html

jwise0 2 days ago 1 reply      
In a similar family, note also that setuid() can fail! If you try to setuid() to a user that has has reached their ulimit for number of processes, then setuid() will fail, just like fork() would for that user.

This is a classic way to get your application exploited. Google did it (at least) twice in Android: once in ADB [1], and once in Zygote [2]. Both resulted in escalation.

Check your return values! All of them!

[1] http://thesnkchrmr.wordpress.com/2011/03/24/rageagainsttheca...[2] https://github.com/unrevoked/zysploit

jgrahamc 2 days ago 2 replies      
Quietly goes to check the last piece of C I wrote containing a fork():

    if (daemon && !test_mode) {      int pid = fork();      if (pid == -1) {        fatal_error("Failed to fork");      }      if (pid != 0) {        write_pid(pid_file, pid, !test_mode);        exit(0);      }    } else {      write_pid(pid_file, getpid(), !test_mode);    }

jbb555 1 day ago 0 replies      
This to me is a good example of why exceptions in modern languages are good way to handle errors. In this case the user has basically ignored the error return from fork() and the accidentally used it in kill.

If fork() had thrown an exception for an unexpected failure then the user could not have accidentally ignored it in the same way.

I realize that this is not appropriate for a system call but it seems like a good example of why handling errors using exceptions is helpful sometimes.

mutation 2 days ago 3 replies      
Just noticed that in Perl the behavior is slightly different: http://perldoc.perl.org/functions/fork.html unsuccessful fork() returns undef, effectively stopping you from kill-ing what you don't want to kill.
quotemstr 2 days ago 2 replies      
I wish posix_spawn were ubiquitous; it's a much better process-launching interface than fork: it's naturally race-free and amenable to use in multi-threaded programs, and unlike fork(2), it plays well with turning VM overcommit off. (If overcommit is off and a large process forks, the system must assume that every COW page could be made process-private and reserve that much memory. Ouch.)
AnimalMuppet 2 days ago 2 replies      
Somewhat OT, but in the same neighborhood:

Standard file handles are another thing you should not assume are there (though I'm not sure how to test for it programmatically).

We once had a user that, for whatever reason, tweaked their Unix installations to not pass an open stderr to processes - they just got stdin and stdout (that is, file handles 0 and 1, but not 2). If you wrote to stderr anywhere in your program, it wrote to whatever was open on handle 2, which was not a stderr that the OS passed in.

Yeah, that's a pretty insane thing to do, but somebody was doing it...

IgorPartola 2 days ago 1 reply      
Back in the day I had a Motorola Atrix (remember those? First dual core Android phone, best thing since sliced bread, abandoned by Motorola a few months after launch?). Well, one of the ways to root it was to keep forking a process until the phone ran out of memory. After fork failed, you were left with a process that for some reason was running with root privileges...
Aurel1us 2 days ago 5 replies      
Just as a reminder:"So, malloc on Linux only fails if there isnt enough memory for its control structures. It does not fail if there isnt enough memory to fulfill the request." - http://scvalex.net/posts/6/
mcguire 9 hours ago 0 replies      
If you have set a non-root user's process limits correctly, sending SIGKILL to all of that user's processes is likely a perfectly fine response to their fork() failing.

If you haven't limited the number of processes a given non-root user can start to some value the machine can handle, sending SIGKILL to all of the user's processes is probably not going to do anymore damage.

If a program running as root doesn't correctly handle fork() failing, someone needs to be taken out back and beaten with a stick. Maybe the person who wrote the program, maybe the person who ran it as root. But somebody.

zokier 2 days ago 2 replies      
Who needs type safety when we got integers.
trippy_biscuits 1 day ago 2 replies      
"Unix: just enough potholes and bear traps to keep an entire valley going."

If you don't understand how to use sharp tools, you may hurt yourself and others. Documentation for fork() clearly explains why and when fork() returns -1. Those that find the man page lacking or elusive may get more out of an earnest study of W. Richard Stevens' book, Advanced Programming in the UNIX Environment. In any case, every system programmer should own a copy and understand its contents.

ajarmst 2 days ago 1 reply      
Stevens and Rago, "Advanced Programming in the Unix Environment, Volume II", page 211,212.

if ((pid = fork()) < 0) err_sys("fork error"); is idiomatic in Unix.

ionelm 2 days ago 1 reply      
Seems Python handles this correctly (by raising an exception):

    >>> resource.setrlimit(resource.RLIMIT_NPROC, (0, 0))    >>> os.fork()    Traceback (most recent call last):      File "<ipython-input-7-348c6e46312a>", line 1, in <module>        os.fork()    OSError: [Errno 11] Resource temporarily unavailable

prasoon2211 2 days ago 1 reply      
The first time I learnt of fork (from an OS book), the example had three branches to the if statement after fork - and the first tested for a negative pid. I suspect that the reason this link has 400 odd upvotes is because more people aren't learning OS the correct way in the beginning. Or maybe my OS book was nice. IDK.
brazzy 2 days ago 3 replies      
And this right there is why exceptions are a superior mechanism of announcing errors...
alan-crowe 13 hours ago 0 replies      
Is there a test command that asks the operating system to run a program but cause the nth fork to fail? I would be more diligent about writing code that handles rare errors if I could create test cases. Writing code that I cannot test feels wrong.
serve_yay 2 days ago 1 reply      
Out of "-1 as failure return value", and "-1 to signal all possible processes", at least one is a bad idea.
Mister_Snuggles 2 days ago 1 reply      
This reminds me of the time I was telnet'd (since SSH wasn't a thing at the time) into a remote SunOS/Solaris server. At the time my only Unix experience was with Linux.

"killall -9 httpd" gave an unhelpful error message. "killall httpd" also gave an unhelpful error message. "killall", which would give you usage instructions in Linux, killed all processes on the system. Reading this article makes me figure that killall was likely a frontend to kill(-1, ...).

That day I learned a valuable lesson about reading man pages and understanding that not all unixes are the same.

quackerhacker 2 days ago 0 replies      
Sometimes these threads are just serendipity!

I just recently finished a multithreaded program where I found obtaining the pid [on linux: getpid()] of child processes spawn was only effective by utilizing a common pipe that was non-blocking [fcntl(pipefd[1], F_SETFL, O_NONBLOCK) ].

In other, more humorous words, as a "parent," it's great to know what your "child," is doing (or in this sense), who your child is (the actual pid), instead of just kill SIGTERM them.

JD557 2 days ago 2 replies      
Is there any clean way to use an Option/Maybe monad in C (or C++)? It should be a simple way to solve problems where error codes are valid inputs of other functions.

The simplest way I can think of is:

    struct maybe {        bool isEmpty;        void* value;    }
Although I wonder if using C++ templates, classes and operator overloading is possible to make a more practical implementation (using void* does seem like a bad idea).

japaget 2 days ago 1 reply      
See also https://news.ycombinator.com/item?id=8189968 for another UNIX trap for the unwary.
yokom 2 days ago 4 replies      
I don't use fork() that often, but my own paranoia is why I always test for <= 0 instead of == 0. Some people think I'm weird for doing something like:

  if len(some_list) <= 0:      # Test for empty list
But it's just my way of covering my ass in case the laws of physics change during execution, or just in case weird bugs exist like those found in this article.

nikita 2 days ago 1 reply      
Yes, fork can fail and we ran into this a few years ago at MemSQL. The problem was that MemSQL would allocate a lot of memory and linux wouldn't allow to fork such a process. A remedy to that is to create a separate process and talk to it via tcp. This small and low on memory consumption process is responsible for fork/exec paradigm.
walski 2 days ago 1 reply      
Thanks! Definitively in my "shit I should know but didn't before HN schooled me"-top-10 :)
kazinator 2 days ago 1 reply      
I once did

    rm -rf $PREFIX/usr/lib
in a Bash script being run as root. PREFIX was misspelled, and set -u was not in effect, so the misspelled variable silently expanded to nothing ...

wmil 2 days ago 1 reply      
The kill -1 behaviour seems like a bug.

Sure, it's documented, but how often is it done on purpose? It seems like something that should at least be a separate function.

CSDude 2 days ago 0 replies      
I'm a teaching assistant of an OS course, I grade projects. I constantly remind students to check the return values of the system calls and it is mostly the main issue in their codes.
jheriko 1 day ago 0 replies      
i've never actually used fork... feeling glad now. i probably would have not realised this...

reminds me of allocating memory for an error message to tell someone they are out of memory. :)

jdrago999 1 day ago 0 replies      
Yes, yes it can. That's why it's always:

    fork() or die "Cannot fork: $!";

dasmithii 2 days ago 0 replies      
I'm uncertain that I've ever checked for errors after calling fork.

Thanks for providing an impetus to do so.

donatj 2 days ago 3 replies      
And this is why I think Go-lang and its multi-return is the way of the future. In Go you are required to handle errors. If you want them to go away you have to explicitly use an _ and thats really easy to find in the code and shame the person who did it. Nothing fails silently. Nothing fails via primary return. It is such greatness it is hard to express.
jacquesm 1 day ago 0 replies      
That's why you read the manpage on a function before you apply it rather than just cutting-and-pasting the first bit of code google returns when you search for 'fork example unix'.

(In this particular case that actually returns (for me) a bit of code that gets it right.)

smegel 2 days ago 0 replies      
I see it happen quite often on boxes with limited memory and hungry processes.
runarb 2 days ago 2 replies      
Easy to test out to. In C:

  #include <unistd.h>    int main(void)  {         while(1) {                 fork();         }  }

general_failure 2 days ago 0 replies      
This is why we need checked exceptions.

Imagine if C/POSIX had a checked ChildProcessCloneException

VLM 2 days ago 0 replies      
"Neither of them fail often"

See /etc/security/limits.conf and nproc and "fork bomb"

Aside from intentional fork bombs I've seen this done intentionally in the spirit of a OOMkiller to keep a machine alive for debugging / detection of problem. 100 "whatever" processes will kill this webserver making it impossible to log in and diagnose much less fix, so we'll limit to 50 processes in the OS.

I've also seen it in systems where people are too lazy to test if a process is running before forking another and the system doesn't like multiple copies running (like a keep alive restarter pattern). If ops has no access to the source to fix that or no one cares, then just run it in jail where you only get two processes, the restarter-forker and the forkee. Then hilarity can result if the restarter thinks the PID of the failed fork means something, like sending an email alert or logging the restart attempt. "Why are my logs now gigabytes of ERROR: restarted process new pid is -1?"

gre 1 day ago 0 replies      
C programming 101.
arbitrage 2 days ago 0 replies      
Your username is offensive. I'd like to take what you say seriously, and perhaps even engage in further conversation about the topic at hand, but ... you know ... you look stupid. Grow up. You should be embarrassed.
danielbhall001 2 days ago 0 replies      
Lol this is a true war HAHA..
Lime Text: Open Source Sublime Text clone
440 points by pykello  3 days ago   243 comments top 30
overgard 3 days ago 9 replies      
I wish they wouldn't attach themselves to the sublime brand. It's not theirs, and it's pretty shady to ride another project's coattails when their intent is essentially to cannibalize it by being sublime-but-free. You can discuss the merits of open source and paying for tools all you want, but basically their goal is to put a man out of business who's made something that a lot of people love, because he has the gall to charge $60. Anyway. I'm all for competition, but do it under your own banner with your own ideas.

Also, I think it's weird that the fact that it's made in Go is part of the pitch. I mean, unless I'm contributing... I don't care. You could write it in brainfuck if it does the job.

bubblicious 3 days ago 9 replies      
If there is one app I've always been thrilled to pay for, it's Sublime Text. I've purchased and renewed the licence ever since v1 came out. While it may not be open sourced, you can see it was created with a lot of love for code and openness. Today there are thousands of amazing plugins to enhance it. And though I fully respect the open source initiative, I, for once, am very happy to support / give some money to a peer developer who has made our world much better.
BorisMelnik 3 days ago 0 replies      
Great intentions, and huge shoes to fill. Already off on the right foot by going open source. Hope the authors have thick skin, this is one market that people are generally very particular about, and won't hold back on the details.

For me UI is almost as important as the engine. I'm a very clean/minimalist/organized person and if the software (or text editor in this case) does not, or cannot reflect that then there will be issues.

beefsack 3 days ago 1 reply      
Lime has been around for a little while now, it seems to have a fairly functional backend but still awaiting a high quality frontend implementation. Part of what sets ST apart is the frontend.

One of the most impressive goals on the roadmap is to implement a terminal frontend as well as a QT frontend, which I'm quite excited to see.

Arch users can install Lime from AUR: https://aur.archlinux.org/packages/lime-git/

eps 3 days ago 3 replies      
I don't like how it shamelessly piggybacks on Sublime's reputation by using its name left and right and doesn't hesitate to knock it down by calling itself a "successor". This comes across as disrespectful at least.
christiangenco 3 days ago 4 replies      
Oh goodness, I'm sorry, but I can't get past that chunky window toolbar. I use editors like sublime instead of an IDE so my screen real estate isn't taken up by buttons to leave as much room as possible for my code.

If that isn't right, there must be untold frustrations in the path of using this editor for me that I don't care to discover.

headgasket 3 days ago 0 replies      
Sublime Text is a sublime textbook example for small shops/single devs wishing to make a dent in the status quo.

Love the problem space. Look around. Listen to input from good counsellors, ignore the negative "it already exists your reinventing the wheel" and the "i'll try it when it has x".

Here's what the author got as initial feedback. If he had let that negativity get to him we wouldn't have sublime. http://www.sublimetext.com/blog/articles/anatomy-of-a-next-g...

I suggest a high pass filter on comments on your current project: smart people with helpful comments know how to give valuable feedback to even the worst idea without negativity.

Cheers, and march on!GLTAF

Mandatum 3 days ago 0 replies      
I'm not opposed to an open-source text editor that aims to replicate features of a closed-source application. But "Lime Text" is clearly riding on the success of "Sublime Text", and it irks me because "Sublime Text" isn't owned by a big large company or someone with a lot of money - it's a project that started as someone's side-project and has just recently started as a full-time job.

John, the author, has been clear in the past that if for some reason he no longer wants to continue developing Sublime Text, he'd open-source it so it wouldn't rot in the bit graveyard.

Yes, GIMP rides the coattails of Photoshop, and LibreOffice rides the coattails of Microsoft Office; but these are commercial applications that are supported and paid for by consumers. Sublime Text is optional. Sublime Text is free, but you can pay for it - if you like.

Change the tag-line and keep the name.

randunel 3 days ago 4 replies      
Am I the only one who immediately wondered how Atom was doing when seeing this article? :D
piqufoh 3 days ago 1 reply      
I applaud the open approach, but I don't see the need to reference Sublime Text to increase traction. Why not market this as a cool new feature rich editor implemented in Go (with the bonus of having all the ST / TextMate compatibility to go?)

In fact, why does Lime reference Sublime Text at all?

kopparam 3 days ago 0 replies      
Love the fact that the backend is in GoLang. And just like all of you, Sublime Text is one of those few apps where you actually feel like contributing to the developers. The only thing to do now is get on the IRC and check it out.
softinio 3 days ago 0 replies      
Sublime is great but I must admit it is going the way of textmate in lack of support. Developer should open source it and get contributors working on it. Like someone suggested he can raise money on kickstarter to take it to next level and maybe charge for a pro version which he can add extra features to if he wants.

Personally I am using Sublime still but the next time I have to pay for a license won't be for sublime. Most likely going the IntelliJ Idea route.

Name for Lime Text is shameless :-) Come on you could have come up with something original !

wintermute306 3 days ago 1 reply      
If this can print, I'll move over when it's read. I adore Sublime Text but having to c&p out of it to print is a bit of an annoyance for me. Otherwise it's a perfect app, I adore it.
guilbep 3 days ago 1 reply      
Just for information. I was using sublimeText 3. I updated two weeks ago the last release (Build 3059) and even (Build 3062) and it crashes.. since I don't want to bother using a close thing that crashes. I switched to atom.io And so far It's way better than three months ago (It's now fast enough) And It's really getting traction on the plugin side also.. I don't think I'll ever come back to sublimetext. I even went back to emacs for one week.
1971genocide 3 days ago 1 reply      
I have seen peasant art students shell out insane amount of cash for photoshop, etc. Hell a calculus textbook for first year college is cheaper than sublime text.

You know software developers are dirt poor ( or really cheap ) when they cannot shell out 60 dollars for a piece of software they use everyday. Sublime puts so many expensive IDEs to shame and it costs a fraction ( as a donation ) and people still are up in arms about it.

pantalaimon 3 days ago 0 replies      
Does it support Code completion akin to SublimeClang?That plugin is pretty much the reason I'm sticking to Sublime Text 2 (can't get it to work with 3).I know it's from the same author as lime, but according to the github description he lost interest in C/C++, so I'm wondering if this feature is to be implemented still?Or is lime compatible with the old ST2 plugin?
areski 3 days ago 0 replies      
If there is One project where a lot of developers would want to hack is definitely their own editor!It's a big dilemma, I love the idea of seeing an open alternative but I also love the possibility to support developers working on what they love!

One problem that raise here is that we haven't find a way to ensure that open source projects can bring an incomes to their maintainers, even if there is many users.

james33 3 days ago 3 replies      
Isn't Atom the open source Sublime Text clone?
oridecon 3 days ago 1 reply      
Few months ago I moved from ST but I would come back to a similar open source solution if it implemented IDE features on packages. So I can have two shortcuts, one opens with everything IDE-like, the second one would only load a few packages and be very Sublime-ish. Fast and simple.
husted 3 days ago 0 replies      
Always great with more competition, hopefully it will result in better editors for everyone. I wish someone would make SourceInsight for OSX, it's by far the best editor I've ever used but it's only available for Windows.
unicornporn 3 days ago 1 reply      
Is there a binary somewhere?
fritz_vd 3 days ago 0 replies      
Cool! I hope the community of SublimeText/Emacs/Vim/ will not tear you a new one. As editor wars always tend to get quite heated..
zura 3 days ago 2 replies      
I wander why SlickEdit is not as popular as Sublime Text? Is this due to price? Otherwise, SE is quite powerful and extensible as well.
Siecje 3 days ago 1 reply      
Why don't you make a package to install, instead of requiring people install from source?
netghost 3 days ago 0 replies      
I like that it's being developed with separate front ends (QML and Console).
schobesam 3 days ago 2 replies      
Always good with more editors. But i think that Atom will be the next sublime.
lucio 3 days ago 0 replies      
IMHO there's no need for an OS version of sublime. Sublime is working fine, stable, has a free unlimited trial. It makes no sense to make a verbatim "copy". Maybe he can prepare a release into OS if the proverbial bus hits him?
gamesbrainiac 3 days ago 0 replies      
Interesting take on the GUI.
higherpurpose 3 days ago 0 replies      
One of the things I like most about Sublime over Atom or Light Table, is the chosen colors for highlights. I think Lime needs a little more improvement in that area to make me switch.
tchai_ 3 days ago 1 reply      
I'm sure it's taken a load of work and is still in early stages, but describing yourself as the successor of Sublime Text when it looks as shit as that.. that's some brass!
We have C++14
426 points by ingve  4 days ago   342 comments top 15
daenz 4 days ago 4 replies      
When I started writing C++ around 5 years ago, I had a perception that it was a language that is "on its way out". As I learned more and more of it, I've been super impressed at how modern it is becoming, and how it is adapting to overcome its perceived flaws. It is becoming a killer language to me: blazing fast, modern, ubiquitous, stable, and expressive.
pjungwir 4 days ago 4 replies      
OT question: I was playing with some C over the weekend (not C++), trying to figure out how to handle Unicode in a way that would work on Mac, Linux, and Windows. Despite a couple hours googling and reading, I couldn't answer really basic stuff, like:

- Do I use char* for strings? It sounds like wchar_t is 16 bits on some systems and 32 on others, so I should avoid it?

- If I want to read & write UTF-8 files, how do I turn the bytes into 32-bit wide Unicode strings?

- Are there special functions I should use for handling Unicode strings?

More generally, where do you go to discover C libraries you can use?

I am (was) reasonably proficient in C, but I haven't used it much for over ten years. I'm surprised how many things I just don't know how to do!

Sorry this is not a C++ question. I'd like to get back into that also, but I'm trying to work my way up from the basics. :-)

nly 4 days ago 0 replies      
You can grab and compile the very latest draft from the committees Github page:


The current version is a slender 1365 pages, including the standard library.

Guthur 3 days ago 4 replies      
I see a lot of discussion around C++ becoming modern. I would like to know which features are actually modern?

Is it lambdas? been around for literally decades.Is it type deduction? again been around for quite some time, far better type inference has been available in the likes of Haskell for quite some time.Is it addition of a particular threading model to the standard? this has always been available via some form of library, it just know means the language is truly obsolete if the model changes.Allow GC'd implementations? again decades.

What is modern about any of features that have been added?

lelf 4 days ago 1 reply      
bnejad 4 days ago 4 replies      
Can anyone recommend a book on modern C++?
jastanton 4 days ago 5 replies      
I apologize if this is ignorant, but how is C++ versioned?
pjspycha 3 days ago 0 replies      
Number one wishlist item for next C++ is to add networking libraries to the STL. Its past time that C++ knew about the internet.
selvan 3 days ago 0 replies      
C++ is suitable for development of cross mobile applications , since both iOS and Android tool chain has support for C++.
jokoon 3 days ago 0 replies      
Are modules already kind of unofficially supported, or can they be enabled ? On what platforms ?

I'm trying to make a C++ game with fat libraries like Ogre3D and bullet3D, often on a laptop, and that would really be fantastic to not wait 10s or more each time I edit a header.

I've seen a presentation, basically modules would decrease compile time from M x N to M + N.

cletus 4 days ago 5 replies      
I've started getting back into C++ after many years away and it's all coming back to me.

Now of course it's C++11, which does have some nice features, but really I think we've reached the point where we need to start again (downvote away).

Let me give you an example: I recently came across some code that was written years ago that has two size types: one 32/64 bit signed and the other 32 bit unsigned. This creates a bunch of issues when compiled on 32 and 64 bit architectures and there is a substantial amount of effort to clean it up.

I point out things like this to colleagues who are very pro-C++ and I inevitably get the same response: "well that's just bad API design".

Thing is, if you look at the history of this example it's a series of incremental changes, all well-meaning and reasoned, some of which are done by people who I could only call luminaries, and even they make significant and far-reaching mistakes.

So what hope do the rest of us have?

But my biggest problem with the C-dialects is pointers. Namely if you return or receive a pointer, it's not necessarily clear who owns it. The way this is handled is comments like "DO NOT delete this" or "you MUST delete this".

I like that a language like Rust is trying to formalize the concept of object ownership. I'd really like to see that idea mature and take hold.

Until now there hasn't really been a competitive alternative to C/C++. It's not Go (as much I love Go). Maybe it's Rust. We can but hope.

My other big problem (and this applies to Java too) is directly dealing with low-level multithreading primitives like threads, thread groups and mutexes. I really like that Go has taken a different approach here.

What I find with particularly young programmers is they don't have the appropriate fear of writing multithreaded code. It's really, really hard to write correct multithreaded code with low-level primitives. It's why (excellent) books like Java Concurrency in Practice exist.

As for the feature list of C++14 [1], I wonder what all these "auto" declarations will do to the significant work required for static analysis tools, that are an essential part of modern, large-scale C++ codebases.

The literal types (like "s" for std::string or seconds) are cute but at some point the STL was optional. I'm a little leery of embedding it directly in the language but hey I'm no expert.

[1]: http://en.wikipedia.org/wiki/C%2B%2B14

spott 4 days ago 1 reply      
I really like the direction C++ is moving in. I just really don't like how incredibly VERBOSE it is (though `auto` helps).
hit8run 4 days ago 0 replies      
And we have golang.
phkahler 4 days ago 1 reply      
I'm a little afraid the language will go down hill from here. Too many versions - a committee dedicated to creating new versions of the language standard is going to do exactly that. Much like has happened with OpenGL.
DeadClan 4 days ago 4 replies      
I'm assuming C++14 will have 1320 keywords and a bunch of weird operators to use so people can ignore it even more than it's being ignored.
Why Racket? Why Lisp?
404 points by Tomte  1 day ago   273 comments top 31
agentultra 1 day ago 2 replies      
Some practical features I enjoy in CL:

1. Conditions and restarts: As far as error handling in programs go this is the most rock-solid system I've encountered. You can tell the system which bits of code, called restarts, are able to handle a given error condition in your code. The nice thing about that is you can choose the appropriate restart based on what you know at a higher-level in the program and continue that computation without losing state and restarting from the beginning. This plays well with well structured programs because the rest of your system can continue running. Watching for conditions and signalling errors to invoke restarts... it's really much better than just returning an integer.

As a CL programmer using SLIME or any suitable IDE, this error system can throw up a list of appropriate restarts to handle an error it encounters. I can just choose one... or I can zoom through the backtrace, inspect objects, change values in instance slots, recompile code to fix the bug, and choose the "continue" restart... voila the computation continues, my system never stopped doing all of the other tasks it was in the middle of doing, and my original error was fixed and I didn't lose anything. That is really one of my favorite features.

2. CLOS -- it's CL's OO system. Completely optional. But it's very, very powerful. The notion of "class" is very different than the C++ sense of struct-with-vtable-to-function-pointers-with-implicit-reference-to-this. Specifically I enjoy parametric dispatch to generic functions. C++ has this but only to the implicit first argument, this. Whereas CLOS allows me to dispatch based on the types of all of the arguments. As a benign example:

    (defclass animal () ())    (defclass dog (animal) ())    (defgeneric make-sound (animal))    (defmethod make-sound ((animal animal))      (format t "..."))    (defmethod make-sound ((dog dog))      (format t "Bark!"))    (make-sound (make-instance 'animal))    (make-sound (make-instance 'dog))
Will print "..." and "Bark!" But the trivial example doesn't show that I can dispatch based on all of the arguments to a method:

    (defclass entity () ()) ;; some high-level data about entities in a video game    (defclass ship (entity) ()) ;; some ship-specific stuff... you get the idea.    (defclass bullet (entity) ())    ;; ... more code    (defmethod collide ((player ship) (bullet bullet))) ;; some collision-handling code for those types of entities...    (defmethod collide ((player ship) (enemy ship))) ;;; and so on...

    Ship::collide(const Bullet& bullet) {}    Ship::collide(const Ship& ship) {}
Where collide is a virtual function of the Entity class requiring all sub-classes to implement it. In the CLOS system a method is free from the association to a class and is only implemented for anyone who cares about colliding with other things.

The super-powerful thing about this though is that... I can redefine the class while the program is running. I can compile a new definition and all of the live instances in my running program will be updated. I don't have to stop my game. If I encounter an error in my collision code I can inspect the objects in the stack trace, recompile the new method, and continue without stopping.

3. Macros are awesome. They're like little mini-compilers and their usefulness is difficult to appreciate but beautiful to behold. For a good example look at [0] where baggers has implemented a Lisp-like language that actually compiles to an OpenGL shader program. Or read Let Over Lambda.

One of the most common complaint I hear about macros (and programmable programming languages in general) is that it opens the gate for every developer to build their own personal fiefdom and isolate themselves from other developers: ie -- create their own language that nobody else understands.

Examples like baggers' shader language demonstrate that it's not about creating a cambrian explosion of incompatible DSLs... it's about taming complexity; taking complex ideas and turning them into smaller, embedded programs. A CL programmer isn't satisfied writing their game in one language and then writing their shaders in another language. And then having to learn a third language for hooking them all up and running them. They embody those things using CL itself and leverage the powerful compiler under the floorboards that's right at their finger tips.

Need to read an alternate syntax from a language that died out decades ago but left no open source compilers about? Write a reader-macro that transforms it into lisp. Write a runtime in lisp to execute it. I've done it for little toy assemblers. It's lots of fun.

... this has turned into a long post. Sorry. I just miss some of the awesome features CL has when I work in other languages which is most of the time.

[0] https://www.youtube.com/watch?v=2Z4GfOUWEuA&list=PL2VAYZE_4w...

reikonomusha 1 day ago 5 replies      
I dislike this notion that Lisp (or Haskell or OCaml or ...) owe it to everyone else to explain and enunciate why it can be more productive to use Lisp.

"""Thats asking too much. If Lisp languages are so great, then it should be possible to summarize their benefits in concise, practical terms. If Lisp advocates refuse to do this, then we shouldnt be surprised when these languages remain stuck near the bottom of the charts."""

What?? Why? The problem is not and has never been communication of Lisp features. No one made a concise list of why C and Java are so great that people rushed to use them. Instead, they were pervasively used and taught in universities, and they are pervasively used in the development of most applications for e.g. Windows and Linux, and they are relatively simple languages (in theory) whose semantics most people "get". No wacko high order crap, no weight curried things, no arrows or morphisms or monads or macros.

Programmers of such languages don't owe the rest of the world anything. Everyone has a choice about what to use, and it's each individual programmer's responsibility to choose them wisely. There is plenty of material about Lisp and Scheme out there. Unfortunately, we are in this TL;DR culture where no one has the time to spend a few hours every week to learn something new, since somehow that's too big a risk on their precious time.

Now, for some comments:

1. Everything is an expression.

He says this is a boon, but it's also confusing for "expressions" which are side effectful. Too bad he did not talk about that, nor did he talk about how the expression-oriented way of thinking is really best for purely functional languages that allow for substitution semantics.

2. Every expression is either a single value or a list.

This is wrong, unless we devolve "single value" into the 1950's idea of an "atom". What about vectors or other literal composite representations of things? What about read-time things that aren't really lists or values?

3. Functional programming.

Functional programming is indeed great, but why don't we talk about how in Lisps, we don't get efficient functional programming? Lisp has tended to prefer non-functional ways of doing things because Lisp will allocate so much memory during functional programming tasks that for many objectives, FP is far to inefficient. Haskell solves this to some extent with things like efficient persistent structures and compilation algorithms such as loop fusion. Lisp doesn't really have any of this, and the data structures that do exist, many people don't know about or use.

4 and 5 don't really have to do with Lisp but particular implementations. That's fine I guess.

6. X-pressions.

What the hell is an X-pression?

7. Racket documentation tools.


8. Syntax transformations.

He made the same mistake as he so baroquely outlined at the start. What in the world are these "macros" and "syntax transformations" good for? You're just telling me they're more powerful C preprocessor macros that can call arbitrary functions. But I was taught that fancy CPP code is a Bad Idea, so boosting them is a Worse Idea.

9. New languages.

Same problem as 8. You say it's useful but you don't say why. Just that it's "easier".

10. Opportunities to participate.

Nothing to do with Lisp again.

* * *

Instead of all this glorifying of Lisp and etc, why don't we spend time increasing that library count from 2727 to 2728? Or do we need to go through an entire exercise about whether that time spent is worth it or not?

"""Rather, you arebecause a Lisp language offers you the chance to discover your potential as a programmer and a thinker, and thereby raise your expectations for what you can accomplish."""

You're repeating everyone else. Notice how difficult it is to convey such things without being hugely abstract and unhelpful? Why don't other programmers see this huge productivity benefit from these Lisp wizards in their day-to-day life? Where are the huge, useful applications? They all seem to be written in C or C++.

"""Its mind-bendingly great, and accessible to anyone with a mild curiosity about software. """

It is accessible to those who are intently curious about theoretical aspects of software development, especially abstraction, and who can take exercises which require mathematical reasoning. A "mild curiosity" in my experience with others will not suffice.

* * *

This post may sound somewhat cynical and negative, but Lisp enlightenment articles are almost as bad as Haskell monad tutorials. They're everywhere and by the end, still no one gets it. And I don't like the attitude that because a group G doesn't understand it, and group H does, that H owes it to G to spoonfeed the information. That's not the case.

bad_login 1 day ago 2 replies      
It seems most people here have never used (and not tried) racket.

I decided to use racket for my little sides projects, asreplacement for scala and clojure.

I choose it because it was clear for me i can't stand limitationsother language impose to me in way of style and boilerplate, theracket macro (aka syntax transformer) system is the most advancedi know to reduce the boilerplate to a minimum and so just writewhat i want to express. In facts i rarely write macro becausewriting a good macro demand you take care of errors syntax, i amlazy in the bad meaning of the term.

I choose it because it's dynamic typed and i get more convincedthat type go on your way most of the time (expect complexalgorithms)(i write little projects, so refactoring argument isout). It enable me to write code and eval it on the fly withgeiser (using enter! on the back), after eval the new function itest it in the repl, hack until the function meet the requirementcopy paste from repl and boom i get a unit test. Because it aseval and it will become handy one time in your programmer lifefor sure.

I choose it because of it's sexpr syntax, as a heavy user ofemacs i know that other syntax is a pity.

Also because it has (and i use):

1. llar parser (implemented through a macro).

2. A pattern matching nothing to envy scala or clojure deconstructs.

3. An optional type system.

4. A contract system.

What i find hard as a new comer (to racket, not as a programmeralready now scala, clojure, half of c++ :), php) is

1. The broadness of the features the language offer, whichfeature to use e.g.: class or generics.

2. The documentation is rich but lack of examples for the commoncases, so you need to read the doc of the function (sometime it'shuge).

3. Understanding how racket module works is quite hard and youhave the documentation, if you don't plan to play with the macroexpander (the stuff that run your macro) and some dynamicfeatures you don't really need to.

4. You need to 'register' the errortrace library if you want astacktrace, quite a surprising behaviours for me.

My opinionated conclusion:

Racket is the best language design i ever see, it's hard to learnbut make you feel learning an other language will just become tolearn a new sub-optimal syntax. Sadly the ecosystem is lackinglibraries and peoples and i am not helping in this way.

aaronbrethorst 1 day ago 3 replies      
From what I've seen out of the Clojure community over the past few years, it seems like they're far more likely (and able) to offer up concrete examples of how Clojure makes their businesses and products successful in a way that an imperative language could not. So, yay Clojure community, and boo on hand-wavy Lisp people.




na85 1 day ago 11 replies      
I sure hope the giant, hideous, obtrusive diamonds inserted into the text to denote a hyperlink doesn't catch on as a trend. It's a great way to break the flow of the text and irritate your readers.

As for the idea of Lisps, well, it sure seems neat. But I've literally never run across a situation where I needed my code to edit itself. I've never run across a situation where the lack of an everything-is-an-expression-is-a-list feature prevented me from doing what I wanted to do.

So I just don't really feel the need to get repetitive strain injuries in my pinky from reaching for the parentheses all the time.

jimbokun 1 day ago 3 replies      
If you took a Common Lisp programmer from the early to mid 90s in a time machine to today, very little about current programming languages would seem novel or an advance over what he or she was using then.

I think this is a reason for much of the smugness of Lisp programmers. Whatever features you think are new or cool or advanced about your programming language, Lisp probably got there first.

mrottenkolber 1 day ago 5 replies      
Can not resist...

This article is fairly misguided. I find it painful that everybody who writes about a Lisp offshoot (Scheme, Clojure, ...) ends up misrepresenting Common Lisp.

To sum up "Why Lisp?" from a CL perspective: CL has pretty much every feature of every programming language around, only that its better designed, implemented and generally more powerful. It's just a poweruser language. Its not just macros, sexps and lambdas. Its also number types, arrays, OOP, symbols, strings, structs, dynamic/lexical variables, lambda lists, multiple return values, on-line disassemble, exceptions, restarts, MOP, metacircular definition, great implementations, great libraries...... the list goes on and on... I surely forgot a ton of great stuff. TL;DR: CL got everything. And this "everything" is designed so well that its extensible and no CL programmer ever needs to doubt that any new feature can be implemented easily in CL.

To correct a few of the wrong statements of OP:

> WaitI love state and data mutation. Why would you take them away? Because theyre false friends.

CL is NOT particularily functional. Just because we know how to write good side-effect free code, doesn't mean its a functional language. (We jave SETF after all, failed to mention that aove).

> a syntax transformation in Racket can be far more sophisticated than the usual Common Lisp macro.

Outright wrong. The only reason Scheme has weird macro systems is because its a Lisp 1. CL is designed well (thus being a Lisp 2), and thats why its simple but ultimately more powerful macro system can work.

> A macro in Common Lisp is a function that runs at compile-time, accepting symbols as input and injecting them into a template to produce new code.

This is so wrong I had to write this comment. A macro in Common Lisp is a COMPILER, it accepts arguments and returns an SEXP. It is infinitely powerful, it can do EVERYTHING.

cturner 1 day ago 1 reply      
The top reason here could been written - lisp is more expressive. You can find ways to express an idea that make sense now, and which are readable. Macros is a different part of the same idea.


Maybe I'm doing it wrong, but a problem I've had with racket is as you begin to build larger projects, when something breaks it can be quite difficult to find out exactly where the break happened. When you compile Java or run Python, it's almost always immediately obvious what broke.

The way I got around this was to use a methodical TDD approach. Would be a shame if that turns out to be as good as it gets for lisp.

Something I haven't done yet but am interested to get to is attaching a repl console to a running process.

_delirium 1 day ago 0 replies      
The manual to this publishing system, discussing how its markup/programming language is implemented as a custom Racket language, is pretty interesting: http://mbutterick.github.io/pollen/doc/
wes-exp 1 day ago 1 reply      
Author is wrong about hygienic macros they are not more powerful. They are less powerful, and more complicated, in order to enforce safety. Whether this is preferable or not is a matter of debate.
ColinDabritz 1 day ago 1 reply      
A good list of some interesting 'day to day' benefits of Lisp. Maybe that is something that would appeal to beginners especially.

From my perspective Lisp is a powerful language because of its genesis in research. The question wasn't "How do we make a tool to make this hardware do what want?" but rather for a research goal.

If you want to read the actual original Lisp paper look up: Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I John McCarthy April 1960

Paul Graham covers it nicely in this essay, especially the "What made Lisp different" list about 1/3 inhttp://www.paulgraham.com/icad.html

Lisp has had expressiveness we're only recently seeing in popular mainstream languages now. It has to do with the design, the simplicity, and how Lisp expresses problems. I've often heard it described as "the language gets out of your way." That's why Lisp.

einhverfr 13 hours ago 1 reply      
I am learning Perl's FP features and really liking it, and teaching myself common lisp. I enjoyed the article quite a lot actually.

I find it is very hard to define functional programming for many people but this is what I have come to explain to people:

Functional programming means thinking in terms of mathematical functions in the f(x) sense. Once you get that basic promise, that for any given input you have a single correct output, then it transforms the whole way you think about and designing your software.

The better I get with lisp, the more everything else changes. I may have to try Racket.

michaelsbradley 1 day ago 0 replies      
RacketCon is being held in Saint Louis, Missouri, USA the day following the Strange Loop 2014 conference (also in Saint Louis):


I hope to see some of you there!

rodrigosetti 9 hours ago 0 replies      
Nice write-up. I really like Racket, but never had a chance to use it in a professional project so far.

By the way, Scribble (item 7) is an implementation of Literate Programming - a feature is some other languages too. In Haskell, for example, you can write programs in Latex with embedded code.

DCKing 1 day ago 5 replies      
Why Lisp? That is understood.

Why Racket? From an ignorant outsider's perspective, all Lisps seem to be more or less interchangeable when it comes to the language. They only differ in the details, and each seems to be about as difficult to learn as the other. Although this article does make somewhat of a case for specifically Racket, it seems to be a rather weak one - tools are nice and some language details are nice. But the same general arguments can be made for other Lisps, most notably Clojure. It seems to me that Clojure is a lot more practical: it has many good libraries in both Clojure and Java, it has some great tools, there's a lot of momentum, and it can be deployed everywhere (including the browser).

So, being an ignorant outsider, is there any reason the Lisp I should learn isn't Clojure?

colig 1 day ago 0 replies      
Does anyone else find it difficult to highlight things on this page? Specifically, 'kvetchery' which is found in the third paragraph.

I believe the author is the one responsible for the facelift of Racket's documentation. He may belittle his own lack of formal programming education but I am thankful for his design chops.

mapcar 1 day ago 1 reply      
> If Lisp languages are so great, then it should be possible to summarize their benefits in concise, practical terms.

His list is concise but man did he take a while to get to it!

Seriously though. The introduction was super relevant as I have wondered the exact same question about Lisp myself. What features make it so praise-worthy? Maybe X-expressions isn't a core feature for everyone to appreciate, but the fact that everything is an S-expression is an understated value. People complain about its syntax, but alternate versions (so many reincarnations of parentheses-less Lisps) have never caught on.

The thing is, Lisp is no longer unique in its feature set, and languages with more standard forms of syntax have incorporated some of its features. But it is uncommon to find all of these listed features in one language. In the domain of data analysis where I do most of my work, it still makes me sad that XLISP-STAT has been supplanted by other languages which leave the user wanting.

happywolf 1 day ago 2 replies      
Agree with some of the earlier comments: the diamond-shaped thingies inserted are really a nuisance and breaks the reading flow.
amirouche 1 day ago 1 reply      
I tried somewhat Pollen and it's kind of fantastic, the only thing is getting to work with a new project in a language that I don't know very well is difficult for me. That's why I started a similar project in Python, watch https://warehouse.python.org/project if you interested /azoufzouf/
picardo 1 day ago 0 replies      
Is it just me or is this page entirely blank? I poked through the source for quite a long time, but couldn't undo it. The text is there. There is something in the CSS that obscures it in Chrome. So annoying.
hyp0 1 day ago 1 reply      
Re 1. everything is an expression benefit, condition example:

C-like languages often have the ternary operator, cond?exp1:exp2, that is exactly this. I feel clever using it, but I consider it a hack, because it's (usually) less clear. A microcosm of lisp, clever but unclear.

theRhino 1 day ago 0 replies      
Not sure how closely you have read Siebel - your 1st few points are covered pretty comprehensively at the start of his book
sanatgersappa 1 day ago 0 replies      
My personal experience with Clojure has been that it 'bends' the brain - in a good way, and it forever changes the way you program. It is extremely difficult to go back to the style of coding I did before my exposure to Clojure. I guess other Lisps would provide a similar experience.
dschiptsov 1 day ago 0 replies      
"Clarity is an evidence" as the saying goes. This post only proves its correctness.)

The distinct feature of Lisps and good lispers is clarity of thought and conscience of writing.

alvatar 1 day ago 2 replies      
Many of the last items in the list should be in the category "Scheme". Racket is a dialect from Scheme, but it still is a Scheme. The syntax-case macro transformations are available in most Scheme systems.
TheMagicHorsey 1 day ago 1 reply      
Why does Racket perform so slowly on benchmarks compared to Clojure and SBCL?
guilloche 1 day ago 1 reply      
When visited with w3m I got spaces breaking words frequently.Is there any justification to use complex html to control intra-word spacing for a web page?
CMCDragonkai 1 day ago 0 replies      
Many of the reasons you wrote are the same that got me attracted to Elixir. That and of course erlang interop and OTP.
kazinator 1 day ago 0 replies      
Check it out. For five years I have been developing a tool called TXR. It's a "Unixy" data munging language that is ideally suited for programmers who know something about Lisp and would like to move away from reaching for the traditional stand-bys like awk, sed, perl, ...

You do not have to know any Lisp to do basic things in TXR, like extracting data (in fairly complicated ways) and reformatting it, but the power is there to tap into.

In TXR's embedded Lisp dialect, ("TXR Lisp"), you can express yourself in ways that can resemble Common Lisp, Racket or Clojure.

You can see a glimpse of this in this Rosetta Code task, which is solved in three ways that are almost expression-for-expression translations of the CL, Racket and Clojure solutions:


Or here, with syntax coloring:


If you closely compare the original solutions, you will see that certain things are done more glibly in TXR Lisp.

qewrffewqwfqew 1 day ago 1 reply      
That's some pretty ugly text for a site called 'practical typography'.
jstoja 1 day ago 2 replies      
Please....text-align: justify;...
The Strange and Curious Tale of the Last True Hermit
359 points by randomwalker  1 day ago   83 comments top 26
grownseed 1 day ago 5 replies      
Many, many times have I considered isolating myself, separating myself from the seemingly vacuous concerns of a society riddled with senseless traditions, layers upon layers of societal band-aids and pointless struggles over ridiculously subjective arguments.

I spent most of my life being disgusted by the frivolity of most people's desires and qualms, and for this reason, I feel I deeply understand why Chris Knight did what he did. No reason, no justification, no particular aim, just life.

While I still catch myself wishing for such a life, I realized I could not blame or reject what I do not actively participate in. Furthermore, I came to the conclusion, possibly wrongly, that a life worth living is a life worth sharing, that society will always be able to offer you more than you can offer it.

I now believe that the solution is not to reject society, nor be tied by its requirements or norms, but rather behave as a free agent, with independence, compassion and mental fortitude.

Law, Economy, Politics, Religion, Science, Technology, ... are, in my opinion, mere relics and artifacts of thousands of years of civilization, localized attempts at guiding the seemingly mis-guided, while becoming eventually meaningless in the grand scheme of things.

These civilized relics are not necessarily bad, but as with anything else attachment becomes the issue. While becoming a hermit is possibly the quickest way of severing those ties, attachment is the burden of the mind, not of society at large. Isolation diminishes, or even wipes attachment issues altogether, but it does not resolve them.

This might come across as preachy, though it certainly isn't my intention, I simply wanted to share my view with anybody who, like I used to, wishes for isolation as a remedy.

soneca 1 day ago 4 replies      
"I did examine myself," he said. "Solitude did increase my perception. But here's the tricky thingwhen I applied my increased perception to myself, I lost my identity. With no audience, no one to perform for, I was just there. There was no need to define myself; I became irrelevant. The moon was the minute hand, the seasons the hour hand. I didn't even have a name. I never felt lonely. To put it romantically: I was completely free."

This part resonated a lot to me. I consider self-awareness one of my qualities. But I too feel like the more I try and understand myself, the more distanced of the world I am. If I micro-analyze every reaction I have, I miss the point to connect to another person. I take myself out of society.

I found out that being defined by another person is a good thing for me. Particurlaly by people I love. I want to naturally be the person that made people I love love me.

ithought 1 day ago 0 replies      
I marvel out how perfect this story is in various ways. No real resolution to it, no motive, no discernible point. The unfolding of it all and the brutally abrupt ending; "We are not friends", seemed predictable shocking and sad at the same time.

Interestingly, the journalist has an upcoming movie where he's played by Jonah Hill. A fugitive murderer had used his name as an alias and through that, he'd developed a relationship with him and interviewed him after the person was convicted.

grecy 1 day ago 2 replies      
> He was never happy in his youthnot in high school, not with a job, not being around other people. Then he discovered his camp in the woods. "I found a place where I was content," he said. His own perfect spot. The only place in the world he felt at peace.

This resonates very strongly with me personally. So much so, I traveled to Alaska and hiked into "The Magic Bus" of Chris McCandless/Into The Wild fame [1]. From there, I spent 2 years driving to Argentina, sleeping out in my tent as often as possible. I'd often go a week without seeing or talking to another person, two weeks when I found somewhere remote enough.

Since then I've moved to the Yukon, where I've met some very interesting characters. One guy, in Dawson City, lives in a cave across the Yukon River from town. He has a second cave full of chickens, and he sells the eggs in town to make enough money to pay for food/beer. He boats across the river in summer and walks across the river for 7 months of the year.

I once again feel the pull, and I'm heavily planning my next trip - 2 years around Africa, hopefully getting as remote as possible. With luck, that will lead into a 2 year Europe->SE Asia trip, once again camping and hiking as much as possible.

[1] http://theroadchoseme.com/the-magic-bus

bmj 1 day ago 0 replies      
Reminds me a bit of the story of the Russian family that lived in a remote section of the Siberian taiga:


Granted, they weren't alone (it was a family), but they truly lived a hermit's existence, even when they were discovered by geologists.

hyp0 1 day ago 3 replies      

  The moon was the minute hand,  the seasons the hour hand.
Guy can write. Once his weekly obligation ends, he could make it work with a source of income as a writer, using a smartphone, bluetooth keyboard, solar panel, and get near a cell phone tower. Without rent and utils, he needs much less money than usual. Order groceries etc online, so he can remain isolated (and of course hunt/fish).

Or write a book, invest, live on interest in the woods.

He wouldn't really like having to write, but he admires good writing, and if it would grant contentment...

See also, coding in the woodshttp://www.atariarchives.org/deli/cottage_computer_programmi...

GotAnyMegadeth 1 day ago 0 replies      
You could argue that he missed out on a lot of the amazing things about modern life, you could argue that we are missing out on many of the things of a solitary life in the forest. Either way, I'm glad that he didn't miss out on one of the most important things about modern life: Pokmon.
wglb 1 day ago 1 reply      
A remarkable article.

The author of this has written a number of other spellbinding articles: http://www.gq.com/contributors/michael-finkel

personlurking 1 day ago 2 replies      
He may have lived in an uninhabited place but it seems, considering the amount and variety of stuff he stole, his mind was almost constantly inhabited by the modern world.
kingkawn 1 day ago 0 replies      
Kickstart an LLC that employs him to maintain his camping ground alone, a privately funded forest ranger. Satisfy the terms of the court decision while allowing him to return to his place and live in peace with supplies provided at a drop site.
riemannzeta 1 day ago 1 reply      
This guy is more worthy of admiration and emulation:


lazyeye 1 day ago 1 reply      
For anyone for whom this story resonated, this book is well worth a read:-

An Island to Oneselfhttp://www.amazon.com/An-Island-Oneself-Tom-Neale/dp/0918024...

More info on Tom Neale:-http://en.wikipedia.org/wiki/Tom_Neale

sixQuarks 1 day ago 1 reply      
fascinating read. With 7 billion people in this world, it never ceases to amaze me the different types of experiences humans have had.

I also just finished listening to the latest "Hardcore History" podcast regarding WWI. Holy shit, what crazy things humans have done/experienced.

arjn 1 day ago 1 reply      
Very nice article and writing - and a great subject.

To wander the woods all day, read when you want,

To be free of all connections, to not even need a name.There is something to it.

Oh ..and Rudyard Kipling ... wonderful.

keithpeter 1 day ago 0 replies      
OP reminded me of this


And this


Fugue? Small scale stroke? Or just a need to quieten the brain? Has this man had a neurological examination of any kind?

suprgeek 19 hours ago 0 replies      
If you want to put faces to names mentioned:http://www.pressherald.com/2013/04/09/north-pond-hermit-susp...
comrade1 1 day ago 1 reply      
Did he not have a sex drive? I just can't imagine an existence like that, without sex. I'm about 1/2 through the article.
daveslash 1 day ago 0 replies      
Being someone who grew up in Maine, not too far from there, spending hours upon hours as a young child, alone exploring acres and square-miles of woods - what struck me the _most_ was "whoah, the boogie man WAS real all those years...."
ilamont 1 day ago 3 replies      
Did this remind anyone else of the Satoshi Nakamoto outing (https://news.ycombinator.com/item?id=7353283)? Journalist befriends recluse, turns it into a magazine story.
gre 1 day ago 0 replies      
Chris Knight was the name of Val Kilmer's character in Real Genius.
coldcode 1 day ago 1 reply      
There are many times in life where you wonder if you would be better living alone outside of the regular world. This guy actually did it. I would go insane if I was alone for more than a few weeks.
zem 1 day ago 0 replies      
as a kipling fan, he was almost certain to have read "the miracle of purun bhagat" [http://www.hermitary.com/literature/kipling.html]. i would have loved to see his opinion of it.
pthreads 1 day ago 0 replies      
Who is to say he is the last true hermit? There could be several in this world. We just don't know.
joeyspn 1 day ago 2 replies      
Why is that article dated on September 2014?
yuvalo 1 day ago 0 replies      
"You speak like a book, one inmate teased."
Fish vs. Fish in Street Fighter II
367 points by cyberfart  2 days ago   68 comments top 29
Magi604 2 days ago 3 replies      
If you like to watch computer-controlled 2d fighting characters with actual decent AI (most of the time) squaring off against each other, check out http://www.saltybet.com/ .

There are over 5000 characters in the database, and it runs 24 hours a day. The matches can get really amusing sometimes.

tormeh 2 days ago 5 replies      
Can the fish see the game? What if the fish were rewarded for winning? Can we train fish to play street fighter? How about rats?
minimaxir 2 days ago 2 replies      
Background: This is the logical conclusion of Fish Plays Pokemon (http://motherboard.vice.com/read/an-exclusive-interview-with...), which was a hackathon project and a play on Twitch Plays Pokemon.
SchizoDuckie 2 days ago 0 replies      
And as a finishing touch, man made 2 fish fight eachother on Street Fighter and streamed it to the world in real time.

God I love the internet :D

kevin_thibedeau 2 days ago 1 reply      
He needs to randomize the 1P/2P assignment because Aquarius seems to prefer being on the right side of the tank and gets an unfair advantage as 1P.
nsxwolf 2 days ago 2 replies      
A lot of engineering effort to watch Balrog jab and Blanka duck forever.

Fish are bad at playing Street Fighter II. I already intuitively knew this.

tinco 2 days ago 0 replies      
Stream seems to be down, here's what was on: https://www.youtube.com/watch?v=NHrRksz-XLI
Eiriksmal 2 days ago 0 replies      
Soooooo much more engaging than the Fish Plays Pokemon the creator links to. I explained it to a coworker (...in marketing) and couldn't help but giggle at every other sentence in my explanation. "So the fish swim around in that virtual grid, see, and that triggers button presses in the fighting game." Sweet action, as the kids say.
w-ll 2 days ago 0 replies      
Well given that its Street Fighter my best strategy was to always just mash random buttons.

I do wonder if he choose the fish at random or tried to find more active fishies.

eklavya 2 days ago 2 replies      
I don't get it, can someone please tell what is going on?
level09 2 days ago 0 replies      
Humans are pattern recognition animals, we like to look at anything random and extract meaningful patterns from it.

I see this game as a clear example of that, where (random) fish movement is fed to a computer game and translated into game play (pattern). I fail though to conclude anything particularly interesting if one fish won the game :)

Natsu 2 days ago 1 reply      
Hypnotic. Aquarius can't seem to lose.
golergka 1 day ago 0 replies      
What I'd really want to see is two monkeys playing the game against each other for the treat. If given some time, I believe that they can get better than most humans.
pawn 1 day ago 0 replies      
I had a dream one time when I was a kid that I trained a puppy to play Street Fighter 2. I'd never imagine it would ever be linked to anything this close to reality.
amatera 1 day ago 0 replies      
If one of the fish managed to make an Hadoken it should get a job at Konami (or at least a nice place on an "Konami"-Desk)
coldcode 2 days ago 2 replies      
I wonder now if one could train chimpanzees to play the game successfully.
zeeshanm 1 day ago 0 replies      
Would be interesting to observe if there may happen to be some pattern in fish movements as more data is collected over time.
aaronm14 2 days ago 3 replies      
Anyone know if these guys making these games are using some kind of library for the image processing or what? Seems pretty complicated to do
sagnew 2 days ago 1 reply      
Haha this is awesome! First a couple of HackNY fellows make Fish Plays Pokemon, now this! I can't wait for what fish related fun comes next.
spiritplumber 2 days ago 0 replies      
what's missing from "fish plays game" is some sort of reward for the fish. I wonder how clever they can get.
louhike 2 days ago 0 replies      
These fishes are more entertaining than the Pokemon game which was played through the chat room.
thestonefox 1 day ago 0 replies      
what about the parody of http://twitch.tv/garlicplays
antidamage 2 days ago 0 replies      
I was actually hoping for a writeup on the differences between regular fish and fish in SFII, but this is also good.

Next we need kittens versus fish. Kittens are much more active.

lowlevel 2 days ago 0 replies      
This is best thing I've seen all year.
grej 2 days ago 0 replies      
If I could upvote you 10 times for the most ridiculously useless (but cool) thing I've seen on HN, I would. You win HN for today sir.
andersthue 2 days ago 0 replies      
This is the answer to life, the univers and everything!
gzur 2 days ago 2 replies      
I thought I was going to see Phil Fish fight himself, somehow.
codr 1 day ago 1 reply      
Just gotta say this is a strange outcome of our technological developments.. I mean think of the energy that was spent making this work - it could've been done doing something.. I dunno fucking useful?!

It's almost as bad as watching two "grown-ups" play Street Fighter lol.

Using Google Earth to Find an ISIS Training Camp
366 points by mmayberry  7 hours ago   71 comments top 18
hemancuso 5 hours ago 3 replies      
Anyone who is impressed by this should seriously check out Andrew Sullivan's view from your window contest. Most weeks a reader submits a photo from their window, literally anywhere in the world. And people track it down with very similar techniques, to the exact window. And a lot of the contest photos offer much less to go off of than this [namely, only 1 photo, low res, country/context unspecified].

Here is the winners archive.


Some of photos aren't too crazy or offer a landmark that is recognizable if you'd seen it before. But most of them offer very little in terms of knowing where to start unless you've got a huge body of contextual knowledge you can draw on.

A couple ones that I had absolutely no idea where to start with:


I imagine the CIA/NSA has a crack team of a couple dozen people doing this exact job.

e98cuenc 6 hours ago 2 replies      
It makes me super proud that he used Panoramio, I site I created 9 years ago. Nowadays with the prevalence of Google Street View is less useful than it used to be for this kind of stuff, but there are still places that the GSV guys have not (yet) covered.
joelrunyon 6 hours ago 2 replies      
Interesting that as it's getting easier & easier for "normal" people to do stuff like this - our media is getting worse and worse at it. They've essentially given up on reporting or investigating anything original and simply spew back "opinions", "tweets" or PR releases.
mmayberry 7 hours ago 2 replies      
I'm sure the government is on this as well but its pretty incredible what a citizen journalist can do from his home computer with a few basic web sites. Some of the other projects that he has worked on (finding a russian training camp, authenticating an Egyptian revolution movie, etc..) are worth a read as well
jebus989 7 hours ago 1 reply      
I like this, but probably worth mentioning that this isn't a covert group so it seems somewhat akin to reporting where the Donetsk separatists are.
DrSayre 7 hours ago 1 reply      
This is pretty awesome! I wanted to do something similar with the video of James Foley, but I figured there was people smarter than me already doing that and I really didn't want to watch that video.
qstyk 3 hours ago 0 replies      
What an odd introduction: "Have you ever wondered what it would be like to go through training as an ISIS terrorist? Or better yet, where you would go to find such advanced training?"


misiti3780 5 hours ago 0 replies      
I read an interesting article a while ago about who they have tried (unsuccessfully) to track


from land artifacts. I supposed it is a bit more difficult as google maps didnt make it to Waziristan yet.

It sort of reminds me of this article from a while back


carlob 7 hours ago 1 reply      
Honest question: what's the advantage of using FlashEarth over Bing maps (which appears to be the source of the data)?
moskie 5 hours ago 2 replies      
This is cool and all, but I can't help but be reminded of the hunt for Boston Marathon bombers. Sure, maybe the author's heart is in the right place, but Random Person On The Internet could easily have gotten something wrong, that seems intuitively correct to the author and a general audience (us), but is in fact incorrect. Which makes me inclined to instead leave stuff like this up to the professionals. (appeal to authority, i know, but... getting this stuff right is important.)
bmmayer1 7 hours ago 0 replies      
Way to crowdsource ours and Iraq's military intelligence! I'm sure someone will find this useful.
magicalist 6 hours ago 0 replies      
Wait, so is the "new construction" around the tower the training camp? The article doesn't seem to say explicitly. Or is this more finding where they do training marches?
jqm 2 hours ago 0 replies      
Western governments didn't know this already?

I have a hard time believing they didn't. There are (in my opinion) strategic reasons ISIS was allowed to get as far as it did. And reasons they were allowed to appropriate large amounts of cash and US weaponry.

notastartup 6 hours ago 0 replies      
Absolutely amazing investigative work. This is very good intelligence from using everyday resources and a keen eye from the determined.
justplay 7 hours ago 0 replies      
this man deserve a huge applauds. He is our sherlock holmes.
IBCNU 7 hours ago 0 replies      
Nice work.
kelukelugames 7 hours ago 1 reply      

What are the next steps?

elleferrer 7 hours ago 3 replies      
We need more bellingcats' - this was a great find - can we expect a planned airstrike in this location any time soon?
Maps of the Roman Empire
340 points by kcovia  3 days ago   91 comments top 21
peckrob 3 days ago 8 replies      
The Roman Kingdom/Republic/Empire is a really fascinating period of ancient history. What's really mindblowing is when you realize that the Eastern (Byzantine) Empire didn't fall until 1453.

If you're looking for interesting listening on Rome, I highly recommend Dan Carlin's Hardcore History Podcast. The series Death Throes of the Republic focuses on the period where Rome transformed from a Republic to an Empire (maps 13-16). I just finished listening to that a few weeks ago, and it was amazing. Additionally, Thor's Hammer discusses what happened in Europe when Rome fell. There's also an older series on the Punic wars, but I haven't had a chance to listen to that one yet.

_random_ 3 days ago 4 replies      
"Traveling around the empire was excruciatingly slow"

"The researchers estimate that it took 7 weeks to travel from Constantinople (at the eastern end of the empire) to London (in the far west)."

What a funny little empire with nice roads :). Check this empire:

"And say, the governor went to Yakutsk, not months, for three years. The first year we reach Tobolsk. The second - to Irkutsk. And in the third year of riding on horseback to the upper reaches of the Lena and floated with water to Yakutsk."



rullopat 2 days ago 3 replies      
I can easily say that, if we have civilization, we can thank the Romans. Besides many things that they invented or "just" improved there were:

- Aqueducts: http://en.wikipedia.org/wiki/Roman_aqueduct- Roads: http://en.wikipedia.org/wiki/Roman_roads

In Italy, the SS1 (Strada Statale 1, that means, State Road #1), is the "evolution" of the Via Aurelia, built by Romans in the year 241 BC: http://en.wikipedia.org/wiki/Via_Aurelia

But then the Barbarians from Northern Europe came...

laichzeit0 2 days ago 0 replies      
If you're interested in this type of thing, be sure to check out the Barrington Atlas of the Greek and Roman World [1]. I have a copy, and while it is expensive, it is simple _amazing_. I read Caesar's Gallic Wars again and followed the movements of the army using that book and it was an intellectual orgasm of note. I'll never read a military history book again without a detailed map, it completely changes the appreciation of it.

[1] http://en.wikipedia.org/wiki/Barrington_Atlas_of_the_Greek_a...

dmix 2 days ago 0 replies      
For #9, if you'd like to see the tactical differences between Phalanx vs Maniple battle formations, someone made a game simulation:


joeyspn 3 days ago 2 replies      
Nice one, but I prefer this gif about the decadence of the Spanish Empire... the end is quite funny.


yincrash 3 days ago 1 reply      
Hank Green and friends produced a lovely set of videos that quickly and humorously go through the basics of the Roman Empire (among other things). It's part of a playlist on the Crash Course YouTube channel on World History.


mcguire 1 day ago 0 replies      
It's almost entirely unrelated, but if anyone's interested I would like to plug my current favorite history book: Phillip Sabin's Lost Battles: Reconstructing the Great Clashes of the Ancient World. It uses a simple tactical (board) wargame system to explore ancient battles including several from the rise of the Roman Republic and Empire.
jamesash 2 days ago 0 replies      
Listening to the audiobook of The Gallic Wars by Julius Caesar is rich in detail and really grabs you by the throat. The classically trained narrator is superb. https://www.youtube.com/watch?v=snft290-FRc&list=PLpO7W_VntC...
chris_mahan 3 days ago 1 reply      
Error on the legend on the map of the Rise of Constantine (section 31). The campaign against Maxentius should read 312, not 212.
matthewbauer 3 days ago 0 replies      
If you're interested in ancient maps, I've found that Geacron[1] very cool. It allows you to see a world map from any year since 3000 BC (of course with varying accuracy).

[1]: http://geacron.com/home-en/

nsajko 2 days ago 0 replies      
The map cdn1.vox-cdn.com/assets/4822180/roman_civil_war.jpg seems to have mixed up labels for Roman Provinces and Client Kingdoms.I feel that about half instances of the word barbaric shouldn't have been used in the article.Also I don't see why unverifiable claims like 'Charlemagne persuaded the Pope to crown him' had to be used.Nice, informative work besides that.
m_mueller 2 days ago 0 replies      
Lately I've become somewhat addicted to Dan Carlin's Hardcore History podcasts. His episodes about the Punic wars can be purchased here: http://dancarlin.com/dccart/index.php?main_page=index&cPath=...
MrBra 3 days ago 0 replies      
Excellent and neatly packaged source of information.It would be great to have it translated into other languages.. I know so many people who would love to access this content but do not speak english..How should I proceed to offer myself for voluntary translation?
markbnj 2 days ago 0 replies      
A great page and very interesting light reading on the topic, however a rather loose definition of 'map' is in play.
keyle 3 days ago 0 replies      
I wish we had such course in school. I may have paid more attention! Fantastic use of contextual imagery with digestible content.
therealdrag0 3 days ago 1 reply      
I'm listening to an audiobook of The History of the Decline and Fall of the Roman Empire, so this'll be a great companion.
NickWarner775 3 days ago 0 replies      
Very interested. shows an easy to understand history lesson with great visuals.
sspiff 3 days ago 3 replies      
A great summary, but I find it annoying people always only mention the Eastern Roman Empire in passing or as a footnote. It was a continuation of the Roman Empire in every way.

They were called "the Roman empire" or "romans" by themselves and the rest of the world. And they lasted another 1000 years, many of those as the dominant regional power, bringing the total lifetime of the Roman state up to a staggering 2181 years.

pi-err 3 days ago 9 replies      
Those maps are good - yet they don't explain the Roman Empire.

It's actually tricky to explain the Empire. Over 7 centuries without _any_ significant technological progress. A political regime thatis as archaic as its borders are vast - and it drove Europe's political agenda up until the 19th century.

It's possibly the most successful and devastating face of the plutocracy. When the Empire faded away in the 4-7th century, contemporary archaelogy now thinks that people's life actually improved. The tax and ideological burden of the roman overhead was a toll on entire societies.

jebblue 3 days ago 1 reply      
I looked at the map overlaying the US to contrast the relative size of the Roman Empire. I think it might be shown a bit bigger than it was. We vacationed in France and Rome and took a train overnight between them. That train had a ton of stops. I'm pretty sure that even without the stops, it would take longer than a night to travel by rail from approximately Montana (where France would roughly be) to the south-eastern Gulf Coast region (Italy).

Edit: Checking Google maps and more maps on the OP page I think I mis-calculated Italy's position in the purple blob, it would probably be around where Kansas is.

Steve Ballmer steps down as board member at Microsoft
342 points by jtoeman  3 days ago   137 comments top 32
kjjw 3 days ago 7 replies      
Thank you for all your cloud first, mobile first. I think that cloud first, mobile first, but that cloud first, mobile first. If only cloud first, mobile first,then cloud first, mobile first. But I digress, because what is really important here is our cloud first, mobile first strategy, which will require much cloud first, mobile first along with cloud first, mobile first.

I reckon Ballmer's PR drone won this one though. More words.

biot 3 days ago 3 replies      
The level of snark and juvenile responses in this thread is amazing. Technically, all Ballmer had to write was "I resign my board position effective immediately" and Nadella could have responded with "Acknowledged". But the letters aren't meant for us. They are meant for investors who may cast doubt onto Microsoft's future with such a key member of the board stepping down. They also serve to reinforce the company's new direction of mobile and cloud. Perhaps the letters are worded awkwardly, but let's not devolve HN into a Reddit joke thread.
k-mcgrady 3 days ago 6 replies      
>> I bleed Microsoft have for 34 years and I always will.

No matter what you think about Ballmer you have to admit his passion for Microsoft is unrivalled.

tobinharris 3 days ago 2 replies      

Steve Ballmer

    Bye. I'm outta here.     People to teach. Basketball to watch. You know.    I'll write postcards and stuff.    Love you. SB        P.S - I've got all the shares.         
Satya Nadella

    Whatever. I've also got loads of shares too.     Keep your postcards.     L8r amigo.

barkingcat 3 days ago 3 replies      
two pr teams talking to each other.

I would have written:

Steve to Satya: I love Microsoft, and I feel like I can trust you to take on the world for me. Microsoft must live. Here, take some seasons tickets for the Clippers.

Satya to Steve: Hey dude, I need to make Microsoft faster, leaner, and stronger. I'm glad I passed the 1st date test with you and the rest of the board. I'll take those seasons tickets now.

xnull 3 days ago 1 reply      
Nobody actually communicates like that, in terms of company slogans like cloud-first mobile-first and describing each other as having boldness and innovation. Not even CEOs.

This is a crafted communication targeting information to Microsoft employees and investors. It is not a 'leaked memo'.

I've heard it said that Ballmer's retirement had much more to do with strategic board shuffling to prevent predatory dividend dumping from the vulture capitol firm ValueAct Capitol.

jusben1369 3 days ago 1 reply      
It's very difficult for the new CEO and old CEO to be on the board together for 100+ reasons. As stated this comes at the 6 month mark. I'm sure this was all part of a carefully crafted calendar going back to the transition.
sargun 3 days ago 1 reply      
It's amazing to see what Ballmer stepping down from Microsoft has done. Microsoft's stock has outperformed Google's in the past year: https://www.google.com/finance?chdnp=1&chfdeh=0&chdet=140847..., msft&ntsp=0&ei=qJbzU7D4JvLLiQLNuYCACg
kelukelugames 3 days ago 5 replies      
Five years ago I joined Microsoft. I have been neutral to pro-Ballmer the whole time, but this chart explains why many people were unhappy with him.


kordless 3 days ago 1 reply      
Dear Satya,

Sorry I forgot to give you the three envelopes.



georgeecollins 3 days ago 1 reply      
For those who don't speak corporate:"Under your leadership, we created an incredible foundation that we continue to build on and Microsoft will thrive in the mobile-first, cloud-first world." = your plan failed and here is what we are going to do now instead
mark_l_watson 3 days ago 0 replies      
Healthy thing for him to do. People should have two or three distinct careers, in my opinion, in their lives. I hope he has a blast owning the Clippers and teaching.

Off topic, but: I have been a bit negative on Microsoft since NT, which I liked and helped me get work done. However, I like their direction with Office 365 for all devices and their high end Surface Pro 3.

mark-r 3 days ago 3 replies      
Anybody struck by the number of times the word "bold" was used? What do you suppose is the hidden meaning behind that?
larrydag 3 days ago 2 replies      
"success requires moving to monetization through enterprise subscriptions, hardware gross margins, and advertising revenues"

That's a big step for Microsoft. My opinion is that they are late on subscriptions and ad revenues.

apparentlykid 3 days ago 0 replies      
"I continue to love discussing the companys future. I love trying new products and sending feedback. I love reading about what is going on at the company. Count on me to keep ideas and inputs flowing."

This describes Ballmer's 34 years at the company. I used to think highly (or high-er) of him but it can't be clearer to me that him being appointed CEO was the worst decision in the history of msft, leading to the lost decade. I don't think he has any idea what he was doing - listen to his recent interview on Bloomberg.

jlebar 3 days ago 2 replies      
Boldness aside, this sentence struck me:

> I have confidence in our approach of mobile-first, cloud-> first, and in our primary innovation emphasis on platforms > and productivity and the building of capability in devices > and services as core business drivers.

That's a lot to have confidence in. Is this tangled web of nested lists Microsoft's idea of "focus"? cf. Apple, Google, and Amazon's mission statements.

tdicola 3 days ago 1 reply      
I'm surprised how short and to the point Satya's letter is to Steve. You would think in the 20+ years they worked together he would relate some kind of interesting or personal story. Instead it's pretty terse and reads like a termination letter. I wonder if it was really Steve's choice to step down off the board.
vxNsr 3 days ago 1 reply      
A lot of people here are calling most of the letter marketing speak, that may be true, but Satya has been talking about mobile-first cloud-based since he became CEO, like I haven't seen him do a single interview or public appearance where he doesn't mention at least one of the two things.
dserban 2 days ago 0 replies      
What is with this trend of e-mail correspondence between high-level people at big companies being available to the general public?
paul_f 3 days ago 0 replies      
Has any other corporate CEO generated more profits during his watch than Steve Ballmer? Not sure if this true but I suspect it might be.
jaoued 2 days ago 0 replies      
So funny Cloud first, Mobile first... Henry Mintzberg would say that this is an inward focus statement telling and reminding MS employees what their focus should be. Bottom line : no many great mobile apps on MS devices...
tyler_ball 3 days ago 1 reply      
He's got bigger things to do: http://instagram.com/p/r2jjTdhQFx/
AVTizzle 3 days ago 0 replies      
Watch as MSFT's stock jumps.
at-fates-hands 3 days ago 0 replies      
This sounds a lot like a pro athlete that realizes its time to really retire and stop chasing his dreams from 10 years ago when he was able to play a really high level.
make3 3 days ago 1 reply      
boldness bold boldness bold boldd bold.. ness.
bagrow 3 days ago 2 replies      
Clippers! Clippers! Clippers!
pkozlowski_os 3 days ago 0 replies      
Bla, bla, bal... How about showing us some great products instead?
blueskin_ 2 days ago 0 replies      
Microsoft is a spent force these days. Yes, they missed the opportunity to jump onto phones, but destroying their entire business and alienating all their customers is a complete overreaction.

Shame though, I liked Windows before they tried to slap the UI from a mobile phone onto it.

UVB-76 3 days ago 1 reply      
How out of touch does a corporation have to be to announce the resignation of a board member in this manner?
foxhill 3 days ago 0 replies      
some people are born without the ability to walk.

others, are born without the gift of hearing.

i was born with an incredibly low "cringe" threshold.

reading this "exchange" almost put me in a coma.

dwelch2344 3 days ago 1 reply      
"Mobile-first, cloud-first"... I've used their cloud and even our .NET fanboys voted it off the island at our shop.

And mobile first? Do they even have a mobile offering? I mean, sure, the Slate is kind of cool. But doesn't your company need marketshare to say that you're "mobile-first"?

jere 3 days ago 0 replies      
You know those extensions that replace 'cloud' with 'butt'? It might be worthwhile to replace the entire phrase 'mobile-first, cloud-first world' with 'butt':

>In the butt, software development is a key skill...

>Under your leadership, we created an incredible foundation that we continue to build on and Microsoft will thrive in the butt.

YouTab: Automatically get chords for music
344 points by yoodit  2 days ago   88 comments top 32
yoodit 2 days ago 13 replies      

I've been hard at work on a project that I would like to share with you. It's called YouTab and its what I believe is a great way to sync lyrics and chords with music. The smart guys I work with use a nifty algorithm to "listen" to the music and in a lot of cases it does a really good job in getting the chords. But since technology has its limits there's an editor application that lets you fix what is wrong.

I am hoping that this will develop into a useful resource for musicians and music lovers and I'd love to hear what you think about it and get ideas as to what you might like to see next.

Thank you for taking the time to read this.

Jemaclus 2 days ago 0 replies      
This is really nice. There are a number of songs whose chords I can't find, and this one came up with (at the very least) a starting point for figuring it out. I like how it tracks the beat and shows the waveform, and I especially like having the video play in the bottom right so I can watch as I play.

Very cool. The only nitpick is a copy tweak. Throughout the app the app refers to itself as "us" or "our" ("Working our magic") and then almost immediately after as "me" ("It takes me about 30 seconds.") You should consider unifying the pronouns so that either you're always using first person, or you're always using the royal "we".

Otherwise, this is pretty rad. I can see myself using this to practice some new songs that come out.

Hytosys 2 days ago 0 replies      
Both this and Chordify are really awesome endeavors! However, I find them both to be erratic in accuracy to the same degree. Many times, a major in a simple I-IV-V pattern will turn into a minor, or vice versa, or a simple major will excitedly be read as a major 7th. It must be a huge pain in the ass trying to pluck out these harmonics and to accommodate for all sorts of wacky instruments, so I'll let it slide! Both services are tremendous if only for getting the initial framework for a song and figuring out some of the incorrect chords yourself.

Does YouTab have a "confidence" rating for each chord? I don't know if it'd be the best UX to include that number for each chord (and maybe even alternate chord suggestions), but there are times when I'm simply playing along with the song incorrectly and it takes me a couple amateur minutes to correct the one chord that Chordify got wrong.

Great stuff, anyway!

abakker 2 days ago 3 replies      
I'm pretty impressed with this - I purposely fed it a song I thought would kill it ("Fuzz Universe" By Paul Gilbert) - It did an impressive job of capturing many of the underlying chords, while ignoring the lead lines over the top. I notice that it is not really great at capturing very fast chord changes, an has some trouble with varying time signatures, but great first effort. It would be pretty cool if you could upload your own MP3 to it, and get a result back - that way you could generate the output off a recording of yourself to distribute to bandmates.

Edit: Later, that song did kill it, as the changes got faster/harder.

Also, it doesn't seem to have a complete set of possible chords - one song to check would be "A hard Day's Night" by the Beatles. It has a difficult and distinct first Chord which might be valuable to test against.

ganeumann 1 day ago 0 replies      
Awesome service. I'll definitely be using it.

A question about your plans: you describe annotating as 'contributing to the community' but your terms of service say that only you, not the community, have a license to my copyright on the annotations. You also say that you may one day charge fees.

There have been cases (notably http://en.wikipedia.org/wiki/Gracenote_licensing_controversy) where users have built a database that a company has then claimed as its own and profited from, to the exclusion of the users. So, the question: are the user-contributed annotations open source and licensed as such? And, if not, why would I contribute annotations to a wiki that I may later no longer be allowed to access?

jameshart 2 days ago 0 replies      
Been having a lot of success with Capo [1] recently - excellent beat and chord detection (though it often overcomplicates simple fifths and sus4s assuming they're much more full voiced than they are); also provides a time/frequency intensity view that you can use to pick out melody lines which it automatically translates into tab.

[1] http://supermegaultragroovy.com/products/capo/

ChrisMac 2 days ago 2 replies      
I'm using Firefox and it kept crashing on me on about half the songs I tried.
mcnape 2 days ago 1 reply      
Hey, great job on the website! I have one small criticism (in addition to others already listed here). I put in a song that was in the key of B. The most-used chords of this key are B, E, F#, and G#m - as I'm sure you're well aware. However, the songs chords were detected as B, E, F# and Abm. While technically correct, as Abm and G#m are the same chord, the convention is to list Abm as G#m in this case. I believe this is to avoid mixing sharps and flats in the written chords forms. Written chords should either all be in flats or sharps, rarely if ever mixed. Certain keys are listed with sharps, and others with flats. Here are the most common ones:

C - n/a

D - sharps

Eb - flats

E - sharps

F - flats

F# - sharps

G - sharps

Ab - flats

A - sharps

Bb - flats

B - sharps

neonscribe 2 days ago 0 replies      
I tried it with a song that is very familiar to me, "Antonio's Song" by Michael Franks, using the top hit in Videos for this Google search. It is in 4/4 time and the beat doesn't vary at all. It has five different actual chords: Am7, A7, Bm7b5, Dm7 and E7, and the pattern of chord changes is quite conventional in a verse-chorus structure. The algorithm did a so-so job of determining the chords. It rarely noticed that they were seventh chords, instead identifying them as Amin, Bdim, Dmin and E. It appears to rely strongly on the bass part. In one case there was a C# passing tone in the bass between an A7 and a Dm7 chord that was identified as a C#aug chord. I didn't try the editor. I guess this would make it easier than entering all the chords from scratch, but it struck me that there was still a lot of manual work to make it accurate and usable.
imacomputer2 1 day ago 0 replies      
I love the concept, but every version of the song I looked for gave me this message "This song cannot be analyzed because it is not set as public..."
phpnode 2 days ago 1 reply      
I couldn't get this to work, after selecting a song it appears to work for ~30 seconds and replies with "This song cannot be analyzed because it is not set as public on YouTube." or "This song cannot be analyzed because it is not set as public on SoundCloud."
subdane 2 days ago 1 reply      
Nice site! (But I was disappointed when I realized there wasn't actually tablature).
dyeje 2 days ago 0 replies      
Very cool! I love the way it just analyzes the audio. It'll be very useful when trying to figure out how to play obscure songs that don't have tabs available on the web.
woutervdb 2 days ago 0 replies      
Great site, awesome project, good stuff. However, I found some kind of a "bug": http://i.imgur.com/elpJSS8.pngAt this point, you can't see what "kind" of F the first F is. They clearly are different, however I'm not a musician so I wouldn't know what it should be.
anigbrowl 2 days ago 0 replies      
Works very nicely even with difficult program material (I listen to a lot of weird electronic stuff), but wit would be nice if it had export-to-MIDI or suchlike.
beefman 2 days ago 1 reply      
tjr 2 days ago 1 reply      
Wow, at a glance, this appears to be the best auto-chord-transcribers I've used. I'm getting much more usable data out of this than others that I've tried.

Do you intend for it to be able to hear altered chords?... #5, b5, etc? It didn't seem to be catching that on a song I submitted, but it got the root and third correct, which is still helpful.

pcorey 2 days ago 0 replies      
This is very very cool. How exactly are you getting the audio from youtube? I'm assuming you somehow pull the audio from youtube in your backend (how?), analyze it, use that analysis to build your display and then sync that with the playing youtube video?
hoelle 2 days ago 0 replies      
Wow. Great work! Dropping lyrics in and then adjusting the timings was easy and fun.

I wasn't aware at first that 'contributing' to a song would be public. This is cool and intuitive, although I'd prefer to contribute anonymously.

sdotty 1 day ago 0 replies      
I love it! Good stuff! The cursor beating in time with the music is a nice touch.
medell 2 days ago 0 replies      
Clap, clap, clap. This is incredible and much needed after frustratingly navigating through the constant up sell of the poorly designed tab sites out there. You know who I'm talking about. I would pay for this.
circa 2 days ago 0 replies      
I just signed up and have only looked at it for about 20 seconds. Seriously impressed with the chords it has found so far. Great job! Can't wait to check out more later.
troymcginnis 2 days ago 0 replies      
That's really awesome! Obviously not bullet proof and it doesn't hit everything 100% of the time but the concept is awesome.

Great work.

saurabh_math 2 days ago 0 replies      
Awesome project,personally I feel there should more options for discovering music, like languages etc. That will also help you in user engagement.
SnacksOnAPlane 2 days ago 0 replies      
This is amazing! I've been wanting something like this for so long.
dave_chenell 2 days ago 0 replies      
This is awesome. The first song I tried worked perfectly. Well done!
chrionsr 2 days ago 0 replies      
WOW! Great for me that likes to produce spare time! Thanks guys!
freerobby 2 days ago 0 replies      
This is fantastic.
DanielBMarkham 2 days ago 0 replies      
One idea for a feature: you might want to include the ability to move the chords up or down a few half-tones. Some folks will use various tricks to move their instrument up or down a few notches in order to make the chords easier to play. The tool needs to be able to adjust for that.
mglauco 2 days ago 0 replies      
Nice work!
ebbv 2 days ago 1 reply      
This is really cool. The thing that's obviously missing to me is chord charts to go along with the chord names. Despite the fact that people can look up the chord elsewhere, the tool would be much more useful to novice players (who are probably the majority of likely users) to simply provide those charts.
tech-no-logical 2 days ago 2 replies      

   sorry this video has been removed from youtube   sorry this video has been removed from youtube   sorry this video has been removed from youtube   sorry this video has been removed from youtube
ad nauseum. nice project, but doomed to fail because of this.

why the downvotes ? even their TOS sort of acknowledges it will not work :

YouTab respects your copyrights and the copyrights of others and therefore requires that you only annotate tablature of your own music or of music that you are licensed to annotate (such as public domain music).

Amit's Game Programming Information
313 points by WoodenChair  3 days ago   29 comments top 11
amitp 3 days ago 10 replies      
Seeing my game programming bookmarks page up on HN is unexpected. :)

Yes, I started it a very long time ago (most likely 1994 but that's before Wayback Machine, and I don't have my own archive). I should update the links on that page, but I've been focused more on my new site (http://www.redblobgames.com/), where I'm writing tutorials with interactive diagrams.

Longevity is a goal for my site so I try to focus on algorithms, design, and techniques, rather than specific platforms, languages, or code.

prawn 3 days ago 0 replies      
It's an incredible resource. We leaned heavily on the hexagon section specifically in the creation of Hexiled (http://hexiledgame.com) - we marvelled each day at how comprehensive and helpful it was. The interactive diagrams throughout that section are visually simple but still very cool:


tdicola 3 days ago 3 replies      
Awesome, I remember reading Amit's page many years ago in ~2000 or so as a student. Nice to see it's still around all these years later. Here's a wayback link to the page 15 years ago, still pretty similar info: https://web.archive.org/web/19991111192444/http://www-cs-stu...
je42 3 days ago 0 replies      
I think it must have been almost 15 years ago, when I first stumbled across his page. Nice, that it's still around.

See this link in the wayback machine:https://web.archive.org/web/19990117080207/http://www-cs-stu...


curiousDog 3 days ago 0 replies      
A few other good resources:

Bit hacks: https://graphics.stanford.edu/~seander/bithacks.html

Algorithm implementations: http://www.keithschwarz.com/interesting/

flashgordon 2 days ago 0 replies      
Wow I remember going through Amit's site almost 7 years ago and it was really really useful even for non game related stuff. Never realised Id be bumping into it again! Awesome work mate.
evo_9 2 days ago 0 replies      
Another great resource for learning about game programming: http://gamemechanicexplorer.com/
schnevets 2 days ago 0 replies      
Looks like an awesome resource! And just in time for the Ludum Dare this weekend!
dinkumthinkum 2 days ago 0 replies      
This comes up on HN every so often. It is a very high quality guide. The redblobgames.com seems to be a good companion to the Visual Algorithm site posted the other day [1].

[1] - http://www.comp.nus.edu.sg/~stevenha/visualization/

jccooper 2 days ago 0 replies      
Great. There goes my month.
bitwize 2 days ago 1 reply      
It is inadvisable to start with Tetris. The Tetris Company LLC owns the copyright to the game concept; any falling n-omino game is potentially infringing, especially for n=4. Yes, I know that copyright law theoretically doesn't apply to game concepts; that won't stop TTC from suing you and winning by attrition (TTC has enough money to litigate well after virtually indie developer has gone broke).
Seneca: On the Shortness of Life
314 points by stingraycharles  3 days ago   79 comments top 22
mattjaynes 3 days ago 3 replies      
For a very accessible and practical guide to Seneca (and other stoic philosophers), check out "A Guide to the Good Life: The Ancient Art of Stoic Joy" by William Irvine

The title is a little cheesy, but the content is gold. It's one of the books I re-read (or re-listen to via Audible) multiple times a year. I find the repetition is really valuable since I can slip so easily back into my old thought patterns.

When I count books that have been most helpful to me, this one is at the top of the list (followed by "War of Art" by Pressfield).

For a synopsis, check out Derek Sivers book notes on it: https://sivers.org/book/StoicJoy

Derek's intro to the notes: "Rating: 10/10. Almost too personal for me to give an objective review, because I found when reading it that the quirky philosophy I've been living my life by since 17 matches up exactly with a 2000-year-old philosophy called Stoicism. Mine was self-developed haphazardly, so it was fascinating to read the refined developed original. Really resonated."

ealloc 3 days ago 4 replies      
Seneca sounds extremely privileged to me. His advice might be useful to rich people, but not the vast majority of people (in his time, or ours) who have to work hard just to survive.

His main complaint is against rich people who "squandered in luxury and carelessness", the various ways in which "riches [are] a burden", how men care too much about the "limit of their lands". Almost every sentence seems spoken to someone too rich for his own good, with too many slaves, mistresses, clients, and land.

It fits in with my picture of Rome as having a strong class hierarchy (and up to 30% slaves!). This are the words from the "optimo iure" to themselves.

pjmlp 3 days ago 1 reply      
This is why it is so valuable to preserve the writings across centuries.

I always find a deep sense of joy being able to read such interesting thoughts that were put on paper, papyrus, wood, stone so many centuries ago.

In a similar timeframe will anyone be able to read our digital thoughts?

petercooper 3 days ago 0 replies      
I wrote some notes with choice quotes, etc, on this book several years ago: http://peterc.org/pedia/seneca-shortness-of-life/ - it might whet the appetite of anyone without the time to read the full thing right now.
Padding 3 days ago 3 replies      
Stoicism is an interesting way to look at things and it certainly does make for some engaging mental exercises .. but I'm not sure how much actual value it can provide to everyday life.

One major problem with it, speaking as a 30-year old, is that it's not trivial to come up with some "ultimage goal" or "prime principle" for life. But maybe that's just me being unimaginative and isn't necessarily a flaw of the philosophy itself.

The real issue is that being consequent about stoicism seems to always result in contradiction given mankind's current state of knowledge. On one hand stoicism is concerned with not wasting time (on indulgences) and at the same time it ignores that a market economy (embedded in a democratic society) is the only way we know of, that can reliably force a larger population to strive for efficiency.

Of course the market economy isn't free - we pay for it by e.g. giving up moral values. It still allows for huge bubbles of inefficiency to form - things like complicance regulations that provide zero real value and only serve as market barriers. And of course we're all just fallible selfish humans, so there's no shortage of people studying and abusing these processes. But all these points are, practically speaking, irrelevant, seeing as how there are no (better) alternatives (yet).

So what is a stoic to do? Give up on a proven path to efficiency because he doesn't want to be a "tool"?

Just imagine how much more of our time would be wasted if there weren't an army of "tools" out there, working 8 hours a day towards the "indulgence" of ensuring that there is allways enough fresh milk stocked in the supermarkets of our cities.

k-mcgrady 3 days ago 0 replies      
I recently started reading "Letters from a Stoic" [1] and I'd highly recommend it. It's a collection of letters, each a few pages long, written by Seneca. I read one a day and have a pen nearby as I'll typically find at least 5 useful pieces of advice or useful ways of looking at things differently.

[1] http://www.amazon.co.uk/Letters-Stoic-Epistulae-Lucilium-Cla...

Edit: in fact the letter I read yesterday was, like the one posted here, on life. Some things I liked from it:

"...death ought to be right there before the eyes of a young man just as much as an old one. [...] Every day, therefore, should be regulated as if it were the one that brings up the rear, the one that rounds out and completes our lives."

"To live under constraint is a misfortune, but there is no constraint to live under constraint."

"Whoever has said 'I have lived' receives a windfall every day he gets up in the morning."

randomacct001 3 days ago 1 reply      
This is why I keep coming back to HN. Everyday I find weird and wonderful surprises on the front page.
buster 3 days ago 1 reply      
Also a good read is Ciceros Cato Maior de Senectute: http://www.bartleby.com/9/2/1.htmlA philosophical story about aging and death
riemannzeta 3 days ago 0 replies      
Those who feel they have discovered a treasure here should consider reading Seneca "On Anger" and Musonius Rufus also.
msane 3 days ago 0 replies      
I would not have expected Seneca to be the top result. Good on you HN.
jcromartie 3 days ago 1 reply      
Perhaps I just need to keep reading, but he seems to be speaking against squandering time, being engrossed, attached (hints of Buddhism here), etc., but he does not offer any advice other than seizing the day and tending to your own desires, which sounds a lot like the hedonism he is denouncing at the very same time. Are there some activities that are not vices, and are not "giving away" your time?
anvarik 3 days ago 1 reply      
I am currently reading Letters from a Stoic, somehow the style resembles except the fact that it is not written to Lucilius
michaelsbradley 3 days ago 1 reply      
Those interested in Stoicism, and who are curious if and how its ideals might be "baptized" and employed in a Christian philosophy of life, ought to look into the writings of Fr. Alphonsus Rodriguez, who has been described by some as a "Christian Seneca":

Practice of Perfection and Christian Virtues


IvyMike 3 days ago 2 replies      
I'm not sure why this is on HN today, but in a Baader-Meinhof Phenomenon kind of way, I just came across it yesterday. It was in this commencement speech at University of Minnesota College of Liberal Arts by musician/artist/writer Dessa. It's 22 minutes long, so maybe you'll skip it, but it's a surprisingly inspiring and motivating speech: http://youtu.be/u38ue-XxHtw
sbmassey 3 days ago 0 replies      
Of course, in practice Seneca was considered rather hypocritical. But I guess being an important aristocrat during the reign of Nero does that to you.

The best book I have read on the Stoics is the Cambridge Companion to the Stoics, by the way, which has articles on every aspect of the philosophical movement.

delinquentme 3 days ago 3 replies      
And imagine how wise he would be now if still alive. Fight Aging.
kartman 3 days ago 0 replies      
Yup, the printed version of this book is always a go to favorite read of mine. Highly recommend. Among Stoics I found this most easy and good to read repeatedly.

In some ways Benjamin Franklin's autobiography also feels similar, not sure why.

myhf 3 days ago 0 replies      
(49 CE)
0800899g 3 days ago 1 reply      
crazy how the stoics and buddhists never met .
EGreg 3 days ago 1 reply      
I have read this, and my question is, what kind of activities does Seneca consider NOT wasting time?
3rd3 3 days ago 0 replies      
Summary: An unexamined life without art and wisdom is short.
stingraycharles 3 days ago 2 replies      
This is an essay I will always remember. It helped me get through a burn-out, and contains a lot of wise lessons. One quote specifically touched me:

"The part of life we really live is small."5 For all the rest of existence is not life, but merely time.

Cherish the moments you really live. The moments you create your memories.

Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console
318 points by jyunderwood  2 days ago   127 comments top 23
neya 2 days ago 8 replies      
There was a time when I used to advocate my fellow folks here at HN (and possibly even reddit) to go for a framework built on faster languages like GoLang or Scala or even using platforms like Node.js and avoid slower ones like Rails. Now, it's time for me to apologize to the community for giving you wrong advice [1]. Turns out I could never have been more wrong.

I wish I could write a long post describing each of the WHY's, but I'll be more succinct, this time:

1)If you can throw money at something at something and scale, then you're as good as gold. Rails allows you to do this. Oh, and supportive statements from Pinterest guys on the same topic - [2].

2) The speed of a language has nothing to do with the success of your business. NOTHING. You can go with the world's slowest language and still be successful. Best example of this is Basecamp itself.

As a matter of fact, even many of the popular sites (heck, even popular porn sites) still run on PHP (PHP was one of the slowest from the frameworks speed comparison conducted by Techempower - [3]).

3) The actual thing you want to be able to do is quickly iterate on your product and constantly have it evolve. This is only possible if you have a complete framework that doesn't force you to re-invent the wheel. For example, when I wrote a framework by myself in GoLang, Scala, I found myself focusing too much on basic stuff like authentication, instead of focusing on the features that are needed for the actual product.

4) (P.S this is my personal opinion) I've tried all major frameworks out there and I've come back to Rails again. Why? Because its philosophy resonates with me (yes, now it does). For me, the three most important elements for a successful product are - Speed, Reliability, Consistency. Rails provides me with all these three. (And please try Puma, it's pretty impressive!).

As for me, the ability to seamlessly integrate SASS, Compass and HAML (which help me divide my product development time multiple folds) makes Rails a clear winner for me. And now Active Job, Deliver Later, Adequate Record, Web Console now make Rails much more complete than ever. (Thank you DHH!)

In the last 6 months, I've written 4 complete products for 4 different people (one of them, being mine) that is well tested and works perfectly as intended. Compare this to something like last year where I spent 2-3 months writing just a single software product (for myself) while I was trying to use GoLang (<- or insert another faster language here) (because I also had to take care of all the other things like Authentication, etc). The point is, ultimately you want to run a successful business. And if you're worried if the slowness of your language will hinder it's growth, then nope. That will not happen. I hope this helps someone.


[1] https://news.ycombinator.com/threads?id=neya&next=6993616

[2] http://highscalability.com/blog/2013/4/15/scaling-pinterest-...

[3] http://www.techempower.com/benchmarks/#section=data-r8&hw=i7...

r-s 2 days ago 1 reply      
Rails gets a bit of negative press these days, but its nice to see the framework moving forward. Rails is still a great choice for a large percent of web apps. There is a fairly big community even in smaller cities, a very complete framework, a large ecosystem of gems, open source and still improving.
j4pe 2 days ago 0 replies      
I've been working on a Django project for the last few months. In past gigs I've used Drupal, and even talked community with one of Drupal's corporate overlords at Acquia. I enjoy working with Ember and follow its releases. But I've never grinned and cheered for new features the way I do with Rails.

It took me a long time to realize that Rails' greatness isn't due to magical omakase magic - it's the community DHH (and the core team) have built over the years, and the strong product focus they've applied. Really impressive. Did Torvalds work like this? Has anyone has studied or written about organizational behavior in the open-source community?

aaronbrethorst 2 days ago 3 replies      

    Support for real foreign keys!    addforeignkey/removeforeignkey are now    available in migrations.
Awesome! Despite the naysayers, I still feel incredibly productive in Rails, and am so happy it continues to improve.

andyl 2 days ago 1 reply      
Just saw this in the release notes:

    The PostgreSQL adapter now supports the JSONB datatype in PostgreSQL 9.4+. 
Indexable/queryable JSON - so fantastic.

resca79 2 days ago 0 replies      
Here a rails committer.

Rails is 10 years old and it has definitely changed the web development. But the unnecessary controversy always seem the same of its first year.

While in the last 10 years, many people talking Rails does not scale and ruby is slow, for many companies rails was and is a great "tool" to delivery great web apps.

Thanks Rails

andyl 2 days ago 1 reply      
One of the things I like best is the pre-announcement that Rails 5 will be built for Ruby 2.2. I appreciate the role that DHH and Rails play in keeping the community moving forward.
cpursley 2 days ago 2 replies      
Truly impressive. I'd also like to see the Rails team focus on Rails-as-API for those of us who have moved on from the asset pipeline (splitting the server side from client side).

It would be nice to have a "API only" flag option when generating a new rails project. Something like: `rails new myapp -api`. This could keep Rails going for another 10 years.

I'm looking into using Napa, a Grape based API framework, for the purpose of Ruby server-side API apps: https://github.com/bellycard/napa

(Napa is to Grape as Padrino is to Sinatra)

Related reading: http://www.divshot.com/blog/opinion/every-web-app-is-two-app...

tvon 2 days ago 5 replies      
So GlobalID means instead of doing `SomeJob.enqueue(instance.id)` (and then `Model.find(id)` in the job) you just do `SomeJob.enqueue(instance)`, and presumably reference something like `object` in the job?
gt565k 2 days ago 0 replies      
My biggest gripe about Rails are the model validations and DB adapters.

As someone coming from Django, I hate that I have to explicitly define db related validations and catch exceptions thrown by postgres instead of it just being handled by AR with the DB adapter based on the database constraints.

I love how Django handles that and I hope this finds its way into Rails one day.

martijn_himself 2 days ago 4 replies      
Sorry to 'hijack' the thread but I was wondering, as a newcomer to Ruby and Rails, what would be the best way to learn it? (without spending too much money).

It seems to me because it is such a mature framework there are a lot of Rails-specific techniques and components to learn, this seems quite daunting to me, am I correct?

bdcravens 2 days ago 0 replies      
Nice to see some of the features from better_errors make it in - I always figured it'd just replace the standard exception page.
axx 2 days ago 0 replies      
You don't need to make everything scalable right from the start. If your business is profitable you should have enough money to think about scaling later.

To me, the possibility to iterate fast has a much higher priority than thinking about scaling if i have a few or not that many customers.

Thinking about performance problems when you start your first project/startup is like thinking about what to buy IF you win the lottery.

urs2102 2 days ago 1 reply      
<%= console %> is a godsend
_mikz 2 days ago 1 reply      
I'm quite surprised by removing `respond_with` to a gem.
VeejayRampay 2 days ago 0 replies      
A big thank you to all the contributors who keep making Rails better and more polished at each release. Rails 4.x is great.
rudimk 2 days ago 2 replies      
What's the difference between the Web Console in this release, and the IRB console that comes with Better Errors?
boie0025 2 days ago 0 replies      
I'm excited for the ActiveJob abstraction layer. This means I can start building things out for background work before even deciding what I want to have handle them.
ffn 2 days ago 0 replies      
Oh God yes, at last, 4.2. Real foreign keys, active jobs, deliver_later, etc. I guess it's true, Overlord DHH really does hear our prayers.
shouldbeworking 2 days ago 1 reply      
will there be a 420 celebration when it comes out?
oliyoung 2 days ago 1 reply      
I love Rails, it's been my tool of choice for the last six years, but "Support for real foreign keys!" shouldn't be a thing in a change-log in 2014.
jiggy2011 2 days ago 4 replies      
"Adequate Record" does not exactly fill one with confidence regarding rails. This says "our last versions had inadequate performance,this one is just ok"
j-kidd 2 days ago 1 reply      
I feel rather underwhelmed by the performance improvement touted by adequate records. Perhaps someone from the rails community can do something like this: http://techspot.zzzeek.org/2010/12/12/a-tale-of-three-profil...
298 points by daigoba66  1 day ago   161 comments top 30
MichaelGG 1 day ago 5 replies      
I wonder what the search story is. One technology that really does deliver, and has totally impressed me, is Lucene/ElasticSearch. I'm used to all sorts of hyperbolic claims, but holy shit, ElasticSearch just delivers. We tossed in about 40M documents from a SQL Server DB, and not only did it require less resources (a 30%? reduction in size), the queries are beyond anything that'd be approachable using SQL Server. And I've only touched the surface, using it as a pure plug-n-play setup.

With DocumentDB, not having a local version severely limits what I'd consider this for. Losing that flexibility is a big deal. Maybe this is just a limited preview and they haven't build the management side for local installs.

ceejayoz 1 day ago 5 replies      

> Want to edit or suggest changes to this content? You can edit and submit changes to this article using GitHub.

Pretty remarkable given Microsoft's approach to open source in the 1990s that they're now using a service built around Linus's bespoke open source version control system to allow people to suggest changes to their documentation.

jpalomaki 1 day ago 1 reply      
Ad hoc queries using SQL like syntax. No need to define indexes.

Javascript execution within database. Stored procedures, triggers and functions can be written with Javascript. "All JavaScript logic is executed within an ambient ACID transaction with snapshot isolation. During the course of its execution, if the JavaScript throws an exception, then the entire transaction is aborted."

Pricing is based on "capacity units". Starts with $22.50 per month (this includes 50% preview period discount). One capacity unit (CU) gives 10GB of storage and can perform 2000 reads per second, 500 insert/replace/delete, 1000 simple queries returning one doc.

In order to see pricing details, change the region to "US West":http://azure.microsoft.com/en-us/pricing/details/documentdb/

Very interesting addition to Microsoft offering. I was actually just yesterday wondering if they have any plans for this kind of service. Table Storage is quite primitive and Azure SQL on the other hand gets expensive when you have lots of data.

One potential "problem" with this is the bundling of storage capacity and processing power. If I understand this correctly, I would need to buy 10 CUs per month to store 100GB of data even if I'm not very actively using that data.

streptomycin 1 day ago 1 reply      
DocumentDB utilizes a highly concurrent, lock free, log structured indexing technology to automatically index all document content. This enables rich real-time queries without the need to specify schema hints, secondary indexes or views.

How does that work? Isn't that going to incur a major performance hit? If not, why don't other databases get rid of indexes?

Also, if anyone from MS is reading, http://azure.microsoft.com/en-us/documentation/articles/docu... links to http://azure.microsoft.com/en-us/documentation/articles/docu... which is a 404 error.

whalesalad 1 day ago 3 replies      
I liked everything about it until I saw the API for the Python client. What a catastrophe.

I pray Microsoft is looking for Python developers: https://gist.github.com/whalesalad/2142f0075c6896f4547c

fineline 1 day ago 3 replies      
"All JavaScript logic is executed within an ambient ACID transaction with snapshot isolation. During the course of its execution, if the JavaScript throws an exception, then the entire transaction is aborted."

Have I missed something, or have MS delivered a novel and valuable feature? I'm not aware of support for transactions across documents in other NoSQL platforms. I'd be grateful if someone has any experience or better information in that regard, thanks.

bkeroack 1 day ago 5 replies      
...and MS goes after MongoDB. It would be nice to see an on-premises version, if only to compare performance/consistency with Mongo.
orand 1 day ago 2 replies      
If I understand correctly, their multi-document ACID transaction support is a big deal. The only other NoSQL/NewSQL systems I'm aware of with that ability are FoundationDB and Google Spanner/F1.
luuio 1 day ago 1 reply      
A quick comparison between DocumentDB vs MongoDB: http://daprlabs.com/blog/blog/2014/08/22/azure-documentdb/
pokstad 1 day ago 3 replies      
Sounds very similar to CouchDB. Server side Javascript written by the user, and an HTTP interface. The ability to adjust consistency is really neat.
allegory 1 day ago 4 replies      
No local installation. No banana.

I wouldn't tie a product to a single cloud vendor.

lubos 1 day ago 2 replies      
What are the limits of DocumentDB? You know, like max size of database, max size of document, max number of documents per database, max. number of attributes per document, max. number of databases per DocumentDB account.

What's the max. duration of database query, max size of query result.

What kind of performance can be expected, does it decrease as the size of database increases or it remains constant?

I'm going to wait a few days until hype settles.

mallipeddi 22 hours ago 0 replies      
What are the size limits on a collection? Docs mention transaction support is offered only within a collection. Is a collection essentially limited to a single physical machine in the background or does it span across machines? It looks like in Standard Preview, the max collection size is 10GB.
jnardiello 1 day ago 2 replies      
And that is a creative product name. Well played MS.
seanp2k2 1 day ago 1 reply      
Interesting: https://github.com/Azure/azure-documentdb-python it's empty for the moment, but glad to see first-party support for Python
reubenbond 1 day ago 0 replies      
The @DocumentDB twitter links to a tutorial on DocDB: http://www.documentdb.com/sql/tutorial
cvburgess 1 day ago 3 replies      
Does anyone know how this compares to AWS DynamoDB[1] ?

[1] https://aws.amazon.com/dynamodb/

chippy 1 day ago 0 replies      
Spatial queries and indexing. Most data has some location component. I didn't see anything with this. Is it in there, or planned?
petilon 1 day ago 3 replies      
So does it run on a cluster? If so which of Consistency, Availability and Partition tolerance does it NOT offer? (See CAP theorem)?
andrea_s 1 day ago 6 replies      
Am I alone in thinking that sql-like syntax is actually a step backwards from building query documents programmatically (MongoDB style)?
yxhuvud 1 day ago 1 reply      
It would have been nice to see some actual details of how it works so that it can be compared to the competition.
gamesbrainiac 1 day ago 0 replies      
I find it surprising that DocumentDB wasn't already a copyrighted name. ;)
sarciszewski 13 hours ago 1 reply      
Leave it to Microsoft to give it the most generic sounding name possible.
talles 1 day ago 1 reply      
Can I use DocumentDB out of Azure (hook my own)?
poolpool 1 day ago 1 reply      
I wonder if this is built on JetDB
utunga 1 day ago 3 replies      
Another case of Not Invented Here syndrome from Microsoft. One wonders why they couldn't just take the open source and very well architected RavenDB http://ravendb.net .Net Document DB and provide first class support for that within Azure.
nandkishiee 22 hours ago 0 replies      
Sick! Love it
cbsmith 1 day ago 3 replies      
'cause what the world needs is another proprietary NoSQL solution.
hackerkushal 1 day ago 0 replies      
THIS THING IS A BEAST!!It is absolutely bad ass
Nux 1 day ago 0 replies      
A new "cool", locked-in service served on a silver platter by Microsoft to the brainwashed.

Everybody else uses open source on premises or their cloud of choice.

Show HN: A virtual whiteboard for working or teaching remotely
302 points by MarkMc  1 day ago   139 comments top 54
MarkMc 1 day ago 8 replies      
This is little 'scratch-your-own-itch' project I started working on about 9 months ago. Front end is GWT, back end is Java servlets. Database was originally MySQL but switched to Prevayler for performance reasons.

My YouTube video gives a nice overview of the benefits of a virtual whiteboard:http://youtu.be/MDEHFHG1l3Y

What does Hacker News think?

wodow 1 day ago 7 replies      
I love it - works perfectly... but immediately the feature creeper in me has kicked in. Killer features

1. Be able to type in text (any font will do)

2. Drag-and-drop an image to be be able to annotate it over the top (would be excellent design task, e.g. using screenshots of some work-in-progress).

3. Movable objects?

senko 1 day ago 1 reply      
Very nice. Seems to be vector-based (ie. how the eraser and undo/redo work, and allowing things like pan&zoom).

I'm the author of a similar tool, https://awwapp.com/ , which is bitmap-based, ie the eraser works as it'd on a physical whiteboard, and there's no zoom (or undo/redo).

Great start, looking forward to seeing the future progress!

krmmalik 1 day ago 1 reply      
Oh my god. I love this!I've been waiting for a simple polished solution for this for years and years. When skype came along and then we got skype extensions, I thought they'd solve this, but oh no. Every solution that has come out so far has been mediocre at best. I'm glad someone decided to tackle this properly.I haven't had chance to try on iPad, but from the homepage it seems it'll work fine there as well?
yaddayadda 10 hours ago 0 replies      
@MarkMC - Any idea if your browser whiteboard will with the TouchPico (https://www.indiegogo.com/projects/touchpico-turn-any-surfac...) which is an inexpensive touchscreen projector. (I'm just thinking these would be a great combination of technologies.)
Nemi 1 day ago 1 reply      
This is freaking awesome. You probably know this but it does not work in IE on windows 8 with a touchscreen. Chrome works fine however. I am guessing it is something to do with the touch events that IE has that are different?
valar_m 1 day ago 0 replies      
SSL, private boards, and some kind of assurance that what we're drawing truly is being erased.

Add that, and we'll pay you money to let us use it. I suspect other companies will, too.

kenny_r 1 day ago 0 replies      
The brain-shaped thought bubble filled with blue gears is _very_ reminiscent of the devopsdays[1] logo...

[1]: http://devopsdays.org/

8ig8 1 day ago 0 replies      
This is handy for remote tutoring. I dropped a math worksheet image onto the whiteboard. Imagine working remotely with a student. Here's a static 'snapshot'.


Tried this years ago over dialup with some MS app. The technology was flakey and kept getting in the way. This works great.

gldnspud 23 hours ago 1 reply      
This tool was pretty responsive to draw with using a tablet, and I'm glad the pen width isn't very large.

I love using a Wacom tablet for drawing diagrams, and wish there was a good shared whiteboard tool that supported pen pressure.

I didn't know if this is possible at first, but a quick search revealed http://muro.deviantart.com/, which supports pen pressure using a plugin.

Any chance you might add that kind of flair to whiteboardfox?

oneweirdtrick 1 day ago 0 replies      
You hear that? That's the sound of Google's Business Strategy team cueing Wagner's 'Ride of the Valkyries'.
jleask 1 day ago 1 reply      
That's something I've had on my todo list for ages. As others have said though, it'd be great to be able type text as drawing letters with a mouse always takes ages and looks rubbish.

SVG export would be nice too, perhaps a paid for extra :)

afaqurk 1 day ago 0 replies      
Very nice!

My friend's parent is disabled and we thought about doing something like this and hooking it up to a touch-screen monitor for them.

That way the parent can see messages from her kids (in a different city) and vice versa without any effort or typing.

gtramont 1 day ago 1 reply      
Back in 2011, when I was starting with node.js I built something I called 'Writeboard' https://github.com/gtramontina/Writeboard . It's not an active project anymore, but I've considered resuming working on it. A rewrite of it is hosted in heroku, at http://writeboard2.herokuapp.com/ -- Check it out.
jasonkester 1 day ago 1 reply      
Nice first cut. It's actually surprising that it took a full seven years for anybody else to show up Twiddla's [1] space with a true HTML5 whiteboard. Back when we started out, there were half a dozen commercial versions of this exact thing, but all in Flash or Java, and all trying to compete with WebEx.

It think you're on the right path positioning this for use in schools. That's our main use case too, replacing overhead projectors in the classroom, and ruining snow days for an entire generation of kids.

Good luck!

[1] http://www.twiddla.com/

billybofh 1 day ago 0 replies      
Do you have any plans to have a 'broadcast' mode where the person who creates the whiteboard is the only one who can draw on it? I can see itchy student fingers abusing it otherwise in a teaching context... ;-)
graeme 1 day ago 0 replies      
I use this kind of thing professionally, for distance tutoring. Looks very nice, draws smoothly. I like the easy "erase" function.

There's one thing stopping me from using it: the URL

I use jotwithme right now, and I can set a session name, then tell people to go there. Here, I have to get the url from my ipad, sent it to myself somehow, and send it to the student.

That's not exactly hard, but it's annoying enough compared to jotwithme that I'd keep using that. But if you had that feature, I'd switch. Jot's erase feature isn't as good.

megablast 22 hours ago 0 replies      
Did something like this myself, a few years ago:


Except all you need to follow along is a browser.

chrisweekly 1 day ago 3 replies      
Surprised to learn this is Java and long-polling. (These features scream Meteor / DDP to me.) Regardless, it's a v good start. Thanks for sharing!
soneca 1 day ago 1 reply      
Great work! My feature request: similar to the "insert pic", create an insert slide. You upload a .PPT and select which slide you want to use.

If teachersare going to use this, many of them will already have a powerpoint to use.

Adding to this, an easy way to navegate betweens different whiteboards of the same author (so it is easy to go to the next slide).

Just my opinion about what might work.

unwind 1 day ago 1 reply      
I tried opening "my" whiteboard in a second tab in Firefox (on Windows). The second tab's view is distorted, it reminds me of having a badly programmed modulo register on the Amiga.

Which doesn't say much to most, I guess... It looks as if the scan lines are mis-aligned, i.e. as if some pixels in each line is missing from each, causing the resulting image to be slanted and distorted.

devniel 1 day ago 0 replies      
My respect for use the java stack, I like it. Here another guy to tried to build his own whiteboard a few years ago http://notephy.com , I'm just searching a solid support to audio recording with webrtc to improve it.
hugozap 1 day ago 3 replies      
I would love to use this, but i don't have a facebook account. I hope you support other login options
dharma1 1 day ago 0 replies      
google drawing -> setup share settings so anyone with link can edit -> scribble


shervinshaikh 1 day ago 0 replies      
This looks similar to Citrix's Talkboard http://www.citrix.com/products/talkboard/overview.html
bitJericho 1 day ago 1 reply      
I played around with something like this when I was a kid (it was a group of kids drawing anime characters if I recall). Every once in a while I search for something like that and I can never find it. Now it's back :D
jacquesm 1 day ago 0 replies      
My quick-and-dirty hack for a one way version of this is to open skype using screen sharing and then to run 'gimp' while using the chat & voice for instruction/questions.
orcinusorca 1 day ago 0 replies      
Very well done. I can see myself using this in the near future. Thank you for making this.
DanBlake 1 day ago 1 reply      
I did something like this a few years ago, but we were forced to use flash- http://flockdraw.com
itry 1 day ago 2 replies      
josealicarte 1 day ago 0 replies      
This article was awesome, teaching remotely are very effective because other people are busy , they dont have time to go institution.
hoof_marks 1 day ago 0 replies      
Awesome!!..with tablet. You can add text support, and login with email id..dont have facebook!
joebo 1 day ago 0 replies      
nicely done. I will try using it with my coworkers. The video was helpful with suggestions on zooming to draw text.
free2rhyme214 1 day ago 0 replies      
My only suggestion is to make sure the youtube video plays in HD by default. Excellent work!
gavinpc 1 day ago 0 replies      
Doesn't work if cookies are blocked. Well, it is a "white board," anyway.
sidcool 1 day ago 1 reply      
Very impressed Mark. Nicely done. Do you mind telling the technology stack?
eldelshell 1 day ago 0 replies      
Very nice, but you just made me remember how hard it's to draw with a mouse.
j2kun 1 day ago 0 replies      
A simple chat functionality within the app would be nice...
Brandon0 1 day ago 1 reply      
This is very cool! Is there a way to zoom in on desktop? Mouse wheel perhaps?
har777 1 day ago 0 replies      
Great stuff ! I'll try to build my own version using socket.io :)
jiri 1 day ago 0 replies      
Very nice! I gonna use it myself for drawing using tablet on big screen!
ujjwal_wadhawan 1 day ago 0 replies      
A zoom in/out with mouse scroll would be good to have.
junyeeng 1 day ago 0 replies      
How long do you take to complete the project?Awesome work!
freebs 1 day ago 0 replies      
Making it easier to zoom would be nice. Maybe with scrolling?
dblacc 1 day ago 1 reply      
This is fantastic. How long is a whiteboards lifetime ?
cdnsteve 1 day ago 0 replies      
Interesting, seems like TogetherJs or Prezi.
johnmoore 1 day ago 2 replies      
Only works in Internet Explorer 9, doesn't work in IE 8 in some companies they only allow you to use IE only and only upgrade the browser if they install a new OS.
khrist 1 day ago 0 replies      
very nice, responsive. Great job. I was looking for such tool. Feature request, should allow copy paste :).
mentos 1 day ago 0 replies      
Might this use Firebase?
samstave 1 day ago 0 replies      
There should be an "omeagle" version of this where you draw pics with strangers.
Duber 1 day ago 0 replies      
looks good to me, congratulations
lazyant 1 day ago 2 replies      
great! only missing typing text
Visualising data structures and algorithms through animation
313 points by pushedx  4 days ago   23 comments top 18
Whitespace 4 days ago 1 reply      
Since it took me a while to figure out, here's a hint: click on the card, then click the disclosure arrow on the lower left, then click around until you see "GO"

Example: http://www.comp.nus.edu.sg/~stevenha/visualization/sorting.h... Click the > in the lower left Sort GO

pushedx 4 days ago 2 replies      
If you click "Start Training" in the upper right, you will be asked a series of randomly generated questions on a topic of your choice. So far I've tried the BST training and Bitmask training. I have to say that this is the best randomly generated quiz system that I've seen. There are obviously some very smart people behind this.
alexisn811 13 hours ago 0 replies      
Holy smokes! This is nifty, I hope the project continues to live on because it really helps me understand complex topics easier.
stevenhalim 2 days ago 1 reply      
Hi all, I am the initiator of this project. You can gave me bug reports or suggestions on how to improve VisuAlgo (and its online quiz mode) via stevenhalim@gmail.com. Me and my team are still actively developing this tool and will update it over time.

Question banks for certain topics are not big enough so there is a small probability that you can see two random questions that are the same. This should not be true in the near future.

The code is semi open actually (all HTML,CSS,JS files) are on client-side. The only hidden parts (in server-side) are the mechanism to generate random questions and to verify answers automatically and also our graph drawing database :O (you can draw your own graph for DFS/BFS/MST/SSSP/Network Flow/Matching if you haven't notice).

Regarding slow host, it should not be the case in general. Yesterday NUS has network issues that slow down the Internet connection campus wide. Normally it is very fast.

modarts 3 days ago 0 replies      
I think merge sort finally 'clicked' for me after watching that animation. This is an incredible learning tool.
Borophyll 4 days ago 0 replies      
This will be great for my Algorithms class next semester. I learn a little better when I have visuals I can correlate to an algorithm.
bing_dai 4 days ago 0 replies      
This is absolutely amazing.
urs2102 4 days ago 1 reply      
This is incredible. Often times in a typical data structures class students can get have a difficult time developing intuition for things like BSTs and sorting. This is an awesome tool!
techaddict009 4 days ago 0 replies      
I would have seriously learn Data structures if this tutorial would have existed when I was in college. It expresses data structures and algorithms in simple yet powerful way.
iamleppert 3 days ago 0 replies      
Awesome! I love it when people do stuff like this!
jmcgough 3 days ago 0 replies      
I've never been able to really grasp an algorithm without seeing a visualization or stepping through it myself - this is awesome ^^
nitishmd 3 days ago 0 replies      
Excellent! Thank you. If this code is open sourced may be people can contribute a lot more algorithms!
n1ghtmare_ 3 days ago 0 replies      
This is just awesome! I absolutely love it! Bookmarked for life!
bargainhunter 3 days ago 0 replies      
This is just stunning. Bravo, sir.
dinkumthinkum 4 days ago 0 replies      
This is a really nice tool, I'm surprised I had not seen this before. It is very nice; I think the word of this needs to spread more and keep it updated and add additional visualizations, particularly more advanced ones.
rodrigoavie 3 days ago 0 replies      
Thank you again, Steven Halim!
SIGALRM 3 days ago 0 replies      
this is a really cool link, thanks for posting it!
feider 3 days ago 0 replies      
slow hosting (from singapore?) just killed the possible experience.
Java 9 features announced
297 points by xngzng  4 days ago   219 comments top 25
rufugee 4 days ago 21 replies      
Nothing pollutes java source more than getters and setters. I can't believe this still isn't being address. Wish they'd move in the direction Groovy has in this regard.
grizzles 4 days ago 3 replies      
My Wishlist:1. Fix Daemonization!

Publish an official blessed and supported way of daemonizing processes. Yeah sure, you can use Apache commons-daemon and others of it's ilk. And it will work. But it will feel hacked together (at least it does to me).

2. Fix Dependency hell!

Publish a blessed / supported / standard of supporting / managing different classloaders. Java has this great mostly unused mechanism (classloaders) for managing dependency hell. It would be great to have platform (maybe even language) level support to make that easy to do and a standard way of building software.

mmastrac 4 days ago 6 replies      
The lack of an official JSON API has been a huge sore point for quite some time and has spawned dozens of libraries re-implementing the same thing over and over (GSON, Jackson, and even my own nanojson). I do hope that we avoid the DocumentBuilderFactory mistakes of XML and just end up with One True JSON implementation this time.
dtech 4 days ago 1 reply      
I thought one of the things promised in Java 9 was to finally fix the primitive mess, including all of the boxing and pointer chasing. Yet I can't find that here.

I also thought that type reification was being researched.

Does anyone know if either of these is still a thing?

sgarlatm 4 days ago 0 replies      
This is a huge let-down after Java 8, but I guess that was inevitable. Lambdas are a tough act to follow and are probably my favorite addition to the JDK ever.
jaybna 4 days ago 3 replies      
Did they mention if spyware will continue to be in the installer?
pjmlp 4 days ago 0 replies      
List of proposed JEPs so far.


CodeMage 4 days ago 0 replies      
I see that their "Process API updates" still don't make it possible to get a NIO Pipe object for redirected stdin, stdout or stderr when ProcessBuilder.Redirect.PIPE is used. Maybe they'll fix that some day...
stevebot 4 days ago 0 replies      
Sooo this means it will be what 5 years if never before Android starts to adopt some of these new Java 9 features? Kitkat introduced some Java 7 features, but I don't think anything in 8 is near to making it in.
haddr 4 days ago 5 replies      
I'm deeply missing hot swapping. I believed it could be included in java 9 but i think we have to wait...
adamlett 4 days ago 2 replies      
Still no hash literal :-(
suprgeek 4 days ago 1 reply      
Fix the Modularity business properly! Please simplify and make a standard system that most people can get behind.While Jigsaw started out ambitiously, I attended some of the initial meetings and the scope was....awesome.

Then it scaled back to a re-org of the rt.jar to make it easy to run on mobile devices (Ironically we are seeing the full circle - Java started out as a Set-top box language, then graduated to an enterprisey kitchen-sink and now wants to come back to a modular approach).

Now they seem to want to do some half-baked OSGI compliant approach. Have they used OSGI on medium/larger projects? There is literally no amount of money you can pay me to tackle something that hairy and complex.

cowardlydragon 4 days ago 0 replies      
A lightweight JSON API? Hopefully they don't consider the XML jdk monstrosity lightweight. Java SDKs haven't produced superior technology to OSS libraries for a decade, so I expect Jackson to still be better.

The http client was so basic in the JDK it has spawned TWO apache HttpClients projects.

Jigsaw... fool me three times? Wasn't this supposed to be in JDK7?

gamesbrainiac 3 days ago 0 replies      
This looks more like a minor update, and not as radical as Java 8.
sapiogram 4 days ago 1 reply      
> improved support for multi-gigabyte heaps

I've heard this thrown around before, but what this actually mean? Is it just some optimizations to the garbage collector?

pswenson 4 days ago 0 replies      

Maybe around 2020 we'll get some useful stuff like string interpolation, long strings, default param values, and multiple return values!

lafar6502 4 days ago 0 replies      
Looks like they're actually listening to developers
kclay 4 days ago 2 replies      
Is it possible to have native JSON parsing with JNI bindings to make parsing faster, or will the overhead cancel out any boost in performance?
stusmall 4 days ago 2 replies      
I had heard a rumor that there ware talks of user defined value types. Does anyone know if there is any hope for this?
derengel 4 days ago 2 replies      
Does anyone know if project jigsaw will improve the startup time for JVM languages?
guelo 4 days ago 1 reply      
No language features?
miralabs 4 days ago 5 replies      
a new json api to be released 2016. Hopefully by that time json is still relevant. I know most likely it will but at the pace of change that tech has, im not betting.

is there any contender to json at the moment?

fortuitous 4 days ago 0 replies      
As a side note, I realized java 7's Objects class was copied from google's Objects library class, but with name changes. They could have copied the apache API, but nope. This is fine by itself, but these are the same jerkoffs claiming some sort of copyright over the java JDK API. Quite disgusting.
arielweisberg 4 days ago 3 replies      
Still no solution for the GC fragmentation and pauses? Arbitrarily large heaps and data structures?

They are going to improve lock performance, but do nothing to help people avoid locking like lightweight threads. Not waking up a thread and not locking is faster...

It's weird how so many software projects completely lose sight of the fundamentals.

I know I am biased due to how I use Java. I care very little for syntax and syntactic sugar. Reading and typing speed is not a problem for me. Get stuff done on time is and working around these shortcomings eats up my time.

When Patients Read What Their Doctors Write
281 points by mkempe  5 days ago   105 comments top 20
SoftwareMaven 5 days ago 10 replies      
I would imagine a lot of the concern over this is more of the existential fear resulting from the balance of power between patient and doctor than anything else. The Internet started that, with patients able to become much more knowledgable about their own conditions (with the unfortunate side effect of every symptom being cancer).

Once patients become knowledgable, the doctor moves from a pillar of all knowledge to a (hopefully) trusted, knowledgable advisor. That change frightens many in the medical community[1], but it will yield better outcomes.

My own story is one of overcoming obesity and, at times, nearly crippling depression using that ability to gain knowledge to learn how to feed my body. In the process, I've stopped medications and have had to teach my doctor certain things (like why I'm not gong to either worry about my cholesterol or take any drugs for it).

The medical community currently has an abysmal record with treating chronic health problems. There are a lot of reasons for that, but, IMO, the most glaring is people abdicating their health reonsibility to somebody else (whether doctors, pharmaceutical companies, or government guidelines). As people take control back...when they realize they have some control...they will become more healthy.

1. Source: my wife is part of that community and sees it regularly.

idlewords 5 days ago 9 replies      
One problem with this approach is patients who are making stuff up entirely. They're not a large part of the population, but since they relentlessly seek medical attention (often to the point of self-harm), every doctor is familiar with them.

Giving such patients editorial power over doctors' notes gives them a further lever with which to manipulate the system.

It's a weird situation in which the doctor/patient relationship is actually adversarial, and it poisons a lot of otherwise good ideas predicated on the assumption that doctors and patients want the same thing.

gingerlime 4 days ago 1 reply      
I've met the guys behind a German startup called "Was hab ich?"[0] - which translates roughly to "what have I got?".

It's a platform that lets people post their doctor's notes and have med students interpret it for them in an easy to digest form.

It helps both patients better understand their conditions and med students learn how to read and interpret diagnosis.

It's a non-profit as far as I'm aware, since part of their philosophy is giving access to patients irrespective of their financial ability. I think it's a really neat concept. Sadly only available in German / Germany.

[0] https://washabich.de/

mutatismutandis 5 days ago 0 replies      
I think this is great; I know for a fact that when I try to describe a series of symptoms to my doctor he will be typing away, and I think there's a lot of what I'm saying that gets lost going from the ears to the fingers. I also think, having both patient and doctor "on the same side" makes it seem more like a team effort and empowers people to take more of an active role in their health.
davycro 5 days ago 5 replies      
I work in a family practice every other week as a requirement for medical school. I've noticed that EMRs are very disruptive to a doctors bedside manner. For every visit the doctor types notes into a laptop while the patient speaks to her. Communication is inhibited and the doctor struggles to maintain rapport with her patient.

I would love to see the patients EMR displayed on a screen so the patient could see what the doctor typed as he spoke. This would make the process collaborative instead of one sided. It would also be a great feedback mechanism where the patient could double check that his doctor understood what he just said.

dfan 5 days ago 1 reply      
My doctor types at a computer whose screen is explicitly set up to point at both of us. I was surprised and appreciative when he first did so.
CWuestefeld 4 days ago 0 replies      
I've had Crohn's disease for about 35 years, and my experience makes me agree strongly with the article.

I have to go see my GI doctor a couple of times a year[1]. He's the department head at a teaching hospital, and so my appointments with start with a first-year resident examining me. After that, the "real" doc comes in, and the resident presents to the doc his findings and conclusions.

While I guess that some folks might object to an examination by "only" a resident, I find that this helps me because of the interchange between the resident and the teaching doc. At the same time the doctor is teaching his resident, he's also leaking that teaching to me. As a result, I come to understand my condition better than I would if were just going to a regular GI practice. And because management of a chronic disease like Crohn's is all about understanding its effects specific to your own case, getting this kind of feedback is invaluable.

[1] I moved recently, and need to find a new doctor with whom I can relate to like this. But it's easier to talk about in the present tense.

drdeadringer 5 days ago 1 reply      
Not having access to my own medical records is something that continues to annoy me to this day. I've heard a few arguments as to why the security is better than Fort Knox, many of these touched upon in the article ["Doctors want to be Free" and "Oh my, Liability"], but I have yet to buy any of them.

I hope this "open note" deal continues to trend, and becomes more so; horray for privacy, but bleh to "so secure, I can't see it".

baldfat 5 days ago 0 replies      
After going through Cancer with my sister in the 1990s and then the last 5 years with my son.

YOU ARE YOUR OWN EXPERT. Everyone else always drops something about you and you ALWAYS need to remind and talk about all the issues out loud with your doctor. If they don't find a new doctor if it is a big medical issue.

svec 4 days ago 0 replies      
Similar topic: "How Doctors Think" (http://www.amazon.com/How-Doctors-Think-Jerome-Groopman/dp/0...) is a great book. Amazon blurb:

"How Doctors Think is a window into the mind of the physician and an insightful examination of the all-important relationship between doctors and their patients. In this myth-shattering work, Jerome Groopman explores the forces and thought processes behind the decisions doctors make. He pinpints why doctors succeed and why they err. Most important, Groopman shows when and how doctors can -- with our help -- avoid snap judgments, embrace uncertainty, communicate effectively, and deploy other skills that can profoundly impact our health."

ersii 4 days ago 0 replies      
In some of the counties ("Landsting") in Sweden, the patient may log on electronically with a electronic ID (certificate based, issued by banks) and view their journal at any time.

All patients have a right to their journals, as far as I know - although, there might be restrictions on parts - such as psychiatric treatment I guess - and everyone can request to get a copy of their journal. A bit of a pain in the ass to obtain - but surely possible.

I just thought it might be interesting to add to the conversation/article how things are working in another country/part of the world.

jtheory 4 days ago 0 replies      
Brief article, but well-done -- this is one of the core ideas of our start-up (though we have no direct association with OpenNotes project).

I liked this in particular: Delbanco tells me that he considers OpenNotes to be "like a new medication." Just like any new treatment, it will come with unexpected side effects.

We've been negotiating these side-effects for a few years, now, with more & more success. Many of the obvious objections ("I need to discuss test results with patients before they see them!") have simple technical solutions, so we implement them (blacklist a set of tests that have a built-in delay before the actual result is shown to patients --though they can see that a new result is ready -- and give the clinician a daily list of what patients have gotten delayed-view results).

It is difficult for many doctors to get used to the idea; I have personal experience trying to get access to letters being written between specialists about me & my treatment, and just getting evasive answers even to persistent attempts. But it's so valuable to good care.

krisgee 5 days ago 1 reply      
As a complete outsides I don't see why anyone would be surprised, going to the doctor is quite often an expression of powerlessness, you have no idea and no control over what is going on in your own body and you need this powerful semi-stranger to do some divination on you and tell you what's wrong. Of course giving someone even a semblance of control over the proceedings helps them feel more engaged and more knowledgeable about themselves.
chintan 5 days ago 0 replies      
Back in the day, when Google Health tried to show patients their EHR data, here is what ensued:


MisterBastahrd 5 days ago 1 reply      
The biggest indicator of health is nutrition, yet it's one of the most poorly understood topics in medicine. Ask five different doctors and you'll get five different responses as to what are the accepted parameters in a healthy diet. What we need is a concerted research effort by governments to make headway in figuring this thing out instead of relying on research by teams funded by large agribusiness conglomerates. We also need (at least in the US) to start regulating what goes into our food. It's unacceptable to call something "lite" when you've just stripped out healthy fats and added chemical fillers made from corn sugar.

It's just as unacceptable that someone can graduate from high school without knowing how to balance a checkbook, open a checking account, or know that you should probably be reading the nutritional labels on the back of the food products you purchase... it's a societal failure.

novalis78 5 days ago 1 reply      
the only problem - in the US - with this is that the more you tell them the more they will bill you. It's like as if every little piece of information that otherwise should help a doctor identify what's wrong and result in a faster and more accurate diagnosis makes the billing department's job that much easier. Now they don't have to break down one single item and charge you 10 ways, they can break down each of your statements and charge you 10 ways for each.
motyar 5 days ago 2 replies      
Doctors writes too bad (poor hand writting) that sometimes patients cant understand. In India we are talking about a rule ( law ) where doctors have to write in CAPITAL only.
GhotiFish 4 days ago 0 replies      
You know. I checked the source (still checking) but it really seams what they did was give patients access to their notes, and then ASK them if that improved things.

How could this honestly be considered evidence that this is a good idea? This is the standard of evidence that a Homeopath would present.

Who could take this seriously? Patients reported taking their medication more regularly, here's an obvious question: Did they actually take their medication more regularly?

Maybe somewhere in the body this is answered. Let me keep looking.

edit: NO

  although self-reports fall short of objective data, open   notes may prove to be a simple intervention that has an   important effect on medication adherence.
Good, glad they lamp-shaded it.

edit2: http://www.myopennotes.org/

oooooohhh. This makes more sense. This is a paid for study.

Why does this have 200 upvotes?

Silhouette 5 days ago 0 replies      
This doesn't surprise me at all, but I'm happy to see it.

Just look at how many blatant errors are in an average person's credit history, one of the most sensitive and important files any other party will ever hold about them, and mostly driven by computer-generated automatic updates. They are still borderline works of fiction for significant numbers of people.

Those credit histories are a lot more limited and objective than a person's current medical condition and past medical history, so I find it difficult to imagine even the most diligent medical professionals could collectively hold numerous conversations with a patient and perform numerous tests over the course of that patient's entire lifetime and never misunderstand something, fail to record a potentially significant fact mentioned in passing during a conversation, or simply make a mistake and record the wrong thing.

I learned something about lawyers and accountants very quickly after I started my first business. They charge a lot of money for their expert knowledge, and often they do understand subtleties in their fields that I don't, but they also still make dumb mistakes. I have found my working relationships with those professionals are dramatically improved, and the end results likewise, if we work more collaboratively. For simpler things, I get familiar with the issues (often with the expert's help) and make a first attempt myself that the expert can then review. For more complicated things that I simply can't do, we schedule time for the expert to talk me through the big picture and double-check any key details.

I cannot imagine why doctors do not routinely work the same way. It seems to offer all the same benefits and moderate all the same risks for all the same reasons. The only major difference is that in the case of a doctor it could literally be my life or quality of life at stake rather than just some numbers on a page or words in a court, which surely makes it all the more sensible to work collaboratively as much as possible.

cherryblasters 3 days ago 0 replies      
I would love this!
Mitch Hedberg and GIS
265 points by rtpg  5 days ago   55 comments top 7
rahimnathwani 4 days ago 1 reply      
It's deliberate:

"Between February and June of 1969 ... no more full-service properties were planned ... difficult to control quality with in-house restaurants ... All inns built after La Quinta #505 were built ... at locations with area available to build a restaurant ... which would be leased to a major restaurant chain for management."

"June, 1969 ... La Quinta #507 ... Restaurant on the premises was leased to Denny's."


JacobAldridge 4 days ago 2 replies      
Reminds me of this classic article on a business strategy of opening a coffee shop across the road from a Starbucks - http://www.slate.com/articles/news_and_politics/hey_wait_a_m...
spinchange 4 days ago 0 replies      
"So, only 3.4% of the La Quintas out there live up to Mitch Hedbergs expectations...Update:...This yields 49 pairs (or 5.8% of all La Quintas)"

Brings to mind:

"Humor can be dissected, as a frog can, but the thing dies in the process and the innards are discouraging to any but the pure scientific mind" - E.B. White

baudehlo 4 days ago 0 replies      
One thing missed here is this sort of thing is a lot easier (to read and code) using the built-in earthdistance module.

The query doesn't need the added "shape" column unless you want it for indexes, and becomes simply:

    SELECT d.city, d.state, earth_distance(                    ll_to_earth(d.latitude, d.longitude),                    ll_to_earth(l.latitude, l.longitude)) as distance    FROM dennys d, laquinta l     WHERE distance <= 150    ORDER BY 3
No more magic numbers or confusing function names.

Note I don't mean this as a slight on the article - I purely mean it to educate postgres users that they can do this sort of thing easily without downloading/installing PostGIS.

kelvin0 4 days ago 1 reply      
Almost no comments about the amazing comedy of Mitch?I hadn't known about him until today ...The kinds of observation he makes are hilarious. Any fans?
Mz 4 days ago 0 replies      
It looks like this comedian died in 2005. So I am wondering what the percentage was when he was alive and making this observation.
daurnimator 4 days ago 8 replies      
> contains the locations of the chains hotels in JSON. Using a regular expression, I converted the hotel data into CSV.


Show HN: Stellar Git for PostreSQL and MySQL
263 points by obsession  15 hours ago   70 comments top 22
robert_tweed 13 hours ago 3 replies      
Generally the hardest thing with version control on a database (for an evolving codebase) is separating unrelated changes - such as schema changes vs content updates - and branching and merging those changes in sync with the code dependencies. Another issue is non-destructively replaying development changes into test/production environments.

So for example, you might have a feature branch that includes some schema changes and some value modifications, and a content branch that includes a bunch of inserts into a few content tables that happen to include foreign key references to each other (so you need to maintain referential integrity when replaying those updates/inserts).

I don't see anything in the description that indicates this tool address those problems. For me, those are really the only problems that a DB version control system ought to be focused on. Speed of snapshotting is not all that important in a development environment as you typically work on a cut-down dataset anyway. A minute or so to take a snapshot a few times a day isn't a huge deal, whereas taking more frequent snapshots doesn't seem like something that adds any value, if it doesn't address any of the other problems.

amirmc 12 hours ago 2 replies      
If anyone's interested in git-like storage systems then it's work checking out Irmin [1]. Previous discussion is at [2].

Excerpt: "Irmin is a library to persist and synchronize distributed data structures both on-disk and in-memory. It enables a style of programming very similar to the Git workflow, where distributed nodes fork, fetch, merge and push data between each other. The general idea is that you want every active node to get a local (partial) copy of a global database and always be very explicit about how and when data is shared and migrated

Irmin is not, strictly speaking, a full database engine. It is, as are all other components of Mirage OS, a collection of libraries designed to solve different flavours of the challenges raised by the CAP theorem. Each application can select the right combination of libraries to solve its particular distributed problem."

[1] http://openmirage.org/blog/introducing-irmin

[2] https://news.ycombinator.com/item?id=8053687

mbrock 13 hours ago 5 replies      
I wish projects like these would always include some basic info in their README about: (1) how it works, and (2) how it might fail.
falcolas 13 hours ago 2 replies      
So, it appears to just copy tables around within the database. I wouldn't want to use this on a DB over a few MB in size. Sure, restores are "fast" (a table rename), but copies are not so much.

I can't imagine this would be kind to a production database (lots of cleanup from copied & deleted tables), and would consume a lot more space than a gripped logical backup of the tables in question.

m3h 13 hours ago 0 replies      
Why does the author compare it to Git? The functions this software performs are no where near those performed by Git. Nor it is a proper version control system.
lucian1900 14 hours ago 4 replies      
This sort of thing is useful, but already supported by Postgres through transactional DDL. Migrations that fail will have their transaction reverted.
Gigablah 13 hours ago 1 reply      
From the code:

    INSERT INTO %s.%s SELECT * FROM %s.%s
Yeah, good luck with that.

swehner 7 hours ago 1 reply      
Line 53 of https://github.com/fastmonkeys/stellar/blob/master/stellar/o... is

                CREATE TABLE %s.%s LIKE %s.%s
This made me think of a table called

                create table `a; drop table users;`  (col int);
... which works in mysql.

I don't know if the stellar code will trip over something like this. But mysql (SQL) shouldn't even allow names like that.

squigs25 11 hours ago 6 replies      
The implications for this extend beyond backing up your database.

Imagine a world where daily time-series data can be stored efficiently:This is a lesser known use case, but it works like this: I'm a financial company and I want to store 1000 metrics about a potential customer. Maybe the number of transactions in the past year, the number of defaults, the number of credit cards, etc.

Normally I would have to duplicate this row in the database every day/week/month/year for every potential customer. With some kind of git-like storing of diffs between the row today and the row yesterday, I could easily have access to time series information without duplicating unchanged information. This would accomplish MASSIVE storage savings.

FWIW efficiently storing time series data is big problem at my company. No off the shelf solution makes this easy for us right now, and we would rather throw cheap hard disk at the problem rather than expensive engineers.

crad 12 hours ago 0 replies      
Maybe I'm missing something, but I didn't see anything with regard to indexes, users, stored procedures, views or what not.

Seems like it's for table schema snapshotting in a database without any external storage.

Browsing through the code, I see that it's highly table centric using SQLAlchemy.

bronson 10 hours ago 0 replies      
Nice. I wrote a similar tool for Rails / ActiveRecord models: https://github.com/bronson/table_differ

It takes snapshots and computes diffs between snapshots or the live database. It lets me drop and re-import some of my app's tables, then compute the minimum set of changes between the previous import and the new import. I wouldn't call it "git for ActiveRecord models" but it appears to be similar to this project.

Comments welcome! The docs, as always, could use some help.

josephcooney 2 hours ago 0 replies      
Typo? Shouldn't it be PostgreSQL not PostreSQL?
jdc0589 12 hours ago 0 replies      
Shameless plug for mite: https://github.com/jdc0589/mite-nodeSimple migrations that take advantage of everything you already know about git and sql, plus some other cool stuff.

It's not too mature yet, the readme is mediocre at best, and it has some issues that will popup when working with a team, but it's pretty damn useful.

jimktrains2 12 hours ago 0 replies      
While not exactly the same thing, I've recently found and started using https://github.com/nkiraly/DBSteward to specify schema and then store the spec in my repo with the code. It also supports diffing the current schema against a previous one, so that nice upgrade sql scripts can be generated.
jamesmoss 13 hours ago 1 reply      
Interestingly they don't show MySQL benchmarks in the readme; I suspect it might be because the MySQL implementation is pretty basic


iurisilvio 14 hours ago 0 replies      
I expected something related with Stellar coins.

Looks like a good project, I definitely want an easy way to manage development databases.

level09 14 hours ago 0 replies      
This is a nice project. I used to have my database dump tracked by git (in binary mode). anytime my db changes I'll have to overwrite the file with the new database dump and include it with the commit.

I'm just wondering if this project offers anything special/better than the method I described.

JohnDotAwesome 11 hours ago 2 replies      
How does it work? Where does it breakdown? Why are these things not in the README?
codeoclock 14 hours ago 1 reply      
Unfortunate name, excellent project :)
iso8859-1 13 hours ago 1 reply      
how does this compare to time travel queries? http://en.wikipedia.org/w/index.php?title=Temporal_database#...
ZenoArrow 12 hours ago 0 replies      
Just a small correction; it's not PostreSQL, it's PostgreSQL.
mosselman 12 hours ago 0 replies      
Looks very nice, could you put up some practical examples?
Multi-Datacenter Cassandra on 32 Raspberry Pis
274 points by zzzqqq  1 day ago   53 comments top 13
sgt 1 day ago 19 replies      
I'd be worried about just switching RPi's off. We recently got a Pi for the office to run as a dashboard - and after a couple of power cuts it corrupted the SD card.

Now I'm going to have to set up the system again, and I don't know whether this is going to happen again. The SD card that got corrupted was a Class 4 Kingston.

Maybe I'll look into a Sandisk (possibly Class 10?) next time. But I am worried that it's not the SD card's fault, but rather a combination of a journaling filesystem, an SD card and a sudden power outage.

Edited: Apologies, I realized now that the red button cuts power to the network switch, not to each individual Pi. But my concerns about the Pi and power cuts still remain though.

thinkingkong 1 day ago 2 replies      
Is there a video we can see?Hitting the button im imagining the circles showing some kind of re-sync animation?
coreymgilmore 1 day ago 0 replies      
Pretty cool. Would like to see it working (video/timelapse/gif)?

Also, any reason for not making the big red button randomly select a "datacenter" to take offline?

Idea: transition this into a 3 or 4 datacenter cluster.

crazypyro 1 day ago 0 replies      
I noticed the mention of FIRST and at the same time, noticed the red/blue color choice. I'm sure its just a coincidence, but still entertaining. Project looks awesome.
smoothpooper 1 day ago 0 replies      
Demoing the multicluster setup and simulating the failure to various people was the hardest part for me. This will help so much. A video will be nice.
PanMan 1 day ago 1 reply      
How is the circle of lights set up? What does it show?
mkoryak 13 hours ago 0 replies      
and here is the link to the "high res" picture of the setup 4000x2000:http://www.datastax.com/wp-content/uploads/2014/08/cluster_c...
fasteo 1 day ago 0 replies      
Picture of the back of that wall !!
rodvlopes 1 day ago 0 replies      
I see rpis everywhere... Are they self-replicating?
ribs 1 day ago 0 replies      
Wicked! I want to see a video.
rjurney 1 day ago 0 replies      
They need a custom designed enclosure with pretty lights.
yossarian314 1 day ago 0 replies      
bfrog 1 day ago 1 reply      
They say it was difficult to get a high performance DB running on a 700mhz chip with 512Mb of ram. Perhaps its just the wording but that sounds like the opposite of high performance to me.
Screenshots Forever and Ever Until You Cant Stand it
238 points by cleverjake  2 days ago   39 comments top 6
mwill 2 days ago 1 reply      
Jason Scott in general is one of my internet heroes. A lot of what he covers in his work is before my time, so it doesn't carry any nostalgia for me, but appeals on a different level altogether.

Books I've read, and classes I took in school, covered the history of the net and computers, but only the things that they feel is 'important', you get the overview of the evolution of programming languages, history of the computer, and timeline of the internet and world wide web. In each case, it feels like it's all about linking one big advancement to the next big advancement.

What you get from Jason's documentaries and presentations and sites however, is this really raw and honest look at what real people were actually doing at the time. It's hard to explain why that feels so important to me, but it does.

manifest23 2 days ago 0 replies      
One of my first websites was an emulation site in 1999/2000. SNES was by far the most popular category on the site so I had the bright idea to play 2-3 minutes of every single game in order to take a screenshot of the game-play. Three months later I was finally done. Then I lost everything in hard drive crash before I could push the new version of my site live. Dammit.
micah63 2 days ago 0 replies      
Man, I've been looking for the name of a Sega Genesis game for a long time and couldn't remember it. I just saw it on your site. "Atomic Rob-Kid" was one of the best games I've ever played. Super hard and super frustrating, but it has a great feel!



rdtsc 2 days ago 1 reply      
Ah ZX Spectrum that takes me back. I learned assembler on it, BASIC, had a Pascal and C compiler even (the last two had to load from tape). Made one mistake and had to reload the whole thing again and wait 5 minutes or so.

It was amazing how there was this closeness to the machine, you boot right into the programming environment and had to type a command to load a game or do anything.

Some of the games I remember were exceptional, Elite was one of them. Just thinking about the ability to pack everything in 48K of memory.

ErikRogneby 2 days ago 0 replies      
Wow, this is pretty spectacular.

I wonder if the copyright office collected information about the platform a game would run on when it was copyrighted? Could probably figure some of it out by the publisher. I might have to go look for that data to mine.

jmduke 2 days ago 6 replies      
I've been thinking a lot the past few weeks about the preservation of art and goods in general. I think it comes from two main sources:

1. Maciej Ceglowski (`idlewords) has been talking a lot recently about link rot. Recently, he found that 25% of items pinned a mere five years ago were dead links and 17% from only three years ago were dead [^1]. That's an incredibly high rate -- and, selfishly, one I'm noticing as my bookmark folders for recipes (RIP BroEats.com) and designs and other things is filled with more and more duds.

2. I've been reading Do Not Sell At Any Price [^2], a book about the subculture of 78rpms. These are records that are so rare and so -- for lack of a better term -- unwanted by the vast majority of the music-listening populace that the act of collecting them is less about hoarding and more about preservation. To quote one of the characters in the book (roughly from memory):

"It's a weird feeling, holding this thing in your hand and knowing that you could break the song," he said. "I snap this record in half and this song is lost forever. It's a lot of responsibility, and sometimes I think that's why I take it so seriously."

I can honestly say that, prior to reading this article, I had no idea what a ZX Spectrum was. Now, after some digging, I do -- and I still have no desire to play one, obtain one, or hold onto it in any meaningful way. (And seeing as I'm usually on the weirdly attached end of the spectrum with these kinds of things, I doubt I'm the only one.) But I'm struck by how important it is to hold onto these things, even if its in a cardboard box in a forgotten closet somewhere or a link on the Internet Archive that gets clicked once every couple decades.

I'm not positing that there will ever be a point in time that someone has the hankering to play ZX Spectrum Xtreme Chess, but I think there's inherent value in preserving this ecosystem -- something of a testament to the people who made it, the people who played it, the novelty that at one point in time there were five million living rooms with this machine in it.

The Web turned 25 this year, and it's already coming down with acute cases of memory loss. I'm hoping that by the time it hits fifty, the problem won't have gotten worse -- it will have gotten much, much better, not just with URLs but with remembering the time when people played 3D StarFighter by the Oliver Twins. [^4]

(This is a very roundabout way of saying the following: Jason, you are completely awesome for doing this, and thanks for sharing it with us.)

[^1] https://twitter.com/Pinboard/status/501406303747457024

[^2] http://www.amazon.com/Not-Sell-Any-Price-Obsessive-ebook/dp/...

[^3] The nice things about IA links is you can pretty reasonably assume that they won't suffer from link rot, right?

[^4] https://www.flickr.com/photos/textfiles/14771850314/in/set-7...

XKCD Time Wins Hugo Award for Best Graphic Story
237 points by doctoboggan  4 days ago   22 comments top 14
HCIdivision17 3 days ago 1 reply      
For those wondering just what makes this such a neat comic series, there was a memorable thread a year ago on it:[Spoiler warning!]https://news.ycombinator.com/item?id=6113636

Check it out, the story of figuring out the story is pretty great!

Edit: added afterburner's spoiler warning.

probably_wrong 3 days ago 2 replies      
I'm torn about this.

On one hand, "Time" managed to engage in real time a very large audience, spawned it's own micro-culture, and kept everyone interested for weeks. It was truly an innovative use of the medium.

On the other hand, the story doesn't read well in retrospective. Check all the comments here complaining - trolling aside, it doesn't translate very well into any other medium. I doubt even its fans would watch it again in real time and feel half the interest they did at first. Contrast with "Saga" (the 2nd place), which you can re-read several times and still enjoy it.

"Time" was a one-time work - if you didn't catch it back then, now it's too late. The story (IMHO) is average at best, but the delivery was incredible. I think the judges favored medium and delivery over content, and I'm not decided on whether I agree with that.

doctoboggan 4 days ago 1 reply      
You can browse through all the panels here:


Splendor 3 days ago 0 replies      
rsfinn 3 days ago 0 replies      
Well, I don't like to say I told you so, but: https://news.ycombinator.com/item?id=6148415

(No, I didn't actually nominate it; I'm too lazy. But I'm delighted it won, even though it beat Saga to do so.)

saganus 3 days ago 0 replies      
Woops. Forgot to put spoilers warning. Sorry. I don't see much comments so I thought I could give most of the interesting points. Better delete it.

Without giving much, TL;DR It's not just a comic, it's a deep story with lots of very interesting and well-thought clues that give many more dimensions to a stick-figure comic.

ferrari8608 3 days ago 1 reply      
That was wonderful! The characters, their dialog, the story, everything was just perfect. I don't know how I never saw this XKCD before, but thank you for bringing it to my attention.
JacobEdelman 3 days ago 0 replies      
When talking about "Time" its hard to ignore the wonderful thread on it on the xkcd forum. If you can't understand what they are saying its not your fault. They have such a detailed culture and so many customs that they are no longer speaking English. Link: http://forums.xkcd.com/viewtopic.php?f=7&t=101043&start=8284...
prawn 3 days ago 0 replies      
Wonder if there's ever been interest in adapting it as a game? Bit like Limbo without the same menace.
BerislavLopac 3 days ago 0 replies      
I always wandered if someone would make that into a movie. Maybe something for a kickstarter campaign?
mabbo 3 days ago 0 replies      
Best novel for 'Ancillary Justice'? Neat. I finished it two days ago, quite enjoyed it.
germs12 3 days ago 0 replies      
I want my hour back.
sparkzilla 3 days ago 0 replies      
Really boring. Switched off after five minutes.
The Anti-Facebook
257 points by fourstar  4 days ago   164 comments top 33
shazow 4 days ago 7 replies      
I am part of a Nextdoor neighbourhood in a Bay Area suburb with 302 neighbours (216 of 423 households). It's very handy.

The thing that surprised me most is how publicly abrasive people can be when they're using their Real Names with real photos and real descriptions of their children and pets just a click away, talking to people who live just down the street.

There's a big hubbub in my 'hood about some homeowners who want to rebuild our community pool, a multi-million dollar project. Vast majority of the neighbourhood doesn't care one way or the other, but they don't want their HOA fees to increase.

Had it not been for Nextdoor, the loud minority would have quietly passed the bill and started construction because nobody attends the community meetings or bothered to vote. Except, Nextdoor started taking off in our area just at the right time and a bunch of people flipped out when they found out about this through various threads on Nextdoor.

There was namecalling, sarcasm, pedantry, even classic trolling (people taking positions that they clearly don't care about just to upset the original poster). Almost Youtube-comment level stuff. Even weirder, most of our neighbours are middle-aged or older. They didn't grow up with this kind of online behaviour and had trouble recognizing it.

Clearly the behaviour of these people is not Nextdoor's fault. I am grateful that Nextdoor is there partly for passively observing the drama in my community and partly for actually feeling like I'm getting to know the people I run into when I walk my dog.

Coming away from working at Google during the peak of the Real Name controversy, it's weird to see the benefit premise explicitly shaken, if not refuted.

idlewords 4 days ago 5 replies      
To really be an anti-Facebook, this service would need to be decentralized. And it's a perfect example of a service that should be decentralized by design. There's no earthly reason to have this live on one server somewhere, except if you want to track people and show them ads.
sytelus 4 days ago 1 reply      
Slack is killing emails.

Nextdoor is killing Facebook.

Verge is killing journalism or what's left of it.

In reality Slack had only 150K users. Nextdoor is barely known outside of few neighbourhoods (sure, they can claim 1 in every 4 neighbourhood has "adopted" Nextdoor). Lot of articles from Verge getting posted here recently smells a lot like just paid PR stuff for startups. They are almost like informatials on late night TV. Take everything from them with huge pinch of salt.

chaostheory 4 days ago 3 replies      
This is a nice submarine ad.

This would be great if people were more active on NextDoor. I haven't seen too many neighborhoods in the Bay Area where it works beyond 4-5 active people.

debt 4 days ago 2 replies      
Sorry but NextDoor sucks in terms of being an Anti-Facebook. EveryBlock was killing it so hard and NextDoor just kind of filled the void once EveryBlock was acquired by MSNBC. I know EveryBlock is coming back though which is awesome.

Any Anti-Facebook service needs at least a good "News Feed" like Facebook does. EveryBlock had a really awesome and useful news feed. You'd see all the new permits(film locations, building, zoning, etc.) issued, crime reports, comments about community issues, events, etc. in your neighborhood. It was exactly what I thought of in terms of "hyperlocal" news. It was extremely useful even as a passive user.

NextDoor just isn't any of that. They don't have the same News Feed quality that EveryBlock had. NextDoor posts are like "I have a new Ikea desk I'm trying to get rid of" or "What's happening at 20th and Mission"-style Twitter posts. Not very informative or useful.

thrownaway2424 3 days ago 3 replies      
FFS. Their site says "Login with Facebook" so I try. Apparently all this does is give them access to your Facebook profile, it doesn't actually give you an account on Nextdoor. You still have to provide your email address and establish a password.

In other words, even their signup page contains a scam, designed to steal your friends list. And I'm supposed to trust this site with anything? Fuck no.

eitally 4 days ago 1 reply      
I am the "neighborhood lead" for Nextdoor in my neighborhood and I have found it incredibly useful, for a number of reasons: meeting neighbors, unloading free/cheap stuff I don't want to put on Craigslist or Freecycle, learning about neighborhood problems & news (vandalism, construction, permits, etc), finding and vetting service providers (plumbers, landscapers, electricians, etc), and generally staying in touch with people I live near. This is hugely more valuable than the crap I see on Facebook. Nobody posts ice bucket challenge videos on Nextdoor, or kid pics, or game invites. :)
tekni5 3 days ago 1 reply      
It would be cool if someone in the neighborhood could purchase a device that would setup a local nextdoor type of service. It would show up as a wireless connection, once connected when they try to visit a website it would give them an explanation what this service offers and allow them to setup a profile. Only people within a certain distance would be able to connect, the network could be expanded with multiple devices. It would allow, decentralized networking based on geographic location. Users would also be allowed to create a backup of their profile and interactions for record keeping if they wish.

It could be very helpful for local discussion, community awareness, emergency communication (if the access points are kept off the main grid) and possibly even direct democratic voting for small local issues.

Sort of like a PirateBox, but more sophisticated non-anonymous local private social network. Not entirely sure if the technology exists to allow this to scale affordably to at least a block or two.

AustinDev 4 days ago 3 replies      
This is a cool and much needed social network however it appears signup is broken at the moment. I tried 2-3 times to make it through the signup page and couldn't do it with either Facebook or Email signup.

Having your user registration broken when you get a positive article published about your service must really suck.

EDIT: Seems to be a chrome issue. Submitted a request to their support time. Safari seems to work just fine.

rozza 3 days ago 0 replies      
For folks in the UK theres http://streetlife.com which also is a local social network.

You can verify your address to prove you are local and subscribe to local area conversations and news etc... Just like in life the communities are mixed - some more involved than others but I've found it a great resource so far.

johnchristopher 4 days ago 1 reply      
Being in Europe I wished I could have a peek at what's inside. I wished I could set up an account and see what happens and if my neighbors would sign-up. I suppose it's not possible (yet) because of i18n, targeted/local ads and public announcements particularities ?

Any open-source alternative I could set up ? A small diaspora/facebook clone ?

halcyondaze 4 days ago 1 reply      
I had this idea a while back and I'm glad that Nextdoor is dominating it. Growing up on a double cul-de-sac, I'd say I was fortunate enough to have a close neighborhood just by virtue of the shape of the street, but for people that didn't have that this seems like a really awesome service.
spingsprong 3 days ago 1 reply      
What happens if somebody wants to join, but the Leads refuse?

If a small minority of Leads can prevent people they don't like from joining, it seems like it risks reinforcing bigotry and intolerance.

sdm 3 days ago 0 replies      
I'm really confused why someone would want to know their neighbours. I don't know my neighbours but even if I did, I wouldn't want to be sharing with them on an online network. I like my anonymity and privacy.
junto 3 days ago 0 replies      
They talk at the end of the article about monetisation. This kind of network really has the possibility of disrupting Craig Craigslist. Proof of identity and local neighbours would hopefully reduce the kind of scams you see on craigslist.
k-mcgrady 4 days ago 3 replies      
Serious question: is this something that would be popular in the US? I could never see anyone in my neighbourhood using a private/local social network. Interested to hear from people who think this would be popular in their country.
govindkabra31 3 days ago 0 replies      
My favorite nextdoor story is when it helped neighbors find chicken poop https://twitter.com/kabragovind/status/483721368710963200
ajaymehta 4 days ago 1 reply      
I'm glad to see Nextdoor getting this kind of recognition. I've moved around the Bay Area several times in the last few years, and every new Nextdoor community I've joined has been very active and helpful (I bought furniture, found out about a block party, and much more). Highly recommend joining.
NathanCH 4 days ago 0 replies      
Can someone provide me an inside look at Nextdoor? I'm not an American but want to use the website as inspiration for a personal project, but as you know, I can't get passed the sign up process.

I'm curious about features and UI implementation. Thanks

amwelles 4 days ago 0 replies      
I loved using Nextdoor in my last neighborhood. I found a dog walker, got some free yarn, and had a better sense of who my neighbors were. I don't have the time to dedicate to being a neighborhood leader, though, so I haven't set one up in my new neighborhood.
lilsunnybee 3 days ago 0 replies      
Oh wow could this be any more transparently a PR fluff piece? This doesn't reflect well on The Verge at all as far as any sort of journalistic integrity goes.
jfb 4 days ago 0 replies      
"American neighborhoods"? That seems like a bit of a reach.
Mahn 4 days ago 0 replies      
Wasn't there a similar service that shut down because it couldn't get traction a few years ago? I remember seeing it here in HN.
jokoon 3 days ago 0 replies      
Finally, I was thinking about this too: only allowing to show neighbors who are in your area instead. Maybe you need some mechanism to forbid users to quickly change area, or make it hard to create multiple account to watch several areas. That would be quite a big bump for privacy.
leef 3 days ago 0 replies      
Seems a bit difficult to be the anti-Facebook when the very first screen presents a login with Facebook button.
ggiaco 3 days ago 0 replies      
Wonder if any thoughts on Spiral (sprlr.com) as an alternative based on location instead of proof of residence - so you could always connect to the community around you, even if you move around. Can work for work settings, colleges, events, etc.

FD: I'm involved with Spiral.

namenotrequired 4 days ago 0 replies      
We're trying to do something similar but a bit more narrow at https://peerby.com/ . It's specifically for items you want to borrow. We're based in Europe but the SF community is picking up pretty well right now.
Vanayad 4 days ago 0 replies      
"40,000 neighborhoods, or roughly one in four American communities, with 10 or more active users"

Found it funny as hell.

ausjke 3 days ago 0 replies      
I don't use Facebook, and I use Nextdoor all the time and it seems very useful to me.
TheMagicHorsey 4 days ago 1 reply      
I don't know about other neighborhoods, but Nextdoor in SOMA is pretty piss poor in terms of content.
morgante 3 days ago 0 replies      
From the looks of it, Nextdoor is very similar to Front Porch Forum, except FPM has been around for almost a decade but exists only in Vermont. While occasionally useful, it inevitably reminds me that there's a reason the Internet took off in the first place: I have very little in common with my neighbors besides geographical proximity.
Kiro 3 days ago 0 replies      
How are neighbourhoods defined? What are the areas based on?
Zikes 4 days ago 0 replies      
OT: I'd like to take a moment to appreciate The Verge for making the first mention of Nextdoor in the article a link, and for making that link actually go to the Nextdoor web site instead of a silly "here's what The Verge has to say about the company Nextdoor" page.
Serendipity When 2 people listen to the same song at the same time
222 points by gflandre  1 day ago   65 comments top 21
eatitraw 1 day ago 2 replies      
Warning: it starts playing music automatically. Be careful to adjust your volume so you don't bother anyone around you.
moskie 1 day ago 2 replies      
While this data is interesting enough on its own, the map animations are even cooler. The transitions from one location pair to the next are mesmerizing, and can provide some really cool perspectives of the globe. Great execution on that.
ZeroGravitas 19 hours ago 2 replies      
ahnberg 1 day ago 1 reply      
Pro-tip: press space whenever you hear something you like and the song will continue playing, and you have a good chance to catch it. Also, clicking anywhere on the screen (while paused or not) takes you to the active song in Spotify.
billmalarky 1 day ago 0 replies      
Kyle McDonald has a lot of cool projects. Check out this one http://vimeo.com/29348533 using the open source Facetracker library (built by Jason Saragih and maintained by Kyle).

Pretty friendly guy, helped me out via email with some questions I had when I was playing around with facetracker.

cheshire137 12 hours ago 0 replies      
Very annoying that it started playing music by itself.
paul9290 1 day ago 2 replies      
Cool, how about 2 or more people listening to the same audio in sync on their different Internet devices, Spotify?

Together creating a stereo system with friends & or those in the crowd around them.

Anyone else interested in such a feature?

shalmanese 22 hours ago 2 replies      
Every song selected was in English. I'm not sure if this is because it's built so only English songs show up or because English has become the defacto global language for music.
iLoch 1 day ago 2 replies      
I'm finding the pause button doesn't react in time for me to catch the song most of the time. By the time I realize I like what I'm hearing it's already too late to pause it. An adjustment for time per song would be great.
aparadja 1 day ago 2 replies      
Based on a few minutes of observation, Ed Sheeran is the most popular artist in the world.

Is there any sophistication behind the sound clip selection? Just a certain static point in each song, or some kind of algorithm to get to a recognisable part?

PaulJulius 1 day ago 2 replies      
As the music started to play I reached to pause the music I already had playing, but then I realized that it was paused automatically by Spotify. That's a pretty cool feature that they have - very well integrated.
netvarun 22 hours ago 1 reply      
Off-topic: Could the admins change the link to point to the final, redirected url - https://www.spotify.com/us/arts/serendipity/ ?

Anyways, fantastic execution! Great visualization. My only super-minor complaint is the fade in/fade out could be a little less abrupt when the songs change :)

madaxe_again 11 hours ago 0 replies      
I call this phenomenon "radio".
owenversteeg 18 hours ago 0 replies      
If you want to keep a track playing, just hit ctrl-page up to switch to another tab. It'll play for the track's full 30 seconds.

Or you can click the background to listen to it on play.spotify.com.

theworst 1 day ago 0 replies      
I've always thought this would be cool for e.g. a cross-country team, or friends running together, to have.

Imagine incorporating a PA system so a coach could talk to and track his athletes on all their training runs...

huuu 16 hours ago 0 replies      
While listening to this it made me realize how much music is compressed nowadays. I think this is a bad trend.
Grue3 20 hours ago 0 replies      
That's nothing, last.fm would show who is listening to the same song you are listening to right now.
Trufa 1 day ago 0 replies      
A missing feature would be to be able to see a list of the songs that were played, I missed a couple of songs I'd want to listen a little bit more.
cmstoken 22 hours ago 1 reply      
Wow, what an awesome project. Would be cool to read how it was made.
ris 14 hours ago 0 replies      
Jesus, people have an awful taste in music.
taeric 1 day ago 1 reply      
Neat and all.... but with the beauty of "radio" one could basically light up a crapton of folks in any given area all listening to the same song.

I remember back when I delivered pizzas, it was not uncommon for most of us drivers to all be humming the same song as we are getting stuff inside, since we all listened to the same stations.

If it was a really good song ending as I got back to the store, it was not uncommon to find that I waited it out in the parking lot along with at least two other drivers. :)

Biologically extending human vision into the near-infrared: Initial success
219 points by irollboozers  1 day ago   59 comments top 14
JacobAldridge 1 day ago 1 reply      
Link to the original Project Page, if (like me) you're playing catch up on the experiment:


gus_massa 14 hours ago 1 reply      
Copy of a comment I made in a previous submission, a few hour ago: https://news.ycombinator.com/item?id=8207152

Well, the data is very noisy. The main problem is that this data doesn't have a before/after comparison. Is the 850nm light visible now or it was always visible???

It's also very difficult to make a fair comparison. The room must be the same, the light sources must be the same (a new coffeepot with a small led can ruin the experiment, removing a coffeepot because it has recently broken can ruin the experiment).

For a preliminary experiment, the before-after comparison is enough. For a serious experiment you need many voluntaries, compare the before-after signals of them all at the same time in the same experimental conditions, and double blind testing.

There is a small possibility that they are measuring "excitement" instead of light. The subject hears that they are now going to test with very near infrared light. He got exited. They measure that. Perhaps the flash makes a slight sound, perhaps the light operator makes a slight sound. (Perhaps the 850nm flash makes a sound that the other flashes don't make?)

specialp 20 hours ago 2 replies      
This could certainly be possible. Jay Neitz did experiments on monkeys to cure colorblindness using gene therapy and was successful. [1] He has said that perhaps one day humans can have genes for more color receptors added to be able to see more colors as some birds do.

1. http://www.neitzvision.com/content/genetherapy.html

leoc 21 hours ago 3 replies      
diziet 1 day ago 1 reply      
I'd love to see the ERG readings for more experiments and before vs after at 950nm~
qwerta 14 hours ago 0 replies      
My astronomy friends are into hard-core start gazing. One experiment was in La Palma island with near-perfect night sky at 8 000 feet. One guy could see 8.1 magnitude stars at 80% cases (independent stats). With oxygen and some training he would probably get to 8.5 magnitudes.

There are similar stories with sound etc. I think some people can see near infrared, it is just question of finding them.

dedward 23 hours ago 1 reply      
I seem to recall an article from some years back about someone using welding goggles with multiple layers of a specific blue filter on a very bright day and being able to see near-IR.. or something darn close to it.
tdaltonc 20 hours ago 0 replies      
When is the flash on and when is it off in these plot? What would these plots look like in a control subject?Does the subject have any other indication of when the flashes are occurring?

I know that this isn't written to be read critically, but I don't know what the take-away is.

sigil 1 day ago 4 replies      
What an interesting experiment. Could there be some basis, after all, to the urban legend that eating carrots improves night vision? Carotenes are "partly metabolized into Vitamin A" [1], but this experiment is skipping the precursors and going straight for what I assume are large and exclusive doses of Vitamin A. Can it really be that no one has tried this before?

Related and probably equally silly idea: I've always wanted a pair of sunglasses that could tune in to different EM spectra. How far are we from that? Night vision goggles are bulky because they need external power to do the frequency shifting, right?

[1] http://en.wikipedia.org/wiki/Carrot#Nutrition

tylermenezes 1 day ago 0 replies      
What's really cool is that this entire project was done for under $5k!
_greim_ 21 hours ago 1 reply      
> near-infrared

So, still red then?

Garbledup 1 day ago 0 replies      
Through technological enhancement[1] or practice it seems that anyone can make an attempt at monitoring & responding too these frequencies.


TTPrograms 23 hours ago 0 replies      
Those plots really need labels.
userbinator 1 day ago 0 replies      
This is particularly relevant given that there's been a recent trend of interest in thermal imaging cameras... of course, the range of those is in much longer wavelengths.
The Chairless Chair, an invisible chair that you can wear
217 points by 51Cards  2 days ago   67 comments top 25
jasonkester 2 days ago 2 replies      
A few hundred years late, and a bit on the expensive side compared to its competition:


I built one of these for backpacking trips for a little less than $5 for a wooden disk, a couple plumbing bits and a clip belt. Silly looking when you're walking around with it, but infinitely better than sitting on a wet log next to the campfire.

bane 2 days ago 8 replies      
This appears to be something that's solved with the Asian Squat. It's not fashionable in the West to do this so we don't build up the right flexibility and tendon strength to do it comfortably. But if you can train yourself to do it, you can do it for hours. It's basically human's default "sitting" position.


wuliwong 2 days ago 1 reply      
My buddy has been pitching the idea of "chair pants" to me for a decade at least. Glad to see someone finally executed on this. :)
tofof 2 days ago 1 reply      
Sure playing fast and loose with "invisible", aren't we CNN?
drcode 2 days ago 0 replies      
It's gotta suck or be vaporware, given that no single video exists on the entirety of the internet of the device in action... only cheesy renderings and stills.
ChuckMcM 2 days ago 1 reply      
Interesting concept. I used to carry a 'nada chair'[1] in my backpack when hiking, I suspect this is much heavier though. I could totally see it as a huge win for folks who had to stand while customers were around (think the guy selling food from a cart on the street). If you motorized it so that it helped older people stand up then it could be a double win for them.

[1] http://www.gingerbreadshows.com/nadachair/

anigbrowl 2 days ago 0 replies      
I expected the worst from the headline but this is actually pretty neat. Seems like it could improve safety as well in production environments where workbenches or sit stools could present a trip hazard (eg if you're manhandling large objects that obstruct your view of the ground).
iovar 2 days ago 1 reply      
It looks really uncomfortable to me.

Straps holding it in place, only two pads beneath your butt and no back support.

Maybe in a two minute demonstration it's ok, but wear it all day and I bet it will feel like a jail.

As for the assembly worker video example, it doesn't seem like a well-thought use case.

Why not use a stool? Cheaper and might have some back support.

Also, off the top of my head:

What happens if you forget and lean backwards, even a bit ?

How much time does it take to put it on and take it off?

How easy is it to put it on in a slightly incorrect manner and twist and break your leg?

josephschmoe 2 days ago 0 replies      
This sounds really useful. If it's less than 100$, I could see it selling very well outside of a convention.

If a future iteration is cheap, light and can be worn below clothes, I could really see this catching on.

kalendae 2 days ago 0 replies      
found a 2008 article on similar honda 'legs' http://www.wired.com/2008/11/honda-announces/
swombat 2 days ago 0 replies      
Awesome invention. If they can make it even less intrusive people might start wearing it in daily life. Not sure how to feel about the "Chairolution" slogan, though.
jonknee 2 days ago 0 replies      
We've come full circle--from a standing job to a desk job to a standing desk job to a standing job where you can sit on your pants.
colordrops 1 day ago 0 replies      
This seems to be a stepping stone to widespread fully powered exoskeletons. I could imagine the next version of this supporting lifting capability.
haversine 1 day ago 0 replies      
I bet pregnant women would like a version of this which supported their body weight sporadically throughout the day, especially in the late third trimester.

Hell, I want one to help me do the dishes. There's somewhere a stool wouldn't make much sense.

Shivetya 1 day ago 0 replies      
Question, if standing desks are so great then why is standing at work considered bad? Only reason I can come up with is that with the desk you can set its height
m-app 1 day ago 0 replies      
These guys are definitely streets behind:


mivanov 2 days ago 1 reply      
stang 2 days ago 1 reply      
Invisible chairs have been around for a long long time: http://i.imgur.com/tIIBKCY.jpg
reddog 2 days ago 0 replies      
This would perfect with my standing desk!
2810 1 day ago 0 replies      
I think it can be even more invisible..www.youtube.com/watch?v=DkmkGFHTjRg
allochthon 2 days ago 0 replies      
A tiny step closer to mass-market robotic exoskeletons.
EGreg 2 days ago 0 replies      
I remember when I was singing in the Juilliard pre college chorus as a kid, we had to stabd for hours on end in a concert. I wanted to make pants that go above the knees and lock into place, so they support me standing. So I wanted to build a low tech version of this when I was a kid :)
wehadfun 2 days ago 0 replies      
seems like it would hurt.
trhway 2 days ago 0 replies      
Last slide suggests that RyanAir would love it.
fnazeeri 2 days ago 1 reply      
Sitting is the new smoking. This thing is like the e-cig of chairs...
NY Times releases military surplus gear data on GitHub
213 points by frenchman_in_ny  3 days ago   132 comments top 26
amcnett 3 days ago 4 replies      
I was surprised to see a number of mine-resistant vehicles associated with very rural counties in Washington State. Not being completely sure whether a mine-resistant vehicle was a tank or not, I googled the term and came across this article:


Choice quote from the article:

Heres the thing, Shellmyer says. Washington, Iowa, has 8,000 people. We have an MRAP now. We have a SWAT team. We have [police] dogs, and we have a SWAT team transportation vehicle thats not armored.

The city councilman began to think: Goodness, this is overkill.

thewopr 3 days ago 4 replies      
Quick question, is the apache license really the most relevant for a dataset? Does that license apply?

I ask only because I'm planning on doing something similar.

stormcloud 3 days ago 5 replies      
I can only imagine this is an error, but apparently Brevard County, FL has received at least 61 helicopters... 8 of them worth $18m a piece.

Someone tell me this is misreported? There is no way a county of ~500k people could need 61 helicopters, rght?

jaredstenquist 3 days ago 1 reply      
The DOD gives this shit away (to our rural towns and cities) so they can consider it in use and order more from contractors, which gives more cash to the lobbyists and contractors. Rinse and repeat. It's very straightforward.
wisty 3 days ago 1 reply      
It's lucky crime rates have dropped so low. You wouldn't want this kind of hardware lying around if there was any chance the wrong king of person could get their hands on it.

It would make a great movie or game premise though.

ceejayoz 3 days ago 2 replies      
One county on the map has ~16k population and 640 military surplus assault rifles. If they're equipped with 30 round magazines, they can shoot everyone in the county without reloading once.
partacus 3 days ago 1 reply      
Sorted from most greedy to least, wow, look at Florida:

StateAmount FL$252,801,365.49 AL$117,321,970.75 TX$93,960,116.66 CA$92,199,594.55 TN$88,036,810.05 GA$74,258,127.54 IL$63,856,929.46 SC$49,446,894.25 MI$43,557,552.29 IN$43,153,872.84 OH$41,066,993.83 KY$38,672,666.63 PR$37,712,132.94 AZ$37,173,754.35 OK$26,113,459.50 NM$25,077,905.94 NY$24,920,353.44 VA$24,257,646.82 NJ$24,075,459.47 WA$23,543,976.61 AR$21,806,380.46 DC$21,741,478.09 LA$20,327,539.50 CO$17,701,285.74 MO$17,481,149.80 NC$17,296,016.90 DE$12,483,178.35 ME$12,048,389.87 MA$11,878,711.88 WI$10,122,693.61 WV$8,970,650.95 MT$8,943,135.43 NH$8,806,115.87 MN$8,580,400.72 CT$7,920,540.33 IA$7,493,026.26 ID$7,491,468.74 MD$7,049,130.61 OR$6,891,336.22 PA$5,942,289.17 NV$5,836,317.88 GU$5,466,524.59 NE$5,430,787.55 RI$4,812,144.16 WY$4,575,149.39 KS$4,009,658.36 ND$3,871,164.59 UT$2,264,747.07 MS$1,791,294.53 SD$1,771,105.98 VT$1,609,630.11 AK$706,554.76 HI$521,054.41 VI$228,504.00

sr-ix 3 days ago 0 replies      
A contributor just uploaded the data in CSV format as well.
dmourati 2 days ago 0 replies      
NPR covered this military surplus program. The most frightening fact was the typical local law enforcement agencies must agree to "use it or lose it" with the acceptance of the gear. This sets up a perverse incentive and encourages local PD to misuse military hardware or forfeit it back to the federal government.
zrail 3 days ago 4 replies      
This is awesome. Not really sure why they chose to release it as an XLSX document on GitHub, but it'll work!
frisbee14 3 days ago 0 replies      
Imported it into Google docs: https://docs.google.com/spreadsheets/d/1AXPtmdbZ6zJph9Nly6_3...

(throwaway account)

crazypyro 3 days ago 1 reply      
Might just be the parts I looked at, but some of the data is bad. e.g. Repeated orders, orders with 0 cost, but then the cost is calculated into another line, etc.

Also why does the Florida Police (or anyone) need a 800k Mine Resistant Vehicle??

cmsmith 3 days ago 0 replies      
Note that Washington, DC seems to have received 17 military cargo planes despite not having an airport (also shows up on nytimes.com piece). Is it possible that this is a mistake?
ISL 3 days ago 3 replies      
No matter who was doing the acquiring, the "acquisition costs" of firearms are impressively low. Who buys a military-grade .45 pistol for $60?
notjustanymike 3 days ago 3 replies      
What's an "extreme mitten" ?
rrggrr 3 days ago 3 replies      
Disappointed but I guess not surprised to see the small number of helicopters, armored vehicles and assault rifles provided to southern border states. Federal government appears happy to distribute heavy weapons anywhere except where they are needed most as evidenced by actual incidents.
geetee 3 days ago 4 replies      
What in the world do police need parachutes for?
wcummings 2 days ago 0 replies      
Their Github has some other repos w/ data, and a few w/ code (to process the data etc)
teachingaway 3 days ago 1 reply      
I see 205 of "Launcher, Grenade" followed by only 1 of "Laundry, Cleaner"
orf 3 days ago 1 reply      
AL,CHEROKEE,4930-01-442-9106,"DRUM,HOSE REEL",1,Each,1630.97,2013-06-20

AL,CHEROKEE,5120-00-222-2220,"MALLET,RAWHIDE ",3,Each,50.31,20120518


Stop this madness.

DanielBMarkham 3 days ago 1 reply      
Couple of random observations after looking at the data:

1) Looks like a contest where the winners are folks who are able to pull the biggest political strings in DC. It has nothing to do with forces needing anything. This was a free-for-all giveaway. It's all political.

2) In defense of DoD, once you build this crap, it's gotta go somewhere. Maybe some of these MRAPs could only be used for local parades. Local PDs do not need this junk, but the rest of the country doesn't need it either. Better dumping it on Deputy Joe than letting it rot. As long as Joe doesn't start getting delusions of terrorism.

3) A lot of the local rural counties where I live got M16s. I guess that seems useful. The M16 is a fine rifle, and if you could get every one of your cops a proven rifle it sure beats trying to get the poor local governments to pay for them. The cities are a different story: much better connected and with more resources (and ambition?) to screw as much out of the system as possible. The nearest city to me is getting all kinds of idiotic stuff. Do we really need 20 $4k night vision sniper scopes? Perhaps if the city were attacked by protesting vampires such a purchase would be useful. But I guess guys gotta play with their toys.

The distribution alone is not worth ranting about. The problem is what happens once all this junk is distributed. If you own a bear gun, you have a tendency to go out into the woods hunting bears. You also see evidence of bears where others do not. That's the real problem.

lotsofmangos 3 days ago 0 replies      
How long before state police start pointing these back upward? I mean, in some areas it is basically handing military gear to secessionists, which does not seem all that bright. I certainly wouldn't like to be the federal official charged with the job of asking for any of them back.
comrh 3 days ago 3 replies      










lifeisstillgood 3 days ago 0 replies      
I presume this is an obvious leap, but in Ferguson the BBC reporter just commented on the tensions between the Black population and "the security forces".

I used to scoff at the "militarisation of the police" stories on HN. I assume this is the same mental leap everyone else is having?

bradgessler 3 days ago 1 reply      
In .xlsx format.
krawczstef 3 days ago 0 replies      
Where's the D3 vis of it? :D or iPython notebook on it? ;)
Show HN: Satellizer Authentication for AngularJS
217 points by sahat  4 days ago   34 comments top 17
filearts 4 days ago 1 reply      
This is a very nice solution and API for the front-end. It took me a couple part-time months to put together a similar (not modularized) solution for a rewrite of Plunker. There is quite a bit of juggling of information to do to pass around the appropriate information between client, server and auth providers that seems to have been nicely abstracted.

There were three major challenges for me in my implementation and I'm wondering how these could be addressed with Satellizer:

1. Anonymous content creation that can be attributed to a user upon sign-up or sign-in. On Plunker, anonymous users can create 'plunks' that will then attributed to them if they decide to register. This is important to allow streamlined user acquisition.

2. Account merging when someone accidentally creates two different user accounts with different social identities. This gets weird when anonymous content creation is involved since someone could create content while signed out and would need all that content re-attributed when they sign in.

3. Multi-provider authentication. In Plunker, certain features will only be available if the user has linked (for example) Dropbox. This means consumers of the api need to be able to add / remove social identities to / from users.

Hope to hear how you might attack these problems with something like Satellizer (or other people's approaches that have worked).

lynndylanhurley 4 days ago 0 replies      
I built something similar that's gained a bit of traction:


ng-token-auth comes with a Rails gem, and it's configurable to work with almost any API.

eric_bullington 3 days ago 1 reply      
This is a very, very nice project -- almost enough to pull me back from ReactJS back to AngularJS. Almost.

One question: they say it can be adapted to any Oauth1 or 2 provider, but doesn't the Oauth 2 provider have to support the Implicit Flow for this type of client-side app to work?

If so, is it true that Github doesn't support Implicit flow? (this is what I've read, and I've not found much on the web otherwise about what exact oauth flows Github supports)

jgrowl 4 days ago 0 replies      
This looks neat!

It looks like there is a good amount of config for handling different providers. Have you check out OAuth.io and its opensource core oauthd?:



It's a simple node app and js sdk that lets you handle providers in a standardized way.

I created a ruby omniauth strategy that simplifies multiple provider support on the backend. A similar approach could be applied to any language:


JonnieCache 4 days ago 0 replies      
I really wish this had been around a month ago. I guess I learned a lot about angular by building it myself.
evilsnake 3 days ago 1 reply      
I may be paranoid, but is there any security concern about doing authentification on the frontend ? Wouldn't the user be able to see exactly what is going on and intercept some sensitive information ?
skybrian 4 days ago 1 reply      
It seems like a nice start. Who will do the security review?
oatmealsnap 4 days ago 1 reply      
I tried implementing a token-based authentication system, and it worked fine for a while. Then we added a subdomain (login.mysite.com) for registering, and it all went to shit. They don't share the same localStorage, so keeping the tokens in sync can be tough.
MrBuddyCasino 4 days ago 1 reply      
zo1 4 days ago 2 replies      
How easy is this to use without AngularJS? Additionally, if not, does anyone know of any alternative JS (or perhaps Python) libraries for what Satellizer does?
fudged71 4 days ago 1 reply      
I tried logging in with Twitter and wasn't redirected back to your app, so I wasn't able to log in. (Latest Chrome on OSX)
pingburg 4 days ago 1 reply      
This is very helpful. How about handling validation and errors (e.g. unique account)?
nobullet 4 days ago 1 reply      
I wonder: why Java and Spring? Do you consider other Java implementations?
kclay 4 days ago 0 replies      
Were was this a month ago. Had to do this for Play!, great work.
datasmash 4 days ago 0 replies      
Wow, this is pretty handy. Awesome work!
motyar 4 days ago 0 replies      
Good work +1
bmelton 4 days ago 1 reply      
So, how would this work if I'm using Python-Social-Auth as the provider as an interface to Django?

Most sites implementing social auth don't do it in the client directly, but as an interface to the oauth and then just trusting that authentication as canon, while simultaneously invoking a non-oAuth login() method at the tail end of the oAuth login. Not sure how this relates directly.

That said, this is a FANtastic, and very necessary module, and hopefully it covers what I think is the most common use pattern.

       cached 23 August 2014 02:11:01 GMT