Moving to Eleventy From Jekyll
April 19, 2021
After upgrading to Fedora 34, my Jekyll environment was broken again. So it was time to find another solution that didn't require so much attention. Enter Eleventy, a static site generator that runs in the Node.js environment.
I started by following https://stedman.dev/2020/04/29/make-the-jump-from-jekyll-to-javascript/, but in the end I decided to forgo GitHub Actions and just generate the site myself and check it in under the docs/
directory. You can look at the history of the raydecampo.github.io repository, in particular the eleventy
branch, for all the gritty details.
The steps went something like this (links to the appropriate commits follow the description):
-
Following the Install and Configure section of the stedman.dev document, get Eleventy installed and running. (64a6dac)
-
At this point, influenced by https://github.com/andeersg/andeers.com, I restructured so that the source of the blog contents were kept under the src/
directory. (51a2666, 66dbf6b)
-
Added permalink metadata to the blogs so that the files end up in the same place as they did when jekyll was creating the site (and blogger before that). (77e6af5)
-
Next, the jekyll built-in site.posts
variable is no longer available under Eleventy. So I defined some collections and used them to fix the pages with lists of posts. (7a7e5b5)
-
Next up was fixing CSS. Eleventy has no built in support for SASS (kind of strange), so I added a node script entry to run SASS. I also downloaded a copy of the CSS for the jekyll theme I had been using. (db0d7ac, 1b1433f)
-
Next up was installing the Eleventy RSS plugin to restore RSS functionality. (4ef3cd9, a6a09f8)
-
Next we get tags working the way they did before. Stole a code snippet from philhawksworth (H/T). (3121301)
-
Add some metadata and fix up the parameterized data in the default.html
template. (4233afc)
-
Install and configure the Eleventy syntax highlighting plugin. Don't forget to download a Prism CSS file. (14c89fe)
-
Finally it was time to get things working on GitHub Pages. GitHub Pages will let you use either the root directory or the docs/
directory of the repository as web root. So I changed the output directory for Eleventy to the docs/
directory. I also needed a passthrough for the CNAME file. Then I just needed to change the configuration in GitHub (Settings -> Pages) and I was all set. (1aa4e97, 5410778, 6f2d68b)
Permanent URL
Other Posts
April 19, 2021
If you hit this error when using the HTTP client built into Java:
Read More
November 9, 2020
As you are probably aware, any sufficiently developed software application will eventually grow until it implements email. A frequent stepping stone along that evolutionary path is for an application to gain the ability to send email. If your application sends email, at a certain point it will become inconvenient to continue to use real email addresses and servers when developing and testing the application. The solution is to set up a development mail server.
Read More
August 9, 2020
The following documents installing an actual certificate in on WildFly 20, although these steps have been tested on WildFly 19 as well.
Read More
August 2, 2020
I recently needed to install Trac 1.4 on a CentOS 8 server. Trac 1.4 still uses Python 2 and while CentOS 8 supports Python 2, Python 3 is the default. I suspect this went into the decision not to offer any Python bindings for Subversion in the CentOS 8 repositories.
Read More
July 31, 2020
Mockito has been able to mock static methods since version 3.4.0 but the documentation doesn't explain how to mock methods that take arguments.
Read More
July 11, 2020
When converting a Hyper-V VM to KVM (as used in CentOS or RHEL) it is not enough
to simply convert the disk from vhd to qcow2 using `qemu`. Doing so will result
in errors concerning `dracut` timing out. Instead one must convert the guest OS
as well by using `virt-v2v`.
Read More
July 3, 2020
If you are getting the following error on WildFly or JBoss:
Read More
July 2, 2020
So after a couple of updates and who knows what else, I found myself with an environment (Fedora 32 if you were wondering) that would no longer run jekyll. This really caused by blogging level to stop completely since I couldn't preview any of the posts. As the potential posts piled up in my drafts folder, I eventually carved out some time to take care of this.
Read More
March 17, 2019
In this post we describe how to configure WildFly to access JSON Web Tokens (JWT) via the Authentication header using the Bearer schema. This allows you to install stateless authenticated REST services on WildFly.
Read More
October 28, 2018
I've been sitting on this one for a while, finally getting around to publishing.
Read More
August 19, 2017
An example project where we have taken a Java library ([java-xirr](https://github.com/RayDeCampo/java-xirr)) and expose it as a REST service using JAX-RS. Then the service is dockerized using the maven dockerfile plugin. On the client side, we create a separate client using the Node.js connect server in order to illustrate various issues with CORS when utilizing REST services.
Read More
August 12, 2017
GitHub Pages famously does not support the [`sort_natural`](https://shopify.github.io/liquid/filters/sort_natural/) filter from the [Liquid](https://shopify.github.io/liquid/) templating language used by [Jekyll](https://jekyllrb.com/docs/templates/). So some chicanery is needed to get a list of tags sorted without regard to case.
Read More
July 8, 2017
I finally took the plunge to migrate my old Blogger blog to the more convenient GitHub Pages. Like everybody else I found when googling this topic discovered, it wasn't as easy as it seemed at first.
Read More
April 13, 2017
As an exercise in creating a Java library and submitting it to the Central Repository, I created an implementation of the xirr (irregular internal rate of return) function in Java.
Read More
March 30, 2017
Some XSLT re-usable templates for posterity:
Read More
November 15, 2016
New box, new OS, time for another edition of trying to connect to Microsoft's VPN software. This time it is Fedora's turn.
Read More
September 17, 2016
Just to get my feet wet, I published a Node.js module called xirr.
Read More
August 21, 2016
I recently upgraded from Ubuntu 14.04 on my main desktop machine and discovered that my VPN connection to Windows 2008 Server no longer worked. The bugaboo turned out to be the routing table which no longer requires a gateway entry. Here I have rewritten my post originally written for 12.10 to reflect the new configuration.
Read More
April 4, 2016
So if you have not been under a rock and have used Java 8, you are surely aware of the new String.join() method and the Collectors.joining() method to concatenate arrays or streams of Strings. Sometimes however, a simple concatenation with a delimiter is not quite up to the job.
Read More
March 28, 2016
Read More
March 9, 2015
Just collecting the implicit objects defined by the JSF 2.2 specification (section 5.6.2.1, table 5-11) which are available in the EL:
Read More
February 13, 2015
Every once in a while when using jQuery UI I notice that my widget is not being initialized smoothly. For example, when using the menu widget I might see the list items behind the menu briefly. Then the page jumps around and it is a generally unpleasant experience for the user. Who likes it when your jQuery widgets are jumpy and cause the page to feel like one of those old 'punch the monkey' banner ads?
Read More
January 17, 2015
Read More
January 15, 2015
Add the `persistent-sessions` element to your WildFly configuration to keep sessions persistent across redeployments and restarts:
Read More
January 7, 2015
Read More
January 6, 2015
Read More
October 5, 2014
Just a quick post in case you are trying to use a JSF page as a welcome file.
Read More
September 28, 2014
Recently I was porting a JEE application’s development environment from an outdated version of IDEA to Maven and NetBeans. After some effort I got the two builds to yeild pretty much the same EAR files.
Read More
February 16, 2014
I've had this one as a draft post for a while and I just ran into the it again, so it's time to to publish it.
Read More
November 17, 2013
Liferay is a JSR-286 compliant portal server that runs on a variety of different application servers. Previously I have explained how to get Liferay working with JBoss 7.2.0.
Read More
November 10, 2013
Liferay is a JSR-286 (also known as Portal 2.0) compliant portal (and a whole lot more). Since I am in the market for a portal server for an upcoming project, I figured I needed to check Liferay out. The folks at Liferay have bundled version 6.2 with a number of different open-source application servers, including JBoss 7.1.1, but what fun would it be to simply download a bundle? Liferay is also available as a war download for deployment on existing (and closed-source) application servers. So let’s see if we can get Liferay running on the JBoss 7.2.0 server we built previously.
Read More
November 3, 2013
I have been messing around with the GateIn Portal Server in order to evaluate it for an upcoming project. One nice aspect of the portal is the way JavaScript is handled. JavaScript in GateIn is split into modules and managed via the RequireJS library. This allows the portlet developer to keep their JavaScript isolated and only include the dependencies they require. It also allows for re-use of modules defined in one portlet in other portlets. It doesn’t take a lot of imagination to picture the disaster JavaScript could become on a portal which doesn’t provide isolation and re-use, especially if multiple organizations are providing portals.
Read More
October 27, 2013
GateIn is a JSR-286 (also known as Portal 2.0) compatible portal based on the JBoss application server (soon to be known as WildFly). The latest version of GateIn with a provided build is GateIn 3.6.0 and is bundled with JBoss 7.1.1. (There is also a beta build of Red Hat JBoss Portal 6.1.0 which bundles GateIn with JBoss EAP and thus carries a more restrictive license.) Note that GateIn is bundled with the application server and is not an add-on to an existing application server.
Read More
October 20, 2013
As you may or may not be aware, a great many changes have been happening to the JBoss application server since being purchased by Red Hat. Most importantly, the application server is being rebranded as WildFly for version 8. ("Why?" is the first entry on the WildFly FAQ if you are curious.) But since WildFly is not quite ready as of this writing (but looks real close), we are going to deal with the latest community release, JBoss AS 7.2.0.
Read More
September 22, 2013
Deploying RESTful web services on JBossAS 7 is relatively painless and straightforward. Thanks to the extensive support of annotations vs configuration in JEE 6, creating RESTful web services is almost XML-free.
Read More
September 20, 2013
Read More
September 8, 2013
As the number of CentOS (or Red Hat) machines in your environment grows, you begin to appreciate the need for a central login mechanism. Most workplaces already have a such a login for their Windows workstations in the form of an Active Directory domain. By joining your CentOS machines to the Active Directory domain, you allow users to login with the same credentials as on their Windows machines. Furthermore you do not need to add or remove users when new people join the team or others drop off the team.
Read More
August 18, 2013
In the past I have detailed how I set up a mail server for development application servers. Today I want to explain how to set up a mail server for a production application server, or one that should interact with real-life mail systems.
Read More
July 28, 2013
Back when I was fooling around with Ruby I wrote some code using the ruby-taglib library for manipulating mp3 tags. Later, I went through the process of installing Ubuntu 12.10 from scratch on my main system. Eventually I tried running the old on the new system and discovered that I needed to re-install ruby-taglib and ran into some difficulties.
Read More
July 21, 2013
A quick example script for creating a table in an Oracle database only when it does not already exist.
Read More
June 9, 2013
I recently went through the exercise of adding an additional JBoss application server to a production CentOS 6.4 server. The two applications were to be hosted on the same machine using virtual name servers to distinguish requests. I have covered virtual name servers before in my post on install Trac on CentOS 6. Multiple instances of JBoss can be made to play nice on the same servers by shifting the ports via the switch ‑Djboss.service.binding.set=ports‑01.
Read More
March 31, 2013
Just a quick post in case someone else ever encounters this issue. I got the following error when migrating an unchanged web application to CentOS 6.3 from an earlier version of CentOS:
Read More
March 24, 2013
If you have ever needed to develop a web application you have probably needed to send email from the application. Frequently in the applications I work on, we end up using the email address as the login, which means we need lots of email addresses for unit test and integration testing, etc. Using real email addresses for this is not very convenient, so we have used a separate development mail server. Ideally this mail server will accept mail from any development machine, but will not relay mail to any real addresses (so it won’t be an open relay).
Read More
February 3, 2013
Now for the exciting conclusion of our three-part series on installing Trac on a 64-bit server running CentOS 6.3. In part 1 I installed some prerequisite software and Trac itself. In part 2, I installed and configured Apache as a front end to Trac. In part 3, I will configure Trac to use an Active Directory domain for authentication.
Read More
January 27, 2013
Recently I had the need to set up a Trac instance on a 64-bit machine running CentOS 6.3. In part 1 I installed some prerequisite software and Trac itself. In part 2, I will be installing Apache as a front end to Trac. In part 3, I will configure Trac to use an Active Directory domain for authentication.
Read More
January 20, 2013
Recently I had the need to set up a Trac instance on a 64-bit machine running CentOS 6.3. For CentOS and Red Hat 5, someone has done the hard work already and set up RPM files (see the Trac documentation on RHEL 5 and Dag Wieers RPM repository for details) making installing Trac as easy as yum install trac. Unfortunately, our benefactors have not gotten to RHEL 6 yet so I needed to do it myself.
Read More
January 13, 2013
Read More
January 6, 2013
A few weeks ago I upgraded my HTPC to Ubuntu 12.10 and was treated to a nasty surprise: the overscan settings for the nvidia driver were no longer recognized. The HTPC is connected to my television (naturally) which is a 40" LG LCD HDTV. If you have ever tried to connect your PC to an HDTV before, you probably encountered the problem of that the visible portion of the screen is smaller than the drawable portion of the screen. The result is that the edges of the screen are not visible. In my case that meant the dash and the universal menu of Unity could not be seen. That makes for a less than usable experience.
Read More
December 23, 2012
I recently upgraded to Ubuntu 12.10 on my main desktop machine from scratch, which means a number of things which had been installed and configured need to be re-done. One of those things is my VPN connection to work, which runs Windows 2008 Server for VPN.
Read More
December 16, 2012
A big hat tip to Asaf Shahar for this one.
Read More
December 9, 2012
Recently I took the plunge and put an SSD drive into my desktop. Since I needed to re-install the OS, I figured I would install the latest Ubuntu, version 12.10. I went over my trials and tribulations of getting the OS installed in part 1, and dealt with swap in part 2. Today we finish up the tweaks for the SSD.
Read More
December 5, 2012
Recently I took the plunge and put an SSD drive into my desktop. Since I needed to re-install the OS, I figured I would install the latest Ubuntu, version 12.10. I went over my trials and tribulations of getting the OS installed in part 1, today we are going to talk about some changes I made afterwards to support the SSD.
Read More
December 2, 2012
Recently I took the plunge and put an SSD drive into my desktop. Since I needed to re-install the OS, I figured I would install the latest Ubuntu, version 12.10.
Read More
October 24, 2012
In the process of converting an application from JSF 1.2 to JSF 2.1, I came across the following structure:
Read More
September 30, 2012
So when I get the chance I am working through Bruce Tate’s Seven Languages in Seven Weeks (it might end up being seven years in my case) and commenting on it when the mood strikes. I am currently working through the exercises for Io Day 2 and today I was contemplating the final exercise.
Read More
September 26, 2012
The ANT build tool for Java does a pretty decent job of abstracting away OS concerns from your build script. E.g., file paths can always be represented using the / separator and there are tasks for all the typical file system and build operations.
Read More
September 22, 2012
As you are probably aware, I am working my way through Seven Languages in Seven Days by Bruce Tate. (And if you have ever googled basic questions on the Io language, you will know that I am not the first person to have this idea.) In any case, I am on Day of Io, but before I get to anything specific there, I wanted to share a gotcha of Io that I encountered.
Read More
September 16, 2012
Well I am back to reading Seven Languages in Seven Days by Bruce Tate and am taking on the chapter on Io. If you are not familiar, Io is a prototype-based language like JavaScript. Since I typically work on the server-side and only dabble in JavaScript and HTML, I am looking forward to seeing how learning Io can reflect on my knowledge of JavaScript.
Read More
September 3, 2012
I recently hit an error I had never seen before:
Read More
August 30, 2012
Recently I have been upgrading a JEE application to the latest versions of the libraries used. In particular I was upgrading from Hibernate 3 to Hibernate 4.
Read More
August 6, 2012
I finally got back to my little Ruby project over the weekend. The idea was to write a tool to copy an m3u play list and associated files to my mp3 player since Rhythmbox and Banshee were not up to the task. I used the ruby-taglib library from http://robinst.github.com/taglib-ruby/ to access mp3 tags.
Read More
August 2, 2012
So I finally got back to my Ruby play list project. The next mini-goal would be to parse a play list file and print out the converted file names. I created a PlayListEntry class and a PlayList class and things were moving along very well:
Read More
July 29, 2012
I wanted to explore Ruby a little more so I needed to give myself a project. I figured I would try to create a script to copy a playlist to my MP3 player, since both Rhythmbox and Banshee had issues with this.
Read More
July 21, 2012
My notes on the final section on Ruby from Seven Languages in Seven Days by Bruce Tate.
Read More
July 19, 2012
My notes on Day 3 of Ruby from Seven Languages in Seven Weeks by Bruce Tate follow.
Read More
July 16, 2012
I ran into a situation today where I wanted to script deletion of folders older than a set number days on an old Windows 2000 machine. (The culprit is a commercial SMTP spam and virus filter that does not clean up after itself when it updates. Eventually the drive gets full and no mail comes through.) I found a solution using forfiles but this version of Windows does not have it. I found myself searching the web and gnashing my teeth over the limitations of Windows batch scripting.
Read More
July 15, 2012
My notes on day 2 of Ruby from Seven Languages in Seven Weeks by Bruce Tate.
Read More
July 14, 2012
Well I have survived day 1 of Ruby in Seven Languages in Seven Days by Bruce Tate. Now I just need to figure out how to do everything I want to do in this blog software.
Read More
July 14, 2012
I created this blog for two purposes. First, to capture any random notes on problems I have encountered (and hopefully solved). Hopefully next time it happens, I'll remember the blog post or Google will remember it for me.
Read More