I finally decided that all the music that I have written over the years is doing no good collecting bit-dust on a hard drive. So
]]>I’m embarrassed to have very belatedly discovered that many of the DJ mixes available on my site were truncated. I have taken the opportunity to re-encode many of the mixes as hi-res FLAC files to replace the truncated MP3 and OGG files. Unfortunately
]]>I’m happy to announce the first release of guile-file-names
]]>I’m happy to announce the release of a new software program
]]>I’ve wanted a tablet running GNOME on GNU/Linux for a while now and
]]>My latest research article was published earlier this month at Cell Reports: Sub-minute Phosphoregulation of Cell Cycle Systems during Plasmodium Gamete Formation.
If you’re interested
]]>I’m pleased to announce the release of zeptodb 3.0.1. Yes
]]>I’m pleased to announce the release of zeptodb 3.0.
zeptodb is a small set of tools for working with DBM databases (GDBM, specifically). DBM databases are simple disk-based
]]>I’ve just released paperq 1.2.4. This is a bugfix release:
paperq
with handling spaces in file namespaperq
loggingpaperq
’s help-outputpaperq
codepaperbib
now replaces double-dashes (“–”) with en dashes (“–”)“}”}
]]>I’m happy to announce the release of Grotesque 0.9.5. Grotesque is an interactive fiction library manager for GNU/Linux. It allows you to easily explore your collection by author
]]>After an unfortunately long period of time
]]>I’m happy to announce the 2014.10.11 release of GSRC
]]>Incredible amounts of data are now being generating in all corners of the biological sciences. Given the immensity of the data being generated
]]>A couple of years ago
]]>EDIT: Note that another quick bugfix release
]]>For anyone out there who’s using Conkeror as their main browser
]]>I am pleased to announce the release of GNU pyconfigure 0.2.2.
GNU pyconfigure is a set of template files for Python developers to use to easily implement the standard GNU configure/install process for their packages. The standard GNU process generally consists of two familiar steps:
$ ./configure --prefix=/usr/ $ make install
By using the templates provided by GNU pyconfigure
]]>I’m happy to announce the 2014.04.06 release of GSRC
]]>It seems that many
]]>Many bioinformaticians use shared computing resources (clusters)
]]>I’ve just released version 1.2.1 of paperq. paperq is a simple command-line tool for managing a reading queue of academic/scientific papers.
This is a simple bugfix release
]]>I’ve just released version 1.2 of paperq. The biggest change is that I wrote another program in C
]]>I’ve finally completely rid myself of Mendeley and so now I’ve been building up a workflow to replace its functionality. I’ve been using cb2bib for metadata extraction
]]>I’m happy to announce the 2014.01.06 release of GSRC
]]>I’m pleased to announce the release of zeptodb 2.0.2. This is a bugfix release. Several memory bugs were fixed and you should now be able to build the package successfully in Mac OS X. Also
]]>Today there’s a new release of Pacnanny
]]>I’m happy to announce the 2013.10.06 release of GSRC
]]>I’m neck-deep in writing my thesis
]]>It’s time for my ceremonial late announcement of a GSRC release on my own website.
I’m happy to announce the 2013.07.06 release of GSRC
]]>As I previously indicated
]]>Hot on the heels of yesterday’s release of zeptodb 2.0 comes version 2.0.1. There’s nothing exciting to report. This is simply a bugfix release that fixes a couple of bugs that came to light when running on a very out-dated GNU/Linux system. Ancient machine aside
]]>I’m happy to announce the release of zeptodb 2.0.
zeptodb is a small collection of relatively tiny tools for interacting with flat (non-relational) databases. In fact
]]>Following up from a previous news item
]]>I’m happy to announce the release of zeptodb version 1.1. This release does not add much in the way of functionality but
]]>I’m happy to announce the first release of zeptodb. This code has been sitting around gathering bitdust for a while
]]>Recently we published an article in Cell Communication and Signaling entitled “Exploring the rate-limiting steps in visual phototransduction recovery by bottom-up kinetic modeling”. This work was done in collaboration with Dr. Daniele Dell'Orco from the University of Verona and Dr. Karl-Wilhelm Koch of the University of Oldenburg
]]>Well
]]>pacnanny
is yet another wrapper script for pacman
I am pleased to announce the release of GNU pyconfigure 0.2.
GNU pyconfigure is a set of template files for Python developers to use to easily implement the standard GNU configure/install process for their packages. The standard GNU process generally consists of two familiar steps:
$ ./configure --prefix=/usr/
$ make install
By using the templates provided by GNU pyconfigure
]]>I’m happy to announce the 2013.04.06 release of GSRC
]]>For my research
]]>The modern web is abusive. Browsing a succession of sites is
]]>
properly with a custom user CSS file, it is broken. Over-dependence
on div
tags to get the site to look exactly the way you want it is
guaranteed to make it difficult to read for some of your
visitors. Designers, it may come as a surprise to you, but not
everyone loves your work. Many people use custom CSS files to force
a style that is easy on their eyes. Yet, a surprising number of
sites fail to render properly if their CSS is overridden. In my
perfect world, no websites would provide CSS files; all styling
would be done by the user. Of course, since most people do not use
their own stylesheets, everyone would complain about how horrible
all these plain black-and-white sites look. So at a minimum, your
CSS should be minimal, such that overriding it causes little
disruption to the flow of your site.
2) No client-side scripts If your website cannot be viewed properly with Javascript disabled, it is broken. There is absolutely no reason that your website should run a script on the visitor’s computer, especially if the user cannot view the full source somewhere. No one is to be trusted online, not even you. For a normal, text-displaying website, using scripts is completely unnecessary since you can just store the text in an HTML document. That’s what HTML is for. If you are trying to make a web application, just stop. Build a native application. It’s nicer for everyone.
3) No proprietary plugins If your website requires the installation of a proprietary plugin, it is broken. The endless stream of news about security holes found in proprietary plugins like Java and Flash should be an immediate hint to you that you shouldn’t be using them. The fact that they’re proprietary means that we cannot benefit from the careful eye of other developers who can spot such flaws. Not only that but support for such software is limited only to what the company that produces it chooses to support, potentially leaving many visitors out. It is not safe to assume that everyone who visits your site can even run such plugins, due to said lack of support or due to lack of computing resources (not everyone in the world can afford a fast computer).
4) No advertising This is a touchy point but words will not be minced. Advertising is manipulative and obtrusive. Most people do not need to buy anything in particular at any given moment and they even less likely need to buy whatever is being advertised to them at that time. Further damning is that advertising is a common source of malicious content on the web, in the form of tracking cookies and cross-site scripting. Cramming advertising into your site in order to generate some kind of income is lazy at best. Some will argue that, since sites depend on advertising revenue to survive, then somehow blocking ads is immoral. It is simple: if your business model is simply to attach some “content” to advertising space, your business deserves to fail. Honestly, it will be no big loss to have such sites go out of business. The world does not need so many vapid link aggregating sites, press-release-rehashing review sites, or echo-chamber journalism sites. If you really must host advertisements, be respectful of your visitors. Host the ads on your own server; do not fetch them remotely. Do not use moving images, pop-ups, audio, video, “click-through” links, or anything else that serves to distract the visitor from what they actually came to your site to see.
5) No frames, multi-columns or other visual clutter If your main text is drowned out by the surrounding content, your site is broken. Trying to read an article when the text is crammed between navigation menus, advertisements, links to more articles, link-sharing widgets, blogrolls, and whatever other things you squeeze into your site to try to keep the visitors attention is an absolute pain. If your site were well-organized to begin with, none of these would be necessary. In fact, such layouts are absurd in that your site is competing with itself for the reader’s attention! One single column of text is the most comfortable reading experience you can give your visitor. As for all that other junk, simply make your site well-organized enough for it to be easily discoverable without having to shove it in the visitor’s face.
6) No non-standard fonts If your website absolutely depends on a particular font, it is broken. Fonts are subtle, in that most people probably do not pay much attention to which one is in use. That said, some people are absolute fanatics about fonts. Most web browsers allow the user to force the usage of their favorite one. Normally this is not a problem. However, increasingly websites are starting to use custom fonts with special glyphs that serve as icons on the site, presumably for bandwidth reasons (see Github project pages, for example). This completely subverts the user’s right to select his or her own, preferred font. As in the above case of CSS, never presume that you have a better idea of what your visitor wants to see. If they do have a better idea, then you should not thwart their ability to implement it for themselves.
7) No tracking If your website leaks private information of your visitors to anyone, it is broken. This should go without question. You have no right to perform any behavioral metrics on your visitors. Their right to privacy should be paramount. Your revenue streams are irrelevant to them. Even more egregious is to allow third parties to do the tracking on your site and worse yet if it is done without any notification to the user. Nobody wants their every move tracked, be it in the web or in the real world. Respect your visitors' privacy and do not do any form of tracking. A word about cookies: unless you are providing a service that requires user log-in, you do not need to send them. Period.
8) No unnecessary pagination If your website cannot fit a normal-length article on one page, it is broken. Web browsers, unlike books, have this amazing ability to scroll. Unless you are presenting a genuinely long document, you should not need pagination (though, clearly for very long documents, some pagination is desirable to easily mark one’s place). Nevertheless, these days many sites unnecessarily break relatively short articles into several pages. This is tightly coupled to advertising: the more pages the visitor has to visit to read the article, the more ads can be presented. With no advertising, as suggested above, this problem would disappear.
9) No abusive account requirements Many websites require accounts these days, for example to participate in some social aspect like a forum or comments, or to accommodate paying subscriber fees. This is fine. What is not fine is how much information is often required to subscribe. Under very few circumstances do you actually need the visitor’s email address. Real names and mailing addresses are likely only necessary for online payment, which should be held quite separately from normal user information. In any case, if a login is required, take the absolute minimum of necessary information, ideally only a login name and a password.
10) No new annoyances The web is a swiftly changing thing and there is no way this paltry list can cover all the corner cases or future annoyances. Before you implement anything, know that we probably neither need it nor want it. Please spare us from having yet another thing to curse about. Remember, all we want to do is read what you have to say. Anything else is just in the way.
Today our manuscript “A system-level
]]>I’ve finally gotten around to setting up a clean repository with the new system I’m using to generate this site. It’s called m4-bloggery and it is available on Gitorious. m4-bloggery is in fact a fork of another project called m4-bakery. Admittedly
]]>This weekend I happened upon some old backup CDs
]]>Yep
]]>I’m happy to announce the 2013.01.06 release of GSRC
]]>After a long time of much inactivity
]]>I’m about 6 days late in posting this to my own blog:
I’m happy to announce the 2012.09.06 release of GSRC
]]>Last week
]]>I accidentally stumbled upon something yesterday that I felt like sharing
]]>Version 0.2 of pyIFBabel
]]>I’m very excited to have been appointed as the maintainer of GNU GSRC. GSRC is a system for downloading and installing the latest GNU software from source. It’s similar to BSD Ports due to being based on GAR and GARStow. I took on this job because the project covers a large portion of the functionality for a GNU/Linux distribution I’ve been thinking about which would form the underlying basis of the Coredesktop idea that’s been floating around in my head. Not to mention
]]>[Edit: nevermind
]]>Fill in the blanks:
The justification for war that seemed most compelling was that
]]>______
was on its way to building a nuclear bomb
The correct answer is a, with the quote taken from Howard Zinn’s A People’s
Lhotse has created a nice flyer for the first Cold Mountain Records release. So
]]>Recently I’ve been working hard to consolidate my web presence and to reduce the number of websites on which I depend. One area where I’m a bit too spread out is programming-related sites. I have repositories on Github
]]>Biopython 1.59 was released today. I had a few small contributions to this one. The main user-noticable one was that I implemented support for sequential Phylip alignment files (in addition to the already-supported interleaved format). In addition
]]>After not being able to work on it for the past half-year
]]>[note: this was originally entitled “Rebuilding all reverse dependencies…”
]]>I’m very excited to announce the creation of Cold Mountain Records
]]>I’ve decided that I’ve finally had enough of social networking. The privacy issues have been written about countless times by people far more eloquent and informed than me
]]>So this is pretty cool. My remix of zxyzxy’s song “Sullen” (as Northern Implosion) was used in a promotional video for Setba
]]>I’ve decided to stop using Google Analytics to analyze traffic on my site. I don’t think the service really goes to the extreme as far as tracking users
]]>I’ve been a happy user of Gnome 3 since it was first released
]]>Hey look
]]>