Install Unity on Arch Linux

Some might wonder, why would you do something like that? Install Unity on Arch Linux? Absolutely blasphemy. But really, I have fallen in love with this combination. Till a couple weeks back, I had been using Ubuntu for close to 4-5 years without experimenting with any other Linux distros. I usually resist the urge to install the alpha releases, but by the time the beta releases start coming out, I’m just itching to get hold of it, irrespective of how catastrophic it has turned out sometimes from the work perspective. So when Ubuntu 12.10 beta2 came out, I installed it. But I was sorely disappointed. Unity kept crashing for no good reason, generally not a very stable system. I know ‘beta’ versions aren’t supposed to be stable etc, but it shouldn’t crash as often as it did. Continue reading

Why I like Unity?

There’s a lot of criticism out there for the Unity Desktop Environment. Strangely I can’t echo the same sentiments. I quite like using Unity (mind you not Ubuntu). Here are a few reasons why and why not.

The Unity Launcher: I have always loved launchers. Back in the days, when I would change desktop environments every second day – fluxbox, gnome, kde, wmaker, etc, one thing was constant. I had gnome-panel (&) start from my xinitrc irrespective of what distribution I used. Also I have never been a fan of taskbars. The Unity launcher marries the traditional launcher with a highly usable taskbar. It had some usability issues when Ubuntu initially switched to Unity, but it’s almost perfect now with AppIndicator Support. I can have upto 15 applications open at the same time and it’s still a breeze to manage them. Continue reading

iproute2 tutorial for ifconfig, arp, route users

A lot of Linux distributions are shifting to iproute2 instead of net-tools (aka ifconfig, arp, route). The main reason being net-tools package hasn’t been updated in a decade. However having used the trusted ifconfig, route and arp for so many years, I have never bothered to use ip and hence I now need to Google every time I want to see what my IP address is!

So here’s a short iproute2 primer for net-tools users (like myself).
Continue reading

PHP like str_replace function in C

This post is part of a series of posts where I want to document a bunch of C functions I use for my projects that I have written, collected and modified over the past few years. One of the functions that I use regularly is a string replacement function like the str_replace in PHP. This function replaces all occurences of a particular substring with a replacement pattern. The code for this was borrowed from here. In the original code, a newly allocated string is returned after all the substrings are replaced. I have modified it so that the replacements are made in place. Continue reading

Modify argv to hide sensitive information like passwords etc

A lot of programs require you to pass sensitive information like passwords etc as arguments to the program. However if you pass passwords as arguments, it will be visible through the /proc filesystem or the ps ax output while the program is in execution. To avoid the possibility of anybody prying on sensitive information, programmers should modify the memory location where the input parameters are stored (argv array), so that it is not visible to any other users, who might have the access levels to see what processes you’re running. Jotted below is some sample code which modifies its input parameters to hide it from the proc file system. Continue reading

Install kmscon on Ubuntu Linux

Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS). It is an attempt to replace the in-kernel VT implementation with a userspace console. It is similar to the in-kernel terminal-emulator and is based on DRM. Listed below is the procedure to install kmscon in ubuntu.

sudo apt-get install libgles2-mesa-dev libgbm-dev libegl1-mesa-dev libdrm-dev libglib2.0-dev libfreetype6-dev
git clone https://github.com/dvdhrm/kmscon.git
./autogen.sh
make
sudo ./kmscon --switchvt

The last command will start kmscon on /dev/tty8.

Assign Google Adsense Code to a PHP Variable

Assigning Google Adsense code to a PHP variable doesn’t work the way you would expect it to. I thought just deleting the newline characters and extra spaces from the adsense code and then assigning the resulting text to a variable should work. However it does not, and I’m not sure why. However what does work is shown below.

<?php
$googleadsensecode = '
<script type="text/javascript">
google_ad_client = "pub-123456789";
google_ad_slot = "123456";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>';
echo $googleadsensecode;
?>

The following example does not work.

<?php
$googleadsensecode = '<script type="text/javascript"> <!-- google_ad_client = "ca-pub-123456789"; google_ad_slot = "123456"; google_ad_width = 300; google_ad_height = 250; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>';
echo $googleadsensecode
?>

foresight.js – Handle High Resolution Images

Foresight.js gives webpages the ability to tell if the user’s device is capable of viewing high-resolution images (such as the 3rd generation iPad) before the image is requested from the server. Additionally, it judges if the user’s device currently has a fast enough network connection for high-resolution images. Depending on device display and network connectivity, foresight.js will request the appropriate image for the webpage

  • Request hi-res images according to device pixel ratio
  • Estimates network connection speed prior to requesting an image
  • Does not use device detection through user-agents
  • Does not make multiple requests for the same image
  • Javascript library and framework independent (ie: jQuery not required)
  • Cross-browser and cross-platform
  • Image dimensions set by percents will scale to the parent element’s available width and device pixel ratio
  • Fully customizable through global configuration options and individual img attributes
  • Default images will load without javascript enabled
  • Minifies down to roughly 5K

foresight.js