Sunday, February 26, 2017

Guide for new Software Engineer

I have been a software Engineer in Microsoft for a year and half and I would like to share how I have learned the craft so far in hopes that it may help others.

Theory
 I like reading books as I believe this gives much deeper understanding of a subject. After some research online and asking people for suggestion I found some candidates. Programming Pearls by Jon Bentley is small book so I figured I could finish it fast. One important take away I got from this book is that a good Software Engineer thinks a lot before jumping to code. The second book I read is Code Complete 2. This is old and you might want to skip some parts (Gotos, pointers etc) which are not applicable today. This book took many months to finish but it was worth it. I especially liked the parts about construction at different levels (requirement, architecture, OO classes), guide for naming, refactoring functions.

Find all the learning resources your company provides and make good use of them. If you don't have access to these I'm sure you can find similar materials for free. I got subscription to pluralsight and I watched ton of videos. There were tracks for different subjects. I completed C# (Lingua Franca in MS) and Python. One subject that really helped me for the rest of my career is unit testing. Today even for hobby projects I start out with unit tests. I also watched some videos on git, Haskell, etc. Microsoft also gives free access to Safari which is pretty useful.

Practice
Working in a big company you get lot of resources, but one downside is you work on very small part of a big system. Building something of your own gives you experience from all sides. So it is good to work on few projects on your own in free time, where you can propose, design and build your own software. I worked in my free time to create KaiiMaps. In this project I learned how to modify html, css, learn javascript to modify OpenSeadragon library, create a web service using Flask, deploy it to cloud using Azure, use cloud storage services from Amazon S3, create a python pip package called graphmap. It was lot of work but it was fun :)


Useful Links:
Here are some links to pages/videos that I found very useful. Please let me know in comments if you have any suggestions to add.

1. Google Tech Talks: There are some amazing videos here. The ones I liked are API Design, Designing testable code. More here in Quora
2. Must see tech talks for programmers I watched some of these.

The only requirement is a zeal to learn. Software Engineering is a wonderful field and allows you to create, build unique things.

Thursday, July 30, 2015

History mania

For some time I have become interested in history. I never liked that subject in school because I couldn't connect it with anything else but now things are making more sense. I can fit various facts into places, make sense of this world, so history now makes sense. I guess there is a basic urge to make sense of things. Questions like how did we end up here? Where are we going etc. This is especially soothing when I see the stark difference between India and USA and ask myself why is India so poor? Well a bit of history makes it abundantly clear. India has been free for only 50 years so we need some time. Looting by the British had taken it's toll.

It all started with this video series made by John Greene called Crash Course World History Youtube Playlist link. It was interesting and fun to watch. I also like this show because it shows the future of content creation, where individuals not big companies create content. I liked it so much that recently after couple of years when I had money I donated a small amount through Patreon.

In Spring 2014 I started reading this famous book "India after Gandhi" by R. Guha. This really helped me put current political situation in India into perspective. I found out that Kashmir, North East were all old issues, the rise of BJP was relatively fast etc. This is a must read for any Indian.

I've been living in USA for a couple of years now and travelling around North East. I got to see lot of historical places like Gettysburg, DC, Philly etc. Monticello in Virginia was a real treat. To get a better understanding of USA I wanted to read a single best book for history of USA. Through recommendation from Reddit top 200 reading list and a  friend Marc McCann I started reading this book called "People's History of United States" by Zinn in Spring 2015. I'm still reading it.

That takes care of India and USA, but what about the rest of the universe? After Bill Gates recommending this Big History (https://www.bighistoryproject.com) course so much, I watched all of its videos to get a overall sense of this universe. I found out an interesting fact that for majority of time Life was single celled. Due to the huge scale of difference I wanted to see the timeline of the universe in log scale. Found a nice graph in this page http://matryoshka.org/2015/01/12/logarithmic-history.

Now after reading all this it feels good to know where we came from, how we got here and where we may be headed.

Update: Everything moved to my other blog http://blog.abhishekrao.org/2015/08/history-mania.html previously known as rhymeisnotcrime.blogspot.com

Sunday, June 5, 2011

Prevent sleep when downloading - Coffee

I don't want my computer to sleep when I'm downloading a large file. But I have kept my power options so that it sleeps automatically when not in use for 10 minutes. Some download managers (e.g. utorrent) do have an option that prevents the computer from going to sleep when downloading. Some don't (e.g. Flashget). Some downloads wont even resume after waking up from sleep. One way for the computer to sleep intelligently is Coffee.


Coffee is a freeware that prevents computer from going to standby when the network adapter is busy. The user can set the threshold above which computer won't sleep.

Download [Sourceforge.net]

Saturday, April 2, 2011

Mobile Display Resolutions Compared

Here's a visual comparison of different mobile resolution. This is specifically for mobile displays. For general displays check Wikipedia

click on the image for actual size


Mobile Display Resolutions

NameResolutionExample Devices
QVGA 240x320 HTC Wildfire, Samsung Galaxy Mini, SE Xperia X10 mini
HVGA 320x480 LG Optimus One, Apple iPhone 3GS, Blackberry Bold Series
nHD 360x640 Nokia N8, Nokia E7, Nokia 5230
WVGA 480x800 Samsung Galaxy S, HTC Desire, SE Xperia X10
FWVGA 480x854 Motorola Milestone, SE Xperia Arc
qHD 540x960Motorola Atrix, HTC Thunderbolt
DVGA 640x960 Apple iPhone 4, Sharp IS03

Sunday, September 12, 2010

Freemake video converter


Freemake video converter is a simple, free, video conversion software which can take most of the formats and convert it into popular formats like mp4, wmv, avi etc.

You can also add images, music to the video and edit videos like windows movie maker.
It has an upload to youtube feature that automatically converts, splits videos and uploads multiple videos to youtube. You can also convert videos into mp3 or DVD format.

The conversion options are minimal, you cannot change the bitrate, which is set to very high quality, high file size setting. I use it to compact videos I shoot from my mobile phone. It converts the 720p videos from 12Mbps to about 4Mbps which brings the file size down to 1/3rd without any perceptible loss.

The UI is stylish and simple just like the software. I would have liked few more options, but the software should satisfy most of the people with its clean, simple and elegant features.

VCDGear

Vcdgear is useful for extracting videos from VCD. I used it to convert the DAT file in the VCD to mpg format. It even fixed many errors in the scratched VCD.

site:http://www.vcdgear.com/what_is_vcdgear.html


download

http://www.vcdgear.com/download.html