Shami's Blog

Sysadmin, Because Even Developers Need Heroes

Ordering Select Options With Javascript

2017-04-23 by Mohammad H. Al-Shami

I’ve been building trivial web pages for automating tasks for years, but one of things that bothered me the most was having to manually order the OPTIONSs inside SELECTs. I don’t remember where I got the code from but just wanted to share


Use Just What You Need Out Of Bootstrap And Similar Frameworks

2017-04-21 by Mohammad H. Al-Shami

If you know me, you’ll know I’m obsessed with speed. I like websites that are light and load quickly. At first I used WordPress because I knew how to optimize it and make it load quickly. I also used the GeneratePress theme because I loved how quickly it loaded. You can read this post to see why I migrated away.

Ghost introduced me to Markdown and I could never look back, but since I didn’t find any themes that I liked and the fact that Ghost looked as if it hadn’t been maintained in a while lead me to look for alternatives.


Cropped Pagination Controls With Hugo

2017-04-11 by Mohammad H. Al-Shami

I’m currently in the middle of migrating my blog (yet again) from Hexo to Hugo. Hexo is nice but I’m learning some HTML/CSS and decided to give Hugo a try and I liked the following about it

  • Setting it up is just a matter of downloading a single EXE file and adding it to PATH, as opposed to having to install NodeJS, then Hexo

  • Shortcodes are part of the theme, not a plugin

  • Go themes are close enough to Jinja2 which I have been using for a couple of years now with Salt and Ansible

  • In general, Hugo is easier to maintain in git as the whole folder can be tracked, whereas with Hexo, the node_modules folder needs to be in .gitignore

  • Hugo supports multiple categories per post, whereas Hexo doesn’t


Allowing Read-Only Access To A Git Repository Via HTTP

2017-04-02 by Mohammad H. Al-Shami

Today I thought about a way to easily distribute an Ansible playbook. I thought about having a tgz file somewhere but I wanted read only access through HTTP in case I wanted to update clients that have already downloaded the content.

The easiest solution I have found was using cgit. Simply run it with nginx and fcgiwrap.


Hexo Deploy With Babun

2017-03-28 by Mohammad H. Al-Shami

I have recently switched to Babun. It’s, IMHO, the best Windows shell so far. Combine it with TidyTabs and you have a very nice solution. But I was unable to get hexo deployment to work well with it so I had to use git bash. git bash would show a popup asking for my SSH key password while Babun wouldn’t.

I found the solution here, just enable the SSH-agent plugin in zsh

# ~/.zshrc
plugins=(git, ssh-agent)

You will just be prompted for the password of your SSH key when you start Babun.

No Output From Drush

2017-03-16 by Mohammad H. Al-Shami

A while back Drush stopped working on my servers and it would just return without doing anything. Today I decided to finally debug the issue. Turns out the FreeBSD port just fetches the Phar archive and installs it.

After digging around I found the following post which says that Suhosin blocks Phar file execution. The fix turned out to be quite simple; Just edit the Suhosin ini file (in FreeBSD it’s /usr/local/etc/php/ext-30-suhosin.ini) and add the following after the “extension” line:

suhosin.executor.include.whitelist = phar

And you’re back in business :)

New Domain, Same Great Content

2016-11-23 by Mohammad H. Al-Shami

I’ve been wanting to get ever since the generic TLDs have been introduced.

Now I finally have it, welcome to the new domain :).

XBOX LIVE With pfSense

2016-10-07 by Mohammad H. Al-Shami

A couple of months ago I switched from running OpenWRT on a TL-WDR4300 to running pfSense on a Netgate RCC-VE 2440. Not that OpenWRT is bad, it’s only because I’m a big fan of FreeBSD and I’ve been wanting to run a similar setup ever since I discovered custom firmware like DD-WRT and afterwards m0n0wall and Soekris. When I finally decided to get the hardware I thought Netgate had a better offering and I went for it.


Hexo Photo Gallery

2016-09-27 by Mohammad H. Al-Shami

So while I was migrating my data over from wordpress there were a few posts with photo galleries. The options I had were to write each photo gallery by hand or use the photos array in the front matter. What I did was change the photos array a bit and added the following code as a module


Responsive Youtube Videos With Hexo

2016-09-27 by Mohammad H. Al-Shami

So now that I have finally finished fixing my content migration issues I can get back to writing.

While checking my old posts I noticed embedded using the {% youtube %} tag looked like this:


About Me

Dev gone Ops gone DevOps. Any views expressed on this blog are mine alone and do not necessarily reflect the views of my employer.