IMS/DC MFS To PHP

23rd January 2022

Task at hand: Convert IMS/DC MFS to PHP code. This is vaguely similar to the task that the MFS language utility DFSUPAA0 does. IMS/DC is a mainframe based transaction manager. MFS is an Assembler like description of the message format used in IMS/DC. Parse MFS using Perl: Screen layout is…

Generate RSS from HTML

17th January 2022

As written in Generate RSS from Markdown extracting RSS from Markdown with frontmatter is simple. Now I took a slightly different approach and generate RSS from the HTML files directly. For this blog I still want an RSS feed. Simplified Saaze does not provide this functionality. Simplified Saaze as…

Statistics of this Blog in 2021

11th January 2022

End of May 2021 I moved my blog from WordPress to self hosted, see Moved Blog To eklausmeier.goip.de. Now after roughly half a year I regained ca. half of the visitors I had on WordPress. Contrary to some murky SEO advice Google does not honor "noindex". I have below HTML code in all my…

HashOver Comment System with Hiawatha

4th January 2022

When you have a blog you might want to engage with your readers by allowing them to comment on your posts. WordPress allows this out of the box. But when using a static site generator then having a commenting system is a bit more difficult. Many have resorted to Disqus. But Disqus has a number of…

Internet Adoption

31st December 2021

Internet adoption rates are phenomenal. I already mentioned in India is now the third largest Smartphone market in the world - Android Authority the massive growth in India. Above graphs are from Our World in Data: Technology Adoption written by Hannah Ritchie and Max Roser.

URL Count Statistics

14th December 2021

When I moved away from WordPress to Saaze, see Moved Blog To eklausmeier.goip.de, I first used StatCounter to count how many times my blog posts were visited. Later I added Matomo, or Google Analytics, or Yandex Metrika. It turned out that all these counting mechanism use quite large JavaScript…

Filtering Bots and Crawlers from Access.log

13th December 2021

1. Problem statement. When you run a web-server on your machine many bots and crawlers will visit. When analysing how many "real" visitors you have, you should therefore suppress these entries in your analysis from your log file of the web-server. This blog is served by Hiawatha…

AWStats and Hiawatha

30th November 2021

Hiawatha is a secure and reliable web-server. It is used for this blog. AWStats is a collection of Perl-scripts to analyze log-files from web-servers. By default, AWStats can read Apache log-files. It cannot directly read log-files from Hiawatha. The Hiawatha log-file format is: host, this is the…

Accelerating Page Load Times by Reducing Requests

16th November 2021

In trying to decrease load times of this blog, I noticed that the prism.js library requires quite a number of requests to the unpkg-server. So I tried to combine all these requests into only two. The results are quite impressive. I compared various measurements using tools.pingdom.com. Old…

Performance Comparison Saaze vs. Hugo vs. Zola

13th November 2021

Zola is a static site generator written in Rust. Hugo is a static site generator written in Go. Simplified Saaze, Saaze for short, is written in PHP. Task: Compare run times of Saaze vs. Hugo vs Zola. I didn't find a direct comparison so far. There is a comparison of Eleventy vs. Gatsby vs. Hugo…

Making Static Site Generator 500-Times Faster

12th November 2021

I already described some changes I made to the original Saaze software: Moved Blog To eklausmeier.goip.de Calling MD4C from PHP via FFI Considerations Regarding Simplifications of Saaze Profiling PHP Programs In Making Static Site Generator 30-Times Faster I already described that removing…

Simplified Saaze

31st October 2021

1. Introduction Simplified Saaze is a static site generator. I.e., it takes Markdown files as input and generates fixed HTML files. Simplified Saaze is a simplified version of Saaze from Gilbert Pellegrom. Large parts of this document are taken from the Saaze documentation. Simplified Saaze is…

Saving Attachments in Outlook via VBA

29th October 2021

Task at hand: You receive daily reports with attachments, which you need to analyze programmatically. Therefore you want those attachments in your filesystem. You need an Outlook macro, which saves all those attachments to a directory. Outlook VBA to the rescue. Below macro processes all e-mails…

Copy Directories to FTP-Server

26th October 2021

Sometimes you have to copy whole directories recursively to an FTP-server. Many FTP servers are not able to handle bulk uploads directly. Here lftp comes to the rescue. lftp allows to upload or download entire directories irrespective of the capabilities of the FTP server. Assume we want to upload…

Making Static Site Generator 30-Times Faster

19th October 2021

Static site generators take Markdown files as input and generate HTML files. This way, when the end-user visits a web-site, all pages are already generated, and the web-server serves just plain HTML. No database is needed, no server-side script language is required. Two main advantages are easy to…

Profiling PHP Programs

18th October 2021

Profiling a program is the process to measure how much CPU time a function uses, and also to count how many times this function was called. One very powerful profiler for PHP, XHProf, was initially developed by Facebook engineers. Facebook formerly used PHP very intensively. 1.…

PECL's Yaml Way Faster Than Symfony's Yaml

6th October 2021

PECL is the PHP Extension Community Library. These extensions are written in C. Symfony is a PHP web application framework written in PHP. Initially I just wanted to reduce the dependencies in Saaze, so I installed PECL PHP package yaml. When I compared run-times between the original,…

Comparing GnuCOBOL to IBM COBOL

5th October 2021

When I ran the n-queens problem in COBOL using GnuCOBOL I was a little bit surprised how slow the resulting program was -- it was slower than the equivalent PHP program. Therefore I installed the IBM COBOL for Linux compiler on the same machine and compared performance, see Installing IBM COBOL for…

Installing IBM COBOL for Linux on Arch Linux

4th October 2021

Task at hand: Install the 60-day trial of "IBM COBOL for Linux" on Arch Linux. 1. Download. Downloading the compiler is at IBM COBOL for Linux on x86 60-day Trial. 2. Unpacking. Downloaded file is marked as gzipped tar, but in actuality it is just a tar file: $ file…

Compiling GnuCOBOL

3rd October 2021

When compiling GnuCOBOL from source this works without any hiccups. The usual configure, make sequence. I had written on this in Generating JSON with COBOL. But if you run make check you might encounter multiple check-failures when run after makepkg. The reason is that makepkg introduces a couple…

Parallel Mass-File Processing

2nd October 2021

Task at hand: Process ca. 400,000 files. In our case each file needed to be converted from EBCDIC to ASCII. Obviously, you could do this sequentially. But having a multiprocessor machine you should make use of all processing power. The chosen approach is as follows: Generate a list of all files to…

StackEdit: A Markdown Editor

19th September 2021

StackEdit is a Markdown editor, which runs in the browser, but stores files locally. The following features characterize StackEdit: Markdown and corresponding HTML are fully in sync and visible on the same screen. Changing Markdown will instantly change the HTML. StackEdit calls it "Scroll…

Mermaid: A JavaScript Library for Diagrams

18th September 2021

Mermaid is a JavaScript library which provides diagrams for: Flowchart diagrams Sequence diagrams Class diagrams State diagrams Entity Relationship diagrams Gantt diagrams Pie char Git graphs Currently Mermaid does not offer line charts. The Mermaid web-site also offers a…

Air France Air Tracker

12th September 2021

When I flew with Air France from Paris CDG to Montpellier I was surprised that all seats offered Wifi, which was not mandated to switch off. Furthermore, bluetooth was not required to be turned off, and all seats offered two plugs to charge electronic devices via USB. Using Wifi on board the…

Considerations Regarding Simplifications of Saaze

2nd September 2021

This blog is built using a static-site generator called Saaze. Saaze can also serve content fully dynamic. Saaze is kind of the successor of Handle. Saaze and Handle were both written by Gilbert Pellegrom. Saaze has the following objectives: Easy to run Easy to host Easy to edit Easy to theme Fast…

YouTube: Something Went Wrong

1st September 2021

Yesterday I observed below error when accessing YouTube via my tablet: I had experienced related errors: January 2017: Youtube 500 Internal Server Error May 2017: Youtube 500 Internal Server Error For Facebook and WordPress I had observed: June 2014: Facebook Was Down on 19-Jun-2014 March 2019:…

HTML Anchor Highlighting

31st August 2021

In Alexander Six's blog I saw that you can highlight HTML anchor text with a skewed bar. Below is the solution I use in this blog. I am still struggling with my own requirement that the skeyY angle is dependent on the length of the anchor string. Currently I do not know how I can find this out. …

Bandwidth Diet for This Blog

26th August 2021

As mentioned in Speed-Tests With Pingdom.com the ratio of CSS to HTML (=content) was roughly 50:1. In my case CSS was taking 248 KB, while HTML is only 4.4 KB. Previously this blog continued to use Tailwind CSS, as started by the example for Saaze. But Tailwind CSS does not make too much sense for…

Printing COBOL Section Names

19th August 2021

1. Problem statement. Print COBOL section names, ideally title-cased. Use a Perl one-liner for this task. perl -ne 'printf("%3d %s\n",++$i,join("-",map{ucfirst lc $_}split(/\-/,$1))) if /([\-\w]+)\sSECTION\./i' COBOL-Source.cbl It will print "Working-Storage" as well,…

Generating JSON with COBOL

17th August 2021

1. Problem statement. Generate JSON from COBOL WORKING-STORAGE section memory area. GnuCOBOL can generate and parse JSON strings. Example. IDENTIFICATION DIVISION. PROGRAM-ID.…

← Older