I’ve been playing with some code to handle WordPress exports (I’m planning to consolidate and retool this site–I don’t like the schizophrenic 2 sites within a site mentality that it has right now) and one thing is clear: WordPress has some issues. A nice platform, by and large, but the export, running the latest stable version, produces invalid XML. The database coalition is UTF-8 and there are characters in the dump that are valid UTF-8, but invalid XML. Moreover, the URLs are not properly escaped, so the anchors in URLs make the parser throw invalid charref errors.
Most of the offending posts are, of course, spam from before I got some good captcha software running (thanks, Zach). These are duly marked as such in the markup and would, of course, have been excluded from any of the later processing–except that I am having to spend time hacking around the broken markup just to get to that point.
Oh, well. Such is life.
For most applications that I use on a day-to-day basis, I am quite happy with the current version in my distro de jeur’s (Ubuntu, of late) repositories. Sure, a little more cutting edge would be nice, but good enough is good enough. I had technical writing professor once who bemoaned the fact that most people, students, professors, and professionals alike, only know about 10% of what their word processor could do. His facts were right. In non-technical fields, most people are probably only aware of 1% of what Microsoft Word could do. The same thing is true with command line apps. My most typical use of find is probably
find . -name 'foo'
Find has tons of options, but this one is the one I use the most. So, it is true that the versions in a given distro are not the bleeding edge, but, normally, I don’t need the bleeding edge–and I don’t have the time to care intimately about everything (I’m looking at you Gentoo–you’re a lot of fun if I’ve got a lot of time, but I don’t).
But there are a few applications that I use where it pays to be, or at least sit closer to, the bleeding edge. For me, those applications are:
- sup–simply the greatest CLI mail program in human history. The best of mutt, pine, and Gmail in one easy to use application. I started using it version 0.8 or 0.9 (I forget which) and am using the current release, 0.11.
- tmux–this upstart to GNU Screen offers lots of goodies to the discerning user. The first and most obvious is the ability to slice either horizontally or vertically, a much friendlier configuration file (I don’t use standard bindings on either GNU screen or tmux), UTF-8 support, and plenty of little technical details (true client/server being not the least of these).
The commonality is that, in both cases, we are talking about relatively young applications and projects that offer a nice set of changes to existing software. The features are the main mover, here. I would not go through the hassle of manually upgrading (through a manually-installed gem system for sup or from manually downloaded sources for tmux) and maintaining either of these applications if their corresponding old and stable projects had what I wanted. In the case of tmux, the biggest thing was horizontal and vertical splitting. The only way to get this in GNU screen is to download an unofficial patch and keep it up yourself. In my opinion, this is even more obnoxious than keeping a separate app, because GNU won’t breakdown and just add support.
What applications, if any, do you run on the bleeding edge? Or do you think the bleeding edge is a complete waste of time?
Recently, I switched from using Sage RSS feed reader within Firefox, to using Newsbeuter without. I’ve been loving Vimperator recently, but Sage was making me break away from the keyboard to choose links. Newsbeuter, on the other hand, runs comfortably in a terminal, allowing me to open links from the keyboard. There was just one problem: whenever I opened a link from Newsbeuter, Firefox would steal the focus.
This was unacceptable. All I wanted to do was page through my fresh feeds and pull open a bunch of interesting stuff. Then go read it. No flipping back and forth. Just go through the day’s bounty.
A little googling turned up this thread: http://ubuntuforums.org/showthread.php?t=783263
Long story short:
- Go to about:config
- Change browser.tabs.loadDivertedInBackground to true
A more interesting question is why do the Firefox devs believe that browser.tabs.loadDivertedInBackground should default to false?
All devs everywhere: stealing focus is wrong. Yes, wrong. Intensely annoying and just plain wrong.
The use of design patterns means that your language just isn’t cutting it for you.
I have written previously on some of the CMS that I have used. What I have yet to see in any of them, be it open source or closed, written in any language that you care to name, is the CMS that I want. This rant is my view of what a CMS should be.
All websites have a simple structure, whether we are talking about a chaotic mega-entity like Wikipedia, or a little personal home page. I should be able to lay out, in arbitrary depth, my website. Moreover, I should be able to do this in a declarative way. No hacking. Just, let me arrange my data. Websites will remain largely hierarchical (show me one that isn’t) just by the nature of things. Our file systems are hierarchical. You enter a website at a predefined point (though Google and bookmarking allow us to jump to more random places in the tree) and move on from there. This is not going to change any time soon.
A website may fill any number of functions. Blog. Collection of pages. Wiki. These can change at a moment’s notice. I want to be able to compose these functions as I see fit. Drupal, Joomla, & friends are miserable in this regard. Their ecosystems have ecosystems. Rather than building small and beautiful, allowing the user to compose the results, we get tangled jungles within jungles.
Templating should be simple. I’ll lay it out, you fill it out. Most CMSes make far too much distinction between different kinds of blocks and content. I don’t want to care. At all.
All of this should be malleable at a moments notice.
A SOAP interface for handling that text-based content would be nice.
In short, it just shouldn’t be this convoluted.