After some deliberation, we decided to implement a "schema-less" storage system on top of MySQL rather than use a completely new storage system. This post attempts to describe the high-level details of the system. We are curious how other large sites have tackled these problems, and we thought some of the design work we have done might be useful to other developers.
We tend to think of usability as applying only to interfaces. But it’s so much more than that. It’s about delivering something that’s fit to be used. That means it’s about writing copy that’s understood the first time. It’s about requests that are as easy to accomplish as possible. It’s about manuals that are one page instead of 40. It’s about code that you can paste in and works right away. It’s about putting yourself in the other person’s shoes. It’s about looking into the future, foreseeing any potential obstacles, and removing them. And that’s a great way to get people on your side.
Keywurl adds simple way of performing searches in Safari by letting you type short keywords as queries. Type a keyword and a query in the address bar, and it will be expanded into a predefined search.
Here are 4 reasons for prototyping applications first. By prototyping, I mean an emphasis on building working applications rapidly.
In this talk from RubyFringe, Damien Katz explains what drove him to create CouchDB, why he chose Erlang and more. [More personal than technical, but definitely worth watching.]
So, that’s how machinist works. It extends ActiveRecord to give the #blueprint and #make methods, then inside those methods makes a calls a method on the lathe class, which makes a new lathe object which deals with autogenerating attributes that we didn’t specify in make.
I’m ceasing development on SQLite/Ruby, SQLite3/Ruby, Net::SSH (and related libs, Net::SFTP, Net::SCP, etc.) and Capistrano. I will no longer be accepting patches, bug reports, support requests, feature requests, or general emails related to any of these projects.
Batched finds are best used when you have a potentially large dataset and need to iterate through all rows. If done using a normal find the full result-set will be loaded into memory and could cause problems. With batched finds you can be sure that only 1000 * (each result-object size) will be loaded into memory.
There are a bunch of basic functional elements to building out a popular Rails app that I’ve never really seen explained in one place, but we had to learn the hard way while building Posterous. Here’s a rundown of what we’ve learned…
One of the things I always tell startups is a principle I learned from Paul Buchheit: it’s better to make a few people really happy than to make a lot of people semi-happy. I was saying recently to a reporter that if I could only tell startups 10 things, this would be one of them. Then I thought: what would the other 9 be?
Ho-lee-shit. If this is real–"this" being a ceramic device with carbon nano tubes that can summon enough heat to toast bread but which does not require batteries–then there is no price under $150 that is unreasonable.
This is a cupcake–a real, life, edible cupcake–with a small cairn/navel/depression on its top that allows the user to fill the cupcake itself with milk. Must see.
This is a drop-dead-simple guide in the plainest possible language to creating a bootable USB drive that will install Debian. Knowing how to do this is an important part of eliminating socially, environmentally and politically irresponsible RO media from the world.
Thanks Reddit! If you’ve ever wondered why all the paths on Windows machines are wrong, why the escape character on Windows is "^" and so on, please read this little piece.
This is a computer in a wall wart. And that is about the greatest thing ever. Visions of an entire server farm only slightly larger than your average UPS are dancing through my head…
Just a friendly reminder (to myself, mainly) to update those sources.list files to include the new Debian backports information: better now than in a head-long scramble to resolve a BS dependency six weeks from now.
This article, which encourages people to reassess the risk posed by videogames in light of the risk posed by other, equally ubiquitous and multifarious social phenomena, reminds me of those Schneier articles where he harps on the fact that more people die in car crashes every month than have been killed by terrorists in the entire history of humanity.
Have you ever suspected that disc I/O on your RAID card was shitty? Wanted to verify that those mysterious, seemingly read/write related errors were, in fact, related to poor disc I/O? Watch your array crash and burn in real time with iptop!
I would hesitate to call this a revelation, but it does harp on a basic point of preparing to move (or help a loved one move): before you start packing, go through the place and eliminate redundancy. It seems obvious…until you’re unpacking your third hardcover copy of _Paradise Lost_ and thinking to yourself, "Jesus–I can’t believe I just drove 30-some-odd pounds of John Milton across the country."
So, some indie filmmaker/fanboy types whipped up this Halflife fan fiction video, it went viral and now they’re trying to parley (what I’m sure they could insist on calling) their success as viral marketers into startup capital. And while I don’t see nothin’ wrong with turning your DIY/homebrew viral media project into a pay check, I think this is definitely going to come up the next time someone tries to convince me that the whole "viral" thing didn’t jump the shark years ago.
Schneier with a very brief piece on why sysadmins need to be the standard-bearers for the charge to convince users to a.) create better passwords and b.) stop trying to circumvent security measures for the sake of "convenience". I’ve been doing my fair share of evangelism. Have you?
Courtesy of Schneier: apparently Skype is the go-to for secure voice communications. Good to know.