Syed Aslam

Author posts

module functions in Ruby

in Ruby · 2 min read

In Ruby we can create module functions for named methods that may be called with the module as a receiver, and these functions also become available as instance methods to classes that mix in the module. There are multiple techniques to achieve this in Ruby, but the simplest and best known are Module#module_function and extend self.


magic comments in ruby

in Ruby · 2 min read

Ruby supports magic comments (interpreter instructions) at the top of the source file, mostly known for setting a source files' Encoding. But there is more you can do.


HTTP headers in Rails

in Rails · 1 min read

Accessing the headers sent by clients in rails spits out both headers along with other environment variables. This adds a bit of inconvenience if you want to process only the external headers.

rails http-headers tip

git: revert an updated file

in Git · 2 min read

This is one hard to find out there so here it is. How to remove an updated file from a pull request whose content is changed but is out of the scope for this pull request. Now you want to remove the file from the pull request without deleting the file itself, not delete the file itself, but just revert the inclusion of this file in the pull request because, if you delete the file, then that deletion becomes part of your changeset, which is not what you wanted at all.

git git-revert

Managing multiple SSH keys

in Ssh · 5 min read

Managing SSH keys can become cumbersome as soon as you need to use a second key. Traditionally, you would use ssh-add to store your keys to ssh-agent, typing in the password for each key. A better solution is to automate adding keys, store passwords and specify which key to use when accessing certain servers. Use the configuration file to manage multiple ssh keys pairs.

ssh ssh-config gitconfig

Creating Python Virtual Environments

in Python · 2 min read

Python applications will often use packages and modules that don't come as part of the standard library. Applications will sometimes need a specific version of a library. It may not be possible for one Python installation to meet the requirements of every application. The solution for this problem is to create a virtual environment, a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages. You can setup as many Python programming environments as you would like.