Showing posts with label #productivity. Show all posts
Showing posts with label #productivity. Show all posts

Tuesday, July 26, 2016

Distraction free environment

Hello! I thought I'd share with you how I'm trying to maintain a distraction free environment at work (and at home).

Ashwin.

Thursday, August 01, 2013

Some good Cassandra, Lucene presentations and misc Comp-Sci posts

About 2 months ago I attended the Cassandra Summit at San Francisco. Yes, I've been meaning to write this blog for a while now. I was surprised (pleasantly) to see such a good turn out. Lot of energy and real world use cases. I didn't get to attend all the talks of course, but all the slides and videos are online. Here are some good ones:

A few JVM related posts worth reading:
Go language and reactions:
If you like the Markdown syntax and want a good, no fuss editor for writing documents:
Some Comp-Sci stuff to keep your (my) mind fit:
Scala and Spark related videos:
Until next time!

Saturday, July 28, 2012

Interesting notes on user interface design

[Updated Mar 5, 2017]

I've been bookmarking these notes on UX design. Some of them are worth reading over and over. Well, ideally they should be applied but I'm a server-side engineer. So, the most I can do is identify applications of these concepts in the tools and devices I use:

Some old notes I had made earlier (also read the links in the comments) - #1, #2.

Until next time!
Ashwin.

Saturday, June 25, 2011

The Five Ws (and H) approach

A few days ago, I was trying to explain some technical concepts to a friend. After a bit of explaining I tried listing out reasons, places and times where those concepts would be applicable. I still thought that I had left out something. I then spent some time searching online for ways to - learn systematically and teach correctly by at least outlining the essentials of the problem and encouraging the learner to follow up in his/her own time.

Did I find anything? Of course I did. In fact I discovered too much information but found only some to be simple and interesting. My favorite is what you might think is obvious - The Five Ws approach. Also popular in problem solving is the Five Whys.

Apart from it being obvious, the Five Ws helps you to break down the problem into:

  • When
  • Where
  • What
  • Who
  • Why
  • How
The easiest way to teach this to kids is to use each finger on one hand to stand for a "W". The H is extra.

Now, why is this simple technique relevant? 
    It is:
        Simple
        Easy to remember
        Easy to explain

    It serves as a starter guide to:
        Formulate the right questions
        Break down the problem
        Cover/analyze all aspects of the problem - like why & why not, what & what not

    It also helps us:
        Remember better by understanding, instead of memorizing
        Identify the problem by looking for signs (5 Ws)

    It works quite nicely as:
        A way to exchange ideas (5 Ws = 5 aspects)

        A way to encourage people (even kids) to think deeper- (Systems thinking)
            By supplying the first 5 questions when stumped
            Progress to other approaches 

        A template to share and disseminate knowledge (5 Ws = 5 steps)
            Like Design Patterns and Anti-patterns for software design
            Simple reproducible steps for QA/Support/Services/junior members  etc.

Here's a simple pictorial way to help you get started. I drew it for myself initially. It is built like a form where you can fill in the blanks, on the right hand side. I encourage you to print it out and use it in meetings too or even to teach your kids.


The 5 Ws and H extended


























Until next time!

Thursday, May 19, 2011

Some tools you should not leave home without

In no specific order:

  • After years of searching for hierarchical to-do list managers, frustrating outline and OPML editors, buggy project trackers I found this - ToDoList. It's clean, free (as in speech) and surprisingly, has really nice features
  • yWork's brilliant diagram editor - Graphity or it's thick client cousin - yEd 
  • XMind for mind mapping and brainstorming
  • A decent screen capture and annotation tool - Screenpresso
  • Notepad++, naturally

Thursday, April 07, 2011

The little gem that is BusyBox (for Windows)

As a Windows user (no shame) I have, for years searched for a simple GNU-like toolkit - grep, awk, tail and other such goodies enjoyed by Linux users. Yes, there's Cygwin but it's a beast - too big and a pain to install. Sometimes, I've even resorted to starting a Linux VMWare image just to run a simple awk script to munge some log files.

But today...today I found BusyBox and there's a compact 600KB BusyBox exe for Windows! What does it have? Well.. what does it not have?! It has all the essentials:

[, [[, ar, ash, awk, base64, basename, bash, bbconfig, bunzip2, bzcat,
bzip2, cal, cat, catv, cksum, cmp, comm, cp, cpio, cut, date, dc, dd,
diff, dirname, dos2unix, echo, ed, egrep, env, expand, expr, false,
fgrep, find, fold, getopt, grep, gunzip, gzip, hd, head, hexdump, kill,
killall, length, ls, lzcat, lzma, lzop, lzopcat, md5sum, mkdir, mv, od,
pgrep, pidof, printenv, printf, ps, pwd, rm, rmdir, rpm2cpio, sed, seq,
sh, sha1sum, sha256sum, sha512sum, sleep, sort, split, strings, sum,
tac, tail, tar, tee, test, touch, tr, true, uncompress, unexpand, uniq,
unix2dos, unlzma, unlzop, unxz, unzip, usleep, uudecode, uuencode, vi,
wc, wget, which, whoami, xargs, xz, xzcat, yes, zcat
This is where I'd use it the most - to compress and summarize JVM thread dumps for quick analysis. It's based on JPMP, but here's my version of it. First, download BusyBox for Windows and then use the simple script below to munge your JVM thread dump.

This is the first part of the script:
This is the awk pattern that is used by the script above.
All you have to do now is run it against your thread dump file:
jpmp.bat ..\jstack.out > ..\jstack.out.log

And it converts a huge file like this...
2011-04-07 20:44:06
Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.2-b04 mixed mode):

"TimerQueue" daemon prio=6 tid=0x000000004ec33000 nid=0x1268 in Object.wait() [0x000000004a3cf000]
   java.lang.Thread.State: WAITING (on object monitor)
 at java.lang.Object.wait(Native Method)
 - waiting on <0x0000000034004608> (a javax.swing.TimerQueue)
 at javax.swing.TimerQueue.run(TimerQueue.java:232)
 - locked <0x0000000034004608> (a javax.swing.TimerQueue)
 at java.lang.Thread.run(Thread.java:619)

"D3D Screen Updater" daemon prio=8 tid=0x000000004af1e000 nid=0x186c in Object.wait() [0x000000004f40f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
 at java.lang.Object.wait(Native Method)
 - waiting on <0x0000000034e16ba8> (a java.lang.Object)
...
...
...
...
"Reference Handler" daemon prio=10 tid=0x0000000000823800 nid=0x18e4 in Object.wait() [0x000000004940f000]
   java.lang.Thread.State: WAITING (on object monitor)
 at java.lang.Object.wait(Native Method)
 - waiting on <0x0000000034dda018> (a java.lang.ref.Reference$Lock)
 at java.lang.Object.wait(Object.java:485)
 at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
 - locked <0x0000000034dda018> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x0000000000820000 nid=0x14c4 runnable 

"GC task thread#0 (ParallelGC)" prio=6 tid=0x0000000000777800 nid=0x173c runnable 

"GC task thread#1 (ParallelGC)" prio=6 tid=0x0000000000779800 nid=0x4b8 runnable 

"GC task thread#2 (ParallelGC)" prio=6 tid=0x000000000077b000 nid=0x15d0 runnable 

"GC task thread#3 (ParallelGC)" prio=6 tid=0x000000000077c800 nid=0x199c runnable 

"VM Periodic Task Thread" prio=10 tid=0x0000000049580800 nid=0x1984 waiting on condition 

JNI global references: 1355

Into a tidy summary like this. Very useful if you have thread dumps from 20 servers taken every 30 seconds.
All this without leaving the comfort of your Windows system!
2 j.lang.Object.wait,j.io.PipedInputStream.read,j.io.PipedInputStream.read,sun.nio.cs.StreamDecoder.readBytes,sun.nio.cs.StreamDecoder.implRead,sun.nio.cs.StreamDecoder.read,j.io.InputStreamReader.read,j.io.BufferedReader.fill,j.io.BufferedReader.readLine,j.io.BufferedReader.readLine,sun.tools.jconsole.OutputViewer$PipeListener.run
1 sun.awt.windows.WToolkit.eventLoop,sun.awt.windows.WToolkit.run,j.lang.Thread.run
1 j.lang.Object.wait,sun.java2d.d3d.D3DScreenUpdateManager.run,j.lang.Thread.run
1 j.lang.Object.wait,jx.swing.TimerQueue.run,j.lang.Thread.run
1 j.lang.Object.wait,j.lang.ref.ReferenceQueue.remove,j.lang.ref.ReferenceQueue.remove,sun.java2d.Disposer.run,j.lang.Thread.run
1 j.lang.Object.wait,j.lang.ref.ReferenceQueue.remove,j.lang.ref.ReferenceQueue.remove,j.lang.ref.Finalizer$FinalizerThread.run
1 j.lang.Object.wait,j.lang.Object.wait,sun.awt.AWTAutoShutdown.run,j.lang.Thread.run
1 j.lang.Object.wait,j.lang.Object.wait,j.lang.ref.Reference$ReferenceHandler.run
1 j.lang.Object.wait,j.lang.Object.wait,j.awt.EventQueue.getNextEvent,j.awt.EventDispatchThread.pumpOneEventForFilters,j.awt.EventDispatchThread.pumpEventsForFilter,j.awt.EventDispatchThread.pumpEventsForHierarchy,j.awt.EventDispatchThread.pumpEvents,j.awt.EventDispatchThread.pumpEvents,j.awt.EventDispatchThread.run

Until next time!

Wednesday, March 23, 2011

What's missing in Google Search

Let's face it, most of the world relies on Google Search to find information on the web. I do. In this day and age of Facebook, Twitter, LinkedIn, social bookmarking sites and other "social applications", Google Search is still years behind.

Some basic features that are sorely missing from their flagship product:

  1. Linking to a search result. Even Google Maps has this feature, but Search does not
  2. Creating a bundle of links like Bitly from some selected search results
Why? Because it makes it easier to share research with colleagues and friends. It also helps to bookmark only interesting links when you are looking for some information and not have to wade through tons of results.

I've suggested this feature to Google a couple of times, but it seems to have fallen on deaf ears. I hope at least the Bing team is listening.

This is what I'd really love. To start with, at least:
(If you were wondering, I used Balsamiq to create the mock-up)

Friday, January 21, 2011

Shades Of Gray (Another fix for online reading)

(Mis)Quoting lines from Billy Joel's song "Shades of grey":

Shades of grey wherever I go
.. .
Black and white is [not] how it should be
But shades of grey are the colors I see
It has occurred to me (after being disappointed with the tiny 6" screen of the Kindle) that we spend a lot of time (those of us who do) on the computer staring at bright and mostly white computer screens. We've become accustomed to the brightness of the white backgrounds. I find it quite stressful to read against a white background for long hours.

After spending a few hours searching (alas) online, I found some tricks that have made my computer time even more pleasant.

1) Fix for PDFs - a poor man's ebook reader:
Change the background of all PDFs you read by changing your preferences in Adobe Acrobat Reader. Go to the toolbar "Edit > Preferences > Accessibility > Document color options". Check the box that says "Replace Document Colors" and choose a gray background as shown in the screenshot.

Note the background color - 192-192-192, the magic combination.





















And this is what it will look like. You can view it in full screen mode and almost convince yourself that you are reading an ebook.






















2) Fix for IntelliJ:
Something similar can be done for IntelliJ. Import this JAR file with color settings for IntelliJ 10 using "File > Import settings".























Who said "gray areas" are bad? Enjoy!

Wednesday, January 19, 2011

Making your online reading even more pleasant

What better way to read a whole bunch of articles that you've been saving for later than to "print" it all and read?

I'm a heavy user of Readable and Readability, but nothing beats printing everything into a PDF, logging off and then reading it comfortably on your ebook reader (if you have one, which I don't. Yet). Well..paper if you really have to.

After a lot of searching I found this wonderful addon for Firefox which lets you print all your webpages, html or text files on disk from the command-line. With this tool you can even write a batch file with all your links and print them into PDFs from the command line (via: MozillaWiki).

Once you've generated all your PDFs, you can even merge them all into a giant PDF using this.

And you are all set!

Monday, March 29, 2010

Make your online reading more pleasant

If you spend a lot of time reading online, like me then eye strain is probably your biggest complaint. You can stop worrying, because there's a beautiful tool called Readable.

No, don't worry it's free and does not need any installation. All you have to do is drag a link and drop it on to your Browser's Bookmarks Toolbar.

It turns this .....

 













into this...! It's the same web page, just the style has changed. Beautiful isn't it? You can revert back to the original by just clicking the page.















You can use the theme I use - just drag and drop this link into your Bookmarks and when you are on any web page just click this Readable bookmark. Or you can make one yourself. Here's the actual site with a tutorial - Readable theme setup.

Happy reading!

Sunday, March 21, 2010

Gmail productivity

For a long time, I wanted a simple tool that would merge my to-do list, draft letters and reminders with my email system. About a year or so ago Gmail introduced some nifty features that let me do just that. So, I thought I'd share them with you (a yr later).









First, configure Multiple Inboxes:
Go to Gmail settings and select the Multiple Inboxes tab and then type this in. You just need 1 pane, so add this -in:trash AND (label:to-do OR in:drafts) as the Search query and call the Pane "To do".

[Update: May 9, 2011]
I now have 3 inboxes in addition to the main inbox. This needs 2 labels "to-do" and "constant"
Urgent:
-in:trash AND is:starred AND -label:constant
    
To do:
-in:trash AND -is:starred AND -label:constant AND (label:to-do OR in:drafts)
   
Long term/Constant reminders:
-in:trash AND -is:starred AND label:constant AND (label:to-do OR in:drafts)














Step 2 - Add a Filter to move those emails to the other Inbox:
Well this is all you will need. Don't worry, it's just 1 physical Inbox but different views to your emails.










Step 3 - Enjoy:

Now, you can just send a quick note to yourself from your Blackberry or office desktop to your Gmail account and it will go to the To do list. Even draft emails and blogs that you haven't finished writing will appear in this list. Cool huh?

Cheers!