09 Dec 2009

hub: git + hub = github

defunkt’s hub is a command line utility that adds GitHub knowledge to git. Sweet. It expands GitHub repository references so you can do stuff like: git clone defunkt/gist, git remote add bmizerany, etc.

github.com   09:19

ron(7) -- the opposite of roff

I've released a tool for authoring UNIX manual pages using a markdown-ish source format:

Ron is a humane text format and toolchain for creating UNIX man pages, and things that appear as man pages from a distance. Use it to build and install standard UNIX roff man pages or to generate nicely formatted HTML manual pages for the web.

It still needs some work but can produce useful output for both roff and HTML. The sources are on GitHub.

rtomayko.github.com   08:46

08 Dec 2009

Google Chrome for the holidays: Mac, Linux and extensions in beta

Google’s shipping official beta builds of Chrome for Mac and Linux. I've been using Chromium for a few months now and it’s definitely become my favorite browser. It needs a flash blocking extension and an ad blocker. I'm using userscripts for both but they’re a little janky.

chrome.blogspot.com   14:47

07 Dec 2009

Dean Allen on Human Identity

In comments related to the recent shutdown of Favrd:

I’ve spent the past year or so reading and writing and doing my level best to chip away at 40 years of belief in the logical fallacy that one’s identity meaning – self-worth, self-image, whatever you want to call it – can accurately be measured in the thoughts of others. Much as you and I may enjoy being encouraged through recognition and praise and dislike being saddened by rejection or indifference (god knows we’re taught to right from the outset by caregivers: good boy, pretty picture, heckuva job Brownie), deriving personal value from these transactions in the absence of a well-formed internal frame of reference through which you can decide on your own what does and doesn’t work, and subsequently accept the opinions of others as feedback, is just plain faulty thinking, of the sort that makes otherwise capable, centred people all loopy and weird.

Disco.

zeldman.com   18:43

Clarity in log files

Tobi’s log tail and grep app is precisely what I've wanted on every single syslog machine I've ever had to deal with. And the code has some great examples of using EventMachine features to do real async HTTP stuff.

blog.leetsoft.com   15:27

06 Dec 2009

Beauty and truth in physics

Murray Gell-Mann’s (quarks, Nobel prize winner, peer to Feynman at Caltech) TEDtalk from 2007 on the relationship between beauty (simplicity) and truth in science and mathematics:

What is especially striking is that in fundamental physics a beautiful or elegant theory is more likely to be right than a theory that is inelegant.

He goes on to give a bunch of anecdotes that show this playing out over and over during the development of particle physics.

youtube.com   23:41

02 Dec 2009

Beastie Boys - The Bill Adler File

Nobody ever believes me when I tell them the Beastie Boys toured with Madonna in 1984-85. Here’s a great set of super high-res press clippings to prove it:

Why isn’t everybody this cool?:

Bill Adler was the director of publicity for Def Jam in the 80s. He allowed me to photocopy his press file on the Beastie Boys from the time when they opened for Madonna.

This is presently the topic of great discussion in the GitHub campfire.

flickr.com   16:51

30 Nov 2009

Video: Node.js by Ryan Dahl

ry’s talk from JSConf.eu. The leading paragraph says it all:

Node.js might be the most exciting single piece of software in the current JavaScript universe. Ryan received standing ovations for his talk and he really deserved it!

Wow. JavaScript is pretty damn big universe right now.

jsconf.eu   18:45

27 Nov 2009

github.com   01:49

25 Nov 2009

"It's like twitter. Except we charge people to use it."

This email exchange is quite possibly the funniest thing I've ever read on the web. Here’s a tiny piece:

Actually, you were asking me to design a logotype which would have taken me a few hours and fifteen years experience. For free. With pie charts. Usually when people don’t ask me to design them a logo, pie charts or website, I, in return, do not ask them to paint my apartment, drive me to the airport, represent me in court or whatever it is they do for a living. Unfortunately though, as your business model consists entirely of “Facebook is cool, I am going to make a website just like that”, this non exchange of free services has no foundation as you offer nothing of which I wont ask for.

It’s just pages and pages of that.

Thank you @mojombo.

UPDATE: @SimonEdhouse responds
UPDATE: zing

27bslash6.com   14:57

23 Nov 2009

Node.js is genuinely exciting

I agree. I played with it for a couple days and now I can’t shut up about it. That’s basically all I talked about at RubyConf :)

simonwillison.net   14:58

17 Nov 2009

User Scripts (Chromium Developer Documentation)

Chromium runs GreaseMonkey user scripts, apparently. It also says here that “script edits are picked up [from the file system] automatically; just refresh the page to see the changes,” which is something that annoyed me with Firefox’s GM Addon — the files were buried, crazily named, and you had to use that janky addon manager bullshit to make/reload changes. What is that? A directory full of user scripts (now ~/.js on my system) is a perfectly simple setup. Combine that with right-now reloading and I might actually be able to develop these things when I need them.

Anyway, this AdSweep thing is what led me to investigate; looks pretty reliable if you can get through the GM setup.

dev.chromium.org   00:27

16 Nov 2009

ANN: node.js (JavaScript) BERT-RPC implementation: node-bertrpc

I've released a bertrpc library for node.js. If you haven’t play with node yet, set aside a night and dig in. Hacking async server-side stuff in JavaScript is every bit as awesome as I'd hoped: easy to install, good docs, fast VM, clean and simple event idioms. I'm impressed.

groups.google.com   17:04

12 Nov 2009

TURN - Test::Unit Reporter (New)

Tim Pease’s unit test runner and reporter is sexy and has some really interesting features I've never considered when running unit tests. Here’s a piece of the README:

To use the solo runner.

    turn --solo -Ilib test/

This will run all tests in the test/
directory in a separate process.
Likewise for the cross runner.

    turn --cross -Ilib test/

This will run every pairing of tests
in a separate process.

Now that’s interesting. I'd love to have something like GNU Make’s -j option when running unit tests.

github.com   21:48

11 Nov 2009

Writing good documentation

Jacob Kaplan-Moss:

It’s really tempting to use an auto-documentation tool like Javadoc or RDoc for reference material.

Don’t.

Auto-generated documentation is almost worthless. At best it’s a slightly improved version of simply browsing through the source, but most of the time it’s easier just to read the source than to navigate the bullshit that these autodoc tools produce. About the only thing auto-generated documentation is good for is filling printed pages when contracts dictate delivery of a certain number of pages of documentation. I feel a particularly deep form of rage every time I click on a “documentation” link and see auto-generated documentation.

Hate that shit.

You know what I want? Man pages. For everything. Wouldn’t it be cool if you didn’t have to write roff?

jacobian.org   17:09

09 Nov 2009

rtomayko's dotfiles

I recently started a repository for my dotfiles, shell environment, vim config, and utility scripts. As of right now, I'm about 25% through all of the stuff in my $HOME — it should all fill in shortly.

github.com   16:32

06 Nov 2009

"In practice, nothing works."

From the apparently just published, Coders at Work (Apress, 2009), Brad Fitzpatrick Talks About Programming:

In practice, nothing works. There are all these beautiful abstractions that are backed by shit. The implementations of libraries that look like they could be beautiful are shit. And so if you’re the one responsible for the cost of buying servers, or reliability – if you’re on call for pages – it helps to actually know what’s going on under the covers and not trust everyone else’s library, and code, and interfaces. (…)

They should have titled the book, “In Practice, Nothing Works”. Anyway, you can grab the — ick — PDF ebook for $20 on Apress.

blogoscoped.com   18:46

03 Nov 2009

Resque

Really excited to see Chris release the shiny new Redis-based work queue that’s been running GitHub for the past couple of months:

It boils down to this: GitHub is a warzone. We are constantly overloaded and rely very, very heavily on our queue. If it’s backed up, we need to know why. We need to know if we can fix it. We need workers to not get stuck and we need to know when they are stuck. We need to see what the queue is doing. We need to see what jobs have failed. We need stats: how long are workers living, how many jobs are they processing, how many jobs have been processed total, how many errors have there been, are errors being repeated, did a deploy introduce a new one?

I'm still getting my feet wet with the jobs system but I can’t wait to get my hands dirty in the guts of this thing.

github.com   04:26

02 Nov 2009

Notes on using NetBSD’s pkgsrc on Mac OS X

I've dumped MacPorts for pkgsrc. This quick tutorial helped me get going and this package browser is awesome.

rubenerd.com   20:38

dtach

Not sure how I never heard of this program before:

dtach is a tiny program that emulates the detach feature of screen, allowing you to run a program in an environment that is protected from the controlling terminal and attach to it later. dtach does not keep track of the contents of the screen, and thus works best with programs that know how to redraw themselves. dtach does not, however, have the other features of screen, such as its support of multiple terminals or its terminal emulation support. This makes dtach extremely tiny compared to screen, making it more easily audited for bugs and security holes, and also allows it to fit in environments where space is limited, such as on rescue disks.

GitHub has rake tasks that use dtach to manage redis and maybe some other things.

dtach.sourceforge.net   13:12

Primer (2004)

In honor of the greatest xkcd ever, this is Primer in its entirety. It really is that fucked up.

video.google.com   03:57

29 Oct 2009

$ cheat rdebug

Need more rdebug?

cheat.errtheblog.com   20:38

ruby-debug in 30 seconds (we don't need no stinkin' GUI!)

I sometimes forget how useful a debugger is for coming up to speed on a new codebase. This bare-bones HOWTO on rdebug was everything I needed and nothing I didn’t.

pivots.pivotallabs.com   20:36

28 Oct 2009

memcache-top

Nice little self-contained perl script that shows a basic memcached top display for a list of servers.

$ curl http://memcache-top.googlecode.com/files/memcache-top-v0.6 >
  ~/bin/memcache-top
$ chmod +x ~/bin/memcache-top
$ memcache-top --sleep 1 --instances memcache1,memcache2,memcache3

That gives you this:

memcached-top

Nifty.

code.google.com   09:17

Is AT&T’s 3G network misconfigured?

It’s definitely misconfigured in one way or the other as evidenced by the fact that it sucks and has sucked consistently for over a year.

rc3.org   09:13

26 Oct 2009

Gemcutter to replace Rubyforge

Gemcutter will become rubygems.org and Rubyforge will eventually go away entirely:

So, what does this mean for RubyForge? The Ruby-specific functionality and data will be moved into RubyGems.org, and the parts that other hosting sites (GitHub, Google Code, SourceForge) can do better will be pruned away. Migration paths for those projects will be provided, we’re not throwing any switches without warning. RubyGems.org will not be gaining any “bloat” from rewritten RubyForge features.

Wow. Congrats to @qrush and the Rubyforge team for pulling this off so quickly. Also, it’s pretty cool to see Heroku hosting a major/official piece of Ruby community infrastructure.

update.gemcutter.org   03:32

25 Oct 2009

goosh.org - the unofficial google shell

This is pretty rad. You can do web searches and whatnot without leaving a command line style interface but you can also do stuff like read news feeds. Check it:

goosh

I'd love to settle into this kind of workflow but these shell interfaces always have one thing or another wrong with them. Maybe this is The One. We’ll see.

goosh.org   09:11

24 Oct 2009

Timewarp: How your brain creates the fourth dimension

Good article. The comments are even better:

reading this article reminds me countless time I have looked at the clock and the second hand it not moving and then it starts, I am sure this takes longer than a second

That’s always freaked me out. I've mentioned it once or twice but people just think I'm crazy so I don’t bring it up anymore. This guy, Frank, explains the phenomenon:

In more ‘joe sixpack’-terms. After you move your eyes fast, they are unable to collect information for a fraction of a second. When the eyes comes back ‘online’ the brain collects motion-information for an equal fraction of a second, and extrapolates the information backwards to create what things should have looked like and fills this fabricated visual information into your memory. Since the needle (or digit) didn’t move while the brain was collecting info for the extrapolation, it won’t be able to predict that it moved in the past either.

Crazy. I knew something was going on.

newscientist.com   19:57

23 Oct 2009

The Weirdest Clouds that You’ll Ever See

Cloud computing at its best.

webdesignerdepot.com   19:46

almosteffortless.com   05:34

22 Oct 2009

tigrc(5)

Turns out tig, the ncurses front-end to git, is all kinds of customizable. Quick tip: set the author-width to 5 or less and author names are abbreviated to initials:

$ cat <<E > ~/.tigrc
set show-date = no
set author-width=3
E
$ tig
RT harmful specs - disable them
KN [defunkt/master] I shine the shoes around here
CW don't let daemon serving ruin the public / private flow
CW ensure the listeners are notified, just in case
CW add "open sourced" event
CW Turns out we're still stuck on 1.0
CW let's try this again
CW allow overriding of the queue during job creation

Boom.

jonas.nitro.dk   05:38

Why I like Redis

Simon Willison on using Redis with the Python REPL to get complex shit done quick. Insightful piece, as always.

simonwillison.net   04:15

21 Oct 2009

SORT in Redis

Redis’s SORT does a lot more than just sort stuff. Something clicked when I first saw this. I always wondered if/how more complex relational operations could be accomplished with key/value stores.

ozmm.org   15:10

19 Oct 2009

Rubular: a Ruby regular expression editor and tester

I usually don’t like these web based regular expression editors but this one’s just right. Best part is that you can create a permalink for regular expression + text combos.

rubular.com   07:08

rtomayko forked defunkt/github

It’s with great pleasure that I today announce:

rtomayko forked defunkt/github

I've taken a full-time engineering position with GitHub! It starts today.

skitch.com   02:28

18 Oct 2009

Wall Street's Naked Swindle

Matt Taibbi in his latest Rolling Stone piece on the banking fiasco: “We’re in a place we haven’t been since the Depression: Our economy is so completely fucked, the rich are running out of things to steal.”

rollingstone.com   09:18

[ANN] Rack 1.0.1

Maintenance release that fixes a bunch of issues under Ruby 1.9, some multipart form problems, and various other minor bugs.

groups.google.com   06:16

17 Oct 2009

The C++ FQA

“Frequently Questioned Answers,” that is. A big list of why C++ sucks, basically. Also, here’s some solid C++ bashing by notable programmers. All of this and I'm only half-way through Eli Bendersky’s recent essay on C++ hate.

yosefk.com   08:39

14 Oct 2009

Gem Bundler is the Future

Nick Quaranto shows why you need to start thinking about bundler.

litanyagainstfear.com   10:09

PeepCode: Meet Sinatra

Brand new PeepCode screencast on Sinatra by Dan Benjamin. The production on this thing is really exceptional and they get into some meaty topics. Highly recommended.

peepcode.com   08:40

12 Oct 2009

Everything is Unix

Jeremy Zawodny takes a look at the * is Unix thing and throws in some additional goodness: more on fork(2), the benefits of copy-on-write, and atomic file operations.

linux-mag.com   11:25

09 Oct 2009

Unicorn!

GitHub documents the how and why behind their Unicorn setup. Also, for the record, the fork(2) + shared accept socket technique described in my Unicorn is Unix piece was first explained to me by Chris and Tom.

github.com   06:54

CodeRack

The CodeRack Rack middleware competition has begun. All entries get a $30 credit from Heroku and the top three pieces of middleware get special prizes (to be announced). You should submit something. I want to see it :)

coderack.org   05:04

07 Oct 2009

Unix is C

@paulsmith’s simple preforking echo server in C.

gist.github.com   05:20

Perl is Unix

Aristotle Pagaltzis comes through with the simple preforking echo server in Perl.

plasmasturm.org   04:29

06 Oct 2009

Books by Richard Stevens

Unix Network Programming, volumes 1 and 2, and Advanced Programming in the UNIX Environment. Yes.

kohala.com   15:34

Slides from Stefan Tilkov's HTTP Caching talk @ JAOO

Warning: PDF. This is probably the best high-level, everything about HTTP caching all in one place resource on the web at this point. Good stuff. I'm kicking myself for not being a part of his track at JAOO now.

innoq.com   11:01

Python is Unix

Jacob Kaplan-Moss does the prefork echo server example from my Unicorn is Unix piece in Python. Awesome. Let’s see some more of these. Where you at, Perl?

jacobian.org   10:21

I like Unicorn because it's Unix

Eric Wong’s mostly pure-Ruby HTTP backend, Unicorn, is an inspiration. I've studied this file for a couple of days now and it’s undoubtedly one of the best, most densely packed examples of Unix programming in Ruby I've come across.

Unicorn is basically Mongrel (including the fast Ragel/C HTTP parser), minus the threads, and with teh Unix turned up to 11. That means processes. And all the tricks and idioms required to use them reliably.

We’re going to get into how Unicorn uses the OS kernel to balance connections between backend processes using a shared socket, fork(2), and accept(2) — the basic Unix prefork model in 100% pure Ruby.

But first …

tomayko.com   09:23

04 Oct 2009

Thin vs. Unicorn

Chuck presents the results of a few ab runs against Thin and Unicorn. Surprising, even if the benchmarks lack rigor. I'd like to see good autobench runs for all of the backends on same hardware/network.

cmelbye.github.com   13:27