Michelangelo's secret message in the Sistine Chapel? - <AUTHOR> http://www.scientificamerican.com/blog/post.cfm?id=michelangelos-secret-message-in-the-2010-05-26

<comment><USER3> I thought this would be about "The Last Judgement".

During a tour of Vatican, we were told that Michelangelo snuck in a painting of a Bishop who was very anti-Michelangelo into the bottom right corner of the Last Judgement. The bottom of the painting representing hell(I believe), the Bishop is getting his genitalia swallowed by a giant snake.

The story goes that, when presenting the Last Judgement, the curtain was lifted from the bottom right corner. Pausing for a moment so everybody could see the Bishop and the snake.

here is the image: [http://www.archweb.it/arte/artisti_M/Michelangelo_G/images/M...](http://www.archweb.it/arte/artisti_M/Michelangelo_G/images/Michelangelo%20-%20The%20Last%20Judgment.JPG)

Edit(from Wikipedia): When the Pope's own Master of Ceremonies, Biagio da Cesena, said "it was mostly disgraceful that in so sacred a place there should have been depicted all those nude figures, exposing themselves so shamefully," and that it was no work for a papal chapel but rather "for the public baths and taverns," Michelangelo worked the Cesena's face into the scene as Minos, judge of the underworld (far bottom-right corner of the painting) with Donkey ears {i.e.foolishness} while his nudity is covered by a coiled snake. It is said that when Cesena complained to the Pope, the pontiff joked that his jurisdiction did not extend to hell, so the portrait would have to remain

<comment><USER4> Interesting. Here's a clearer image: <http://en.wikipedia.org/wiki/File:Lastjudgement.jpg>

</comment></comment><comment><USER5> This is just like all those things people find in Da Vinci's paintings. If you look long and hard enough, you can find hidden messages in just about anything, but I seriously doubt this is anything more than a coincidence.

<comment><USER6> In the case of Michelangelo it may not be a coincidence. If you read "The Da Vinci Code" you will find several such plays in his artwork.

<comment><USER7> Don't tell you've read that piece of trash :) My respect for Tom Hanks dropped a little when I saw him in the movie.

<comment><USER8> piece of trash it may be .. but his other book "Angels & Demons" introduced me to CERN. :) It also opened me up to art & art history.

</comment></comment></comment></comment><comment><USER9> Here's some illustration of the previously-discovered hidden brain on the Sistine Chapel ceiling:

<http://boingboing.net/2009/12/16/brain-on-the-sistine.html>

<comment><USER10> While I have previously wondered about the fabric shape, I don't think the similarity is great enough. Unless there is significant variation in brains, the silhouettes differ in way too many places and only really share a couple of major features.

However, the shape is similar enough for me to accept anatomical inspiration. I could see him wanting to draw something around god, sketching a cloud, and then remembering the shape of a brain and going with that. If indeed the artist was fascinated with anatomy, it would make sense that anatomical shapes could be found all over his more freeform work.

</comment></comment><comment><USER11> This is reminiscent of Muslims seeing Allah (in Arabic script) written on everything or Catholics seeing Mary's image, etc.. Flip reverse the tables and these people would be being called wackos by the scientific press, very interesting new step in the religiosity of fundamentalist atheism IMO.

That said, it seems quite likely to be truly based on the anatomical image - <USER2> don't think the conclusion is obvious or follows without further assumptions though.

There's a nice juxtaposition here with the argument by design - surely those who would be most desirous of saying that the church commissioners were pwned would also be those who would have to say that an image of a brain could arise by chance and not be designed in at all ... ?

<comment><USER12> Am I just too stupid to understand you or are you talking gibberish?

What's atheism got to do with this? What's creationism got to do with this?

<comment><USER13> I think (s)he's suggesting that Michelangelo is a blind watchmaker and we're seeing a brain on some French toast.

<comment><USER12> Problem with that comparison (seeing Virgin Mary in toast = seeing brain in painting) is only that Michelangelo's paintings are most definitely a product of intelligent design – no surprise there.

If those who see Virgin Mary in a toast would claim that the toaster manufacturer made the toaster so that Virgin Mary would be burnt into toasts I would have no problem with that. That would be a testable hypothesis. It's just that they don't. They claim a miracle happened and no amount of evidence could convince them that isn't the case.

<comment><USER11> >If those who see Virgin Mary in a toast would claim that the toaster manufacturer made the toaster so that Virgin Mary would be burnt into toasts I would have no problem with that. That would be a testable hypothesis. It's just that they don't.

I guess in those terms a hypothesis could be that the universe is deterministic in some sense and that the image of the Virgin Mary was effectively programmed into the initial state so as to emerge on that piece of toast. Untestable fo' sure.

</comment></comment></comment></comment></comment><comment><USER14> "...God Creating Adam in the central panel on the ceiling was a perfect anatomical illustration of the human brain in cross section..."

\+ "..construction the voice box of God out of the brain stem of man.." = The human mind created God.

<comment><USER15> Michelangelo believed in God, even if he had issues with the Catholic church. His meaning was probably the reverse - that man's mind was created by the voice of God.

</comment></comment><comment><USER10> _Pope Paul IV interpreted Michelangelo's Last Judgment, painted on the wall of the Sistine Chapel 20 years after completing the ceiling, as defaming the church by suggesting that Jesus and those around him communicated with God directly without need of Church._

I don't understand what thought processes are required for a pope to condemn the idea of Jesus making do without the Christian Church. Apparently Pope Paul IV was highly educated and very harsh, and fought Protestants (who had emerged just a few decades earlier). While he understandably didn't want people considering the spiritualist approach to faith, surely he must accept that at least Jesus would have been a spiritualist of some sort? This sounds like cognitive dissonance, and Streisand Effect-y. Must have been a hard time for the church.

As for the artwork, I can't see the similarity even with the explanation. They mentioned a plurality of examples, and that might be convincing if shown, but as it stands the single examples are weak.

</comment><comment><USER16> I think you are just hearing what a brain-scientist sees when he/she looks at a cloud.

</comment><comment><USER17> Interesting, and speculative.

</comment><comment><USER10> While I have previously wondered about the fabric shape, I don't think the similarity is great enough. Unless there is significant variation in brains, the silhouettes differ in way too many places and only really share a couple of major features.</comment>


Introducing Lemur - <AUTHOR> http://techblog.netflix.com/2015/09/introducing-lemur.html <comment><USER2> I'm excited to see more work being done to empower small engineering teams to take advantage of certificates. Lemur looks great, though many smaller organizations may find tools like "xca" to be adequate. xca is a simple GUI for certificate management: [http://xca.sourceforge.net/](http://xca.sourceforge.net/)

<comment><USER3> > empower small engineering teams to take advantage of certificates

Dumb question: I'm an engineer who doesn't understand certificates outside of the basics of SSL. What are some cool things a small engineering team could do with Lemur (or certs in general)?

<comment><USER4> For one example, deploy servers and have them already verified, so a new box that you know you personally set up will not give a warning [1]. One of the most underutilized parts of SSL certificates is that you can verify who /you/ are, so any kind of server, including webservers, don't need passwords, because they already have the invite list [2]. This part is admittedly a lot crunchier than the first example because people haven't spent nearly enough time getting it working nicely. Basically, good use of certs can replace a lot of systems where you know what it is and they know what you are.

[1] [https://www.digitalocean.com/community/tutorials/how-to- crea...](https://www.digitalocean.com/community/tutorials/how-to-create-an- ssh-ca-to-validate-hosts-and-clients-with-ubuntu)

[2] [http://nategood.com/client-side-certificate- authentication-i...](http://nategood.com/client-side-certificate- authentication-in-ngi)

</comment></comment></comment><comment><USER5> Shameless plug, if you have composehub installed, you can just do "ch run lemur" and it will download and run lemur for you on your machine. You just need docker installed on your machine [https://composehub.com/package/lemur](https://composehub.com/package/lemur)

<comment><USER6> Thanks for your shameless plug! I didn't knew about this, and that is awesome.

</comment></comment><comment><USER7> Somewhat strangely, the description reminds me a lot of Active Directory Certificate Services.

[https://technet.microsoft.com/en- us/library/cc731564.aspx](https://technet.microsoft.com/en- us/library/cc731564.aspx)

<comment><USER8> I dont think its strange. the windows world has solved a lot of these issues - its other issues it hasn't solved that generally make people go to other platforms.

AD setups are actually pretty complete if you ask me. Heck, OpenLDAP is a lot to setup vs AD. Same for cert management. User management. Machine management. Kerberos that works (since most don't even understand it: its a ticketing authentication system - the thing we keep recreating and calling it something else).

It goes a long way - and I'm glad more tools are coming to narrow these gaps!

</comment></comment><comment><USER9> While I have no doubt that the channels Lemur is using are fairly secure, why is the key ever leaving the box from which is is going to be used?

If you have the OpenSSL utility, you can generate the certificates right on the box where you're going to use the cert, and only have to move around the public portions of the key. It seems like it would be fairly trivial for Lemur to do with just a SSH shell, or an agent.

Someone care to edumacate me?

<comment><USER10> With a lot of IaaS environments you don't have direct access to the box doing TLS termination. In our case since we heavily use AWS ELBs, generating certificates directly on the box isn't an option. Moreover when you need to deploy onto many servers you generally run into the same issues with moving keys around that Lemur attempts to make easier/safer.

</comment></comment><comment><USER11> There is a surge of tooling aimed at production secret management, this has pros but there is a real danger that the standards around cert management are thrown deeper into flux as a result? Just me?

<comment><USER12> Just you. There may be standards around cert management, but for small teams it is so impossible to do PKI remotely correctly, it is nearly a joke. *

*: There are small teams with expert in x509. Most don't have such a luxury. For them to get certs right is near impossible.

</comment></comment><comment><USER13> Would be great to be able to just send a CSR (my workflows would be less manual). Also, the plugin model doesn't seem to provide any way to implement a certificate issuing policy (this person can issue certs under this intermediate with this CN etc etc). Would that be something that might be possible in the future (PRs accepted is a valid answer here :))

</comment><comment><USER14> In a similar vein there is also CloudFlare's cfssl[0]. I'm curious to hear what people think about the differences.

0 - [https://github.com/cloudflare/cfssl](https://github.com/cloudflare/cfssl)

</comment><comment><USER15> I admire that at announcement time they already have a neat name and mascot that distinguishes this project and makes it more memorable. But I fear it might be a little close to an existing open source project also using a little lemur dude graphic... [http://www.lemurproject.org/](http://www.lemurproject.org/)

</comment><comment><USER16> Wow, they really buried the lede! 'Netflix is pleased to announce […] Lemur!', then 893 words with a workflow diagram for things that aren't Lemur, then finally 'Lemur is a …'.

</comment><comment><USER17> How about TinyCert [0]?

[0] [https://www.tinycert.org/](https://www.tinycert.org/)</comment>


Ask PG: HN Karma histogram? - <AUTHOR>

All discussions about the relative value of HN karma aside, I'd find it very interesting to see a histogram of the distribution of karma values across registered users. It'd be a counterpart to the leader board at http://news.ycombinator.com/leaders that would be interesting to track over time.<p>My request is inspired by http://www.pandamatak.com/people/anand/blog/2008/01/on_data_analysis.html which I found via a link on HN this afternoon. <comment><USER2> A civilization reaching the stage of the computational revolution stands on the event horizon of a Singularity; some cultures call it Ascendancy. What it matters is that once that stage is reached, they may disappear altogether, for reasons unknowable to pre-ascended minds.

Likewise, the leaderboard only contains pre-ascended individuals (Paul Graham has a higher karma, but is not listed). From the listing we may assume the ascendancy limit lies somewhere in the vicinity of 50K karma.</comment>


Show HN: BundleScout monitors and notifies you about package updates - <AUTHOR> https://bundlescout.com/

<comment><USER2> I like the concept and have longed for this for some time, but I'm not a fan of the big sign up button without an easy way to know the price (maybe t's through that button? I dunno and don't want to put the effort in if the price isn't reasonable). My suggestion: make a pricing link or put pricing into on the front page.

(I'm on a mobile device, so these comments may not apply to a full size browser.)

<comment><AUTHOR> Thanks for the feedback! We'll definitely look at the right way to surface more info before signing up. (For the record, it's $5/month.)

</comment></comment><comment><USER3> I'd been planning to do something like this as a little side project. Never considered the fact that it could be monetized. Oh well, you live and learn. At least I don't have to feel guilty about never starting it now.

Congrats on shipping!

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER4> Seems like <https://gemnasium.com> but for node and python. Looks nice though.</comment>


Computer programming will soon reach all Estonian schoolchildren - <AUTHOR> http://ubuntulife.net/computer-programming-for-all-estonian-schoolchildren/

<comment><USER2> Stop with the "firsts". This is clearly not the "first time programming was taught to first graders" -- especially since we were introduced to programming back in Kindergarten (20+ years ago).

This doesn't need to be a "first" in order to be an honorable pursuit. The link-bait HN title is really annoying and detracts from the message.

<comment><USER3> The HN title is unclear, but the point is that this would be the first time programming is taught to _all_ first graders in a country. At least that's what the article's title claim implies: "Computer programming will soon reach all Estonian schoolchildren." The article itself doesn't seem to suggest a mandatory curriculum change at the national level, though.

<comment><USER4> I'm not sure where to dig up historical curriculums to verify my memory, but I'm fairly certain that programming was a mandatory subject when I was in first grade. I remember the whole class going to the computer lab and using BASIC. Education is not handled at the country level here, so it was unlikely to be country-wide, but the local population served by said school system would exceed the population of Estonia.

</comment></comment></comment><comment><USER5> As a developer I like the idea. As a citizen I wonder why a nation should prioritize programming before any other skill set? Why not rhetoric, drawing or dancing? What are the underlying assumptions and goals of teaching programming at such a young age? Is any of this evidence based?

<comment><USER6> It is probably economically motivated. Estonia, like many central and eastern European countries, is seeing strong relative growth in their technology sectors. Rhetoric, drawing, dancing & carpentry are not exactly as likely to drive the nation's economy in 2023 when these children graduate from school.

<comment><USER7> What if they did?

You cannot really predict the future. In the early 90s in my country (Bulgaria) there was an extreme need of accountants and many programmers emigrated (and we had massive amounts of engineers due to socialist planning). Now accountants are not in a short supply and programmers are relatively well paid.

My point is - you really cannot predict the future. Education is supposed to prepare you for life, whatever it may serve you, not to grant you a carrier.

I'm all for having a better education. And maybe a little programming literacy might be really useful. I just seriously hope the Estonian state doesn't expect its future generations to become a nation of programmers.

<comment><USER6> I think you may be drawing a fairly extreme conclusion from the article (or my comment). It's unlikely the Estonian government intends to breed a nation of programmers. At the same time, it's not exactly reckless to give school age children the necessary foundation to _become_ developers should they so desire.

</comment></comment></comment></comment><comment><USER8> To those of us outside of the USA, at what age are people in First Grade?

<comment><USER9> Does anyone know of a good comparison between different schooling systems in the world? I don't mean about their quality, but about stuff like ed asked. Is kindergarten or preschools are mandatory, How many years of schooling are required, are different schools are allowed to change the curriculum when they see fit (teach other subjects), and general "facts" like that.

Of course I can find all about it in Wikipedia, but that would take hours (for different countries around the world) and I wanted to save some time if possible. Thanks!

</comment></comment><comment><USER10> My gut reaction is that this is a good idea. It will definitely help develop logic and mathematics skills. I am concerned by the focus on "web and mobile", though. It seems like it would be better to focus on raw computer science for a program like this.

<comment><USER11> I'm sure that children are going to be more interested in what they can create using programming rather than honing their computer science skills. The web and mobile provide great opportunities for children to play with programming and make something fun.

<comment><USER12> There already are lots of alternatives, which do not include web or mobile, but are very illustrative for common programming related stuff. Off the top of my head there is an old language called LOGO [<http://en.wikipedia.org/wiki/Logo_(programming_language)>]. I do not see need to tie imagination to web and/or mobile.

<comment><USER11> I sometimes make basic freeby sites for friends. Fully grown adults get really excited about having their own web page up on the net. I've got to admit I had fun with LOGO back in the day, but if I'd been able to manipulate the internet, now that would have been exciting...

</comment></comment></comment></comment><comment><USER13> I recall reading a paper that found that the success at the end of the introductory CS course could be measured before the start of the course by a simple test. It measured their understanding of sequential execution, assignment, recursion and a couple of other things. About one-third failed at the beginning and at the end; one third sort of got it at both ends; and one third were successful. Almost all students ended in the same triad that they started in.

To the question. Do young children, say in the first 4 or so grades, show this division in abilities or do most eventually get it?

<comment><USER14> Or - possibly even more interestingly - would introducing these concepts early help students internalize them?

<comment><USER15> (I misclicked and downvoted this instead of upvoting, apologies).

</comment></comment></comment><comment><USER16> It's not a country-wide mandate.

AFAIK no country/state has compulsory programming classes for any level in the same way they require maths etc ((please tell me if I'm wrong!). If so, that's rather surprising in 2012.

<comment><USER17> Was it also surprising that no school ever had compulsory classes in agriculture/electricity/plumbing/electronics/medicine/all the other things that cause such changes in society, or is programming somehow special?

<comment><USER18> Agriculture was compulsory at my high school for the first four years. We learned to drive tractors in the first year, managed our own vegetable allotments in the second, administered injections to animals in the third, and pregnancy tested cows in the forth. No, this wasn't decades ago, this is still the case at my school today.

</comment></comment></comment><comment><USER19> As a self-taught programmer from Estonia, I would have loved having programming as a subject in the basic school.

Anyhow, the program will not be quite as successful if skilled programmers with long experience weren't included, or children will not be seeing the full scale of possibilites programming the computer could give to them. That, however, will be a tough task since there's a great shortage of developers on the market, and not all of them would fit neatly into the teaching role.

</comment><comment><USER20> First to teach programming, sure, I remember learning Pascal when I was in the first grade, that was about 15 years ago.

</comment><comment><USER21> In other news, Estonian children go to school naked?

</comment><comment><USER22> Skype as far as I know was started by a swede and a Dane. The Estonian connection I think comes from having a large engineering office there.

<comment><USER23> Actually the whole idea was brainstormed from day one together with 4 Estonian founding engineers. Those 4 together with Janus and Niklas had worked together already for years, first on Tele2 Everyday portals, then Kazaa and Joltid.

<comment><USER19> It's a common misconception from both sides. Ask who developed Skype from a random Dane or Swede on the street, and they will tell you that it was made by either Danish/Swedish programmers. Approach an Estonian with a question who actually worked for the funding, marketing etc., and they will probably answer it was the Estonians.</comment></comment></comment>


Sublime Text 3 Build 3080 - <AUTHOR> http://www.sublimetext.com/blog/articles/sublime-text-3-build-3080 <comment><USER2> After years of using it, I finally just bought a Sublime license. It's about as close to perfect as an editor gets for me - fast, stable, powerful, extensible, portable, and very low cognitive overhead.

Kudos to the Sublime folks.

<comment><USER3> I'm the opposite - bought a license years ago but don't actually use it for much except plaintext.

In my experience the core editor is fast and rock solid, but I think every single extension I've tried has been somewhere between glitchy and completely broken, and debugging/fixing them has soaked up more time than they'd save if they worked perfectly.

Part of the problem may be that extensions seem remarkably keen to take giant dependencies. I think one wanted a full node.js install to do JS linting.

Or maybe I've just been unlucky/incompetent.

<comment><USER4> > Or maybe I've just been unlucky/incompetent.

Every lint extension I've seen seems to drag a full install of whatever the popular implementation of the language is.

<comment><USER5> All the ones I use (cppcheck, jshint, jsxhint, ruby, clang) require that you have the toolchains already installed. Seems like a pretty consistent design. Those are the official linters [1], though.

Edit: Checked a bunch of the others, including those for Lua, XML and Python. None of them come bundled with the underlying tool.

[1] [https://github.com/SublimeLinter](https://github.com/SublimeLinter)

<comment><USER4> You appear to be correct- my remark was based on what I guess is out of date experience.

</comment></comment></comment></comment></comment><comment><USER6> Besides Firefox, Sublime Text is the application I use the most in my day-to- day professional life. It is faster and easier to configure than any other code editor I've used in the past. I would say it's one of the few pieces of software I've encountered that is a joy to use.

If you also use ST regularly and can afford it, I highly encourage you to support development and buy a license right now.

<comment><USER7> I purchased the licence years ago and used it almost exclusively until I got familiarized with vim. It's way more powerful and can do anything that sublime can. Plus more.

The only downside is the learning curve, but you only go through it once.

<comment><USER8> The other downside is maintaining .vimrc and all the plugins and feeling utterly hamstrung without it.

</comment></comment></comment><comment><USER9> FYI For the people running dev-builds (like myself) and are wondering why they don't get an update notification from 3079:

      If you're already using dev build 3079, then there's no need to update
      - 3080 is identical, except it will give update
      notifications for beta builds only, rather than dev builds.[1]

[1] [http://www.sublimetext.com/forum/viewtopic.php?f=2&t=17796](http://www.sublimetext.com/forum/viewtopic.php?f=2&t=17796)

</comment><comment><USER10> Sorry for bring this up , but this is my honest question , why should I use sublime ? what is specific about it ? Let me explain , If I wanna text editor there is Emacs ( and vim for vim user's ) , and if I want to have specific feature like IDE's have (auto complete , GUI debugger etc ) , then I can use Qt Creator/Code Blocks/etc (which I don't need , Because I am not IDE user) , then Why should I use sublime , It does not fit in my either use cases.It is ide or text editor , If it is just text editor , what it provide which Emacs ( or vim) could not provide ? p.s. my comment should look like bias opinion , but it is not really. It is just question I have in my mind.

<comment><USER11> If you're happy with emacs or vim then you probably shouldn't use it. Many people aren't comfortable with those two or prefer a mouse based approach without the overhead of an IDE in which case Sublime is a pretty good choice with lots of customizability and available plugins.

Edit: For me I do my coding/most everything in vim but if I get a new project I have to learn about I find it much more easy to navigate an unknown project in Sublime while I get it sorted in my mind.

<comment><USER12> I really disagree with the characterisation that it is for people who "prefer a mouse based approach." I hardly ever touch the mouse while using it.

For me, the thing that sets sublime apart from vim and emacs is the fact that it is a full gui app. Things like go to definition, autocomplete, build panel, command pallete, sidebar, context menus, are all technically possible in vim, but hacking these features into a command line interface always ends up seeming clunky, confusing and slow.

This also helps discoverability of features. If I want to do something, 99% of the time I can just search for the command in the menu or in the command pallete. Then they keyboard shortcut is clearly visible, and if it is a feature that I expect to use often I will make note of it. In vim (for me at least) this would require searching online for how to do something plus 10 minutes memorising the obscure commands to type into the command line.

Compared to IDE's, sublime has most of their features that I use on a regular basis, but is comparatively light to use. I'd much rather pop open sublime to quickly edit a file than launch eclipse.

<comment><USER13> >For me, the thing that sets sublime apart from vim and emacs is the fact that it is a full gui app. Things like go to definition, autocomplete, build panel, command pallete, sidebar, context menus, are all technically possible in vim, but hacking these features into a command line interface always ends up seeming clunky, confusing and slow.

I can't speak for vim, but Emacs is also a "full gui app." It has go to definition (in fact, I wouldn't be surprised if this idea was _invented_ in some incarnation of Emacs), autocompletion, and various other such features like gdb integration and build message hyperlinking. The discoverability argument applies as well.

<comment><USER14> I disagree, Emacs isn't a "full gui app" even if it has a gui with menus and can show images etc.; because almost all kind of interaction happens inside buffers opened in (new) windows. there are no proper dialogs/popups (they're not used even if it's possible), so Emacs is not a proper GUI app as anyone would expect.

I don't claim it's a good or bad thing, a lot of people love emacs because of it's buffer/window centric approach, but it's not even remotely close to what you would expect from a modern gui, so Emacs is still oddball when compared to all the other gui's, which is why new users still struggle with it even though on paper Emacs has all the features other gui editors have.

<comment><USER13> So all in context, it sounds to me like you're saying that what sets Sublime Text apart from Emacs is simply that it uses a _familiar_ user interface. I suppose that's fair enough.

What I wouldn't say is fair, though, is characterizing something as incomplete and especially _improper_ simply for being different from what you're used to.

<comment><USER12> It's not just a _familiar_ interface. It's a _better_ interface. Smooth scrolling is better than line-based scrolling. A popup is better at alerting the user that input is needed than a small prompt at the bottom of the screen. The command pallete, which is clearly visually distinguished from the surrounding text by a gui border, is better design than yet more lines of text indistinguishable from the rest. Current selection highlighted in a bright, theme-able colour is better than just toggling the background colour. Little graphical icons next to lines indicating changes, breakpoints, etc is better than a random text character put before the line. Smooth animations are better at conveying change than instantaneous changes to text. Filesystem trees with pixel-wide connector lines and icons indicating file type, displayed in a smaller font than the main text are better than a file tree drawn with ASCII art. The fact that key bindings can interfere with your terminal emulator or shell's keybindings is an annoying restriction.

If all these things weren't objectively better in some way, then the gui app could just draw lines of text instead of windows, borders, selections, themes, images, and animations. But it doesn't, because lines of text is a worse interface for almost everything except the actual buffer you are editing.

I know vim very well. But I only use it out of necessity now when I'm on remote machines, because it is _worse_ than a good gui app, precisely because it is restricted to its grid of text interface.

<comment><USER13> >It's not just a familiar interface. It's a better interface. Smooth scrolling is better than line-based scrolling. A popup is better at alerting the user that input is needed than a small prompt at the bottom of the screen. The command pallete, which is clearly visually distinguished from the surrounding text by a gui border, is better design than yet more lines of text indistinguishable from the rest. Current selection highlighted in a bright, theme-able colour is better than just toggling the background colour. Little graphical icons next to lines indicating changes, breakpoints, etc is better than a random text character put before the line. Smooth animations are better at conveying change than instantaneous changes to text. Filesystem trees with pixel-wide connector lines and icons indicating file type, displayed in a smaller font than the main text are better than a file tree drawn with ASCII art. The fact that key bindings can interfere with your terminal emulator or shell's keybindings is an annoying restriction.

I agree with almost all of this, which is why I use Emacs' _graphical interface_ instead of its terminal interface.

<comment><USER14> > I agree with almost all of this, which is why I use Emacs' graphical > interface instead of its terminal interface.

You can't be seriously saying this because Emacs' graphical interface lacks half of them. Here is a breakdown:

> Smooth scrolling is better than line-based scrolling.

I can't see any smoothness in scrolling of Emacs' graphical interface in Linux.

> A pop-up is better at alerting the user that input is needed than a small > prompt at the bottom of the screen.

Only a handful of 3rd party packages use some badly-imitated pop-ups and I've never seen anything even resembling a pop-up in Emacs' graphical interface (maybe except the GTK+ open file dialog)

> The command palette, which is clearly visually distinguished from the > surrounding text by a gui border, is better design than yet more lines of > text indistinguishable from the rest.

I can't see anything resembling the command palette Emacs' graphical interface. Everything is either use the minibuffer or open a new window.

> Current selection highlighted in a bright, theme-able colour is better than > just toggling the background colour. Little graphical icons next to lines > indicating changes, breakpoints, etc is better than a random text character > put before the line. Smooth animations are better at conveying change than > instantaneous changes to text.

I guess we have those.

> Filesystem trees with pixel-wide connector lines and icons indicating file > type, displayed in a smaller font than the main text are better than a file > tree drawn with ASCII art.

Speedbar isn't even close.

> The fact that key bindings can interfere with your terminal emulator or > shell's keybindings is an annoying restriction.

N/A

<comment><USER13> >I can't see any smoothness in scrolling of Emacs' graphical interface in Linux.

I'll grant that Emacs doesn't have this. Most programs don't either, though, and in the few I've seen that do (e.g., Firefox), it slows scrolling down so much as to make it practically unusable, even if it _does_ make it easier to track the text with your eyes.

The _real_ usability problem with Emacs' scrolling, in my opinion, is that the default scroll increment is too large. That's easily fixed. Some people also don't like that keying the cursor past the top or bottom of the window causing a large jump as the displayed region recenters around the point, but again, that's easily fixed.

>Only a handful of 3rd party packages use some badly-imitated pop-ups and I've never seen anything even resembling a pop-up in Emacs' graphical interface (maybe except the GTK+ open file dialog)

Most prompts (e.g., yes-or-no prompts, the password prompt for auth-sources) initiated with the mouse use pop-ups. Between that and the file chooser, what exactly is missing?

As for alerting the user that input is needed, Emacs doesn't generally require input from the user except when the user has just deliberately issued a command which requires input, in which case they don't _need_ to be alerted (the one exception I can think of is when opening an auth-source _may_ fail, and Emacs _does_ use a pop-up for authorization then). What's more important in the long run is how easy the input method is to use, and unless you're already using the mouse (in which case Emacs _does_ use pop-ups, as noted above), pop-ups are not easier to use.

>I can't see anything resembling the command palette Emacs' graphical interface. Everything is either use the minibuffer or open a new window.

The command palette looks a lot like helm-M-x to me.

>Speedbar isn't even close.

I didn't say it was. Now, I don't know about connector lines, but direx looks the same to me as Sublime's file tree sidebar and neotree even has icons.

<comment><USER14> > The real usability problem with Emacs' scrolling, in my opinion, is that the > default scroll increment is too large. That's easily fixed. Some people also > don't like that keying the cursor past the top or bottom of the window > causing a large jump as the displayed region recenters around the point, but > again, that's easily fixed.

You're right on spot with that one but I'm not sure it's that easy. I mean, I know there are some variables for it, but I'll try to explain with my anecdote. The scrolling issues you mentioned was felt so alien in my first try of Emacs, so it was the first thing I set out to fix in my second try. I found the relevant page in Emacs wiki, and damn, there was like 10 or more solutions, some similar, some not, each with their own issues (according to the wiki page, not that I've tried all). Then I went further with a Google search, and there was even more different solutions. As a result, I gave up on it and I still use the defaults even though I hate it with passion.

Setting a sane default for such a user facing thing must be top priority, not less.

> Most prompts (e.g., yes-or-no prompts, the password prompt for auth-sources) > initiated with the mouse use pop-ups. Between that and the file chooser, > what exactly is missing?

(I don't know what _unfamiliar_ had in mind so I'll try to explain my own thoughts on the this.)

Things like search/replace/goto doesn't use pop-ups. But you're right that they don't need to, thanks for clarifying that. I was actually thinking about things more like dialogs rather than yes/no prompts. Again the window-centric approach I mentioned elsewhere in this thread. I don't have exact things in my mind, but yeah, command palette again. I would much prefer C-x C-b to show a dialog/popup which immediately gets focus, and in which I can either easily select the buffer or discard the dialog easily in case I change my mind. Or the About Emacs screen. I know it's not a functional thing but still one would expect it to show a dialog window instead of a buffer. Or the menu bar menus. I don't have a specific pain point with it but the whole thing still feels very odd. There is a lot of commands there, some are checkboxes, some fire up some prompts etc. I'm not sure but I guess some of them would be hidden under a dialog window in a more traditional gui application.

I don't think I'll be able to get more specific in this issue as it falls into the realms of " _x_ _feels_ better but I don't know _why_ ". The only thing I know is the extreme use of windows and buffers and it doesn't feel right. I'm sure it feels just right to Emacs veterans but as a newbie I can tell it doesn't to the rest.

> The command palette looks a lot like helm-M-x to me.

I've looked at it and it seems nice. Thanks.

>>Speedbar isn't even close.

> I didn't say it was. Now, I don't know about connector lines, but direx > looks the same to me as Sublime's file tree sidebar and neotree even has > icons.

I checked both of them and I'm sure none of them are what _unfamiliar_ had in his mind when talking about "Filesystem trees with pixel-wide connector lines and icons indicating file type, displayed in a smaller font than the main text are better than a file tree drawn with ASCII art." Both as ASCII art as it gets. Both are still rendered inside a buffer and they use a different font than the other gui elements in the system. The only different thing is neotree can display icons and that's all. Both are only marginally better than speedbar and they're _joke_ when evaluated according to _unfamiliar_ 's criterias above.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> > Sublime Text 3, while still technically in beta, is the recommended version > of Sublime Text to use

Then stop calling it a beta?

<comment><USER16> No, because it's still in development. Regardless, it's solid.

<comment><USER17> All products are either still in development, or abandoned.

</comment></comment></comment><comment><USER18> IMHO Sublime is like Sketchup.

Certainly there are more powerful tools (emacs and vim - or 3dMAX and Rhino, when comparing with Sketchup) but Sublime/Sketchup are so fast and easy to use from first day by amateurs and professionals making them very hard to beat.

I don't use them everyday but I can be quite productive with both. It would take ages to be productive with Emacs or 3dMAX using them only every other week.

</comment><comment><USER19> I'm reliefed that development progressed again this year. You don't want to invest time on a dead editor.

<comment><USER16> Why? It's not like it's broken.

<comment><USER20> Yet. If it's "dead", it's only a matter of (not very much) time before it doesn't work anymore.

<comment><USER21> That software can't ever just be finished is a problem that needs to be solved.

<comment> shawn-furyan This problem doesn't seem tractable in anything approaching the near term. There are just too many dynamic layers, each with their own competing product ecosystems, which in turn each are controlled by competing interests. Perhaps at some point in the future the entire stack from hardware to application level APIs will become commodity products that nobody benefits from differentiating. At that time, perhaps software can just be finished once it arrives at feature maturity. Until then, UX, architectural, security and other assumptions made about the application environment will continue to age poorly, and software products will become outmoded unless actively developed.

</comment></comment></comment></comment></comment><comment><USER22> I've been running the last stable build happily since August. Running this new build causes all four cores in my rmbp to spin up to 99% repeatedly (Activity Monitor says it's Sublime) and the fans to go wild. Is this happening to anyone else? I had to revert to the previous version which fixed it :(

<comment><USER23> Similarly for me.

On every file change ST status bar says - indexing files. And it takes > 10s (I have a lot of files). When it does that - 2 CPU cores are loaded at 99%.

Opened the console (@jskinner suggested to enter sublime.log_indexing(True)) and there was a message that index is corrupted and I have to remove it. Index is located in:

/Users/bumbu/Library/Application Support/Sublime Text 3/Index

Removing all the files from that folder did the trick.

<comment><USER24> [http://www.sublimetext.com/forum](http://www.sublimetext.com/forum) is a better place for this, but as a stopgap you can disable file indexing via the index_files setting. You can also find out more about what indexing is taking place by entering sublime.log_indexing(True) in Sublime Text's console.

</comment></comment></comment><comment><USER25> I used to simply ignore that nag screen, but decided to buy a license of ST3 since I use it every day - best investment in a while. I hope to see a stable ST3 build soon and some nice new features soon :)!

</comment><comment><USER26> I love the 'Goto Symbol (in Project)...' feature, but I really wish the input would be populated with text you have selected in the editor. This way you could jump to a function/whatever underneath the cursor by doing something like: Cmd-D, Cmd-(Shift-)R, Enter - instead of copy-pasting, or retyping the symbol. I added this to the mass of suggestions in the ST forum, but I guess it has been lost or rejected :(

<comment><USER27> This is possible: Right click on Symbol, Goto definition. This can be easily mapped to a keybinding as well.

<comment><USER28> I believe it's already mapped to F12.

</comment></comment></comment><comment><USER29> I see lots of comments from people saying that after years of usage they just recently bought a license.

I'm curious what most people are using it for, since the license clearly states that you need to buy a copy for professional use.

<comment><USER30> Aside from the obvious alternative of "personal use," are you really surprised that people aren't always in full compliance with their EULAs?

<comment><USER31> I've found that I pay much more attention to the terms of use for projects supported by smaller teams -- it's hard to feel like I'm ripping off a giant company like Adobe, but I have a hard time telling a small shop basically "HA! Thanks for trusting me stupid, good luck developing your great product with no money."

<comment><USER32> I buy every piece of software that I find I love and use almost everyday. For me this has become JetBrains and Atlassian products. I love their stuff.

In response to the post topic, I don't use Sublime. It's really good, definitely prefer a real native application over Atom. I do wish it was open source and the author still sold it. I hate using software where there's a sole author and if he gets hit by a bus, it's up in the air what happens next.

I use PyCharm and Vi in my workflow. I've always found I use two editors. One more focused on my programming at hand, and another for general files to reference, notes and so forth.

So when I remote into a server, it's Vi again. I like PyCharm because it has a Vi mode and everything just works. If you're using Python at least, it's a top tier environment to work in.

</comment></comment></comment></comment><comment><USER33> Huzzah, the project is still alive! I assumed it was abandoned a long time ago and switched to Atom, but I hope Sublime 3 comes out soon.

<comment><USER34> Others too. But why you would assume that?

The guy said he will be coming back with more, and the most delay between updates was like 8-9 months -- something that happens all the time for commercial projects where you might or might not see an update in 1 or even 2 years.

In the last 2 months, he has been publishing an update dev release every 1 week or so.

<comment><AUTHOR> August 2014 beta build was a really small update and the only one in year 2014. To be honest, my feeling also was that project has been abandoned. ST3 was silent for about a year and is supported by the single developer (as far as I understand it). No updates (except for one in August) in the times of Atom release, this looked like there was no more motivation for the Sublime Text developer. I am really happy that it's not true and Sublime is active again in 2015.

<comment><USER35> It actually has been active the past few months, but builds were only being released for the dev channel (requiring an ST2 license)

<comment><AUTHOR> I agree, that's why I say it was almost inactive for about a year, not 15 months. The point is, the real delay was bigger than 6-9 months, at least it's how the one could think about it.

</comment></comment></comment></comment></comment><comment><USER36> Since jps is very active again, you should post your feedback here if you feel strongly about it / or have found bugs: [http://www.sublimetext.com/forum/viewtopic.php?f=2&t=17796](http://www.sublimetext.com/forum/viewtopic.php?f=2&t=17796)

</comment><comment><USER37> OT: What are some tips (or plugins) to be more productive on ST3?

<comment> squeaky-clean In case anyone isn't aware, Package Control[0] adds an incredibly simple package manager to Sublime in order to automatically install/update plugins. After that's been installed, I'd recommend browsing the popular packages (already linked in another comment) or just hitting Ctrl+Shift+P, "Install", and searching for the names of languages/tools you use.

One plugin I'd recommend for anyone is All Autocomplete. It extends Sublime's autocomplete detection to match across any open file, and not only the current file.

Also Ctrl+Shift+P searches through all of Sublime's and your plugins available actions. Ctrl+P allows you to switch files without your mouse.

[0] [https://packagecontrol.io/installation](https://packagecontrol.io/installation)

<comment><USER38> I'll check it out, but it's got some strange arbitrary limits:

      MIN_WORD_SIZE = 3
      MAX_WORD_SIZE = 50

      MAX_VIEWS = 20
      MAX_WORDS_PER_VIEW = 100
      MAX_FIX_TIME_SECS_PER_VIEW = 0.01

</comment></comment></comment><comment><USER39> I still have issues on my desktop where sometimes I can't interact with the text area of sublime using my mouse. I can still use the mouse with the menus and stuff, but scrolling and clicking in the text does nothing and I have to use my keyboard only. Still not sure what is causing this issue as it doesn't happen all the time. The fix is usually just rebooting my PC which is rather annoying.

</comment><comment><USER40> Does anyone know if the Sublime Text 2 plugins are compatible with version 3? I've never done a Sublime Text upgrade. TIA!

Edit: seems like they will need to be ported [0].

[http://www.sublimetext.com/blog/articles/sublime- text-3-beta](http://www.sublimetext.com/blog/articles/sublime-text-3-beta)

<comment><USER41> In case you haven't stumbled upon it yourself, here [0] is a site I found very useful when I upgraded a while back.

It allows you to check which plugins are supported (and which aren't) by copying and pasting the contents of your package control user settings.

[0]: [http://www.caniswitchtosublimetext3.com](http://www.caniswitchtosublimetext3.com)

</comment></comment><comment><USER7> Why is this news? We've been getting builds of Sublime 3 costantly for way over a year now.

</comment><comment><USER42> I want to buy a license for Raspberry Pi.

<comment><USER43> If you are very patient, you can try this:

[http://taoofmac.com/space/blog/2015/02/27/2210#running- subli...](http://taoofmac.com/space/blog/2015/02/27/2210#running-sublime-text- on-a-raspberry-pi-2)

</comment></comment><comment><USER44> Comment

</comment><comment><USER45> Ctrl + Shift + B Run Command has been removed, What the hell.!!

</comment><comment><USER45> Ctrl + Shift + B

Run Command has been replaced with "Build With" command, Why wasn't it was kept at its place and additionally "Build With" was introduced? Some disturbance is created.

</comment><comment><USER46> Honestly, I've never seen another product here getting a post for every minor build! Nice to see such a die-hard fan base! But, please, face the reality - many have moved over to Atom already and are not looking back. Atom is alive, the ecosystem is already huge, atom-shell is getting popular as well. Unless Sublime gets open-sourced, it's in a slow agony. Remember TextMate? It had a huge loyal user base, but who is using it now? It got open-sourced, but a bit too late!

<comment><USER47> I have tried Atom, many many times.

But i always get annoyed by how SLOW it is.

<comment><USER46> It's slow with huge source files, agreed, but you shouldn't have huge source files anyway.

<comment><USER2> You've never wanted to open a multi-megabyte data file in a text editor before?

"You shouldn't be opening large files in it anyhow" is a cop-out. My text editor needs to edit whatever text files I throw at it. Choking on too-large a file is a showstopper.

<comment><USER48> Atom has a 2MB file limitation. That's why I wouldn't use it professionally yet.

<comment><USER49> I'm not sure that's even 'large', let alone 'huge'.

<comment><USER50> For real. I think I've had to open multi-GB files in Sublime a few times. (And if not that, then certainly hundreds of MB.) Worked like a charm.</comment></comment></comment></comment></comment></comment></comment>


Communityjs.org - <AUTHOR> http://communityjs.org/

<comment><AUTHOR> Trying to foster local JavaScript communities. Feedback welcome.</comment>


Learning 12 new programming languages in 12 months - <AUTHOR> http://www.coderholic.com/12-months-are-up/

<comment><USER4> There's a great book called Seven Languages in Seven Weeks that teaches this way of thinking to broaden your horizons.

The languages discussed are Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell

[http://pragprog.com/titles/btlang/seven-languages-in- seven-w...](http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks)

<comment><USER5> I am not sure how great it is. My impression was it skips and jumps around the language territory. For example, as I looked through the Clojure chapter, I knew I would not understand the language if I had not had studied it before.

<comment><USER6> I found the book very useful. The idea isn't to give you a deep understanding of the language, it's more along the lines of: introduce some cool concepts that you may not have seen before, and encourage you to do your own thing to learn the language. It also gives a quick introduction with examples to several different programming paradigms that many are unfamiliar with. The Haskell part is not particularly deep either, but it gives you some basics and gets you started.

</comment></comment></comment><comment><USER7> Cached version: [http://webcache.googleusercontent.com/search?q=cache:KmnKhb-...](http://webcache.googleusercontent.com/search?q=cache:KmnKhb- _kUoJ:www.coderholic.com/+http://www.coderholic.com/12-months-are- up/&hl=en&gl=us&strip=1)

</comment><comment><USER8> Sorry, but had to be posted:

Peter Norvig's "Teach Yourself Programming in Ten Years", linked under... ahem <http://norvig.com/21-days.html>

<comment><USER9> I understand the point you are trying to make in posting this, and it _is_ a good point to make.

However, in the article, Norvig himself points out the worthiness of learning several languages, and doesn't claim that you have to get on a ten year treadmill for any individual one, or even a subset. My impression was that Norvig was _really_ targeting the people for whom whatever-language-in-a- fortnight-and-a-half would be their first exposure to programming at all.

As you gain more languages, provided you are judicious in choosing, so shall your learning of each of those languages be more rapid than the prior.

Does a month per language seem a bit rapid? Yeah, it kind of does, depending on the time spent in study and tooling. The pragmatic programmer guys suggest learning a new language every year; that seems wholly attainable. In reality, the author studied a language to what he considered a sufficient level in a quarter. That _also_ doesn't seem _that_ unreasonable, depending on the level of mastery desired. Could be that both perspectives have more than a grain of truth.

<comment><USER8> I like to learn new languages, but I end up at this.

What matters more professionally is Frameworks, SDKs, Libraries, etc.

For example I'm not a big fan of C#, or static typing, but Unity's C# (And UnityScript/BooLang) framework is pretty good to be ignored.

<comment><USER10> > What matters more professionally is Frameworks, SDKs, Libraries, etc.

It depends. Frameworks and SDKs cannot overcome shortcomings of your language and/or language implementation (and often you don't have the luxury to switch gears, because there is only one reference implementation).

When I studied Erlang's support for concurrency, I realized how hard it would have been trying to do that in another language. Yes, you could somewhat manage to replicate that, but:

\- your language implementation could lack microthreads, thus impacting how concurrency would scale;

\- you may need to follow some protocol in using the framework, otherwise you could fall into one of many pitfalls, which aren't there in the language you're using as a model.

</comment></comment></comment></comment><comment><USER11> Why not learn one or two really well in that time instead?

<comment><USER12> I think it's just important to know a little about a wide variety of things as it is to know a lot about a few specific things. Breadth and depth are both valuable.

I ended up doing something similar to what this author tried to do starting in my sophomore year in college (although I didn't have any particular goal in mind when I started). Over the course of about a year and a half, through some combination of classes and my own projects, I programmed Standard ML, Prolog, Haskell, PHP, Ruby, JavaScript, x86 Assembly, Scala, SuperCollider, and Scheme for the first time. At that point, all I really knew were Java and Python.

I think it was an immensely useful experience for several reasons. I've now had some exposure to most/all of the major programming paradigms (and some less common ones too). A month is enough time to begin to get a feel for a language and its idioms, and being able to think and solve problems in different ways will make you a much better programmer even if you do end up working mostly in one or two languages.

Learning how to learn a programming language quickly is also an exceptionally useful skill. New languages don't scare me any more--I can usually learn enough to start hacking on something in a couple of hours, and enough to not be writing completely horrible code in a couple of days. And it's now very rare that I sit down to read a piece of code and can't figure out what's happening because I'm not familiar with the language, which is very helpful when I need to work on something I've never seen before.

That all said, there's a reason I didn't continue doing that indefinitely. Learning one or two languages really well is also very important.

</comment></comment><comment><USER13> It would be easier to learn a new language if I could fit it into my day job. My current idea is to try to find small throw-away tasks to do in different languages. For example, last week I joined StackOverFlow and tried to solve a small task by asking the same question for two different languages (elisp, Haskell).

Elisp: [http://stackoverflow.com/questions/4640040/how-can-i- generat...](http://stackoverflow.com/questions/4640040/how-can-i-generate-sql- inserts-from-pipe-delimited-data)

Haskell: [http://stackoverflow.com/questions/4640953/how-can-i- generat...](http://stackoverflow.com/questions/4640953/how-can-i-generate-sql- inserts-from-pipe-delimited-data)

In the future, when I need something done quickly I won't always "reach" for Perl because I'll have a better starting point. Not that there's anything wrong with Perl. I just want a few more tools in my arsenal.

If I few people joined in, we might end up with a few breadcrumbs to make it easier for everyone to get started.

</comment><comment><USER14> Articles like this always remind me of an old blog post by Steve Yegge, or rather a few paragraphs from it about Dan Friedman: [http://steve- yegge.blogspot.com/2008/06/rhinos-and-tigers.ht...](http://steve- yegge.blogspot.com/2008/06/rhinos-and-tigers.html) (the part I mean starts half-way through the article, search for "Friedman")

</comment><comment><AUTHOR> Sorry, posted before going to bed, and it looks like you killed my small VM! The site is back up now. Thanks for all of the comments!

</comment><comment><USER15> The problem with knowing too many languages is that soon the syntax starts blending with each other, and context switches take time.

<comment><USER8> Actually it helped me realize certain things in other libs.

For example using std::<pair> more after spending time with Common Lisp.

Also it made me realized that certain building blocks, patterns, etc. are not that great when looked through a different view.

For example the "factory" pattern is needed in C++, because objects can be allocated on the stack... Wait... what?

Well, because C++ allows allocation of objects on the stack, obviously one cannot think in it, as if "new" would've returned object with different size than the one declared. e.g. "new SomeClass()" is known by the compiler how much space would take, hence "SomeClass someObject;" is known in advance and can be allocated on the stack. Cool, isn't.... Actually not so cool - <USER2> of that you can't return proxied objects, hidden implementation, etc... Hence you need factory - instead of "new SomeClass" -> CreateSomeClass() function that might return object of different size... Where I got aware of this - <USER3> spending some time with Objective C and it's objects.

Then comes the holly OOP, especially the C++ way - but then one discovers lua, javascript... Or Common Lisp... and understands - "protected", "private" are not that important, and the GOF patterns are not that needed.

Okay, so you go back at your work to code in C++, and just take it easier, because you have realized there is no point going hard-core and doing it the C++ way all the time. Hell it's even okay to have this macro called "HASHED( "SomeGameResource", 0x123123 )" that... gets preprocessed by external tool, that replaces 0x123123 with the hash code of "SomeGameResource" and puts it back in the source code.

#ifdef DEBUG

#define HASHED(s,c) hashed(s) // e.g. call function in debug to return the hash-code

#else

#define HASHED(s,c) c // replaced with the precalculated value

#endif

Now try doing that with templates.... But my point is - there is no need - just use an external tool that does it for you. Inform your programmers that if they want to change HASHED("BlahBlah", 0x123123) to HASHED("BlahBlah2", 0x123123) then they have to run it through a tool (or have such step), or just make them use the debug version. Or change the language... Joke! You are doing this for the Nintendo DS - "C/C++" is the only viable option for large project.

</comment></comment><comment><USER16> What a great idea, amazing you managed to fit 4 of them in juggling everything else, very jealous of you.

</comment><comment><USER17> I'm sorry, but who cares? This post offered nothing insightful, merely click bait towards some of your projects. Teach me the benefit of learning "12 languages" or offer some productivity hacks to achieve so next time.</comment>


Pcicrawler: A Python-based command-line interface tool to debug PCI issues - <AUTHOR> https://engineering.fb.com/open-source/pcicrawler/ <comment><USER2> How does this tool compare to lspci?

<comment><USER3> I have never managed to interpret the output of `lspci -tvnn` (mainly the bus number) but I can read `pcicrawler -t`.</comment></comment>


Reccomendations on CDN| High Scalability - <AUTHOR> http://highscalability.com/what-cdn-would-you-recommend-0

<comment><USER2> Let's spell "Recommendations on CDN" correctly for the search engines.</comment>


Sammy and Kiwi, help us figure out the best architecture for a js framework - <AUTHOR> http://blog.new-bamboo.co.uk/2009/11/10/thoughts-on-kiwi-js-in-relation-to-sammy-js

<comment><AUTHOR> Google group at:

<http://groups.google.com/group/kiwi-js>

We're still budding :)</comment>


Analyse Asia 46: Smartphones, Watches and Bubbles in Asia with Ben Bajarin - <AUTHOR> http://analyse.asia/2015/07/18/episode-46-smartphones-watches-bubbles-in-china-india-with-ben-bajarin/ <comment><AUTHOR> Synopsis: Ben Bajarin from Techpinions and Creative Strategies joined us again to discuss the different market dynamics for smartphones in China and India, the recent debate on Apple Watch sales based on non-sequitur numbers, and the hot technology bubble discussion in US as to the consequences to the Asian market. We also discussed how the research firms work out the smartphone and smart watch numbers by tracking the supply chains, whether Xiaomi is truly in the high end smartphone market in China and the customer experience with the Apple Watch across the globe.</comment>


SpaceX hops a full-scale Starship prototype for the second time - <AUTHOR> https://arstechnica.com/science/2020/09/spacex-hops-a-full-scale-starship-prototype-for-the-second-time/ <comment><USER2> Given its similar mission and larger size, should we be concerned about Starship's effect on the ionosphere [1] at it's eventual launch?

[1] [https://arstechnica.com/science/2018/03/spacex-launch- last-y...](https://arstechnica.com/science/2018/03/spacex-launch-last-year- punched-huge-temporary-hole-in-the-ionosphere/)</comment>


Amazing old things that still work - <AUTHOR> http://www.oddee.com/item_98116.aspx

<comment><USER2> Where's the oldest working programmer?</comment>


Recommended Books for the Small Business Owner or Solopreneur – EBrand Me - <AUTHOR> https://ebrandme.biz/2019/12/05/book-recommendation-small-business-solopreneur/ <comment><USER2> Another list if Amazon affiliate links with synopses ripped verbatim from other sites without attribution.</comment>


Ticketmaster changes policy, no longer offering refunds on postponed shows - <AUTHOR> https://metalinjection.net/its-just-business/ticketmaster-changes-policy-no-longer-offering-refunds-on-postponed-shows <comment><USER2> This policy is against California law:

California BPC 22507: "The ticket price of any event which is canceled, postponed, or rescheduled shall be fully refunded to the purchaser by the ticket seller upon request. Any local jurisdiction may require a ticket seller to provide a bond of not more than fifty thousand dollars ($50,000) to provide for any refunds that may be required by this section." (Added by Stats. 1986, Ch. 378, Sec. 1.)

Ticketmaster is based in California. IANAL and don't know how this law might apply to events that are held elsewhere.

<comment><USER3> My guess is Ticketmaster simply doesn't care. It's a cost of doing business for them.

Six years from now, 400,000 people will get postcards in the mail telling them that they're part of a class action settlement over this.

The class action lawyers will get second houses with third boats.

The lawyers on Ticketmaster's side will get nice bonuses for saving the company money.

The 50,000 people who actually responded to the postcard will get 53¢ each.

<comment><USER4> There are 2 other options: 1\. Small claims court 2\. Filing complain with California Department of Consumer Affairs

<comment><USER5> Ya but I wouldn't be surprised if the Ticketmaster TOS that you sign (click) makes you give up your suing rights in favor of arbitration or worse.

<comment><USER6> Actually I hope they do, because an arbitration DDOS will cause them much more pain than a case action.

</comment></comment></comment></comment></comment><comment><USER7> It's not legal for Ticketmaster to retroactively change their policy on old bookings. Unfortunately many other entities are misbehaving in a similar manner. (For example way.com is performing similar shenanigans by changing their policy on March 25th and then claiming that their new policy applies to all reservations after February 25th.)

Make sure to keep your rights in mind when companies misbehave:

1\. You can submit a negative review online

2\. You can file a credit card chargeback

3\. You can submit a complaint to your attorney general

4\. You can sue them in small claims court

Other key note: Do not accept gift cards or credit for future bookings. A refund by definition is cash and that credit will be worthless when those companies declare bankruptcy shortly.

<comment><USER8> Good luck with the chargeback. I tried to open one with Amex online and it was insta-denied with a note to the effect that I needed to work it out with Ticketmaster myself. I'm hoping Amex phone support is willing to work with me, whenever I make it through.

Ticketmaster's phone support tells you to open a live chat, then hangs up on you. When you open a live chat you get a canned response that the show is postponed and to go away until it's either canceled or rescheduled... then auto ends chat.

If nothing else, I can at least enjoy the minor irony that is getting fucked by the machine over a few Rage Against the Machine tickets.

<comment><USER7> I am not a lawyer, but I believe you can sue Amex in small claims court as well for not doing due diligence on a chargeback request.

<comment><USER9> You can sue almost anybody anywhere for anything. Whether you'll prevail on your claims is another question. What makes you think that such a lawsuit would prevail? E.g. have you read amex's terms and did they agree there to arbitrate disputes unconditionally? Or is there a law you're aware of that requires them to?

</comment></comment></comment></comment><comment><USER10> This is completely unsurprising. Ticketmaster's entire business model seems to be monopolizing ticket sales and then gouging the consumer, so one last stick in the eye from them seems in character.

<comment><USER11> Ticketmaster's business model is to take the reputation hit and allow venues and performers to increase fees. This specific move is probably driven by greedy venues. [https://stubcrew.com/the-ugly-truth-about-ticketmaster- fees/](https://stubcrew.com/the-ugly-truth-about-ticketmaster-fees/) talks about it more.

EDIT: and the downvotes here is probably evidence that they succeeded

<comment><USER12> Agreed, they're one of several "lightning rod" organizations. They exist to deflect hate, while everyone profits. Same thing with academic textbooks. Book publishers are lightning rods, allowing collages/departments/professors to avoid the reputation hit.

If you want to know who is responsible for a bad thing just answer one question: Who has the power to fix it? For example performers/venues could use a non-ticketmaster intermediary, and college professors/schools could assign a non-$300 textbook, but neither do because they gain substantially from the arrangement (either financially or in terms of free labor in the textbook example).

So if you "hate" ticketmaster or textbook publishers, you're playing right into their game and the problem will never be fixed. You have to pressure actual decision makers, not lightning rods.

<comment><USER13> You can't fix people, only incentives.

</comment></comment></comment></comment><comment><USER14> I've heard from some large event organizers that EventBrite is taking similar measures: delaying payouts to event organizers until the event has concluded. I heard from one organizer that they were told by EventBrite that they were not going to see a payout until 2021 for their Labor Day 2020 event.

<comment><USER15> If that's true, it could be an excuse to financialise the money. Let it earn 5% while you don't have to pay it out. Or worse, use it for opex in a big ole ponzi scheme style busines!

</comment></comment><comment><USER16> According to this, as 'primary', Ticketmaster typically holds the money until after the show which puts them in a better position than Stubhub...

"Here's how the money works in concerts: ... Meanwhile, the "primary" ticketing companies associated with the venues the artist will play sell tickets over several days of presales (artist password, credit card, Facebook or Spotify password, venue or radio station password) during which, hopefully, many of the tickets are sold. Finally, the remaining tickets are released to the general public sale. With luck the show sold out. With a lot of luck, demand was so high that dynamic pricing kicked in, and the ticket prices were moved up continuously over the course of the days tickets were sold. In almost every case, the primary market charges a fee on every ticket sold. Typically primary markets don't pay the artist until the show is played, the money raised from selling the tickets is held."

[https://www.ticketnews.com/2020/04/opinion-stubhubs- urgent-p...](https://www.ticketnews.com/2020/04/opinion-stubhubs-urgent-peril- and-the-industry-response/)

</comment><comment><USER17> Although Ticketmaster offers a seemingly simple service, thousands of integrations with venues and the people who create events make them extremely difficult to unseat.

I don't know of many credible competitors besides Big Neon ([https://www.bigneon.com/](https://www.bigneon.com/)), founded by a former c-founder of Ticketfly.

<comment><USER18> Years ago, I was working on an idea and interviewed venue owners to understand what gaps their were. At the time, Ticketmaster gave them the cc processing equipment for free and took a smaller % in exchange for exclusivity for years at a time. After hearing that dozens of times at big and small venues, I moved onto another idea.

</comment></comment><comment><USER19> How can this be legal? They changed the terms and conditions after you agreed to them and provided you no way to opt out of the change?

<comment><USER12> Even if it isn't legal are people really going to assert their rights in court?

That's one of the major problems with having weak consumer protections in the US. If this happened in one of several European countries ticketmaster could be fined, but in the US each citizen needs to sue in small claims or will be forced into arbitration that may cost more than the claim is worth (essentially nullifying their rights, or losing money to assert them).

Arguing that your rights have been violated with their customer services is a waste of time.

<comment><USER20> While less efficient than regulatory action, the US does have a mechanism for this: class-action lawsuits.

<comment><USER21> _> YOU AGREE TO WAIVE ANY RIGHT TO A JURY TRIAL OR TO PARTICIPATE IN A CLASS ACTION LAWSUIT OR CLASS-WIDE ARBITRATION._

[https://help.ticketmaster.com/s/article/Terms-of- Use?languag...](https://help.ticketmaster.com/s/article/Terms-of- Use?language=en_US#section17)

What we need is a law invalidating contracts with blanket requirements to give up consumer protections and legal recourse against companies

<comment><USER22> Companies need to be careful with these clauses. Postmates is deep trouble because thousands of employees actually demanded arbitration, and now Postmates is trying to get a class action instead of thousands of arbitrations.

Arbitration aren't the get out of jail card many organizations believe them to be.

<comment><USER23> It seems that the issue exposed by DoorDash and Postmates is easily resolved by inserting volume discount language into the contract with the arbitrator. A competitor to DoorDash's arbitrator has already started making that sales pitch. It's possible the fees could be discounted for these existing disputes, too, though perhaps doing so during the pendency of a dispute might be risky-- politically, if not legally. In any event, I wouldn't expect this loophole to stay open for long. Occasions for such schadenfreude aren't usually repeated.

</comment></comment></comment></comment></comment></comment><comment><USER24> I wouldn't be particularly upset if Ticketmaster continue to pay the band as if they'd actually played the show.

I'd bought 3 concert tickets for shows that got cancelled due to the lockdown, for a total of a few hundred $. I can listen to the music online, but I know that musicians make much more money from touring, so that's my way to support them.

As long as the performers get paid, I don't mind, because half the reason I go to concerts is just to pay the bands I like. The other half is bragging rights to tell friends which bands I saw live.

</comment><comment><USER25> Credit card chargebacks are going to put that company out of business.

<comment><USER26> My bank refused, as their policy is to not do chargebacks for postponed events. (PayPal also denied my dispute claim.)

<comment><USER27> Can you chargeback on the reason that Ticketmaster reneged on their initial terms instead of the postponed event itself?

<comment><USER26> Not sure, I may try again with that reasoning.

</comment></comment></comment></comment><comment><USER28> The only good thing Ticketmaster ever did was employ Terry A. Davis.

</comment><comment><USER29> I'm not a Ticketmaster fan from back in the Pearl Jam days, but I think there's a misunderstanding in a lot of these comments. If you are just the platform that venues use, and someone asks for a refund, it's pretty heavy for the platform to be on the hook for the full cost right now (due to a massive amount of refunds). In the short term it can effect your cashflow (covering refunds to consumers while you try to collect from the venue), and in the long terms it could be a huge loss if you're unable to collect from a significant amount of your venues (money already spent).

In general you probably wouldn't want to hold excessive amounts in reserve from the venues because it could be a huge negative factor for them (money needed to setup the event), but right now with Coronavirus it's gotta be really messing with them.

<comment><USER30> This is why Eventbrite has stopped issuing advanced payouts to venues. Given the increased risk, they need to keep the money on hand for potential refunds. I wonder if Ticketmaster has done something similar.

[https://www.eventbrite.com/blog/advanced-payouts-changes- rel...](https://www.eventbrite.com/blog/advanced-payouts-changes-related-to- covid-19/)

<comment><USER29> No doubt. Typically they would hold a reserve based on a risk calculation. This epidemic would have completely invalidated the old math on how much to reserve and I suspect has therefore left a lot of platforms in a shitty position or cash strapped.

</comment></comment></comment><comment><USER31> Original article this one cites, published four days ago:

[https://www.digitalmusicnews.com/2020/04/10/ticketmaster- qui...](https://www.digitalmusicnews.com/2020/04/10/ticketmaster-quietly- changes-refund-policy/)

<comment><USER32> The Times covered this on the 8th. The policy didn't change

[https://www.nytimes.com/2020/04/08/arts/music/ticketmaster-r...](https://www.nytimes.com/2020/04/08/arts/music/ticketmaster- refunds-coronavirus.html)

</comment></comment><comment><USER33> Something tells me this is going to increase the amount of chargebacks from customer using credit cards, and from my limited understanding of them I don't see why credit card companies wouldn't accept them, which would damage the reputation of Ticketmaster.

It wouldn't surprise me if this is immediately illegal under EU law, but even if it's not, in my country customers shopping with a credit card are under additional protection since the credit card company is actually the "responsible party", not the merchant, so they would legally have to pay up. Smells like a potential lawsuit in that case between Ticketmaster and any generic credit card company affected by this.

</comment><comment><USER34> Should I just do a credit card chargeback for an postponed event? Are there any drawbacks? I tried to chat with their customer service and it wouldn't let me because my event wasn't eligible for a refund.

<comment><USER35> Unless you are a nuisance customer that frequently files chargebacks, there shouldn't be any drawbacks for you. The onus of responsibility lies with the merchant who must provide the processor with sufficient evidence that your claim is fraudulent or unjustified. Which, in this case, almost certainly means you will win the claim and Ticketmaster will lose the funds and be assessed a chargeback fee for the privilege.

</comment></comment><comment><USER36> Shameless Plug: It's still a WIP, and obviously this covid stuff has been hard for us, but my company sellout.io is trying to build a fair alternative that ultimately gives artists the ability to sell tickets directly to fans. Ticketmaster's rein will end soon.

<comment><USER35> You have a compelling offer to Ticketmaster's free money? Those giant stadiums are likely getting million dollar annual upfront payments for signing exclusive multi-year ticketing deals. Not even the mighty Pearl Jam (in their prime, no less) could beat the hated Ticketmaster.[0]

[0][https://en.wikipedia.org/wiki/Ticketmaster#History](https://en.wikipedia.org/wiki/Ticketmaster#History)

<comment><USER36> Yes, make more money over a longer period of time, create a better experience for your customers, and be treated well.

Their free money isn't free, and venues are starting to notice.

</comment></comment></comment><comment><USER37> Is Ticketmaster the definition of an anti-competetive monopoly that anti-trust laws exist to break up?

</comment><comment><USER38> From what I can tell based on this post, it is up to the event organizers.

</comment><comment><USER39> Ticketmaster is corporate cancer that could probably be 90% replaced by a couple folks with a webapp.

<comment> no-such-address Something else to know is that Ticketmaster is happy to list and collect commissions from 3rd party ticket sales, but they excuse themselves from "Ticketmaster Fan Support" policies. Caveat emptor.

</comment></comment><comment><USER40> Generally speaking, I think blockchain is not a good answer for most things, but this is leading me to consider whether it might be an excellent tool for ticket economics.

Consider: Each ticket is already nearly a contract; making them into smart contracts seems very straightforward. Tickets do not have the "oracle" / "reality capture" problem many block chain applications have - tickets are essentially pure information to start with. Initial ticket sales combined with an aftermarket very closely resemble ICOs and subsequent coin trading.

AFAICT the big stumbling block is the ticket-coin-to-USD conversion; maybe a perfect fit for stable coins? Ah - the other big stumbling block is the UX around ticket _redemption_ ; making sure it's convenient, reliable and not exploitable. Hmm.

The _interesting_ part IMO is how this could work with spending money from ticket sales prior to the show; you have proof that you'll make X revenue and could borrow against it, at some rate that already includes risk factors. If you have to cancel your show, refunds are "automatic" as per whatever the smart contract specified, and the risk (borne by the lender) is (is the word?) actualized?

<comment><USER41> Let's apply the "do you need blockchain" test: do we need zero trust distributed consensus? No? Then no.

<comment><USER40> Fair-ish. Issue is that any entity that has free reign to modify the state of the chain can modify the tickets; such as deciding to no longer give refunds.

AFAIK, there are four entities in shows, with varying levels of trust between then: fans, venues, performers, and the ticketing company. (I'm considering ticket redemption are part of "venue"). Some ability to decentrally coordinate without complete trust seems worth exploring at least as a thought experiment.

I'm not saying this definitely _is_ a valid application of block chain, just that it looks more like it could be than anything else I've seen.

<comment><USER41> That's what we have legal systems for. Even if there was some technical barrier for modifying contracts, it still doesn't work. Not sure if there's a name for the opposite of the oracle problem but on the output side, but the theaters can still just refuse to honor the tickets. Again we're back to it being all about the actual contract.

Also does every ticket holder run a node? Is that practical? If not, we have the oracle problem at the other end.</comment></comment></comment></comment>


Rails 3 Cheat Sheets from Envy Labs - <AUTHOR> http://blog.envylabs.com/2010/12/rails-3-cheat-sheets/

<comment><USER2> Envy Labs has really been a model citizen in the Ruby community. With the release of Zombie for Rails, the podcasts/videos/blogposts, and now the cheat sheets. Kudos to them. I hope to see more and more dev shops following in their footsteps.

<comment><USER3> Envy Labs is doing awesome things. They are also a frequent sponsor for Central FL's (sporadic) tech events. See: MagicRuby, OrlandoBarCamp, etc.

</comment></comment><comment><USER4> Cheat sheets in general are pretty awesome. I, for one, have five or six of them plastered all around my desk at work, for easy access. vi shortcuts, CIDR notation, TCP/IP stack... things that I need to access frequently are most easily read from a simple cheat sheet.

This one's going up for sure!

</comment><comment><USER5> This is perfect for what I need, you guys are awesome. Love what you're doing with Zombie for Rails too.

</comment><comment><USER6> Very well done, thanks guys. It helped me with an issue I was having.

</comment><comment><USER7> This is absolutely fantastic. Does anyone know of anything as high quality for Django?

</comment><comment><USER8> As much as I love cheatsheets, I've often wondered what the motivation is for someone to produce one - especially one of such high quality as these.

Is it simply the name brand promotion that it generates?

<comment><USER9> if it's useful internally, then I can't think of a better form of branding than tidying up the formatting, slapping a logo on the bottom and knowing that it's going to be downloaded and referred to by the people most likely to require your specialised services. For that matter I was planning on tidying up and releasing the ones I created for myself to learn the framework at some point, and I have no desire whatsoever to sell my services as a programmer (nor should any sane person want to hire me).

I have to wonder what the motivation for releasing it as a 10MB(!) pdf was though.

<comment><USER10> _Every pixel is sacred!_ – the designer

You know the sort. I'm currently de-flashing a website where google can only see the <title> tag. Everything else is an image or a flash, and even the flash when torn apart is mostly pictures of text and individually placed characters… but it remains true to the designer's vision. A pity no one ever sees it because it is unsearchable.

(It also would have been nice if the flash artiste had delivered the source files, but then I suppose he was afraid someone would sully his masterpiece.)</comment></comment></comment>


Redis persistence demystified - <AUTHOR> http://antirez.com/post/redis-persistence-demystified.html <comment><USER2> I love your blog posts so much. In 20 minutes I just learned so much about databases and internals.

Thanks for writing these!

<comment><AUTHOR> Thank you for reading it. It is a long post, takes some patience and interest to read it.

<comment><USER3> Are there any good posts on transactions? I've found articles around but nothing very concise that explains the exact behavior of MULTI/EXEC when things go bad.

<comment><AUTHOR> basically MULTI/EXEC is always handled correctly, either everything or nothing is committed to the database memory, RDB file, AOF file, slave, ...

<comment><USER3> I had read that MULTI/EXEC would not "rollback" incase a command fails (e.g. you do first SET, second SET, third SET fails, then the two initial SETs would still be applied). I guess this doesn't so much have to do specifically with persistance problems (system crash, process crash, etc..) but more with just how transactions work in general.

Is this not true or at least no longer true?

<comment><USER4> <http://redis.io/commands/set>

> _Status code reply: always OK since SET can't fail._

So, what kind of situation are you envisioning?

<comment><USER3> Maybe SET wasnt a good example .. but lets say you are writing to the wrong type or something like that. I know that its unlikely something will fail in production like that since you should catch it during dev but bugs can happen.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> For a high-valued production data, if you think your data is safe after it's (finally) written to disk, then you're doing it wrong. Your data is not safe until a) it left the physical database machine, b) it left the physical datacenter to be stored into multiple datacenters around the world (e.g. S3).

Thus ideally, the (horribly slow) disk doesn't even come into play, especially for in-memory DBs. You buffer the data in memory before they are sent out of the machine/datacenter, but you make sure to mirror this buffer at multiple separate physical machines (which your database cluster _should_ support), in case one goes down or over. Once the data are committed into a replicated store, you can clear that buffer. Fast and reliable.

This is not to say that there are zillion cases where harddrive is still the ideal persistence device. After all, it's very hard to destroy a harddrive in a way to make the data unrecoverable (of course, I'm talking about cases where RAID failed or wasn't present). However in reality, data from broken harddrives are seldom attempted to be recovered, mainly I guess due to the price and relatively long service waiting times.

<comment><AUTHOR> If you read the article carefully there are multiple mentions about this, specifically I wrote that RDB persistence is just perfect for this: a single- file compact representation of data to send _far away_ :)

<comment><USER5> Hmm, I was thinking more of "sending chunks of AOF" out to a separate, distributed storage (and the RDB snapshot file occasionally). Loading data from network could then be slower than from a disk, but also faster than from a disk, depending on network speed and number of machines to read from.

</comment></comment></comment><comment><USER6> And because I just know the whole VM deprecated thing will come up, here's a pretty awesomely informative recent status:

<https://github.com/antirez/redis/issues/254>

<comment><USER7> Antirez mentions that a limited set of on-disk data structures could work well but that it will take one or two years to even reach the drawing board. Fair enough -- Redis is first and foremost an in-memory database.

If there was the time though, I'd love to see LevelDB[1] merge the gap between in-memory and on-disk. Inspired by Google's BigTable, all keys are kept sorted on disk (see: SSTable[2]). Keys, lists, sets, sorted sets and hashtables could be encoded in sorted key-value form and would be reasonably (though not tremendously) efficient to retrieve, especially if the query can be converted to a range query (i.e. list retrieval or set intersection). Keep hot data in memory, the rest ends up securely on disk.

Yes, Cassandra is based on the same lineage but it's not simple or clean to operate. Redis is a pain free setup, features a simple API but has no transparent way to overflow to disk for cold data. LevelDB is an optional backend for Riak but I must admit I've not explored Riak heavily... Have I missed a contender from another database crowd?

[1]: <http://code.google.com/p/leveldb/> [2]: [http://www.igvita.com/2012/02/06/sstable-and-log- structured-...](http://www.igvita.com/2012/02/06/sstable-and-log-structured- storage-leveldb/)

<comment><USER8> Speaking of LevelDB and Redis, did you know about Edis[1]? It is a protocol compatible implementation of Redis that uses LevelDB as its data store. I haven't had a chance (nor the need) to try it, but it sounds interesting.

[1]: <http://inaka.github.com/edis/>

<comment><USER7> Indeed I hadn't -- Edis doesn't rank highly for searches involving "LevelDB + Redis" which could be how it avoided me for so long. This sounds like what I envisioned, so I'll be looking at it with a keen interest =] The real question is how they implemented the encoding of the Redis data structures into the LevelDB SSTable format and the implications that will have on performance. If the Github issues are any indication it's an interesting proof of concept but hasn't been used or tested widely yet[1]. Along those lines, leveldb-server also looks interesting as a simple (API) and easy to install LevelDB backed DB.

[1]: <https://github.com/inaka/edis/issues/2> [2]: <https://github.com/srinikom/leveldb-server>

</comment></comment></comment></comment><comment><USER9> For anybody interested in this topic, this SQLite doc page is excellent:

<http://sqlite.org/atomiccommit.html>

Check out in particular the sections "Hardware Assumptions" and "Things That Can Go Wrong"

</comment><comment><USER10> Durability through replication should probably be mentioned as well; either to address performance requirements, or to provide stronger durability against hardware failure.

<comment><USER11> Redis can _only_ perform asynchronous replication because it uses a single thread. It cannot block the main thread waiting for the network and have acceptable performance. This makes replication as good as "appendfsync no" as you have no guarantees as to what happened on the network write.

The upside of the design is that it makes things simple (e.g., transactions, append only file).

(This is my understanding, please correct me if I'm wrong!)

<comment><AUTHOR> Yes it is correct that asynchronous replication is the only way Redis handles replication, however replication and durability are still in topic: if the master burns in fire, the slave will contain your data ;)

However there are people that turn Redis async replication into synchronous replication with a trick: they perform:

        MULTI
        SET foo bar
        PUBLISH foo:ack 1
        EXEC

Because PUBLISH is propagated to the slave if they are listening with another connection to the right channel they'll get the ACK from the slave once the write reached the slave. Not always practical but it's an interesting trick.

</comment></comment></comment><comment><USER12> As a long time Redis user, source code admirer and spectator of its evolution, I have to say that I learned quite a lot about open source project management.

</comment><comment><USER13> _One of the additional benefits of RDB is the fact for a given database size, the number of I/Os on the system is bound, whatever the activity on the database is. This is a property that most traditional database systems (and the Redis other persistence, the AOF) do not have._

Can you expand on this? Specifically:

-Do you mean 'bound' as in 'limited by' or 'known'?

-Why are RDB snapshots I/O bound when other systems are not?

-Why is this an advantage?

<comment><AUTHOR> If you write the DB on disk sequentially, every 5 minutes, the I/O you perform is a fixed amount _regardless of the amount of writes you have against the dataset_. For instance using pipelining Redis can easily peak 400k operations per second, and you can have a few instances in the same box. In this setup 5 minutes of data loss may be acceptable, if you are writing 2 millions of records per second, and RDB make this possible. The I/O performed will always be proportional to the number of keys, it is not proportional to the operations the instances are receiving per second. With Redis AOF, and generally with most other databases, it is unlikely that you have an operational mode where the I/O is simply proportional to the _size_ of the data set, and not to the amount of reads/writes.

<comment><USER14> What about a hybrid RDB/AOF option, where AOF is not written immediately but every N seconds, using the latest delta?

</comment></comment></comment><comment><USER15> antirez, thanks for the objective look at Redis's internals. As a young engineer 2 years removed from college, I feel these articles serve more to us young'ns with lots of knowledge gaps.</comment>