I was posting about a similiar system around a year ago.
Ended up standardizing clusters of only 3 nodes. Initially I wrote a Paxos+Dynamo but it was a dead end for me for our needs. I did not need a massive data store, but a cheap highly available / scalable enterprise service that consistently gave the same answer. e.g. an eCommerce pricing engine. 3 commodity box nodes is all you ever need. I've done over 500,000 prices per second with ~ 9 unique way of pricing ~475,000 skus, based off the equivalent of 100's millions of data rows.
Use IP multicast for cluster/leader election configuration. Much faster. All a server needs configured to boot strap into the cluster is a single IP. Opted to not use Zookeeper though it came out when I was writing my system.
I tried a Dynamo/Cassandra approach on the updates but abandoned it as too slow early on. I ended up using something more like Linked-Ins Kafka for the "log" shuttling. In Kafka parlance, one topic with 3 partitions one for each node. Each node mirrors all three partitions but is owner of 1. One other diff is I do push/push while Kafka a does push/pull. This makes sense as each node is both a broker for and consumer of the other nodes.
Node 0 writes incoming updates to partition 0 and does a 1 out of 2 push to partition 0 on nodes 1 and 2 (third auto drops to async as we have 2 of 3 durable stores)
For update application Paxos is used to then only for consensus of the highwater mark of message Id (the kafka offset). Analogous to Spinnaker's LSN.
Consensus updates to the message high water mark are "batch" applied by a single thread, and only a single thread, to the in-memory store which uses a special array based hash map (Compact Hashmap). The single thread with a ReaderWriter lock give transactions for free with a "database lock" being faster row locking as its all in mem. I have the equivalent of 100s millions of rows in mem all synched between the three nodes.
One final optimization is the observation that if the overlaying application is REST based then updates commute under PUT semantics (version with a vector clock). For this type of application the total ordering of the application of the updates across the nodes is relaxed as it is guaranteed to converge (eventually consistent).
Since all update are batch applied, in mem, on a single threads with a reader/writer lock a client always views only the converged consistent state though each nodes path to convergence may be different.
I had looked at using a Dynamo/Cassandra like Spinnaker but after coding it found it too slow. When I went with a log shuttling push/push similar to LinkedIns Kafka performance of updates jumped quite nicely. I note one of the authors works at LinkedIn.
Wrote the thing in Scala which was also sort of new at the time. But turned out to be a good choice.
Over the holidays I toyed around with scratching an itch I've had with purchasing Kindle books from Amazon. It's just too hard to casual browse through the offerings. So I came up with a small chrome web app.
I'm mulling over taking it to the next level. Thoughts, feedback and suggestions. And yea, I know the UI sucks. It would be first on the list.
The Problem I'm Trying To Solve: Can't browse the long tail of Amazon's Kindle book offerings quickly and easily. I don't want to replace Amazon's shopping experience, just offer a complementary alternative.
It's currently running on an EC2 micro at 3 cents an hour so be gentle. Look at it cross eyed it'll probably fall over.
Very much looks like a nicely done but nevertheless small subset of emacs org-mode for the web.
I'll stay with org-mode:
- I'm in emacs all day anyway.
- Much more feature rich: priorites, dates, coloration, etc.
- Full editing (duh) capabilities. Cut&paste to shuffle things around. Key combos for everything. Fingers never leave the keyboard.
Since I maintain the file in git I check it in and out from anywhere on any system. Full version history as well.
It is / can be surprising who on your team will have the most problems on a Git from SVN migration. Sometimes ol' CVS/SVN warhorses have too much to unlearn, sometimes simple devs who never bothered to progress beyond the minimal clicks with SVN/IDE to get code up and down discover the true Qi of source control management as they discover git's capabilities.
One nice thing about git vs. svn is when you reach enough mastery you can make that repo dance to your tune. At some point you and git are one and working together. SVN was always some kind of imposing, opposing force; one that I had to fool into doing my desire.
One clueless contractor could put your SVN repo into hell-and-gone. With git I told the team, "don't worry, go for it; unless you do something really strange, there's nothing you can do that I can't recover from."
Don't lose another four years before blogging about how you finally switched to emacs from vim and bite the bullet now. Emacs is to vim as vim is to textmate IF you are a hard core software developer. Vim is best for sysadmins, simple, quick non-complex editing.
I know, I know... But when you were newly in "love" with textmate I'm sure if I said you need to switch to vim you'd say no way. Skip vim and go right to the best there is, Emacs.
From the HN Guidelines: "Please avoid introducing classic flamewar topics unless you have something genuinely new to say about them."
You have nothing new here, nor do you have any evidence to back up your claim that emacs is superior to vim for development purposes. I'm not agreeing nor disagreeing with you here - I don't have the authority to as I don't have enough experience with Emacs to make that call. Emacs is a great piece of software, and I think that we can all agree upon that here even if we aren't a user of it (such as myself), but that doesn't mean we can make un-cited statements about it.
...and once your fingers are raw, bloody stumps from typing with three modifier keys held down, then you can write about coming home to vim again! Bonus!
Seriously, can we not start yet another Emacs vs. vi argument? Neither is perfect, they both have ardent fans, pick either, get really proficient with it, and don't look back.
(Emacs user who loves Emacs's extensibility and multi-buffer design but prefers vi's modal keyboard ui. And yes, I know about viper, etc.)
Have you noticed that all of the recent press seems to be for vim? It seems like every month there's a new "I switched to vim!" post, but never a similar emacs version, or even a mention of emacs in the switch article.
If I'm not mistaken, they're usually switching to vim specifically from textmate. The Mac + Ruby community seems to be disproportionately well-represented in blogs, probably due to a high concentration of web developers.
Please elaborate on why modal vs. chord is specious. The Vim people and E authors don't seem to think it's wrong, so the explanation isn't obvious.
I'm not being sarcastic -- I'd love to hear an argument that modal editing doesn't matter, because it's one of the core features of Vim (probably the core feature) that draws me to the editor.
In this space ads may actually be able to make money since the audience is very targeted. You even know what field everyone is in by looking at what papers they click on and such. It seems easy to have a free+ads plan and an $10/mo no ads plan.
if you could convince labs themselves to pay for it, it'd be a money maker, although this may require more direct marketing at first. many academic institutions hold subscriptions/licenses in the $10k range.
I wouldn't bet on it. Making money in the academic institutional licensing world is tough, especially if you are marketing something that doesn't impact bottom-line figures for people who are concerned. Arguably this use case is as far removed from bottom line value adds as possible. In an optimal world you have a killer app that reduces University lead COA by 30% or something, but this would have to grow organically (so a lot of direct sales approaches are no good).
A friend of mine has been doing a lot of direct sales (quite successfully I might add) to institutions, but the reason he's making money is that his target audience is already doing a lot of number crunching, they have big budgets, and he's directly saving them cash. Something like this is probably a "nice to have" feature that would be near impossible to convince the school to pay for, to speak nothing of a worthy price tag (greater than $2k/yr for instance).
I sounds like a fun project, but I would not expect it to pay much, if anything. And an ad model's monthly revenue would be a joke.
Chromium + Flash + Linux vulnerable as well?
How does one
a) even know what version of flash is embedded in Chromium
b) other than constantly killing the flash process how does one disable flash in Chromium
Generally, to determine flash version, you're forced to the macromedia website to view a version test .swf .
After finding out about this 'sploit, I looked in vain for the authplay.dll . It turns out I had a newer build that wasn't listed as vulnerable (and I couldn't find the file itself, where does it usually reside?).
Not too mention the basics, eye opening approaches to XML and Web, an IDE, debugger, contracts, typed/dynamic language, jit, Android development, ... and on and on.
The talent of the core PLT group is outstanding. Matthias Felleisen for example was awarded an ACM Fellowship in 2006 for contributions to programming languages and development environments. His academic publications are right up there with the best out there, yet he spends as much time focused on the foundational aspects of teaching kids, and students as high brow papers, and the real world demands of programming. And the rest the core are not too shabby either.
IMHO, there are currently only 2 top tier active hotspots where the cool theoretical meets with the practical and usable in programming language theory, the Haskell and PLT ecospheres.
Scala, and Closure would be next.
Don't listen to the wingnuts comedy central wannabe's cracking poor puns here about schemes and rackets (well laugh at the good ones).
In all seriousness, if you are at that point where you've stumbled onto the fact that there is a whole world beyond Java, Cobol, C and C++ and are having fun exploring Smalltalk, SML, OCaml, Haskell, Scala, Closure et al, do not skip, repeat, do not skip exploring PLT Racket. It is as rich, and deep and mind altering as any of them.