I’ll be doing a quick talk on git-sh(1) tomorrow night at the first ever
Git Down!, in San Francisco.
Fast Markdown libraries for Ruby: two for the price of one.
It’s as though every other version control system I've ever used was created by people who were really into version control and Git was created by people who were really into hacking.
Fork me!
I didn’t know it was possible to build such nice closed-source programs.
The quality of the generated HTML is poor and we need to be able embed custom stylesheets … and do something about those nasty URLs!
403 Go Away!
A look at the new Coherence Mode feature in Parallels desktop.
MacOS X: How to turn textmode tools into first class applications. Mutt.app, Vim.app, Irssi.app, Top.app, etc.
Need an analogy but don’t have the time to actually think of one your self?
Some praise for Site24x7.
How to get command line apps to respect the OS X network location. A neat little hack exploiting symlinks and $0.
Bringing gems from the del.icio.us mailing list to the masses.
Using the address bar as a quick del.icio.us lookup tool
Some thoughts about a simple backup system that takes advantage of a package management system.
Minimalist, keyboard controlled (modal vim-like bindings, or with modifier keys) browser based on Webkit. A lightweight vimperator, maybe?
Nice. The xargs(1) switch -P N will run up to N separate processes in parallel. Combine with the -n M switch for a quick and dirty process pool.
This has been sitting in the back of my brain for months now. I finally got a chance to throw something together last night:
Shotgun is an automatic reloading version of the rackup command that’s shipped with Rack. It can be used as an alternative to the complex reloading logic provided by web frameworks or in environments that don’t support application reloading.
The shotgun command starts one of Rack’s supported servers (e.g., mongrel, thin, webrick) and listens for requests but does not load any part of the actual application. Each time a request is received, it forks, loads the application in the child process, processes the request, and exits the child process. The result is clean, application-wide reloading of all source files and templates on each request.
Pat Nakajima’s script to measure the amount bloat you’re adding by requiring libraries. Generates a report on the number of methods added, along with a list of names. Interesting metric.
Ruby based continuous integration server that rocks. Built on Sinatra and DataMapper. Painless setup, beautiful web UI, hooks up to GitHub. I wish I'd went and looked at this earlier.
You cannot find this special offer anywhere else. A Twitter client, a fart noise generator, and a flashlight, all in one app for the iPhone. Act now!
Aristotle Pagaltzis shows a pretty crazy technique for splitting a single git commit into multiple separate commits using an interactive rebase and successive checkouts on the same branch. Interesting approach. I usually pop the commit off into my working directory with git reset HEAD^ and then use multiple iterations of git add --patch + git commit until my working directory is clean again.
Interesting looking prefpane for MacOS X that tweaks some sleep settings:
“Just ‘sleep’ means that the notebook will go to sleep fast, but you loose the ability to change the battery. Just ‘sleep and hibernate’ will wake the computer fast, but sleeping will take ages as the contents of the memory are saved to disk before entering the sleep. MacOS uses ‘sleep and hibernate’ all the time by default. SmartSleep lets your notebook just ‘sleep’ while the battery has a high level. If the battery level drops below a certain point ( default is less then 20% or 20 minutes ) it will switch to ‘sleep and hibernate’. So you have the best of both worlds.”
Markus Prinz with a nice review of important Ruby 1.9 changes.
A much more sober but constructive take on the plan to merge Rails and Merb.
“The syntax for many of the commands in bashdb mimics that of gdb, the GNU debugger. You can step into functions, use next to execute the next line without stepping into any functions, generate a backtrace with bt, exit bashdb with quit or Ctrl-D, and examine a variable with print $foo.”
RDiscount, a fast Markdown library for Ruby, is now included with the FreeBSD ports collection thanks to Daniel Roethlisberger.
An interesting RubyGems mod by Fabien Franzen that seems to fix the memory hit a process takes on require 'rubygems'. Unfortunately, you have to code for it in your app and apply it to installed ruby commands explicitly. Fabien has submitted a ticket and patch to the RubyGems project, however. You should +1 it (after reviewing the code, of course).
Interesting Rails plugin from Viget Labs that adds ActiveRecord attribute helpers for various humane markup languages. The markdown variation supports both rdiscount and rpegmarkdown. Cool. Not sure how I missed it when it was released in August.
Sends an email notification when someone stops following you on Twitter. I don’t have the nervous system for it myself.
“Varnish implementes a subset of the ESI Language 1.0 defined by W3C, this document lays out some of the thoughts and rationale for choices made and advice for usage of these features.”
This lets you perform includes at the cache layer so that each included resource can have its own caching policy. Akamai edge proxies have supported this for some time, apparently.
Looks like a really solid improvement on 1.0. I haven’t had a chance to play with any of the betas but I'm anxious to see whether If-Modified-Since/If-None-Match validation made it in. There’s a note on “serving expired objects until we have a fresh one” but that sounds more like stale-while-revalidate.
Apparently, Yahoo!’s indexer supports marking specific content on a page as “extraneous to the main unique content”. This lets you prevent headers, navigation, and other types of site-level crud from overwhelming the content and the search results will excerpt only content that’s relevant to the page.
From the Yahoo! Web Crawler FAQ: “… apply the robots-nocontent attribute to indicate to search engines any content that is extraneous to the main unique content of the page. Yahoo! Search observes the class='robots-nocontent' present on XHTML elements, such as div, span, and all others.”
… is a Ruby library suitable for use as a drop-in Net::HTTP replacement or with event frameworks like EventMachine and Rev.
I'm using this on all of my “linkings” index pages now (see here, for example). It works pretty well. I really like the idea of integrating a piece of the destination site’s visual identity instead of using a generic del.icio.us/bookmark icon. Some site’s with favicons don’t work properly, however, and I'd give anything to have another parameter that let me override the default globe icon (this one: ). It'd be nice if I could say, grab the favicon for this domain but if it doesn’t exist, give me the favicon for delicious.com (
).
Very interesting alternative to git submodule, especially in “vendor branch” type scenarios. The other project is merged into yours at a specified prefix and can be updated with a simple git pull.
Lots of good stuff coming in Varnish 2.0. GC, regexp based purge, custom hash funcs, backend load balancing based on health or other metrics, and the thing I'm personally most interested: what looks like support for validation based caching.
Pseudocode for the SHA-1 algorithm. Pretty straight-forward for being so insanely useful.
Highly experimental HTML 5 validation service. More info and bookmarklets available on the about page.
Sends emails to people when you die. Awesome.
“This is how this works. You write a few e-mails, and choose the recipients. These emails are encrypted with military-grade algorithms, so you can be sure that no-one except the intended recipient will ever read them. Your switch will email you every so often, asking you to show that you are fine by clicking a link. If something were to… happen… to you, your switch would then send the emails you wrote to the recipients you specified. Sort of an ‘electronic will’, one could say.”
Dump the stack trace of all threads in a running ruby process by signaling with -QUIT. Requires patching the ruby interpreter, which sucks because I need it for a process running right now.
Yep. Rubygems’s system of security is really very lax compared to any Linux distro or other system-level package management system I've come across. I think the bigger problem, though, is that there’s a cultural acceptance to running gem as root. You don’t really think before installing a gem, you just “sudo gem install FOO”. There’s an attack waiting to happen any time you’re using sudo out of convention like that.
PHP-based Muxtape clone that you host yourself. From the project page: “Opentape’s creation and design are proudly inspired by Muxtape’s success and sleek interface. We were sad with it’s untimely shutdown and wanted to let the web mixtape movement continue.”
muxtape.com was RIAA'd a couple of weeks ago. And while the EFF believes they could have decent legal footing if they wanted to challenge the take-down, it seems unlikely that the site will reopen anytime soon, if at all.
I threw this together a few weeks ago and now I'm not sure how I lived without it now. I know you people have cool bash/git hacks sitting in your ~/.bashrc — hand them over.
Very nice and functional JavaScript based timeplot library. Looks good, shows data-points on mouse over, approachable API. Good stuff.
Awesome. I didn’t even know there were such things as Firebug Extensions.
Sam Ruby on how DVCS + mailing list has removed the need for bug tracking systems on some projects. I'm feeling a similar pull in my own work.
Nice TOS: “We are engineers, and we, like you, know very well how you want to be served by us, just as you know very well what not to do here.”
Free (as in beer). Built on WebKit. Simple. Beautiful.
Compare (as in, diffs) the output of 15 different Markdown implementations. Includes every Markdown implementation I've ever come across and then some…
Interesting. I've been using the jquery-1.2.3.js hosted on google code for a few months now. Maybe I should have read the TOS…
This is the template used to generate the HAML RDoc. It’s a massive improvement over the default template shipped with rdoc. I can almost stomach rdoc with this — almost.
Interesting thread wherein Linus describes the need for various types of Git workflows for leaf developers vs. maintainers. Lot’s of talk about the pros and cons of rebasing in different situations.
An implementation of Markdown in portable ANSI C that’s roughly 28.5x faster than the canonical Perl implementation on a 179K test file. Looks like a complete implementation; includes smarty and footnote extensions.
And I was just starting to get used to the Minefield icon… I've been running the nightlies for about three months now and FF2 is really feeling a bit like legacy software.
Now this is the kind of direction I hope to see GitHub and Gitorious go in the future.
Ian Bicking: “Many people are excited about how far up you might be able to scale something based on App Engine, but I’m excited about how far it could be scaled down.”
A nice solution to “The Tangled Working Copy Problem” for VCS’s that don’t allow you to pluck out portions of a working copy to commit. Allows editing the diff that’s about to be committed.
Matt Chisholm evaluates Ruby against Python for an upcoming project and determines that it’s a big pile of doodoo. I can’t agree with the conclusion but he details a lot of Ruby’s warts really quite well.
Bill de hÓra gives some reasons for using a distributed VCS even when the downstream repo is non-distributed.
JavaScript based source highlighter with support for many languages in separate modules. Similar to the JavaScript Prettifier in that <pre><code> blocks are automatically detected and highlighted without an explicit language class.
David Heinemeier Hansson: “PHP scales down like no other package for the web and it deserves more credit for tackling that scope.”
Agreed!
Okay, I've read about five of these articles purporting to explain Git’s internal conceptual framework. This was the first that really made things click in any significant way.
I'm more than a little embarased that I've never heard of this utility. I think most modern kernels prioritize IO with normal nice, though…
More praise for GitHub from a small team of Django hackers that built a site in three hours on one night with a little help from git…
Makes the background of hexadecimal color codes the respective color. So, background-color:#f00 will have a red background in the vim editing window. Nifty.
Make Firefox like Vim. No, like, insanely like Vim. Not just h,j,k,l mappings but everything. Looks like it’s been around for awhile. I'm not sure how I missed it.
A quick script I threw together to convert simple bzr branches to git repos. Requires git, bzr, and rsync.
I repackaged mongrel_proctitle as a GemPlugin so that all mongrels on use it automatically. This is the first chance I've had to play with GitHub, too. Lovin' it.
Constantly updates the the process title ($0) with something like: “mongrel_rails [10010/2/358]: handling 127.0.0.1: HEAD /feed/calendar/global/91/6de4”. Let’s you monitor backends with ps and top.
“… adds a chroot(2) facility to sshd, controlled by a new sshd_config(5) option ‘ChrootDirectory’. This can be used to ‘jail’ users into a limited view of the filesystem, such as their home directory …”
Huge thanks to al3x for the invite. I’ll be writing up my experience over the next week or so.
Seriously interesting web based git browser and collaboration tool from the folks at Engine Yard. If anyone has a spare invite laying around, hook me up: rtomayko@gmail.com. I have a bunch of stuff sitting in bzr repos that I'd like to flip over to git.
From the comments: “the only things i find [useful] in Web Developer Extension is the shortcut to clear cache… for other things i use Firebug…” — Me too!
Nice Ruby assertion library that’s block based. Shows block contents when the assertion fails. Much cleaner than Test::Unit assertions and without the retarded RSpec non-sense. This really ought to be rolled into the stdlib Test::Unit, IMO.
Lightweight Firefox extension that causes new tabs to open to the right of the current tab. Works with Firefox 3.0 betas and nightlies with extension compatibility checking disabled.
Finally: “this manual is designed to be readable by someone with basic UNIX command-line skills, but no previous knowledge of git.”
Evan Weaver: “These leaks tend to grow slowly. Your Rails app definitely has this kind of leak, especially if it uses the ActiveRecord session store.”
There’s some good questions here. I've been running into a few of the same issues while experimenting with moving some of my bzr projects to git. Can one of the git pros out there have a look?
Runs on Linux and FreeBSD (with linproc mounted on /compat/linux/proc). I've always wondered why top(1) just kind of stopped being developed 10 years ago.
I've been watching the weekly changelogs and there were a ton of performance tweaks. The FreeBSD port landed today as well.
This is pretty funny. Even the options dialogs are themed.
pv can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, and an estimate of how long it will be until completion.
Dennis Ritchie: “There was a facility that would execute a bunch of commands stored in a file; it was called runcom for ‘run commands’, and the file began to be called ‘a runcom’. rc in Unix is a fossil from that usage.”
Payware GUI shell thingy for MacOS. This is not a QuickSilver/Launchbar clone. It’s more like a magical bash interpreter that knows things about what’s happening in various Mac GUI applications (like Finder, Safari, etc).
I wonder why newsgator would make this free. Seems like there was a pretty decent slate of paying users. Losing ground to Google Reader? Eventual ad placement? Just wanted to be nice? Weird.
“I am going to introduce you to bash’s vi editing mode and give out a detailed cheat sheet with the default keyboard mappings for this mode.”
This is a good idea. The w3c hosted validators tend to perform on the bad side of horrible. I've run the validator locally but never thought to look for mirrors.
I would use this ASAP if not for the privacy requirements around the data I'm charting. There’s really no good general purpose graphing libraries that use nice and simple vector shapes and styles.
This trumps Leopard for most important Mac development this year as far as I'm concerned. Words cannot explain the hatred I've developed for booting up multiple Parallels VMs to get at IE.
Absolutely beautiful new Vim port for OS X – sane GUI tabs, multiple windows, client/server mode, fonts look great. Stop building Carbon Vim from source!
Manual page URL handler for Safari (e.g., “man:bash”, “man:sort” in URL box). References to other man pages are hyperlinked very nicely and the pages themselves are formatted quite nicely.
That was quick. IMO, the Mac needs this application more than other platform’s (including Windows) because of its document oriented application switching.
“v1.8.0 represents nearly a year of development and testing to bring you a host of new features and improvements”
Vim add-in for viewing manpages, perldoc (both system and embedded), help, info, and php files. Maybe I’ll finally be able to read all that GNU info doc I keep hearing about in the GNU coreutils man pages.
NoSquint remembers your text zoom level per site, so you will only need to adjust text size once for each site that uses text that is too small for your eyes.
Some detail on rsync’s “rolling checksum” algorithm invented by Andrew Tridgell.
“… cron’s pathological behavior has be petrified into the Unix standards. So if it isn’t broken, it isn’t cron.”
“…. But after closely studying Git I'm a little bit awestruck; Torvalds is a frickin' genius, a true visionary, and somehow managed to just "get it” and instantly, in a flash of insight, come up with “the solution” for version control."
“… on Java, too many web frameworks – think JSF, or Struts 1.x – consider the Web something you work around using software patterns. The goal is get off the web, and back into middleware…”
Nice. This is going to save me some serious time.
Oh wow. I've been trying to find a single page that has every unicode character on it with its hex counterpart but this is pretty fantastic.
About half of these will be well-known to the UNIX hacker but there’s a couple I've not seen elsewhere: lsbom, softwareupdate, screencapture, and lipo.
“In the remaining four templates, the translation from XSLT to Genshi markup is straightforward. And generally, the Genshi markup is both more compact and more powerful.”
Nice look at techniques for writing portable sh.
This is pretty darn close to my configuration but I used the mutt-devel port… Oh, and my ~/.procmailrc is pretty insane also :)
Recent presentation by Mr. Bram Moolenaar on how to be a bad-ass with Vim.
Love it! This is less of an article and more of a minute by minute account of hacker seeing something he doesn’t understand and following the trail (man, code, calculus) to understanding.
“Essentially, this add Vi command functionality (albeit a small subset) to any (and all) text editors that use the Cocoa text system; e.g., Safari, TeXShop, XCode, etc.”
Interesting concept. I’ll have to check this out once it comes out of “pre-pre-pre alpha” (which doesn’t really make sense, btw. There’s nothing more alpha than alpha).
“the version control system is a first order effect on software, along with two others – the build system and the bugtracker. Those choices impact absolutely everything else. Things like IDEs, by comparison, don’t matter at all.”
Put in a subversion URL and get back an RSS feed for tracking changes.
I've been meaning to spend some time in Restlet for some time now. Looks like it’s gaining traction with the EE crowd. Err, well, uhh, some of the EE crowd, anyway.
This is another thing that’s been driving me crazy for a while now. I'm going to try the bonjour technique mentioned in the comments.
OpenID solves the identity problem, not the trust problem. When a user authenticates with OpenID, what they are doing is stating “I have the ability to prove my ownership of this URL”.
“The demoroniser keeps you from looking dumber than a bag of dirt when your Web page is viewed by a user on a non-Microsoft platform.”
I've been using a fetchmail, procmail, and mutt setup on my Mac for a few months now in an attempt to get control over five different mailboxes and it’s working pretty well. If you've got some free time and lots of mail, consider playing around with one o
“strives to provide most of GNU grep’s common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular or hexadecimal expressions”
Nice looking Newsreader for Mac OS X (F/OSS with an Apache 2.0 license and public subversion repository).
Whose going to get this running on OS X? I guess it doesn’t really matter. I can always X over to a Linux box…
Seamless window support for rdesktop (and perhaps Cocoa Remote Desktop). Similar to Parallel’s Coherence Mode for RDP.
A Cocoa port of rdesktop. Universal Binary, multiple concurrent sessions, no X11 makes it the best RDP client for Mac on paper.
The best attempt I've seen at splicing multiple API references together. This uses the external documentation but provides indexing and browsing features.
Dumps graphic (PNG) representations of a webpage to disk using Apple Webkit. Similar to a screenshot but better because it can capture the entire height and width of a page even when they extend pass your screen size.
Oh wow, I just ripped all my iTunes DRM'd songs down to unprotected AAC in about 10 minutes. These guys did a great job.
This is probably the nicest color picker for choosing compliments off of a base color.
Alright, it looks like I'm going to have to break down and learn how to package ports since none of this crap is working on Tiger.
Came across this odd section in a “leaving Emacs for vi” document and it has a really interesting description of the history of FSF/GNU, Linux, and the evolution of Free Software. Seems out of place in this document but is worth reading.
Information on setting up emacs for (X)HTML web development including nxml-mode, rng-validate-mode, etc.
Introduction to being a complete bad-ass.
del.icio.us/popular with nifty sparkline graphs for tracking popularity over time (via Simon Willison)
Track whether your MP is working for you in the UK Parliament.. Really cool looking piece of civic software.
Generates non-expiring links to New York Times content. Bookmarklet included.
Nice look at moving to subversion. Go into migrating from CVS, subversion idioms, gotchas, etc.
Demo of 100% free Java/Eclipse natively compiled with gcj. This is slated for Fedora Core 4.
Find out and track what’s going on in congress. We need more tools like this.
Export list of songs from iTunes, upload here, drag images to iTunes. Nice.
Cool. This is one of the most frequent requests on yum-devel. Not sure who’s behind this though because I don’t remember seeing it discussed on the mailing list.
Is it just me or are color pickers the only apps that are innovating on the web? You can never have too many of these.
This seems to be a bit cleaner and more functional than the standard python unittest module.
I can finally shelve my bash/curl framework :)
adobe reader is a tool of pirates. this will undoubtedly strangle the nascent graph paper market!
Can be run in-process or client/server. Whole database stays in memory. Could be super useful in some situations.
“share a single mouse and keyboard between multiple computers with different operating systems” via PhotoMatt.
Generates per-site passwords based on a master password and the site’s domain name.
A distributed P2P web cache thingy that looks cool. Need a bookmarklet to generate the URLs.
After using Emacs for three years, I think I finally need to learn how to use it. This has some good pointers.
This could be really really really big.
A solution to paste flooding IRC channels. Paste code to this website. The paste stays for 24 hours. Neat. It’s kind of fun just browsing the Recent Pastes.
Thinking about using this for my comment system. They have an XML-RPC API but it isn’t documented on the site.