Press ‘ctrl + shift + R’ to bring up the refactor options for the class.
- select ‘extract interface’ – This will extract out interface for the class.
- select ‘use base type where possible’ – To replace usages of class with interface.
Allow or better promote users to use email address as usernames.
- Better application support
Starting from note taking application Evernote to backup and folder syncronization applications such as google drive and windows skydrive, their presence on windows is definitely a positive thing. Even though I primarily use command line for git, the client provided by github covers some basic actions.
- Folder/Files search
I am impressed with the default search provided by windows through GUI.
- Better battery life
Ubuntu sucks the battery out of my thinkpad. Even with applications like Powertop to extend battery life, windows win on this point.
- A little better wifi support
I don’t have any complaints with the wifi support on newer Ubuntu versions but some wifi activities such as detecting new network and reconnecting work more seamlessly on windows
Lots of people using ubuntu have not shifted to unity, but I am a huge fan of unity and with the heads up display support, I never need to lift my hands off keyboard to click on any menu item..
- Multi pane in files explorer
It is interesting to see that a tiny feature provided by nautilus of opening extra pane (shortcut: F3) can make your life so much easier. I wish somebody writes that for windows too.
- Command line aka Terminal
Even after trying hard to avoid command line on windows to do anything, every now and then I find myself on command line (either for using some advanced feature of git or some other thing). And then, I couldn’t do anything except wondering why microsoft can not atleast attempt to provide better command line support (Powershell is equally bad)
Recently, I needed to configure thunderbird on my ubuntu. Thunderbird on my
windows partition was already configured. So, I thought all I need to do
is do some kind of export from thunderbird in windows and then, import that. But
I couldn’t find any such feature. I googled and tried to find some alternate. Well,
as it turned out there is a great way to go about this.
Thunderbird keeps a directory suffixed with “.profile” which store everthing
related to a user account. You just need to move/copy that directory.
Copy directory from already configured thunderbird
Copy directory to ubuntu
Start thunderbird and see the magic.
PS: I didn’t like the decision to stop thunderbird development.
- ELI: Bare-metal Performance for I/O Virtualization. Abel Gordon (IBM), Nadav Amit (Technion), Nadav Har’El (IBM), Muli Ben-Yehuda (Technion & IBM), Alex Landau (IBM), Assaf Schuster (Technion) and Dan Tsafrir (Technion)
Everyone who has worked in virtualization knows that there is a performance overhead which exists with virtualization. While lots of work has been done to reduce computation overhead of virtualization, I/O overhead is still a big issue. As implied by the title, this paper aims to bring I/O performance in a virtualized environment close to bare-metal.
- Scalable Address Spaces Using RCU Balanced Trees.Austin Clements (MIT), Frans Kaashoek (MIT) and Nickolai Zeldovich (MIT)
When we study about parallel programming, our focus lies completely on underlying algorithm assuming perfect parallel execution of memory operations. This paper targets the bottleneck due to kernel virtual memory operations which limits the scalability of applications written to take advantage of parallel execution.
- Understanding Modern Device Drivers. Asim Kadav (University of Wisconsin) and Michael M. Swift (University of Wisconsin)
If you are intrigued by Linux Kernel, then you will find this paper quite interesting which studies various aspects of device drivers code. It talks about drivers’ interaction with kernel, buses and devices and analyses similarities between various drivers’ code.
Recently, working on some project, I had to do some benchmarking on qemu. This is nothing but a two step process:
1. run a guest VM with qemu,
2. run some benchmarks inside the guest and collect the results.
Naturally, I looked for options to automate this process. I tried out a bunch of things and it took me couple of days to get to the right tools.
By default, qemu uses SDL to display the VGA output. So, the first step is make this interaction with qemu through stdio. Qemu provides an option for this.
From qemu docs:
-nographic Normally, QEMU uses SDL to display the VGA output. With this option, you can totally disable graphical output so that QEMU is a simple command line application. The emulated serial port is redirected on the console. Therefore, you can still use QEMU to debug a Linux kernel with a serial console.
So, all you have to do is invoke qemu with -nographic.
qemu -nographic -hda guest.disk
Now that you can interact with your guest (or qemu process) through command line, you have to automate this interaction. The obvious way to do this in python is start the qemu process (with -nographic) with subprocess module and then communicate with that process. But to my surprise, this just didn’t work out for me. So, I looked for some other way.
Later, I found out that the most awesome tool for this kind of jobs is Expect. It is an automation tool for interactive applications written in tcl.
This guide should help you in getting started with Expect. Here is the script to run a guest with qemu using Expect.
#starts guest vm, run benchmarks, poweroff
set timeout -1
#Assign a variable to the log file
set log [lindex $argv 0]
#Start the guest VM
spawn qemu -nographic -hda guest.disk
expect “login: ”
expect “Password: ”
#Do whatever you want to do with in the guest VM. ( Run a process and write result to log )
#poweroff the Guest VM
expect “# ”
send “shutdown -h now\r”
Save this as automate_qemu.exp, mark this file as executable and then “./automate_qemu.exp qemu.log”
- Mailman3: MM3 sends a message to a local Archiver instance via a subprocess call.
Status: Updated archive_message() function.
def archive_message(mlist, message): # """See `IArchiver`.""" command = 'python /home/dushyant/projects/Archiver/archiver.py -basedir ~/projects/Archiver/var -listname mlist.fqdn_listname add' proc = subprocess.Popen( command.split(), stdout= subprocess.PIPE, stderr=subprocess.PIPE, stdin = subprocess.PIPE, shell=False) stdout, stderr = proc.communicate(message.as_string()) if proc.returncode <> 0: log.error('%s: archiver subprocess had non-zero exit code: %s' % (message['message-id'], proc.returncode)) log.info(stdout) log.error(stderr)
Modifications in configuration schema and updation of pipermail docs needs tobe done.
- Archiver: Archiver separated out from mm3, generates and maintains sqlite database and whoosh index from the archived messages.
Status: Basic implementation is finished. Need to discuss with Barry about i18n and language preference of message. Also, requires some minor fixes and code clearing.
- Archiver-UI: To view and search archives through web interface. This is built on pylons framework. All it needs is access to sqlite database and whoosh index maintained by Archiver.
Status: More or less finished. Just requires a few improvements in UI.