Posts

Loading Lisp file from URL in Emacs

On a given day, I have to login and work from multiple Linux boxes. One thing I find annoying is that every time I make a change to my .emacs file, I have to copy the changes to all the hosts. There are multiple ways to circumvent this issue. One way I find useful is to maintain my custom file as a gist in github (or any where you can host your .emacs file) and use the following code snippet in the .emacs to load the file from the URL. (with-temp-buffer   (shell-command "curl -Ls https://gist.github.com/raw/372f5e3e8aca632d9b82/hello-world.el" (current-buffer))   (eval-buffer)) Let me explain what this code snippet does: It creates a temporary buffer. With the temporary buffer as the current buffer, it fetches the contents of the URL into the current buffer. It evaluates the current buffer. Remove the temporary buffer. If the sample code above works for you, if you eval the "(hello-world)", it will say "hello world" in the mini buffe...

Fastest way to switch between buffers in Emacs

In any given Emacs session, I have at least 5 buffers open. One of the pains of using C-x b to switch between buffers is that after typing every few characters, you have to type tab to perform completion. It is a waste of time. iswitchb is a much more efficient alternative to the default switch-to-buffer that is invoked while you type C-x b. It is time saving in two ways: (1) there is no need to type tab for completion and (2) you can give any part of the buffer name in the minibuffer prompt and jump to that buffer. To enable this mode, add the following line in your .emacs file. (iswitchb-mode 1)  Thats it. You are ready to rock-n-roll. More info at:  http://www.emacswiki.org/emacs/IswitchBuffers .

Font face customization in Emacs - an easy way

I usually edit source code using Emacs running inside a PuTTY session. One of the struggles I often run into is how to customize different elements I see on the screen. For e.g. the prompt in the shell-mode, previously executed command line, shell input, etc. While I googled around a bit, I came across this incredibly useful key binding: C-u C-x = . It runs the command "what-cursor-position". Here is how you can use this: You position the cursor on the element you would like to customize, and type C-u C-x =. You will be presented with the properties of the character at point, including links to customize the character. I find this extremely useful and hope sharing this information will help others as well. Credit:  http://stackoverflow.com/questions/1242352/get-font-face-under-cursor-in-emacs

Perlbrew saved the day

After an insanely long period of silence, I am writing another blog entry. I couldn't contain my excitement with what I learnt today and hence this post. I had to upgrade Perl installation in my Linux host and I visited Perl.org to download and install Perl. It was suggested to make use of the perlbrew to install and manage different versions of Perl under your home directory. I gave it a try and it was incredibly simple to upgrade the Perl installation in my box, without screwing up the old installation (which I still need for some of the old scripts I have). If you haven't tried it yet, I would strongly recommend.

Two cookie attributes you MUST be aware to secure your web app

There are two attributes of cookies that every web developer must be aware of to secure your web application. These two attributes doesn't save your application from all attacks, but at least they reduce the vulnerability to a great extent. These two attributes are: HttpOnly Secure The first attribute HttpOnly says that the cookie is intended to be passed only as a part of HTTP communication. Hence it must not be available to the application (like JavaScripts running in the browser). So once you load a page, if you type "javascript:alert(document.cookie)" in the URL bar, you will not those cookies that have the HttpOnly flag set. The second attribute Secure tells that the cookie should be sent as a part of the request if and only if the communication happens over a HTTPS channel. Typically login requests are sent over HTTPS channels. (If you are using a web app that is using HTTP for login page, its time you stop using it!). Typically, as a part of the login response...

Cygwin and irb

If you had tried to start irb in Windows that has cygwin installed, you might have got the following exception trace: C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2095:in `expand_path': non-absolute home (ArgumentError) from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2095:in `_rl_read_init_file' from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2078:in `rl_read_init_file' from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2499:in `readline_initialize_everything' from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:3730:in `rl_initialize' from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:4737:in `readline' from C:/Ruby192/lib/ruby/site_ruby/1.9.1/readline.rb:40:in `readline' from C:/Ruby192/lib/ruby/1.9.1/irb/input-method.rb:115:in `gets' from C:/Ruby192/lib/ruby/1.9.1/irb.rb:139:in `block (2 levels) in eval_input' from C:/Ruby192/lib/ruby/1.9.1/irb.r...

Pattern: How to start a thread of execution in Fantom

In Fantom, how do you start a new thread of execution? The pattern below is very simple and nice. const class Main { Void main() { svc := Actor(ActorPool()) { doSomething }.send(null) } Obj? doSomething() { // Do something like binding to a port and listening for requests. // Or you can call another method that does that. return null } } The code above might seem a little odd at first. All that it does is to create an Actor with a code block that will execute the doSomething method. By sending a dummy message (".send(null)"), the Actor instance is started. The key here is that sending a dummy message to an Actor starts the Actor. This same trick may be applicable to other Actor based languages as well.