Previous 10

Feb. 8th, 2015

Moving, part 8

With basically ten lines of code and a trivial template modification I've added support for multiple categories to Pelican. I'll make the code freely available soon. I expect to finalize the migration soon.

Speaking of which, perhaps I should have called this post series "migration" instead of "moving". I've gotten feedback that that's been confusing. Too late now!

Feb. 3rd, 2015

Moving, part 7

Good news! I have almost 200 blog entries spanning eight years "imported" into Pelican (really, I have almost 200 text files on a USB drive). I've even written code that automatically converts in-blog links from LiveJournal URL's to the new URL scheme. I really need multiple categories, though, in part because I want the site to be extremely feeds-friendly, and being unable to make an announcement that will appear in category-specific feeds (which I did when announcing a new date parser for feedparser and listparser, for instance) seems very limiting. Maybe I should just give up and use tags. Ugh. Lawless.

Feb. 1st, 2015

Moving, part 6

I misspoke, apparently: the Unicode problem in the first tool was stemming from something weird going on with the xmlrpclib.Binary.decode() function. Extracting the raw utf-8 data and decoding that gets me the data I expect. New problem: some of my entries are not fully HTML. The paragraphs are not wrapped in <p> tags, resulting in a massive blob of text when converted to Markdown because html2text discards the newlines. I have to add the HTML tags before converting to Markdown.

Jan. 31st, 2015

Moving, part 5

Apparently Python-based LiveJournal softwares think they're special snowflakes that don't have to deal with Unicode. The first library created severe corruption and truncation. The second tool immediately crashed because it assumed I was using a Cyrillic locale that was compatible with characters the library's author introduced in the output (and crashed again when it encountered a post I wrote with Spanish phrases). Time to start writing patches.

Jan. 24th, 2015

Moving, part 4

I've gotten the site to a decent visual and functional state -- pagination works, categories work, feeds still feels like it's missing something, either a functional or navigational element. Maybe it doesn't feel right simply because I'm unaccustomed to a single-column blog.

Things to improve but that take more effort: XSL transforms for the feeds (giving explanations and subscription links to various services), contributing a patch back to Pelican to use .atom and .rss extensios for feeds (which will fix MIME type problems caused by using a generic .xml extension), better meta data on the pages, sitemap creation, and displaying old comments.

Jan. 19th, 2015

Moving, part 3

I'm creating a theme basically from scratch. I have hated web design with a burning passion for over a decade. Bootstrap makes it easier but it is still easily the single most miserable programming I've had to suffer through in years.

At least pagination works. Mostly. With problems. With hard-coded URL's. So it doesn't work for category views.

I HATE web design.

Jan. 18th, 2015

Moving, part 2

It appears Pelican has made a stand against supporting multiple categories. There are two bug reports that I've found where somebody requested support for multiple categories and was told no. This is something I applaud and encourage. Happily, Pelican is open source so I can modify it to support multiple categories.

Also, it appears Pelican has limited feed and archive settings. I can customize the URL structure for articles, pages, translations, tags, categories, drafts, authors...but not feeds or archives. I consider this an exposure in my URL design so I'll modify this as well.

Moving, part 1

This past week I set up a web server and started customizing Pelican, the blog software I expect I'll use to generate the site. I am making some changes to the theme, but after it's functional enough I will begin working to import over 10 years of content.

Jan. 3rd, 2015

The state of feedparser

feedparser is near and dear to my heart but I haven't touched it in quite a while. There are a number of personal and professional reasons for this which I won't bore you with here, but those same forces are now allowing and compelling me back. Personally, I'm needing to do some coding that isn't work-related. Professionally, I've been writing software in utter isolation for two years but am now expecting that I will begin to see contributions from others...meaning that I need to finally have a better understanding of git. So let's see what's going on now and where I'd like to direct the project this year!

As of right now, the Python Project Index has almost 48,000 downloads on record in the last month. Google has only 84,000 downloads listed for the last two years since I released version 5.1.3. In 2013 Google Code announced that it was discontinuing file hosting so starting with the next release, feedparser downloads will be exclusively available through PyPI.

Both due to my company's ISO 9001 policies and in expectation that others will soon be contributing to my software, I've completely switched all of my professional git repos over to the Vincent Driessen's git branching model. I've been shocked how easy it's been to release new updates with this model so in 2015 I'll migrate feedparser's git repo over to this model.

feedparser has been a monolithic blob of code since its inception. As a project, it's refused to let go of ancient Python compatibility; when I first started contributing half a decade ago my first big patch was also the first compatibility loss the project had ever seen (no on cries for you, Python 2.3). I've been reevaluating Python interpreter support and see that it's time to let go of Python 2.4 at least, and possibly Python 2.5 and 2.6, too. I also think it's time to separate feedparser into function-specific files, in part to encourage a model for adding additional namespace support.

These are all achievable near-term goals. They open the door for better merging, faster releases, and more maintainable code. I'm excited for 2015!

Oct. 5th, 2014

In the beginning

My first programming language was some variant of BASIC on a VTech Precomputer 2000. Then one day I discovered that a copy of QBasic was included with DOS and began using it to program. I wrote software to add and subtract arbitrarily long strings of integers (I don't think I added support for floating point), software that would perform long division of polynomials, and software that would graph my math homework. One day while a friend and I were goofing around with some code, his dad happened to look over our shoulders and said "You know, you should put that block of code in a subroutine." We didn't know what that was but after a few minutes saw its utility as our code became more modular.

When we were 16, that same friend and I decided to create software with a brand: Freesoft. Our slogan was "Freesoft for the common man". My friend used a font editor to identify the horizontal lines for the letter 'f' in a fancy font and programmed that as a rasterized image that would display at the start of our software...even playing a tune he created! My software usually involved algorithms and math while his software was usually games, including a multiplayer version of Nibbles (or Snake, as it's usually called) and a simple two-player Scorched Earth-style ballistics/physics game. We also created a website to host our software using Xoom web hosting and created multiple email pseudonyms for ourselves using the free Juno email service. We thought we were pretty cool.

Now, 14 years later, my mom was gearing up for a garage sale and I found an old 3.5" floppy disk. It's labeled in my finest handwriting with the following list:

  • Fontmaker
  • Iconmaker
  • Freesoft programs
  • FirstBASIC

QBASIC ruined my brain for several years, creating patterns of thinking that were difficult to change when I tried to learn other programming languages. Thank goodness I did or I would still be spinning my wheels trying to use Envelop Basic, XBasic, and RapidQ.

Even so, I'm going to try recovering that old software. I want to see what my code looked like back then.

Previous 10

February 2015



RSS Atom
Powered by