Expat-IT Tech Bits




Search this site:


/ (289)
  Admin/ (123)
    Apache/ (10)
      HTTPS-SSL/ (4)
      PHP/ (3)
      performance/ (2)
    Cherokee/ (1)
    LAN/ (4)
    LVM/ (6)
    Monitoring/ (2)
      munin/ (2)
    SSH/ (6)
    SSL/ (1)
    Samba/ (1)
    VPN-options/ (7)
      OpenVPN/ (1)
      SSH-Proxy/ (3)
      Tinc/ (1)
      sshuttle/ (1)
    backups/ (17)
      SpiderOak/ (1)
      backuppc/ (5)
      dirvish/ (1)
      misc/ (6)
      rdiff-backup/ (1)
      rsync/ (1)
      unison/ (2)
    commandLine/ (24)
      files/ (8)
      misc/ (10)
      network/ (6)
    crontab/ (1)
    databases/ (15)
      MSSQL/ (2)
      MySQL/ (8)
      Oracle/ (3)
      PostgreSQL/ (1)
    dynamicDNS/ (2)
    email/ (11)
      Dovecot/ (1)
      deliverability/ (1)
      misc/ (1)
      postfix/ (7)
      puppet/ (1)
    iptables/ (3)
    tripwire/ (1)
    virtualization/ (9)
      VMware/ (1)
      virtualBox/ (8)
  Coding/ (14)
    bash/ (1)
    gdb/ (1)
    git/ (3)
    php/ (5)
    python/ (4)
      Django/ (2)
  Education/ (1)
  Hosting/ (27)
    Amazon/ (18)
      EBS/ (3)
      EC2/ (10)
      S3/ (1)
      commandline/ (4)
    Godaddy/ (2)
    NearlyFreeSpeech/ (3)
    Rackspace/ (1)
    vpslink/ (3)
  Linux/ (31)
    Android/ (1)
    Awesome/ (3)
    CPUfreq/ (1)
    China/ (2)
    Debian/ (8)
      APT/ (3)
      WPA/ (1)
    audio/ (1)
    encryption/ (3)
    fonts/ (1)
    misc/ (6)
    remoteDesktop/ (1)
    router-bridge/ (3)
  SW/ (45)
    Micro$soft/ (1)
    browser/ (2)
      Chrome/ (1)
      Firefox/ (1)
    business/ (28)
      Drupal/ (9)
      KnowledgeTree/ (6)
      Redmine/ (2)
      SugarCRM/ (7)
      WebERP/ (2)
      WordPress/ (1)
      eGroupware/ (1)
    chat/ (1)
    email/ (1)
    fileSharing/ (2)
      btsync/ (1)
      mldonkey/ (1)
    graphics/ (2)
    research/ (2)
    website/ (6)
      blog/ (6)
        blosxom/ (3)
        rss2email/ (1)
        webgen/ (1)
  Security/ (15)
    IMchat/ (2)
    circumvention/ (2)
    cryptoCurrency/ (1)
    e-mail/ (4)
    greatFirewall/ (1)
    hacking/ (1)
    password/ (1)
    privacy/ (2)
    skype/ (1)
  Services/ (1)
    fileSharing/ (1)
  TechWriting/ (1)
  xHW/ (14)
    Lenovo/ (1)
    Motorola_A1200/ (2)
    Thinkpad_600e/ (1)
    Thinkpad_a21m/ (3)
    Thinkpad_i1300/ (1)
    Thinkpad_x24/ (1)
    USB_audio/ (1)
    scanner/ (1)
    wirelessCards/ (2)
  xLife/ (17)
    China/ (9)
      Beijing/ (5)
        OpenSource/ (3)
    Expatriation/ (1)
    Vietnam/ (7)


  • 2019/06
  • 2016/07
  • 2016/05
  • 2016/02
  • 2016/01
  • 2015/12
  • 2015/11
  • 2015/06
  • 2015/01
  • 2014/12
  • 2014/11
  • 2014/10
  • 2014/09
  • 2014/07
  • 2014/04
  • 2014/02
  • 2014/01
  • 2013/12
  • 2013/10
  • 2013/08
  • 2013/07
  • 2013/06
  • 2013/05
  • 2013/04
  • 2013/02
  • 2013/01
  • 2012/12
  • 2012/10
  • 2012/09
  • 2012/08
  • 2012/07
  • 2012/06
  • 2012/05
  • 2012/04
  • 2012/03
  • 2012/01
  • 2011/12
  • 2011/11
  • 2011/10
  • 2011/09
  • 2011/08
  • 2011/07
  • 2011/06
  • 2011/05
  • 2011/04
  • 2011/02
  • 2010/12
  • 2010/11
  • 2010/10
  • 2010/09
  • 2010/08
  • 2010/07
  • 2010/06
  • 2010/05
  • 2010/04
  • 2010/03
  • 2010/02
  • 2010/01
  • 2009/12
  • 2009/11
  • 2009/10
  • 2009/09
  • 2009/08
  • 2009/07
  • 2009/06
  • 2009/05
  • 2009/04
  • 2009/03
  • 2009/02
  • 2009/01
  • 2008/12
  • 2008/11
  • 2008/10
  • 2008/09
  • Subscribe XML RSS Feed

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

    This site has no ads. To help with hosting, crypto donations are accepted:
    Bitcoin: 1JErV8ga9UY7wE8Bbf1KYsA5bkdh8n1Bxc
    Zcash: zcLYqtXYFEWHFtEfM6wg5eCV8frxWtZYkT8WyxvevzNC6SBgmqPS3tkg6nBarmzRzWYAurgs4ThkpkD5QgiSwxqoB7xrCxs

    Tue, 03 Feb 2009

    /SW/website/blog/webgen: Getting Started with Webgen

    Webgen is a static website generator. Easiest is to start with an existing webgen example site, or a default site generated by "webgen create", then:

    1. First take a few minutes to choose, install, and tweak a template.
    2. Create your website's pages in the src directory (optionally containing a bit of HTML markup).
    3. Run the webgen command, and voila, the static HTML for your new site appears in the output directory, ready for upload to your server.

    There are a few useful details and maybe a couple of gotchas along the way, but that is basically it.

    First gotcha: as of this moment, there are two webgen packages in the Debian repository: webgen and webgen0.4. If you start with a webgen0.4-generated site from somewhere else, and then install just webgen, which is currently version 0.3.8, webgen may fail with some rather obtuse errors. Be careful which version you are installing, where your example site is coming from, and which version was used to generate it.

    The list of templates is actually a little hard to find on the website, so here it is[1]. To install a new template named "andreas07", in the site root (one directory up from the src and output directories):

    webgen use website_style andreas07

    Note that webgen will not overwrite existing template files, so you will probably first have to do a "rm default*" and "rm *.css" in the src directory.

    Then use your favorite text editor to tweak src/default.template and src/default.css to make the site look exactly how you want it. Graphics used in the layout are found in the images directory, and of course may also be customized.

    Check your layout by running "webgen" in the site root (one directory up from the src and output directories) and point your web browser at the output directory to see the result. Note that webgen runs very fast, so it is a good idea to frequently check your layout changes so that the cause of an error is immediately obvious.

    Once you are satisfied with the layout, start adding content to the src directory. Each *.page file corresponds to a page on your site, and after running "webgen" will appear as a *.html file in the output directory. Each page will also appear in the site template's output HTML menu.

    [1] http://webgen.rubyforge.org/documentation/0.4.x/examples/website_styles/

    posted at: 17:13 | path: /SW/website/blog/webgen | permanent link to this entry

    Fri, 03 Oct 2008

    /SW/website/blog: On The Value of Blogging

    Blogging as a pop culture phenomenon came about just in the last couple of years. But for those of us involved in high-tech, this has been going on for many years, even decades. Who remembers "News Groups"? I certainly do, and probably made my first post to a news group around about 1996, just about the same time e-mail was becoming a common tool in big corportations.

    It is probably no big surprise, but the high-tech community were among the first to discover the vast potential of various electronic networking technologies (e-mail, news groups, web-pages....) for the sharing of information.

    As someone who has run Linux on all of his computers since at least 2002, and dabbled for several years before that, I have been heavily using and contributing to the Open Source software community for quite some time now. One of the things one quickly notices about the community is its geographic distribution. In getting one recent bug[1] fixed, for example, I (just at the moment, in Vietnam) worked with two other people, one in Sweden and one in the UK.

    Virtually all communication is electronic in this community. Software documentation is sometimes good, sometimes not so good.... But whether trying to do a fresh install & configure, or sort out a bug in something newly upgraded, one *quickly* learns to be grateful to all the people who have made their notes and answers and ideas available in a public place so that search engines can find them. Forum and e-mail list archives are treasure troves, but the very best stuff are the notes / tutorials / how-to's that the author's are kind enough to publish. There is so much information out there that I very rarely have to ask for help on an e-mail list (Open Source "customer support").

    So I have gotten quite used to how my friends and collaborators in Open Source, and now myself, live a rather "public" life, running web-sites and blogs, and making copious contributions to forums and e-mail lists (search google for "debian ckoeni@gmail" and you will get 200+ hits of my own contributions since I started using ckoeni@gmail for list e-mails). It's actually a way of giving back to the community, after so often being helped by others doing the same thing.

    As one can see from the dates, this particular blog is fairly new. I used to keep my notes in a typo3 Content Management System, but adding / editing was not nearly as convenient as my current setup[2], and something had to be "important" or I needed to feel like I had "free time" before content was added.

    My current setup using the pyBlosxom[3] blog engine with mirrored copies on my website and my desktop removes almost all the overhead from editing blog content, so I find myself creating content / notes on the fly, as I work. This makes my notes more complete and accurate, and I am finding it also seems to organize my work flow and make me more organized. I also still have access to all my notes even when not internet-connected.

    The discipline of writing a document about my work, as I work, seems to spill over into injecting more discipline and structure into my work. Perhaps it slows me down a bit, but I think the quality of the result is better. And I do not get stressed out trying to remember everything, because its all written down....

    [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=497016
    [2] http://blog.langex.net/index.cgi/SW/blog/
    [3] http://pyblosxom.sourceforge.net/

    posted at: 01:14 | path: /SW/website/blog | permanent link to this entry

    Fri, 19 Sep 2008

    /SW/website/blog/blosxom: Moving from Blosxom to pyBlosxom

    The most fundamental difference between the two is that Blosxom[1] is written in the Perl language, and pyBlosxom[2] is written in the Python language. Blosxom came first, then it was cloned to pyBlosxom, so the two are still exceedingly similar in look and feel and configuration.

    I probably would have stuck with Blosxom out of inertia, but was unable to talk Blosxom into rendering Chinese characters, no matter what I tried. Chinese characters worked instantly with pyBlosxom[3].

    Moving from Blosxom to pyBlosxom was quite easy, as layout is done almost exactly the same using a handful of "flavor" template files (head.html, foot.html, story.html, etc.) and my CSS layout worked right out of the box. I just had to adapt to the differences in plugins and other minor behavior.

    I can immediately say that pyBlosxom does several things better, like moving configuration out of the cgi file and into a config.py file. The base url seems to be deployed more consistently, as my problems[4] with hard-coded menu links not working on my desktop have gone away. Website resources seem to be better organized, and generally the project seems to be more active then the Blosxom project

    [1] http://blosxom.sourceforge.net/
    [2] http://pyblosxom.sourceforge.net/
    [3] http://blog.langex.net/index.cgi/China/links.html
    [4] http://blog.langex.net/index.cgi/SW/blog/blosxom_desktop_and_server.html

    posted at: 09:39 | path: /SW/website/blog/blosxom | permanent link to this entry

    Sun, 07 Sep 2008

    /SW/website/blog/blosxom: Running a Blosxom Site on Both Desktop and Server

    The goal, obviously, is to edit the site locally on my desktop where everything is very fast and convenient, and then periodically sync with the copy of my site on the server. This also has the advantage of automatically enforcing backups.

    Of course, one needs Apache installed on the desktop to see what is going on with the site as you edit. I started by installing the (Debian) libapache2-mod-fastcgi and libapache2-mod-perl2 modules. Then copied my whole blosxom site into a sub-directory of ~/public_html.

    Then, when I pointed my browser at the blosxom directory, all it would do would display the blosxom.cgi script without executing it. If I executed the script from the command line, ie "./blosxom.cgi", it would actually generate the home page html nicely. So there was clearly something wrong with the Apache configuration.

    As it turns out, Debian installs Apache with cgi scripts restricted to one system directory. Apache refuses to execute them anywhere else, like in /home, for instance. The Apache website[1] turned out to be the best source for a solution. I added the following code:

    <Directory /home/*/public_html>
         Options +ExecCGI
         AddHandler cgi-script .cgi

    to /etc/apache2/sites-available/default, and it was fixed! Onto the next problem....

    The path to my blosxom site is different on my desktop and on my server, which gives me problems in a couple of different places.

    The easy one is the link to my CSS style sheet in head.html. I made this link absolute to the copy on my server, ie.

    <link rel="stylesheet" type="text/css"

    So now both copies of the site pull the style sheet off the server.

    Slightly harder are the several paths hard-coded into blosxom.cgi. To work around this, I settled for two versions of the script. I use unison-gtk[2] to synchronize between desktop and server, so that after forking the two copies of the file I just tell unison to "ignore" the difference in the future (ie. it does not sync that file). Furthermore, to ensure the server copy gets backed up, I hard linked it to another file name, ie.

    ln blosxom.cgi blosxom.cgi.server

    which unison then dutifully keeps a copy of on my desktop.

    I have some hard-coded menu links in head.html that now just work on the server, not on the desktop, but I consider that to be a minor issue....

    [1] http://httpd.apache.org/docs/2.0/howto/cgi.html
    [2] http://www.cis.upenn.edu/~bcpierce/unison/

    posted at: 11:48 | path: /SW/website/blog/blosxom | permanent link to this entry

    Sat, 06 Sep 2008

    /SW/website/blog/rss2email: rss2email: RSS to E-mail: How to Read Blogs & News Via E-mail


    I must admit I am generally too lazy and absent-minded to regularly troll blogs and websites that I find interesting. The trolling method just is not "easy" if one is busy, with lots of other claims on both time and attention. RSS Feed Aggregators [1 & 2] are software that is supposed to pull all this stuff into one place and, again, make it "easy". Sorry, not enough. I have tried them, and I am too lazy/busy to even start the RSS Agregator up.

    How about sucking those RSS feeds into e-mail? I, for one, do pay attention to e-mail, at least long enough to take a quick peek at it and decide whether it merits an immediate read. My e-mail client is already set up and heavily used so I know exactly how to integrate those new bits of e-mail that come from RSS feeds.

    And rss2email[3] is dead easy to setup, and once setup, I never have to touch it again except to add or remove feeds. New blog posts or news content just show up in my inbox.

    Actually, in Debian Linux[4], my preferred operating system, installation and setup is absolutely trivial. You Micro$oft users will have to work just a little bit harder to get setup.[5] (I suspect the Micro$oft installation instructions will work for a Mac as well, but am not sure.....)

    And if you will allow me a little further bragging, because (more or less) all Linux systems have a running e-mail server, rss2email can deliver these e-mails directly to the e-mail server sitting right on my desk, ie. the e-mails never actually leave the room. Windows users will probably have to forward the e-mails to their Gmail, Yahoo Mail, whatever account, and then download them again when they next check their e-mail.

    [1] http://en.wikipedia.org/wiki/Aggregator
    [2] http://en.wikipedia.org/wiki/List_of_feed_aggregators
    [3] http://rss2email.infogami.com/
    [4] http://www.debian.org/
    [5] http://rss2email.infogami.com/getstarted

    posted at: 03:08 | path: /SW/website/blog/rss2email | permanent link to this entry

    /SW/website/blog/blosxom: Blosxom Layout: Headers, Footers, and Multiple Columns with CSS

    This is my second Blosxom[1][2][3] site in as many weeks. This was the first:


    I used to use Typo3[1] for my notes. Typo3 is a real HEAVY, truly an enterprise piece of software. A little tricky to setup the first time, but a real pleasure to work with after setup. BUT. Typo3 is a PHP app that needs MySQL on the backend, ie. it depends on Apache/PHP and MySQL, with some quite substantial memory requirements as well. Not a light-weight app. And all your data is tied up in a MySQL database, which is great if the amount of data involved is truly huge.

    I think Blosxom is a much more appropriate solution for this kind of site. Fast and simple. The only tricky part is the CSS, if you want a multi-column website and you are not familiar with the CSS way of site layout.

    For reference, here is the CSS style sheet that lays out this site:

    /* Layout Stylesheet */ 
     margin: 0px;
     background: #ffffff;
     color: #333333;
     /* http://www.sitepoint.com/article/anatomy-web-fonts */
     font-family: verdana, "trebuchet MS", helvetica, sans-serif; 
     height: 45px;
     border: 2px solid #000000;
     background: #000000;
     color: #ffffff;
     padding: 5px;
     float: left;
     width: 200px;
     border: 2px solid #000000;
     background: #c0c0c0;
     color: #333333;
     margin: 0px;
     padding: 10px;
     font-size: 10pt;
     margin: 20px 20px 20px 240px;
     background: #ffffff;
     color: #000000;
     padding: 20px;

    "head-box" defines the black banner at the very top of the page. "lh-col" defines the vertical menu column with the bluish-gray background on the left side. "rh-col" defines the content column on the right, where you are reading this.

    To use these CSS definitions, you must import them into the page header (see "head.html" below) and tag the HTML associated with each area (banner, menu, content) with div tags, for example:

    <!-- left column -->
    <div id="lh-col">
         /* left column HTML content here */
    <!-- end of left column -->

    To be more concrete, blosxom uses several template files to define layout. One of these is "head.html". Here is mine for this site:

    <!-- this is where the CSS style sheet above is imported -->
    <link rel="stylesheet" type="text/css"
    <body bgcolor="#ffffcc">
    <!-- header -->
    <div id="head-box">
    <strong><font size="6"><div align="right">$blog_title</div></font></strong>
    <!-- end of header -->
    <!-- left column -->
    <div id="lh-col"><br>
    <h4><a href="/blog/blosxom.cgi">Home</a></h4>
    <h4><a href="/blog/blosxom.cgi/contact-us/">Contact</a></h4>
    <h4><a href="/blog/blosxom.cgi/links/">Links</a></h4>
    Search this site:
    /* Google search box code here */
    <h4><a href="/blosxom.cgi/index.atom">Subscribe Atom Feed</a><br>
    <a href="/blosxom.cgi/index.rss">Subscribe RSS Feed</a></h4>
    <a href="http://www.blosxom.com/"><img src="http://www.blosxom.com/images/pb_blo
    sxom.gif" border="0"></center>
    <!-- end of left column -->
    <!-- right column -->
    <div id="rh-col">
    <div style="padding: 10px; float: right;">
    /* Google vertical banner code goes here */

    Its not as scary as it looks. Just start with the simple bare-bones template files from the installation guide[5]. Link my CSS file into head.html. Tag the appropriate areas of the template files with the desired CSS area definitions (header, left column, right column). Adjust the CSS bit by bit, checking every step in your browser until you have the layout you want. Add content to the template files, piece by piece, again checking every step in your browser. No sweat

    If anyone tries to use this and finds it to confusing, let me know and I will try to make it more simple and specific. Right now I am just throwing my own configuration files at you, ie. the lazy expedient approach to documentation. :-)

    [1] http://blosxom.sourceforge.net/
    [2] http://www.blosxom.com/
    [3] http://blosxom.ookee.com/
    [4] http://typo3.org/
    [5] http://blosxom.sourceforge.net/documentation/users/flavour.html

    posted at: 03:08 | path: /SW/website/blog/blosxom | permanent link to this entry