BlogMax: Blogging in Emacs
A great way to maintain a blog





    BlogMax is an Emacs package that aids in the creation of a weblog. News below. See the Docs page for details.

BlogMax is on GitHub Daily
Saturday, March 5, 2011

As you have noticed if you're following this blog, I haven't made any changes to BlogMax in a long, long time. Actually, I made a few changes up through February of 2007, when I was blogging at (now defunct), so today I merged those into the main source, and I pushed the whole thing to It's GPL licensed, so you're free to fork and make any changes you want, as long as they remain free. If you DO make changes, please let me know, so I can consider pulling them back into the main repository.

Feed on Feeds & Wikipedia Daily
Wednesday, December 8, 2004

# I made the RSS generator create a kludgey <guid> tag for each <item>. The GUID is the date followed by the index of the entry in the RSS file, meaning that it will change every time you generate RSS. So it's not good for sites that change more than once a day. It does, however, cause Steve Minutillo's Feed on Feeds to notice all the items instead of just the first item the first time you update.

# Shane Simmons donated a Wikipedia macro:

I didn't bother to generate a new zip file. Just download blogmax.el and rss-template.xml, then byte-compile-file blogmax.el or download blogmax.elc.

BugMeNot Daily
Saturday, September 4, 2004

# I added support for BugMeNot links. BugMeNot is a database of userid/password pairs for web sites that require them, e.g. The New York Times and The Washington Post. A BugMeNot link to a web site is generated by the "bugmenot" macro. For example, {bugmenot ""} generates: BugMeNot. (Click the red circle-slash to see the userid/password for the Times). You need to put bugmenot.png in your weblog directory if you want your readers to see the circle-slash image. You can choose to create these links yourself, or you can add domains to the bugmenot-auto-list in the weblog.ini file, and then any properly formatted link to any site in the list will be followed by a BugMeNot link. A properly formatted link is of the form <a href="http://domain/...</a>, where there is exactly one space between the "a" and the "href=", and a suffix of the domain is in the bugmenot-auto-list.

# Thanks to m3m, whose full name I don't remember, the time strings in RSS files are now RFC 822 compliant.

# C-M-L now inserts a permalink, {pl ""}, in the buffer and puts the insertion point between the two double quotes. That's how I generated the #-sign links at the beginnings of the paragraphs in this file. The permalinks are now properly rendered in the RSS file. They used to link to the index page. Now they link to the day page.

"Permalink" macro Daily
Saturday, January 3, 2004

# I added a "Permalink" macro. {pl "name"} inserts a name tag enclosing a link to that name tag with text taken from the new "pl-macro-text" parameter in weblog.ini. The text defaults to the sharp sign ("#") if there is no such parameter in weblog.ini. Click the "source" in the lower-right-hand corner of the page to see it in action.

# Here's another bogus entry just so you can play with the permalinks. I'm including an excerpt from the Declaration of Independence here just to make this entry long enough so that clicking on its permalink will scroll to it.

When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.

We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.--That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, --That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security.--Such has been the patient sufferance of these Colonies; and such is now the necessity which constrains them to alter their former Systems of Government. The history of the present King of Great Britain is a history of repeated injuries and usurpations, all having in direct object the establishment of an absolute Tyranny over these States. To prove this, let Facts be submitted to a candid world.

Some bug fixes Daily
Monday, June 2, 2003

I've made a few small bug fixes and feature additions since my last entry:

  • The month index code should now correctly update last month's index on the first day of the month.
  • Some common 8-bit characters are mapped to seven-bit. You can extend this by changing *weblog-char-map*
  • The RSS items no longer include a title or a link. Just the text with whatever links are in it.
  • The {jargon} macro is updated for ESR's new directory structure.
  • C-M-R inserts "<br>"

Improving RSS Daily
Tuesday, October 8, 2002

I've been using amphetaDesk to scan RSS channels. The RSS that BlogMax generates looks funny there. The main link appears twice. I've been thinking about some ideas to improve the RSS and get rid of the need to use <br> tags for paragraph breaks within an entry. I think I know what to do now.

I'll add two new macros, {story link title name} and {/story}. The RSS generation will include only the text between the two new macros (using the old algorithm for backward compatibility on pages that contain no instance of the {story} macro).

{story link title name} will expand into:

<!--story--><a href=link name=name>title</a>
{/story} will expand into:
The weblog-insert-story-tags command, likely bound to <Ctrl><Shift>-S, will insert:
{story ...}{/story}
using the clipboard as the "link", auto-generating the "name" as one more than the largest integer already used in the file, and putting the cursor between the two quotes of a blank "title". RSS generation will then be done on the generated HTML file, finding the <!--story--> and <!--/story--> comments and pulling the link and title out of the generated anchor tag.


BlogMax 1.01 Daily
Saturday, October 5, 2002

Hard to believe it's been almost a year since my last update. I use BlogMax almost every day for my political blog (End the War on Freedom). I've made some small changes to it over the last eleven months, but I'm just now getting around to uploading them.

I converted the three image files from GIF to PNG. Hopefully, this will be good news to my Linux users.

weblog.ini now includes some comments from James Thornton on using Tramp to do "scp" for the web site upload. It also includes a new "month-index" flag, which controls whether a monthly index page is generated and linked to the month name in the output of the {calendar} macro (as you should see in the upper right-hand corner of this page). The default is to generate the monthly index file.

I implemented Tony Sidaway's suggestions, adding "alt" attributes to "<img ...>" tags and "#" to the colors in the template files. I also removed the final newline in "". The generated html should now pass weblint, though it still uses tables for layout because I've been too lazy to learn enough CSS to switch.

The {calendar} macro now makes the link to the previous or next month go to the previous or next day file even if it's further away than a month.

March 2011
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Feb  Apr


emacs Copyright © 2011 by Bill St. Clair <> source