Trevor Turk

A chess-playing machine of the late 18th century, promoted as an automaton but later proved a hoax.

Month: January, 2009

Collecting all attachments using Paperclip

Paperclip is a great way to allow file uploads in your Rails application. However, it doesn’t give you much in the way of tools to move those files around once they’re on the server, so I concocted a little strategy for doing so.

I tried to get this into Paperclip itself, but it looks like I’m the only person who actually needed it, but I’m hoping this blog post will come in handy for someone eventually.

If you have a User model with an avatar attachment, you’d need the following:

class User < ActiveRecord::Base

  has_attached_file :avatar # etc...

  def avatars
    versions = self.avatar.styles.keys < self.avatar.path(version), :url => self.avatar.url(version)}
    end
  end

end

This would give you an array to access the path and url for each avatar like so:

User.last.avatars.each do |avatar|
 puts avatar[:path]
end

Weekly Digest, 1-25-09

Trevor

Craft the perfect gem with Jeweler

You should have a good idea of what Jeweler is all about by now. It makes gem creation an impulse action. It makes managing versions of gems nice and automated. Oh, and did I mention it is the GitHub recommended way for maintaining your gem? Now go forth, and craft the perfect gem.

My Git Workflow

…what I will do is give you a snapshot of my personal Git workflow(s). I have several, depending on the kind of project…

The Big Picture: The Inauguration of President Barack Obama

On January 20th, 2009, Barack H. Obama was sworn in as the 44th President of the United States of America – the first African-American ever to hold the office of U.S. Commander-in-Chief. The event was witnessed by well over one million attendees in chilly Washington D.C., and by many millions more through coverage on television and the Internet. Collected here are photographs of the event, the participants, and some of the witnesses around the world.

Change has come to WhiteHouse.gov

Welcome to the new WhiteHouse.gov. A short time ago, Barack Obama was sworn in as the 44th president of the United States and his new administration officially came to life. One of the first changes is the White House’s new website, which will serve as a place for the President and his administration to connect with the rest of the nation and the world.

The 37signals Effect

Every time 37signals gives out advice, there’s this 900 pound gorilla in the room that no one seems to notice. They wrote Ruby on Rails. They have a huge cult following. They have a blog with 80,000 RSS subscribers. Do you? The next time you read some of their advice ask yourself if it makes sense for them only because of all these things you can’t reproduce. I’m pretty sure there isn’t a chapter in Getting Real that says “First, write and release one of the most important and popular open source projects of the last 10 years”. But should there be?

Confreaks: RubyConf 2008

The Eighth International Ruby Conference, A.K.A. RubyConf 2008 was held in Orlando, Florida on November 6-8 of 2008. [I just got around to watching some of the videos. You can watch the 30min summary to see if there's anything you're interested in checking out.]

Timothy

7 Myths About Managed Hosting

This is a lit of pro/con points about managed vs. unmanaged hosting. You may be called upon to take up one side or the other at a point in the very near future. Best to be prepared.

nru | lastminute.com labs

Unfortunately, this app is only currently available for UK Android users, but you gotta figure that something like it is on its way to the States. Basically, it’s a merge of Google Maps and a compass app–an annotated compass–that functions as a kind of personal radar for "events" or, (more likely) places.

Comcast Quits Throttling BitTorrent, Targets Heavy Users Instead

Comcast: just boycott it. Throttling anyone who attempts to use the service for which he has paid is not a solution to the problems they created when they started overselling the ever-loving shit out of their network. Seriously: just act like Comcast doesn’t exist.

Debian on Android installer released. – AndroidFanatic Community Forums

While I wouldn’t do this to my phone–partially for fear of bricking (and having to social engineer myself a replacement) it and partially for fear of having to add it to the list of computers that require daily attention/maintenance–it represents substantial progress towards the dream of a world in which phones are like computers: you buy them, ignore the pre-installed Microsoft OS, install your favorite Linux distro and do your thing however you decide that you need to do it.

GameDev.net – How To Build a Game In A Week From Scratch With No Budget

So, dude makes a bet that he can whip up an overhead dungeon crawler in the style of old-timey Dragon Warrior school RPG’s and documents his progress on this page. What makes it a worthwhile read is the pre-writing he did: when he starts working on a component of his game, he often lists certain assumptions or rough ideas he had going into that work. Those insights are, IMO, the valuable ones. Knowing how to pre-write is as important as being able to debug/edit.

Mobile Device Management Software – Mformation Technologies Inc. – 95% of Mobile Users Would Use More Data Services If Setup Were Easier

Cellphones, like non-HD TV, are dead and deprecated. And, much like non-HD TV signals, lots of people are still sticking to their cellphones because of laziness, confusion, ignorance, fear, etc. This little survey suggests that it’s mostly fear of lost information that’s keeping people from switching out their cellphones for smart phones. Interesting little factoid, that.

Events: Lifehacker’s Guide to Catching the Inauguration from Anywhere

Major props to LifeHacker for having the authoritative guide to catching the inauguration ready to go by Monday morning. It’s nice to see dudes practicing what they preach (i.e. getting things /done/).

Running multiple instances of MySQL on the same machine | MDLog:/sysadmin

As you phase MySQL out of your life, you may find that you want to centralize all your legacy MySQL db’s (e.g. your 4.x MySQL db that you can’t upgrade and your current 5.x that you don’t want chewing up resources on your production machines and that 5.1.x that you had to install in order to make it clear to your superiors that MySQL was dead) on a single machine. This is a good guide to getting started on that.

YouTube – ChangeDotGov’s Channel

Obviously going to be slashdotted all to shit this week: I’d feel remiss if I didn’t do my bit to help Google set all kinds of bandwidth records on this Inauguration.

Building desktop Linux applications with JavaScript: Page 1

Java apps are ugly and programming them is confounding (full disclosure: I think QT looks great, generally speaking, and I really, really like the way Opera looks). But as far as user-land goes, they’re preferable to anything that’s nailed to a single OS. Especially in ye olde enterprise setting. This Ars piece makes the case for more "extensibility" and interoperability en route to a primer on "Seed". Worth a quick read, if only to have it as a talking point the next time someone wants an application developed for the office Windroids.

Stubbing out S3 calls in Paperclip

Here’s a quick tip for people using Paperclip that I mentioned on the Google Group. You can easily stub out calls to S3 in your tests using mocha like so:

Photo.any_instance.stubs(:save_attached_files).returns(true)
Photo.any_instance.stubs(:destroy_attached_files).returns(true)

Of course, you’d want to change the Photo bit depending on the model you have using Paperclip.

Hopefully this little tip will save others the fruitless Googling and annoying code digging I did :)

Weekly Digest, 1-18-09

Links. Enjoy.

Also: only 2 more days until Barack Obama is our President!!!

Trevor

Dan Gilbert researches happiness

Dan Gilbert presents research and data from his exploration of happiness — sharing some surprising tests and experiments that you can also try on yourself. Watch through to the end for a sparkling Q&A with some familiar TED faces.

A Fresh Look at Callbacks

The entire Rails request cycle is around 4ms. This may have shaved off 1/2ms, which isn’t going to be that big a deal for any app, but like I said, a few more of these optz and the full Rails request cycle will moot Metal.

Gently exceeding expectations

Exceeding expectations is the point of this post, but if you go too far, you don’t just exceed them, you change them. The next time your client comes back for more work, not only will they not believe you when you said that you haven’t completed the work in half the time, they’ll be disappointed that you didn’t go to the same effort as before. It’s a vicious, unfair reality.

Google Quick Search

Mac OS X only: We’ve been crazy about Quicksilver—a free application launcher for Macs—for years now. Today Google is releasing a new search-and-launch application called Google Quick Search developed by Nicholas Jitkoff, the developer of Quicksilver.

Your idea sucks, now go do it anyway

…people could share game objects by dragging them into chat windows… plans for the game fizzled out the engineers created a Flash application for real-time chat plus file-sharing with a particular emphasis on image-sharing… people were interested in the sharing part more than the real-time part… in yet another upheaval they rewrote the Flash application as a regular website and lo, Flickr was born.

Requests Per Second

Durations are a much more useful, and more honest, metric when comparing performance changes in your applications. Requests per second is too wide-spread for us to stop using it entirely, but please don’t use it when talking about performance of your web applications or libraries. [Fantastic to see this blog back in action!]

path to * mastery

Tutorials tend to go by the assumption that the listed code works as advertised, and that you’ll be massively productive. That rarely happens to be the case. There are many times when little edge cases make the code blow up in strange ways. Don’t panic, just learn how to debug the errors and fix the issue. I don’t mean just commenting out enough code until it starts working, but actually finding the root of the error.

Regarding The Personal Web

I don’t think it’s possible to have a successful presence or brand today without being a part of the social networks, without contributing more than just one kind of content, without using multiple channels. But I have no plans to stop writing and publishing here. Actually, I still feel like I’m just getting started.

10 things to be aware of in moving to Ruby 1.9

I thought I’d share my personal list of things you need to be careful of as you go from 1.8 to 1.9. This is not a list of changes; it’s a list of changes that you really need to know about to get your 1.8 code to work in 1.9, things that have a relatively high likelihood of biting you if you don’t know about them.

Writing Decisions: Headline tests on the Highrise signup page

We’ve been rotating some headlines and subheads on the Highrise signup page to see if they have an effect on signups. Answer: They do, sometimes significantly. [Amazing that these small changes could make such a huge difference!]

Subdomains in Rails

A quick how-to for creating Basecamp-style subdomains with Rails.

Timothy

Extended G1 battery life anyone? | Android Community

Thinking about getting that extended life battery for your G1? Take a look at the graphic on this page and notice the size increase. Not necessarily a deal breaker, but definitely a game changer.

InformIT: Software [In]security: Top 11 Reasons Why Top 10 (or Top 25) Lists Don’t Work > The 2009 Software Security Bug Parade

Courtesy of Schneier’s blog, this is an interesting take on software bugs and security from the security perspective: good reads for admins, programmers and CSO’s, I think.

Online gamers in China must soon register with real names

China, re: Internet censorship, has once again FAIL’d /mightily/. The complete and utter failure of the Chinese government hivemind to grasp the basic necessities of privacy and how fundamental they are for the survival of a civilization would be hilarious if it weren’t certain to end in buckets of tears and bathtubs of blood.

Meet Son of Storm, Srizbi 2.0: next-gen botnets come online

In a nutshell, Ars explains the recent lull in spam and how the current up-tick is correctly understood as a mild prelude to the impending deluge. Good news for people who like bad news.

A diagram of the apt system

This dude basically used dot to diagram the under-the-hood of apt-get and aptitude; a must-read for anyone administering Debian boxes.

Ask reddit: What LaTeX resume template do you use? : programming

Fair warning: henceforth any links to any LaTeX projects and templates will be submitted to delicious. The world needs /MUCH/ more LaTeX and less word processing.

Make it All Opt-in and Stop Worrying So Much | AndroidGuys

AndroidGuys’ Scott Webster is completely off-base (and by "off-base" I mean "dumbfoundingly ignorant of the basic human right to privacy and the increasingly urgent battle between the privately owned Mega Corps and citizens for control of public spaces and resources into which we were all conscripted when Phil Knight declared open war on us in the 70′s") in his blithe response to the growing concern among the dudes at the Digital Democracy project re: Android’s capacity to a.) gather user info and b.) facilitate location-specific advertisements, but he does provide a handy entree to the debate.

What You Should Know Before Going to America – Topic Powered by Eve For Enterprise

Yeah, this was on reddit, but it really is too hilarious to pass up: a guide for (novice) Japanese tourists by (seasoned) Japanese tourists about how to get by in America. Mostly valuable as one of those exercises in trying to look at yourself the way that other people are looking at you.

Feb/13/2009 at 23:31:30 UTC – the Unix time number reaches 1234567890 seconds. : programming

I don’t know about you, but I’m excited.

demongin6 – Rat’s Nest Edition – Anki – Latin Deck

In what was perhaps the F/OSSiest moment of my life, I responded to my dismay at the lack of a widely available anki deck in Latin by scraping an online dictionary and creating one. The raw .txt file from my scrape can be downloaded here and imported on any contemporary version of anki.

The Sweetheart Brigade: Chicago hip-hop » The Grossest of Faux Pas

My new band just released our debut EP. In the course of the last two months we’ve a.) configured a vanilla WP install (with Disciple theme) to suit our needs, b.) set up a mediawiki install for our private, back-end stuff and c.) recorded a debut EP. The release part for same is this weekend. The Sweetheart Brigade so far has been, for me, an exercise in applying GTD principles/tools and the Linux admin and desktop publishing skills I’ve learned as an office drone to a meaningful, real-world project.

Web 2.0rhea hack mistaken for end of universe • The Register

The best postmortem on last week’s Twitter "hack" (complete misuse of word "hack"); calls the h4x0r’s lack of vision and creativity the result of "pussification". I am inclined to agree.

EU to ban plasma televisions in battle against climate change – Environment, News – Belfasttelegraph.co.uk

Ban plasma TV’s for failing to meet environmental standards? Sure–why not? It would be better to ban them for being unreliable wastes of money that are generally unloaded on unsuspecting marks by unethical, mildly-hungover hard-selling sales-kids in Mega Corp retail chains, but this’ll do.

Skype Launches on Android Platform and more than 100 Java-Enabled Mobile Phones – About Skype

Personally, I only use skype three or four times a year–I can’t stand voice communication. If, however, you need it for biz or for overseas peeps or whatever, you may now holler on your Android phone.

anki – Ancient Latin Deck

This is a guest post from Timothy O’Connell.

A recent LifeHacker article got me interested in anki, a cross-platform Simple Repetition System (SRS) or flash-card app.

anki allows users to create or import modular “decks” of “cards” that they can use to study whatever it is that they want to study. Which is, in and of itself, pretty great: as soon as I learned about this, I got excited. My enthusiasm went on the wane, however, when I discovered that there was no deck for ancient Latin (the casual study of which has long been a hobby of mine).

So I decided to create one by scraping the Latin dictionary at http://classicsunveiled.com/. The details of the scrape and the import of the entries into a Postgres database are relatively uninteresting: there are also hundreds of good tutorial on BeautifulSoup and psycopg2 out there and the world obviously has no use for another one from a self-proclaimed n00b like me.

What the world might find useful, however, is the ancient Latin deck I created. Here’s a step-by-step* on how to get it going:

  1. Download the .txt file from my personal blog: http://demongin.orghttp://s3.amazonaws.com/almosteffortless/ankiLatin.txt
  2. Start anki.
  3. Click “File” -> “Import”
  4. Click “Choose file…” and browse for ankiLatin.txt.
  5. Once you’ve selected the file, everything should be ready to go: click “Import” (to the right of the “Field mapping” controls), give the program a second to import the deck, select close and get busy.

* NB: these instructions are based on the Debian package version of anki (i.e. 0.9.9.4).

Troubleshooting guide: OpenVPN fails to start

This is a guest post from Timothy O’Connell.

I work mostly on Debian systems (workstations and servers). Recently, during a lull, I decided to throw caution to the wind and go ahead with a reasonably large (<= 1000MB worth of new and upgrade packages) dist upgrade on my personal workstation at the office. Everything went pretty well (as well as could be expected, anyway) and my post-upgrade reboot was mostly uneventful.

OpenVPN, however, did not start. And, not to besmirch the character of its developers or its package maintainers (“it’s not you; it’s me”), I wasn’t exactly surprised. OpenVPN is definitely on my “usual suspects” list. And if you run Debian testing or sid, it should be on yours as well.

And if it’s going to be on your “usual suspects” list and be one of the first apps that you expect to fail, you ought to have a trouble-shooting routine. Or at least an idea of where to start.

Generally speaking, when my OpenVPN fails to initialize and connect during boot, I see the following when I tail /var/log/openvpn.log:

Mon Jan 12 11:33:31 2009 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Mon Jan 12 11:33:31 2009 Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Mon Jan 12 11:33:31 2009 Cannot allocate TUN/TAP dev dynamically
Mon Jan 12 11:33:31 2009 Exiting

And, honestly, this is the error you’re most likely to receive following an kernel upgrade: something will go “kablooie” as the various new modules are initialized, your dev node won’t be created and you’ll end up without support for the virtual device that will allow you to create your tunnels.

First things first, stop and start OpenVPN with its init script and tail the logs, just to eliminate the possibility that cosmic rays struck your machine during boot and the failure was a fluke:

gonzo:/etc/openvpn# /etc/init.d/openvpn stop
Stopping virtual private network daemon:/etc/init.d/openvpn: line 68: kill: (3047) - No such process
 client.
gonzo:/etc/openvpn# /etc/init.d/openvpn start
Starting virtual private network daemon: client.

If you wind up with the same failure message, it’s time to look for modules.Do one of these:

# lsmod |grep tun

If you don’t see something like the following, odds are good that your module just plain didn’t get initialized:

tun                     8292  1

You’ll want to double-check that, of course, by grepping your dmesg. If you don’t see something like the following in your dmesg boot log, then it’s probably time to take the action recommended below:

gonzo:/etc/openvpn# dmesg |grep tun
[   19.292084] hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[   19.292466] hdb: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[   20.700088] hdc: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[  492.481978] tun: Universal TUN/TAP device driver, 1.6
[  492.481989] tun: (C) 1999-2004 Max Krasnyansky 

If this is the case, you might considering adding the string “tun” to your /etc/modules file and trying a manual initialization of the module:

# modprobe tun

If, however, module initialization isn’t your problem, you might be experiencing some shenanigans with the population of your /dev directory. If the “tun” module appears to have been initialized successfully, go ahead and ls -l for the node:

# ls -l /dev/net/tun

If this comes back “No such file or directory” your best bet for a quick fix is (assuming that /dev/net already exists) to handle the situation cowboy style and make the dev node yourself:

# mknod /dev/net/tun c 10 200

That should get you a node that looks like this:

crw-r--r-- 1 root root 10, 200 2009-01-12 11:37 /dev/net/tun

And once you’ve got that, issue a quick stop and start of OpenVPN via init script and tail that /var/log/openvpn.log file one more time; you should be past the tunnel creation process.

…and on to the next catastrophic failure.

Weekly Digest, 1-11-09

Lots of links this week. Please do enjoy!

Trevor

Obie Fernandez: Top Ten Attributes of Good Clients

Friendliness. Gives you positive publicity in public. Pushes you to learn and evolve in private. Realistic expectations. Involvement. Open-mindedness. Respect. Has a viable business model. Diligence. Pays on time.

A Day of Cleanup

I’m going to start putting together a quick prototype of how Rails3 can be JavaScript agnostic while retaining the existing JS helpers next week some time. I’ve already gotten a lot of good feedback from the jQuery and Mootools communities, and plan to get as much involvement as possible as I move forward.

A Smaller Number

Before we used to highlight the total number of blogs on WordPress.com… The new number is a stat we track of active logged-in WordPressers interacting with the site. Now 163,702 is much less impressive sounding than 5.2 million, but that’s okay.

Making Highrise faster with memcached

The number one rule for improving performance is to measure, the number two rule is to measure some more, and the third rule is to measure once again just to be sure. Guessing about performance never works, but it’s a great excuse to get you out in the weeds chasing phantom ponies.

Killing distractions

I believe that procrastination feeds on these distractions and that my personal productivity has decreased due to the time, energy and thoughtspace I’ve given them. I believe that a distracted mind is no place for innovation, problem-solving and creativity. And happiness.

RightScale response to Amazon’s AWS Console

Ever since AWS pre-announced that it was developing its own web-based console for EC2, we’ve been asked how it compares with RightScale. Now that it’s released we can actually make an informed comparison.

New Web-Based AWS Management Console

Today we’re announcing the availability of the Web-based AWS Management Console, which in this first release provides management of your Amazon EC2 environment via a point-and-click interface.

A Clarification on Public API

In short, when I say “public API”, I mean documentation, testing and commitment.

Overnight Success: It Takes Years

There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. The Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967.

Overnight success takes a long time

This notion of overnight success is very misleading, and rather harmful. If you’re starting something new, expect a long journey. That’s no excuse to move slow though. To the contrary, you must move very fast, otherwise you will never arrive, because it’s a long journey!

You Will Probably Fail in a Boring and Project-specific Way

…went through several informative rounds of load testing and tuning until we felt comfortable handling tens of thousands of users. We never got tens of thousands of users.

OpenID removed from Wetpaint

Why doesn’t Wetpaint support OpenID? Low usage. Out of over a million accounts, less than 200 registered users used OpenID.

Undo Last Commit

git reset –soft HEAD^. This pulls out your most recent commit, putting the changes back into your working tree. It’s exactly like an undo button for whatever you just committed.

Does Amazon S3 really save money?

If your startup is using Amazon S3 for its storage needs, for the benefit of the startup community, can you please elaborate your rationale for choosing this service?

Announcing the Rails activists

Bringing Rails and Merb together is about more than just merging the respective code. Following on Merb’s success in offering a strong evangelism effort, we’re pleased to announce the creation of the Rails activists.

Fixtureless datas with Machinist and Sham

Equipped with a Lathe, Machinist allows you to craft beautifully valid and well-populated ActiveRecord models. It’s extremely handy if you want an alternative to YML fixtures or you’re sick seeing the ugly save(false).

Happy New Year from thoughtbot

Our open source plugin work continued to get a lot of love in 2008 – we continued to maintain and release new versions of Shoulda – and we introduced Factory Girl and Paperclip. It’s great to see this combination of tools getting so much adoption and appreciation from the ruby community

What good is a flexible paperclip?

Since it’s the Holidays, I’ve been spending a bit more time than normal on Paperclip. It’s all about making Paperclip more flexible, more adaptable, and more friendly to use.

FriendOrFollow.com

Who are you following that’s not following you back? Who’s following you that you’re not following back? Find out!

Twitter and the Password Anti-Pattern

The more frequently we do this, the more routine it becomes, the more we become desensitized to the inherent risks in this behavior. And so we take it for granted that we must cough up a username and password in order to try out that new shiny service, given the countless times previously where nothing bad happened.

Eviction, or the Coming Datapocalypse

…these sites were hand-made, done by real people, with no agenda or business plan or knowledge, exactly, of how everything under the webservers worked. They were paying for their accounts, make no mistake…

Engineering @ Facebook’s Notes

2-3 Terabytes of photos are being uploaded to the site every day.

Timothy

Hot Sauce & Chile Pepper Facts

Feeling guilty about the fact that you smother every food item that passes your lips with hot sauce (including chewing gum)? Don’t: apparently capsaicin is the next best thing to testosterone, in terms of enhancing your general awesomeness and overall killing power.

Android netbooks on their way, likely by 2010 » VentureBeat

Everybody and his brother has delicioused this by now, but it’s worth mentioning one more time: Android runs on portable PC’s because it /wants/ to run on portable PC’s. For the cheap seats, what this is about is the fact that Goog wants to be a player in the OS game. The stack looks like this: Android manages the hardware, Chrome runs on Android and Google Apps live in the cloud. And Microsoft is a vague, distant, unpleasant memory.

Op-Ed Contributors – How to Repair a Broken Financial World – NYTimes.com

Are you done raging out over the fact that our nation’s elected officials just let the most notorious and least popular cadre of career criminals in 200 years of American crime into the Treasury to steal close to $700 billion and spend it on pay raises, golden parachutes, palatial estates and private planes? Me neither. This article is a great place to keep that fire going with new talking points.

Weekly Digest, 1-4-09

Happy New Year! Would you like to click some links?

Trevor

Ruby on Rails Guides

This page is the result of ongoing Rails Guides hackfest and a work in progress. [Lots of great stuff in here already!]

WordPress.com Terms of Service

…we’ve decided to make the below Terms of Service available under a Creative Commons Sharealike license, which means you’re more than welcome to steal it and repurpose it for your own use…

Stack Overflow is a Wiki

Stack Overflow launched about three months ago, and is already serving 8.3 million page views per month. The growth has been incessant.

Timothy

G1 and Cupcake – What’s the Deal? | AndroidGuys

In addition to being a nice, clear explanation of what’s going on with "cupcake", the "service pack" upgrade for Android, this is also a good primer on exactly what the future of Android handsets is going to look like. For those wondering about whether total anarchy would ensue upon the arrival of a F/OSS mobile OS, the beginning of the answer is contained within this piece: it looks (as of right now) as though hardware manufacturers will begin with an Android "image", or tag, modify it as necessary, release it and maintain it, importing features from fresh tags as they see fit.

Simple-CDD – Debian Wiki

I recently learned about simple-cdd on account of a work-related necessity. Long story short, simple-cdd is a drop-dead simple way to create Debian installer CD’s that automatically install additional (i.e. non-stock) packages and set custom settings. Very awesome.

The PracTeX Journal – TeX Users Group

If you’re into LaTeX–and I am–and you find yourself having to convert your LaTeX projects into other formats (so that the plebs can edit them)–and I do–then this project will be of interest. PS: It’s also written in python. WIN.

DLL-files.com – Download all your missing dll-files.

I can’t personally vouch (this link came courtesy of LH), but if you’ve become accustomed to tearing the stuffing out of stock Windows installs within moments of product key activation, this website looks like it could be very handy: you search alphabetically for the DLL you’re after and you’re presented with version specific results. Excellent.

Follow

Get every new post delivered to your Inbox.