From f1bf5b6c0dfb27619d6dec366fc2329a7c1a4b5b Mon Sep 17 00:00:00 2001 From: Dhananjay Balan Date: Sun, 22 Jan 2017 22:30:42 +0100 Subject: [PATCH] intial commit --- .gitignore | 26 ++++ about.rst | 5 + blogng.cabal | 11 ++ contact.markdown | 5 + css/default.css | 56 ++++++++ images/bird_32_gray.png | Bin 0 -> 1376 bytes images/bird_32_gray_fail.png | Bin 0 -> 615 bytes images/code_bg.png | Bin 0 -> 239 bytes images/dotted-border.png | Bin 0 -> 99 bytes images/email.png | Bin 0 -> 301 bytes images/gsoc_2013.jpg | Bin 0 -> 23564 bytes images/haskell-logo.png | Bin 0 -> 5674 bytes images/job_hunt_plot.png | Bin 0 -> 39352 bytes images/line-tile.png | Bin 0 -> 636 bytes images/noise.png | Bin 0 -> 17742 bytes images/rss.png | Bin 0 -> 490 bytes images/search.png | Bin 0 -> 333 bytes index.html | 16 +++ posts/2011-03-21-long-time.markdown | 14 ++ posts/2011-03-24-school-memories.markdown | 12 ++ ...1-03-26-earth-hour-official-video.markdown | 12 ++ posts/2011-03-26-firefox.markdown | 17 +++ ...-01-compski-night-firends-and-fun.markdown | 12 ++ .../2011-04-03-happy-birthday-colin.markdown | 15 ++ ...1-04-05-sharing-the-posterous-way.markdown | 15 ++ posts/2011-04-19-bed-of-roses.markdown | 14 ++ posts/2011-04-20-happy.markdown | 21 +++ posts/2011-04-28-adept.markdown | 27 ++++ posts/2011-05-02-the-story-of-linux.markdown | 12 ++ posts/2011-05-07-gsoc-2011-i-am-in.markdown | 20 +++ ...welcome-to-acm-courtesy-of-google.markdown | 29 ++++ ...2011-05-28-hmm-vacation-work-time.markdown | 11 ++ .../2011-06-04-distributed-computing.markdown | 13 ++ posts/2011-06-05-random-reverbations.markdown | 17 +++ ...1-07-19-birthday-food-for-thought.markdown | 15 ++ posts/2011-08-23-sigsegv.markdown | 19 +++ ...at-you-do-when-you-get-a-free-day.markdown | 23 +++ posts/2011-09-10-good-to-be-back.markdown | 14 ++ .../2011-09-11-nothing-else-matters.markdown | 15 ++ posts/2011-09-16-crazy.markdown | 14 ++ ...-11-ffmepg-nokia-7210-video-clips.markdown | 32 +++++ posts/2011-10-11-latex-on-the-go.markdown | 19 +++ posts/2011-10-28-falling-slowly.markdown | 16 +++ ...-01-09-arrow-keys-input-in-python.markdown | 39 ++++++ ...rogress-bar-in-mercurial-pushpull.markdown | 62 ++++++++ ...hamarassery-mountain-pass-wayanad.markdown | 16 +++ posts/2012-11-21-netbsd-chronicles.markdown | 28 ++++ posts/2012-11-24-my-perfect-terminal.markdown | 23 +++ posts/2012-12-06-rooting-a-nexus-7.markdown | 43 ++++++ posts/2012-12-12-name-your-servers.markdown | 37 +++++ posts/2013-01-01-a-thank-you-note.markdown | 19 +++ posts/2013-05-03-new-home.markdown | 16 +++ ...g-started-with-rtems-on-archlinux.markdown | 100 +++++++++++++ posts/2013-05-28-summer-of-code-2013.markdown | 10 ++ ...13-06-23-debugging-rtems-with-gdb.markdown | 40 ++++++ ...utomatic-log-in-for-act-broadband.markdown | 26 ++++ ...21-syslog-on-mac-os-x-cheat-sheet.markdown | 44 ++++++ ...28-state-of-terminal-2015-edition.markdown | 26 ++++ posts/2015-03-29-notes-on-cgo.markdown | 130 +++++++++++++++++ ...2015-06-30-static-site-generators.markdown | 18 +++ posts/2015-08-22-recursion.markdown | 23 +++ posts/2015-12-01-a-random-rant.markdown | 37 +++++ posts/2015-12-28-swanthathralokam.markdown | 46 ++++++ ...-accidental-shadowing-of-variable.markdown | 132 ++++++++++++++++++ ...6-03-31-finding-a-programming-job.markdown | 60 ++++++++ site.hs | 67 +++++++++ stack.yaml | 67 +++++++++ templates/archive.html | 2 + templates/default.html | 33 +++++ templates/post-list.html | 7 + templates/post.html | 8 ++ 71 files changed, 1706 insertions(+) create mode 100644 .gitignore create mode 100644 about.rst create mode 100644 blogng.cabal create mode 100644 contact.markdown create mode 100644 css/default.css create mode 100644 images/bird_32_gray.png create mode 100644 images/bird_32_gray_fail.png create mode 100644 images/code_bg.png create mode 100644 images/dotted-border.png create mode 100644 images/email.png create mode 100644 images/gsoc_2013.jpg create mode 100644 images/haskell-logo.png create mode 100644 images/job_hunt_plot.png create mode 100644 images/line-tile.png create mode 100644 images/noise.png create mode 100644 images/rss.png create mode 100644 images/search.png create mode 100644 index.html create mode 100644 posts/2011-03-21-long-time.markdown create mode 100644 posts/2011-03-24-school-memories.markdown create mode 100644 posts/2011-03-26-earth-hour-official-video.markdown create mode 100644 posts/2011-03-26-firefox.markdown create mode 100644 posts/2011-04-01-compski-night-firends-and-fun.markdown create mode 100644 posts/2011-04-03-happy-birthday-colin.markdown create mode 100644 posts/2011-04-05-sharing-the-posterous-way.markdown create mode 100644 posts/2011-04-19-bed-of-roses.markdown create mode 100644 posts/2011-04-20-happy.markdown create mode 100644 posts/2011-04-28-adept.markdown create mode 100644 posts/2011-05-02-the-story-of-linux.markdown create mode 100644 posts/2011-05-07-gsoc-2011-i-am-in.markdown create mode 100644 posts/2011-05-14-welcome-to-acm-courtesy-of-google.markdown create mode 100644 posts/2011-05-28-hmm-vacation-work-time.markdown create mode 100644 posts/2011-06-04-distributed-computing.markdown create mode 100644 posts/2011-06-05-random-reverbations.markdown create mode 100644 posts/2011-07-19-birthday-food-for-thought.markdown create mode 100644 posts/2011-08-23-sigsegv.markdown create mode 100644 posts/2011-08-30-what-you-do-when-you-get-a-free-day.markdown create mode 100644 posts/2011-09-10-good-to-be-back.markdown create mode 100644 posts/2011-09-11-nothing-else-matters.markdown create mode 100644 posts/2011-09-16-crazy.markdown create mode 100644 posts/2011-10-11-ffmepg-nokia-7210-video-clips.markdown create mode 100644 posts/2011-10-11-latex-on-the-go.markdown create mode 100644 posts/2011-10-28-falling-slowly.markdown create mode 100644 posts/2012-01-09-arrow-keys-input-in-python.markdown create mode 100644 posts/2012-03-18-progress-bar-in-mercurial-pushpull.markdown create mode 100644 posts/2012-03-29-thamarassery-mountain-pass-wayanad.markdown create mode 100644 posts/2012-11-21-netbsd-chronicles.markdown create mode 100644 posts/2012-11-24-my-perfect-terminal.markdown create mode 100644 posts/2012-12-06-rooting-a-nexus-7.markdown create mode 100644 posts/2012-12-12-name-your-servers.markdown create mode 100644 posts/2013-01-01-a-thank-you-note.markdown create mode 100644 posts/2013-05-03-new-home.markdown create mode 100644 posts/2013-05-28-getting-started-with-rtems-on-archlinux.markdown create mode 100644 posts/2013-05-28-summer-of-code-2013.markdown create mode 100644 posts/2013-06-23-debugging-rtems-with-gdb.markdown create mode 100644 posts/2014-08-16-automatic-log-in-for-act-broadband.markdown create mode 100644 posts/2015-02-21-syslog-on-mac-os-x-cheat-sheet.markdown create mode 100644 posts/2015-03-28-state-of-terminal-2015-edition.markdown create mode 100644 posts/2015-03-29-notes-on-cgo.markdown create mode 100644 posts/2015-06-30-static-site-generators.markdown create mode 100644 posts/2015-08-22-recursion.markdown create mode 100644 posts/2015-12-01-a-random-rant.markdown create mode 100644 posts/2015-12-28-swanthathralokam.markdown create mode 100644 posts/2016-01-14-golang-shorthand-operator-allows-accidental-shadowing-of-variable.markdown create mode 100644 posts/2016-03-31-finding-a-programming-job.markdown create mode 100644 site.hs create mode 100644 stack.yaml create mode 100644 templates/archive.html create mode 100644 templates/default.html create mode 100644 templates/post-list.html create mode 100644 templates/post.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4fe42c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +dist +dist-* +cabal-dev +*.o +*.hi +*.chi +*.chs.h +*.dyn_o +*.dyn_hi +.hpc +.hsenv +.cabal-sandbox/ +cabal.sandbox.config +*.prof +*.aux +*.hp +*.eventlog +.stack-work/ +cabal.project.local +.HTF/ + +# hakyll specific ones +_cache + +# generated content, ignore for now +_site diff --git a/about.rst b/about.rst new file mode 100644 index 0000000..ae3febe --- /dev/null +++ b/about.rst @@ -0,0 +1,5 @@ +--- +title: About +--- + +This is intentianally left blank! diff --git a/blogng.cabal b/blogng.cabal new file mode 100644 index 0000000..2c86769 --- /dev/null +++ b/blogng.cabal @@ -0,0 +1,11 @@ +name: blogng +version: 0.1.0.0 +build-type: Simple +cabal-version: >= 1.10 + +executable site + main-is: site.hs + build-depends: base == 4.* + , hakyll == 4.9.* + ghc-options: -threaded + default-language: Haskell2010 diff --git a/contact.markdown b/contact.markdown new file mode 100644 index 0000000..2065612 --- /dev/null +++ b/contact.markdown @@ -0,0 +1,5 @@ +--- +title: Contact +--- + +Is this really real? diff --git a/css/default.css b/css/default.css new file mode 100644 index 0000000..6efd0dd --- /dev/null +++ b/css/default.css @@ -0,0 +1,56 @@ +body { + color: black; + font-size: 16px; + margin: 0px auto 0px auto; + width: 600px; +} + +div#header { + border-bottom: 2px solid black; + margin-bottom: 30px; + padding: 12px 0px 12px 0px; +} + +div#logo a { + color: black; + float: left; + font-size: 18px; + font-weight: bold; + text-decoration: none; +} + +div#header #navigation { + text-align: right; +} + +div#header #navigation a { + color: black; + font-size: 18px; + font-weight: bold; + margin-left: 12px; + text-decoration: none; + text-transform: uppercase; +} + +div#footer { + border-top: solid 2px black; + color: #555; + font-size: 12px; + margin-top: 30px; + padding: 12px 0px 12px 0px; + text-align: right; +} + +h1 { + font-size: 24px; +} + +h2 { + font-size: 20px; +} + +div.info { + color: #555; + font-size: 14px; + font-style: italic; +} diff --git a/images/bird_32_gray.png b/images/bird_32_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..574f210aec48f6e7a517c86ac71904b08b66391c GIT binary patch literal 1376 zcmbVMZA=?w9KWJ4WMkPzh#8A|9!nq#?Y*@0=-I-0cXTw;jP%T0b^O_hkclfS(rFuGUq@s$Yy2)MuJR?FEhgC+%grTV^!~fq91S{yyWhA z{?GIO{r>NFsLs11Kd&ecf}nhN4eQfZSbuYKw6Bs%{i-dS)#{+?mm+GMlL6!mOAP>a z3tS`c0WO?uxeV+O^iYHk1l6FYmI_INiPLpV2_dGTA;?~ph;gB2pu!EHkry4voeM(< z%!eJwu5u6Ni7}vwuSvGIkR_*ro;sM3WB`|&Fk=X_Vz3oA;bsd-l4US~;TVb$C{7r0k}?w%hQZ4ZqFIx} z5z5E9mThU018Gv#7=@zoc-#~>nsI90z@Q)j-YAb;63Cvo7 z<4z0iWU5Jqu3!iYW42~ER>jgT9HVWt#l~21yc%;7F49FXIAg|X+De-Y5}~QktX~%=pV;4;SJ^UDnI96fFy6ejfb}v<}p_E3K~yE5idsZDM3?G@{vm zJ`F*JPB-feB(B{$`jgO(Z8&IXh2jTJ6-<5wS!>AL0!wWj<-Ga`U2-Y6<*#zMmeb4fs#F_xs48Ve^k(`-}I!ORYO5zU`V% zzxMb*kNR7E)}`0CzLPsPAW~KIXGo_cW!o!v9}N8!Mk z_%Lfe|KW61V%t#9554`$_4oVtUW;tw>4WLvXUsP?-2`{DQrmE=xqoqiZV z5CrycI9vdji^x;QX&FiXcsy>V)9L;ufYNv+B0m7wtrHqV@}($>XV-PJ&H!;7J0h|L zFuv9JLVIJ(>{Oa}0iq~cSeCWz<3=(Sk(A^sfN!VL8Dl)HwciNP(>x=&IUbLGUEPx; z`A+gD0IwFH-1guWXObz&Wn1@`KC22q5CryUH2Q;nHP1-Slv2C4MC&pz91d4K&4GU> z#p#k*0T7XSPxF(qFbv0SNpB^Hm)_x;E+3joexM13p=lSFL<#R4e zMD_rdBwM@o24y6@CUXF=NM-=GSKRH_$QF@x6h(_h01=rRV?2^BfY}WujeqxMVp-cb zj-9%(2c?vE9!Qd8k1LL$F~&QYw4^!!b``jq1)sZ`1IV=2zSi0&>5{A%l=78Qzv>1m z0Oewx8j|GZ^sSWIDW%*7kVTRtwL4S+0Dz(>+zt>~Q4}wi!4rrv<|_dI93qOMN~6~T zxUQQOMd4m7@Slt^?;bC$bvl_$mU*5(lJo%VMWk}qv_43pD0&i+wTL)pVSh52EZgRG z(L-B;Wm&&3LLX)hbbJ$*?*sdAIHYwCjJxjYqrYSq2!*{kg p6S*ttK@UmXdS2jvWQ_4W{|5z_G!U*Lc~SrX002ovPDHLkV1kzGU}^vW literal 0 HcmV?d00001 diff --git a/images/dotted-border.png b/images/dotted-border.png new file mode 100644 index 0000000000000000000000000000000000000000..57f99071a5a2d8563fd725e68248b1eba6b28cb5 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^8bHj*!3HGP#J-sfq&N#aB8wRqxP?KOkzv*x380{; tr;B3&eu&ye$emZL$yD3R&C>SlkL&%z)%hL5YWM zFF5L!n%XYfqV%=j_t)|%-!r`$msNJ}JgS~t&cfYY-?NZUQahX5g{`$qAz?$u#@dMs za#b}Jh_(M^th^MP;pZMZ^V(9sxnVcN9XPM0TP>NV$GL27SzyM2*N=@Y<%-!_=dCK* zq?ak0&~yJ~^nn8{O47^pt$2^?pVVcN<7B8`#3#qa8^Y^--TC3Y)6&bhpUbHv@XlD0 x%5*w&*1>ZNst-v2YgcZz`~TQJYcm5ggBaH#*0ws+B%s$AJYD@<);T3K0RUF4aI*ja literal 0 HcmV?d00001 diff --git a/images/gsoc_2013.jpg b/images/gsoc_2013.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03190d03d04bd10cb8a061984815c87f4dc4baa1 GIT binary patch literal 23564 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

7n&dR`re+bU?y(vz?7 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 X>HVAbB&R;E{r~XkfBhVIHS_-f)~tY^ literal 0 HcmV?d00001 diff --git a/images/haskell-logo.png b/images/haskell-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..97c0937482e1c82c0e2a778f3ab3c4db99edcc4f GIT binary patch literal 5674 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 IGWYuDe^AuAqW}N^ literal 0 HcmV?d00001 diff --git a/images/job_hunt_plot.png b/images/job_hunt_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..374b5f8764ced05bcc17837ef7d6622145fa04f4 GIT binary patch literal 39352 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 literal 0 HcmV?d00001 diff --git a/images/rss.png b/images/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..151ae718ebf78d5a4a2015aa24760e2a6ff76daf GIT binary patch literal 490 zcmVfa!fB6IQ1O25Wn|E z`bJa1lfJrc#Ix2&&Yct~rZrTOMx2b7EtX6RzySN$+ZF6=sVTw$WW_`t7qsZ*v=GuN z4dAE9vj-B_HSFZkcmV2j;UpSZ?m z0_X}HNZgKqBEQKQFOFd0;stDAXHBf+K(cEgih}?%3vdOybApQH{76Zp zy@{6R_`G8CRmphKc*+svAQg8b@T_1Gf^?T6m}x#h!FCd<#eI~@UmH>0hsm7iVoj0z z+Welcome + + + +

Welcome to my blog!

+ +

I've reproduced a list of recent posts here for your reading pleasure:

+ +

Posts

+$partial("templates/post-list.html")$ + +

…or you can find more in the archives.

diff --git a/posts/2011-03-21-long-time.markdown b/posts/2011-03-21-long-time.markdown new file mode 100644 index 0000000..cca5f16 --- /dev/null +++ b/posts/2011-03-21-long-time.markdown @@ -0,0 +1,14 @@ +--- +author: dhananjayishere +comments: true +date: 2011-03-21 01:23:00 +layout: post +slug: long-time +title: Long time. +wordpress_id: 47145570 +categories: Update Posterous +--- + +Its been long time, Almost a year. Lots of things happened. Good and bad, I dont want to recollect and dump all the past here, But future, I promise you to speak about it, :-) + +Im moving to posterous from my old blog (obviously). diff --git a/posts/2011-03-24-school-memories.markdown b/posts/2011-03-24-school-memories.markdown new file mode 100644 index 0000000..37f6c00 --- /dev/null +++ b/posts/2011-03-24-school-memories.markdown @@ -0,0 +1,12 @@ +--- +author: dhananjayishere +comments: true +date: 2011-03-24 07:16:42 +layout: post +slug: school-memories +title: School Memories +wordpress_id: 47147523 +categories: Friends +--- + +[![Ron_01-jan-05_1-43-59](http://dbalan.files.wordpress.com/2011/03/81726-ron_01-jan-05_1-43-59.jpg)](http://dbalan.files.wordpress.com/2011/03/81726-ron_01-jan-05_1-43-59.jpg) diff --git a/posts/2011-03-26-earth-hour-official-video.markdown b/posts/2011-03-26-earth-hour-official-video.markdown new file mode 100644 index 0000000..a44d7e5 --- /dev/null +++ b/posts/2011-03-26-earth-hour-official-video.markdown @@ -0,0 +1,12 @@ +--- +author: dhananjayishere +comments: true +date: 2011-03-26 21:25:00 +layout: post +slug: earth-hour-official-video +title: Earth Hour +wordpress_id: 47451256 +categories: Thoughts +--- + +[youtube http://www.youtube.com/watch?v=4Mxjbip6y04?wmode=transparent] diff --git a/posts/2011-03-26-firefox.markdown b/posts/2011-03-26-firefox.markdown new file mode 100644 index 0000000..710397f --- /dev/null +++ b/posts/2011-03-26-firefox.markdown @@ -0,0 +1,17 @@ +--- +author: dhananjayishere +comments: true +date: 2011-03-26 20:58:00 +layout: post +slug: firefox +title: Firefox 4 +wordpress_id: 47448980 +categories: Debian 'Free software' +--- + +[![Firefox](http://dbalan.files.wordpress.com/2011/03/144e7-firefox.png)](http://dbalan.files.wordpress.com/2011/03/144e7-firefox.png) + +Its been three days Firefox 4 released, and I am still using the beta, +What a shame? Update!! + +Debian users, FInd your cutie pie iceweasel 4 Here : [http://mozilla.debian.net/](http://mozilla.debian.net/) diff --git a/posts/2011-04-01-compski-night-firends-and-fun.markdown b/posts/2011-04-01-compski-night-firends-and-fun.markdown new file mode 100644 index 0000000..6bd8622 --- /dev/null +++ b/posts/2011-04-01-compski-night-firends-and-fun.markdown @@ -0,0 +1,12 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-01 06:08:00 +layout: post +slug: compski-night-firends-and-fun +title: Compski Night - Friends and Fun +wordpress_id: 48042401 +categories: Friends Trivandrum +--- + +[![Me](http://dbalan.files.wordpress.com/2011/04/a9ff5-me.jpg)](http://dbalan.files.wordpress.com/2011/04/a9ff5-me.jpg)[![Img_3093-20](http://dbalan.files.wordpress.com/2011/04/9dafe-img_3093-20.jpg)](http://dbalan.files.wordpress.com/2011/04/9dafe-img_3093-20.jpg)[![Img_3093-17](http://dbalan.files.wordpress.com/2011/04/bfa6a-img_3093-17.jpg)](http://dbalan.files.wordpress.com/2011/04/bfa6a-img_3093-17.jpg)[![Img_3093-0](http://dbalan.files.wordpress.com/2011/04/3bf0a-img_3093-0.jpg)](http://dbalan.files.wordpress.com/2011/04/3bf0a-img_3093-0.jpg)[![Img_3093-2](http://dbalan.files.wordpress.com/2011/04/55f5c-img_3093-2.jpg)](http://dbalan.files.wordpress.com/2011/04/55f5c-img_3093-2.jpg)[![Img_3093-1](http://dbalan.files.wordpress.com/2011/04/2862a-img_3093-1.jpg)](http://dbalan.files.wordpress.com/2011/04/2862a-img_3093-1.jpg)[![Img_3093-3](http://dbalan.files.wordpress.com/2011/04/827eb-img_3093-3.jpg)](http://dbalan.files.wordpress.com/2011/04/827eb-img_3093-3.jpg)[![Img_3093-4](http://dbalan.files.wordpress.com/2011/04/ddc4c-img_3093-4.jpg)](http://dbalan.files.wordpress.com/2011/04/ddc4c-img_3093-4.jpg)[![Img_3093-9](http://dbalan.files.wordpress.com/2011/04/76429-img_3093-9.jpg)](http://dbalan.files.wordpress.com/2011/04/76429-img_3093-9.jpg)[![Img_3093-5](http://dbalan.files.wordpress.com/2011/04/982f5-img_3093-5.jpg)](http://dbalan.files.wordpress.com/2011/04/982f5-img_3093-5.jpg)[![Img_3093-12](http://dbalan.files.wordpress.com/2011/04/b882d-img_3093-12.jpg)](http://dbalan.files.wordpress.com/2011/04/b882d-img_3093-12.jpg)[![Img_3093-10](http://dbalan.files.wordpress.com/2011/04/fa011-img_3093-10.jpg)](http://dbalan.files.wordpress.com/2011/04/fa011-img_3093-10.jpg)[![Img_3093-13](http://dbalan.files.wordpress.com/2011/04/cce9a-img_3093-13.jpg)](http://dbalan.files.wordpress.com/2011/04/cce9a-img_3093-13.jpg)[![Img_3093-21](http://dbalan.files.wordpress.com/2011/04/93fa8-img_3093-21.jpg)](http://dbalan.files.wordpress.com/2011/04/93fa8-img_3093-21.jpg)[![Img_3093-7](http://dbalan.files.wordpress.com/2011/04/3f468-img_3093-7.jpg)](http://dbalan.files.wordpress.com/2011/04/3f468-img_3093-7.jpg)[![Img_3093-8](http://dbalan.files.wordpress.com/2011/04/49cd8-img_3093-8.jpg)](http://dbalan.files.wordpress.com/2011/04/49cd8-img_3093-8.jpg)[![Img_3093-6](http://dbalan.files.wordpress.com/2011/04/5c51e-img_3093-6.jpg)](http://dbalan.files.wordpress.com/2011/04/5c51e-img_3093-6.jpg)[![Img_3093-14](http://dbalan.files.wordpress.com/2011/04/c37ae-img_3093-14.jpg)](http://dbalan.files.wordpress.com/2011/04/c37ae-img_3093-14.jpg)[![Img_3093-15](http://dbalan.files.wordpress.com/2011/04/fd4a4-img_3093-15.jpg)](http://dbalan.files.wordpress.com/2011/04/fd4a4-img_3093-15.jpg)[![Img_3093-16](http://dbalan.files.wordpress.com/2011/04/349f1-img_3093-16.jpg)](http://dbalan.files.wordpress.com/2011/04/349f1-img_3093-16.jpg)[![Img_3093-18](http://dbalan.files.wordpress.com/2011/04/84898-img_3093-18.jpg)](http://dbalan.files.wordpress.com/2011/04/84898-img_3093-18.jpg)[![Img_3093-11](http://dbalan.files.wordpress.com/2011/04/0abbb-img_3093-11.jpg)](http://dbalan.files.wordpress.com/2011/04/0abbb-img_3093-11.jpg) diff --git a/posts/2011-04-03-happy-birthday-colin.markdown b/posts/2011-04-03-happy-birthday-colin.markdown new file mode 100644 index 0000000..fa696b3 --- /dev/null +++ b/posts/2011-04-03-happy-birthday-colin.markdown @@ -0,0 +1,15 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-03 19:16:34 +layout: post +slug: happy-birthday-colin +title: Happy Birthday Colin. +wordpress_id: 48338565 +categories: Friends +--- + +Today was Colins' Birthday, and this is what we gave him - 5 raw eggs +straight on the face. + +[![Img_3153](http://dbalan.files.wordpress.com/2011/04/35c3b-img_3153.jpg)](http://dbalan.files.wordpress.com/2011/04/35c3b-img_3153.jpg)[![Img_3150](http://dbalan.files.wordpress.com/2011/04/18496-img_3150.jpg)](http://dbalan.files.wordpress.com/2011/04/18496-img_3150.jpg) diff --git a/posts/2011-04-05-sharing-the-posterous-way.markdown b/posts/2011-04-05-sharing-the-posterous-way.markdown new file mode 100644 index 0000000..c59e800 --- /dev/null +++ b/posts/2011-04-05-sharing-the-posterous-way.markdown @@ -0,0 +1,15 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-05 15:08:24 +layout: post +slug: sharing-the-posterous-way +title: Sharing the posterous way.. +wordpress_id: 48536674 +categories: College +--- + +For people with no idea, This is our mathematics assignment, shared in +a posterous way. + +[![04042011497](http://dbalan.files.wordpress.com/2011/04/176ee-04042011497.jpg)](http://dbalan.files.wordpress.com/2011/04/176ee-04042011497.jpg)[![04042011498](http://dbalan.files.wordpress.com/2011/04/ffd34-04042011498.jpg)](http://dbalan.files.wordpress.com/2011/04/ffd34-04042011498.jpg)[![04042011499](http://dbalan.files.wordpress.com/2011/04/7c1e6-04042011499.jpg)](http://dbalan.files.wordpress.com/2011/04/7c1e6-04042011499.jpg)[![04042011500](http://dbalan.files.wordpress.com/2011/04/49004-04042011500.jpg)](http://dbalan.files.wordpress.com/2011/04/49004-04042011500.jpg)[![04042011501](http://dbalan.files.wordpress.com/2011/04/98026-04042011501.jpg)](http://dbalan.files.wordpress.com/2011/04/98026-04042011501.jpg)[![04042011502](http://dbalan.files.wordpress.com/2011/04/078bb-04042011502.jpg)](http://dbalan.files.wordpress.com/2011/04/078bb-04042011502.jpg)[![04042011503](http://dbalan.files.wordpress.com/2011/04/cdfbb-04042011503.jpg)](http://dbalan.files.wordpress.com/2011/04/cdfbb-04042011503.jpg)[![04042011504](http://dbalan.files.wordpress.com/2011/04/c8ede-04042011504.jpg)](http://dbalan.files.wordpress.com/2011/04/c8ede-04042011504.jpg)[![04042011505](http://dbalan.files.wordpress.com/2011/04/5141f-04042011505.jpg)](http://dbalan.files.wordpress.com/2011/04/5141f-04042011505.jpg)[![04042011506](http://dbalan.files.wordpress.com/2011/04/cbda6-04042011506.jpg)](http://dbalan.files.wordpress.com/2011/04/cbda6-04042011506.jpg)[![04042011507](http://dbalan.files.wordpress.com/2011/04/d8075-04042011507.jpg)](http://dbalan.files.wordpress.com/2011/04/d8075-04042011507.jpg)[![04042011508](http://dbalan.files.wordpress.com/2011/04/acdf3-04042011508.jpg)](http://dbalan.files.wordpress.com/2011/04/acdf3-04042011508.jpg)[![04042011509](http://dbalan.files.wordpress.com/2011/04/9bf5b-04042011509.jpg)](http://dbalan.files.wordpress.com/2011/04/9bf5b-04042011509.jpg)[![04042011510](http://dbalan.files.wordpress.com/2011/04/2210c-04042011510.jpg)](http://dbalan.files.wordpress.com/2011/04/2210c-04042011510.jpg)[![04042011511](http://dbalan.files.wordpress.com/2011/04/52f62-04042011511.jpg)](http://dbalan.files.wordpress.com/2011/04/52f62-04042011511.jpg)[![04042011512](http://dbalan.files.wordpress.com/2011/04/63b74-04042011512.jpg)](http://dbalan.files.wordpress.com/2011/04/63b74-04042011512.jpg) diff --git a/posts/2011-04-19-bed-of-roses.markdown b/posts/2011-04-19-bed-of-roses.markdown new file mode 100644 index 0000000..6c5f307 --- /dev/null +++ b/posts/2011-04-19-bed-of-roses.markdown @@ -0,0 +1,14 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-19 04:35:25 +layout: post +slug: bed-of-roses +title: Bed of Roses +wordpress_id: 50054557 +categories: Trivandrum +--- + +[![Bedofroses](http://dbalan.files.wordpress.com/2011/04/c8a04-bedofroses.jpg)](http://dbalan.files.wordpress.com/2011/04/c8a04-bedofroses.jpg) + +Back in Trivandrum. diff --git a/posts/2011-04-20-happy.markdown b/posts/2011-04-20-happy.markdown new file mode 100644 index 0000000..3117f5a --- /dev/null +++ b/posts/2011-04-20-happy.markdown @@ -0,0 +1,21 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-20 11:56:22 +layout: post +slug: happy +title: happy +wordpress_id: 50200868 +categories: Friends Thoughts +--- + +[hap-ee] adjective, -pier, -piest. +1.delighted, pleased, or glad, as over a particular thing: to be happy to see a person. + +2.characterized by or indicative of pleasure, contentment, or joy: a happy mood; a happy frame of mind. + +3.favored by fortune; fortunate or lucky: a happy, fruitful land. + +4. apt or felicitous, as actions, utterances, or ideas. + +5. obsessed by or quick to use the item indicated (usually used in combination): a trigger-happy gangster. Everybody is gadget-happy these days. diff --git a/posts/2011-04-28-adept.markdown b/posts/2011-04-28-adept.markdown new file mode 100644 index 0000000..d768330 --- /dev/null +++ b/posts/2011-04-28-adept.markdown @@ -0,0 +1,27 @@ +--- +author: dhananjayishere +comments: true +date: 2011-04-28 06:23:27 +layout: post +slug: adept +title: Adept +wordpress_id: 51072398 +categories: Thoughts +--- + +We all want things to remain same, afraid of change always. set out to +live misery so we can be happy together. I wish I could explain +everything in my damn head and be out of the heavyness I feel now, but +being no natural speaker dont know how to do it without hurting the +dear ones whos life path crosses with mine. + +One thing I learned from all this was to hope something that will +never happen was always an easy way out of the miseries in this world, +cheating is the only way to get out and usually cheating yourself. + +Trying to let it go from my mind, staring at this screen and trying +not to express my feelings outside this window, I understand what is +mean by transfixing between emotions as someone told me before. I +never believed in saving for future but when it comes to taking hard +decisions its better to cry now than later because crying later means +some other is crying now. diff --git a/posts/2011-05-02-the-story-of-linux.markdown b/posts/2011-05-02-the-story-of-linux.markdown new file mode 100644 index 0000000..e799ce8 --- /dev/null +++ b/posts/2011-05-02-the-story-of-linux.markdown @@ -0,0 +1,12 @@ +--- +author: dhananjayishere +comments: true +date: 2011-05-02 03:42:58 +layout: post +slug: the-story-of-linux +title: The Story Of Linux +wordpress_id: 51514829 +categories: Thoughts +--- + +[youtube http://www.youtube.com/watch?v=5ocq6_3-nEw?wmode=transparent] diff --git a/posts/2011-05-07-gsoc-2011-i-am-in.markdown b/posts/2011-05-07-gsoc-2011-i-am-in.markdown new file mode 100644 index 0000000..d7a2d71 --- /dev/null +++ b/posts/2011-05-07-gsoc-2011-i-am-in.markdown @@ -0,0 +1,20 @@ +--- +author: dhananjayishere +comments: true +date: 2011-05-07 10:52:33 +layout: post +slug: gsoc-2011-i-am-in +title: GSoC 2011, I am in. +wordpress_id: 52138307 +categories: +- Free software +- GSoC +- Thoughts +--- + +I am too lazy to do anything these days, it took a long time to get over all that mind set. Sorry for not posting this guys, +I have been selected to this years Google Summer Of Code Program, Under Google Open Source Programs Office, + +This is my proposal + +[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/dhananjay/1](http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/dhananjay/1) diff --git a/posts/2011-05-14-welcome-to-acm-courtesy-of-google.markdown b/posts/2011-05-14-welcome-to-acm-courtesy-of-google.markdown new file mode 100644 index 0000000..cb01d5a --- /dev/null +++ b/posts/2011-05-14-welcome-to-acm-courtesy-of-google.markdown @@ -0,0 +1,29 @@ +--- +author: dhananjayishere +comments: true +date: 2011-05-14 00:37:00 +layout: post +slug: welcome-to-acm-courtesy-of-google +title: Welcome to ACM, Courtesy of Google +wordpress_id: 52982430 +categories: +- Free software +- GSoC +- Thoughts +--- + +So when I opened my mailbox today, this was watinig for me. It may not exactly fall into the type but still kind of first salary to me. + +---------- Forwarded message ---------- +From: **** <[acmhelp@acm.org](mailto:acmhelp@acm.org)> +Date: 14 May 2011 02:47 +Subject: Welcome to ACM, Courtesy of Google +To: [mb.dhananjay@gmail.com](mailto:mb.dhananjay@gmail.com) + + +Dear Dhananjay Balan: + + Welcome to the ACM Community, courtesy of Google! An ACM Student Membership has been created for you, + + + diff --git a/posts/2011-05-28-hmm-vacation-work-time.markdown b/posts/2011-05-28-hmm-vacation-work-time.markdown new file mode 100644 index 0000000..760311c --- /dev/null +++ b/posts/2011-05-28-hmm-vacation-work-time.markdown @@ -0,0 +1,11 @@ +--- +author: dhananjayishere +comments: true +date: 2011-05-28 08:44:00 +layout: post +slug: hmm-vacation-work-time +title: Hmm, Vacation (Work) Time. +wordpress_id: 54729006 +--- + +Finally my exams are over and I am set free to do watever I like. Now I can start working on my GSoC. People say work is what defines a person, his contributions, however small, is what makes his life worthy of living. I am looking forward to a joyful vacation doing what I like the most, some serious hacking and doing my part of work. A million thanks to the creators of the Summer of code program, and also to my mentor, Steffan. You guys rock. diff --git a/posts/2011-06-04-distributed-computing.markdown b/posts/2011-06-04-distributed-computing.markdown new file mode 100644 index 0000000..c8776b8 --- /dev/null +++ b/posts/2011-06-04-distributed-computing.markdown @@ -0,0 +1,13 @@ +--- +author: dhananjayishere +comments: true +date: 2011-06-04 22:48:00 +layout: post +slug: distributed-computing +title: Distributed Computing. +wordpress_id: 55668225 +categories: Boinc Computing GSoC +--- + +Since I got involved with distributed computing for my GSoC some my non technical friends were asking questions about the project, heres an article I suggest you all. I am sure this will solve almost all your questions. +[http://boinc.berkeley.edu/boinc2.pdf](http://boinc.berkeley.edu/boinc2.pdf) diff --git a/posts/2011-06-05-random-reverbations.markdown b/posts/2011-06-05-random-reverbations.markdown new file mode 100644 index 0000000..7a0705b --- /dev/null +++ b/posts/2011-06-05-random-reverbations.markdown @@ -0,0 +1,17 @@ +--- +author: dhananjayishere +comments: true +date: 2011-06-05 00:23:40 +layout: post +slug: random-reverbations +title: Random reverbations. +wordpress_id: 55677606 +categories: Friends +--- + +Never underestimate an old hard disk, this was the lesson I learned this morning, So the hard-earned memories, + + + + +[![Dsc02841](http://dbalan.files.wordpress.com/2011/06/3f39e-dsc02841.jpg)](http://dbalan.files.wordpress.com/2011/06/3f39e-dsc02841.jpg)[![Dsc00853](http://dbalan.files.wordpress.com/2011/06/fef26-dsc00853.jpg)](http://dbalan.files.wordpress.com/2011/06/fef26-dsc00853.jpg)[![0dsc00853](http://dbalan.files.wordpress.com/2011/06/2eedf-0dsc00853.jpg)](http://dbalan.files.wordpress.com/2011/06/2eedf-0dsc00853.jpg)[![Dsc00952](http://dbalan.files.wordpress.com/2011/06/7cda9-dsc00952.jpg)](http://dbalan.files.wordpress.com/2011/06/7cda9-dsc00952.jpg)[![Dsc00954](http://dbalan.files.wordpress.com/2011/06/4784a-dsc00954.jpg)](http://dbalan.files.wordpress.com/2011/06/4784a-dsc00954.jpg)[![Dsc02780](http://dbalan.files.wordpress.com/2011/06/1b6ee-dsc02780.jpg)](http://dbalan.files.wordpress.com/2011/06/1b6ee-dsc02780.jpg)[![Dsc02782](http://dbalan.files.wordpress.com/2011/06/740d5-dsc02782.jpg)](http://dbalan.files.wordpress.com/2011/06/740d5-dsc02782.jpg)[![Dsc02835](http://dbalan.files.wordpress.com/2011/06/c708e-dsc02835.jpg)](http://dbalan.files.wordpress.com/2011/06/c708e-dsc02835.jpg)[![Dsc02843](http://dbalan.files.wordpress.com/2011/06/a3ab0-dsc02843.jpg)](http://dbalan.files.wordpress.com/2011/06/a3ab0-dsc02843.jpg)[![Image0641](http://dbalan.files.wordpress.com/2011/06/6dc4d-image0641.jpg)](http://dbalan.files.wordpress.com/2011/06/6dc4d-image0641.jpg)[![Image0657](http://dbalan.files.wordpress.com/2011/06/fe2ec-image0657.jpg)](http://dbalan.files.wordpress.com/2011/06/fe2ec-image0657.jpg)[![Ron_22-feb-08_5-20-44_pm](http://dbalan.files.wordpress.com/2011/06/b3371-ron_22-feb-08_5-20-44_pm.jpg)](http://dbalan.files.wordpress.com/2011/06/b3371-ron_22-feb-08_5-20-44_pm.jpg)[![Ron_01-jan-05_3-14-39_pm](http://dbalan.files.wordpress.com/2011/06/0c61d-ron_01-jan-05_3-14-39_pm.jpg)](http://dbalan.files.wordpress.com/2011/06/0c61d-ron_01-jan-05_3-14-39_pm.jpg) diff --git a/posts/2011-07-19-birthday-food-for-thought.markdown b/posts/2011-07-19-birthday-food-for-thought.markdown new file mode 100644 index 0000000..a5f1bee --- /dev/null +++ b/posts/2011-07-19-birthday-food-for-thought.markdown @@ -0,0 +1,15 @@ +--- +author: dhananjayishere +comments: true +date: 2011-07-19 06:30:00 +layout: post +slug: birthday-food-for-thought +title: 'Birthday: Food for thought.' +wordpress_id: 64888968 +categories: Thoughts +--- + +[![Me](http://dbalan.files.wordpress.com/2011/07/62d42-me.jpg)](http://dbalan.files.wordpress.com/2011/07/62d42-me.jpg) + + +Turning Twenty.. Still Confused As I was then. diff --git a/posts/2011-08-23-sigsegv.markdown b/posts/2011-08-23-sigsegv.markdown new file mode 100644 index 0000000..4277ec5 --- /dev/null +++ b/posts/2011-08-23-sigsegv.markdown @@ -0,0 +1,19 @@ +--- +author: dhananjayishere +comments: true +date: 2011-08-23 12:54:29 +layout: post +slug: sigsegv +title: SIGSEGV +wordpress_id: 66702565 +categories: Markers Thoughts +--- + +**"Experience is the most brutal of all teachers." + -- C.S Lewis +** +Day I never gonna forget and forgiveness, +not in my hands +Past is it now, +Neither change, +You nor can deny. diff --git a/posts/2011-08-30-what-you-do-when-you-get-a-free-day.markdown b/posts/2011-08-30-what-you-do-when-you-get-a-free-day.markdown new file mode 100644 index 0000000..1517fe3 --- /dev/null +++ b/posts/2011-08-30-what-you-do-when-you-get-a-free-day.markdown @@ -0,0 +1,23 @@ +--- +author: dhananjayishere +comments: true +date: 2011-08-30 06:12:22 +layout: post +slug: what-you-do-when-you-get-a-free-day +title: What you do when you get a free day? +wordpress_id: 67570727 +categories: Thoughts +--- + +By free I never meant something like a holiday you get in ages which +exactly pumps you up. By "free" I meant day you dont have a clue to do +anything. You suddenly find yourself nothing interesting to do. Gets you +bored to the bones. A couple of people can cheer me up these times but unfortunately none +are around. + +I hate it, because it breaks the barriers I've put in mind to the past. +On a blink, mind gets filled with everything that has happened in the +twenty years thats me, and most of them are not good things. + +Writing never been my favorite, but its the only way left. So I am +falling back to my little diary. Nobodys' been a good listener. diff --git a/posts/2011-09-10-good-to-be-back.markdown b/posts/2011-09-10-good-to-be-back.markdown new file mode 100644 index 0000000..b777ebc --- /dev/null +++ b/posts/2011-09-10-good-to-be-back.markdown @@ -0,0 +1,14 @@ +--- +author: dhananjayishere +comments: true +date: 2011-09-10 16:41:46 +layout: post +slug: good-to-be-back +title: Good to be back. +wordpress_id: 69482578 +categories: Trivandrum +--- + +[![20110910_0024_01](http://dbalan.files.wordpress.com/2011/09/78df1-20110910_0024_01.jpg)](http://dbalan.files.wordpress.com/2011/09/78df1-20110910_0024_01.jpg) + +Vacations' over, Good to be back in Trivandrum. diff --git a/posts/2011-09-11-nothing-else-matters.markdown b/posts/2011-09-11-nothing-else-matters.markdown new file mode 100644 index 0000000..b5914bb --- /dev/null +++ b/posts/2011-09-11-nothing-else-matters.markdown @@ -0,0 +1,15 @@ +--- +author: dhananjayishere +comments: true +date: 2011-09-11 14:49:25 +layout: post +slug: nothing-else-matters +title: Nothing Else Matters. +wordpress_id: 69645449 +categories: Thoughts +--- + + **"Our integrity sells for so little, but it is all we really have, It is the very last inch of us.** +**But within that inch...** +**... we are free."** +**--Valerie, V For Vendetta.** diff --git a/posts/2011-09-16-crazy.markdown b/posts/2011-09-16-crazy.markdown new file mode 100644 index 0000000..ae6b2a5 --- /dev/null +++ b/posts/2011-09-16-crazy.markdown @@ -0,0 +1,14 @@ +--- +author: dhananjayishere +comments: true +date: 2011-09-16 13:08:11 +layout: post +slug: crazy +title: Crazy +wordpress_id: 70601600 +categories: Thoughts +--- + +[![Dsc_0120](http://dbalan.files.wordpress.com/2011/09/e3003-dsc_0120.jpg)](http://dbalan.files.wordpress.com/2011/09/e3003-dsc_0120.jpg) + +Yeh, Thats me. :-) diff --git a/posts/2011-10-11-ffmepg-nokia-7210-video-clips.markdown b/posts/2011-10-11-ffmepg-nokia-7210-video-clips.markdown new file mode 100644 index 0000000..802d854 --- /dev/null +++ b/posts/2011-10-11-ffmepg-nokia-7210-video-clips.markdown @@ -0,0 +1,32 @@ +--- +author: dhananjayishere +comments: true +date: 2011-10-11 03:33:00 +layout: post +slug: ffmepg-nokia-7210-video-clips +title: FFmpeg + Nokia 7210 Video Clips. +wordpress_id: 74980538 +categories: GNU/Linux Multimedia Tips +--- + +Nokia 7210 supports video clips of container mp4 with following specifications. + + Video Codec: mpeg4 +Video Size: 320x240 +Bit Rate: 500 +Frame Rate: Auto +Aspect: Auto +Same Quality: False + + Audio: +Audio Codec: mpeg4aac +Bit Rate: 96 +Sample Rate: 44100 +Channels: 1 (Mono) +Disable Audio: False + + So to make a clip playable in phone, + + Use + + ** ffmpeg -i -b 500 -s 320x240 -f mp4 -acodec libfaac -vcodec mpeg4 ** diff --git a/posts/2011-10-11-latex-on-the-go.markdown b/posts/2011-10-11-latex-on-the-go.markdown new file mode 100644 index 0000000..5ea294a --- /dev/null +++ b/posts/2011-10-11-latex-on-the-go.markdown @@ -0,0 +1,19 @@ +--- +author: dhananjayishere +comments: true +date: 2011-10-11 10:18:00 +layout: post +slug: latex-on-the-go +title: LaTeX on the go. +wordpress_id: 75017934 +categories: LaTeX Tips +--- + +This is just another day I thanked web 2.0, this time the story goes like this. + + I needed to prepare a LaTeX document on the go, had no laptop with me and I couldnt find one with LaTeX installed, and installing LaTeX with current internet speeds, was the unthinkable. + + I tried to settle with a word processor, but the idea hit me that I should search web, a simple search took me to [http://duckduckgo.com/?q=online+latex+editors](http://duckduckgo.com/?q=online+latex+editors) + + I selected two links from the top, +[MonkeyTex](http://monkeytex.bradcater.webfactional.com/) has a really simple no frills yet beautiful interface, where [ScribeTex](https://www.scribtex.com/) offer a feature filled one. They also offer paid plans, other than a free plan which restricts you in number of projects and collaborators. diff --git a/posts/2011-10-28-falling-slowly.markdown b/posts/2011-10-28-falling-slowly.markdown new file mode 100644 index 0000000..baad009 --- /dev/null +++ b/posts/2011-10-28-falling-slowly.markdown @@ -0,0 +1,16 @@ +--- +author: dhananjayishere +comments: true +date: 2011-10-28 16:02:00 +layout: post +slug: falling-slowly +title: Falling Slowly. +wordpress_id: 77612351 +categories: Thoughts +--- + +Its a song from the movie [Once](http://www.imdb.com/title/tt0907657/), very beautiful one. The song was exactly +about me. Searching for someone to hold me together, someone who will be +there guiding the sparrow home. + +Then, I found you. diff --git a/posts/2012-01-09-arrow-keys-input-in-python.markdown b/posts/2012-01-09-arrow-keys-input-in-python.markdown new file mode 100644 index 0000000..f578eb1 --- /dev/null +++ b/posts/2012-01-09-arrow-keys-input-in-python.markdown @@ -0,0 +1,39 @@ +--- +author: dhananjayishere +comments: true +date: 2012-01-09 14:30:00 +layout: post +slug: arrow-keys-input-in-python +title: Arrow Keys input in python. +wordpress_id: 93005403 +categories: +- Programing +- Python +--- + +I had an assignment to write an applicaion to control a toy helicopter. It should accept the inputs from the arrow keys and then generate a serial signal. The serial port is connected to the interfacing circutary. + +The major problem I faced was how to take arrow keys as input? Using the technical jargon - implement a non-bufferd input. A code to do it in console can be found [here](http://code.activestate.com/recipes/134892-getch-like-unbuffered-character-reading-from-stdin/). But its dirty and is implemented in a complex way that usage is little bit diffcult. At console level the code becomes more os-specific, as you can see from the above code. It has diffrent defenitions to implement the feature in each os. + +The easy way to do this is using any windowing tool kits around, they all have a key logging abstraction implemented. Like this [code](http://stackoverflow.com/a/4205490). it uses the tkinter toolkit to read input. The way I suggest is using pygame, because it is designed to this stuff. (Which game doesnt have a single use arrow key used?) + +You can get the keys from + +{% codeblock lang:python %} +pressed_keys = pygame.key.get_pressed() +{% endcodeblock %} +and the key name as + +{% codeblock lang:python %} +for key_constant in pressed_keys: + key_name = pygame.key.name(key_constant) +{% endcodeblock %} + +Then its just a matter of comparing them with the key name,( of arrow keys in our case). + +{% codeblock lang:python %} +if key_constant == 'up': + port.write(_up_data) +{% endcodeblock %} + +The complete code is available in [github](https://github.com/dhananjaynav/Scripts/blob/master/castalia/helicontrol.py) diff --git a/posts/2012-03-18-progress-bar-in-mercurial-pushpull.markdown b/posts/2012-03-18-progress-bar-in-mercurial-pushpull.markdown new file mode 100644 index 0000000..f43194a --- /dev/null +++ b/posts/2012-03-18-progress-bar-in-mercurial-pushpull.markdown @@ -0,0 +1,62 @@ +--- +author: dhananjayishere +comments: true +date: 2012-03-18 02:56:00 +layout: post +slug: progress-bar-in-mercurial-pushpull +title: Progress bar in mercurial push/pull +wordpress_id: 112432788 +categories: +- Free software +- Programing +- Revision Control +--- + +I admit I am a huge Git fanatic. Infact I havent used anything else for managing the code (except some checkout from svn). I was trying to build [orange](http://orange.biolab.si/), so I wasnt very happy when I realised they use [mercurial](http://mercurial.selenic.com/wiki/Mercurial) for the revision control (I, like all my fellow programmers is a lazy person to adapt ;-) ). + + The first problem I faced was when cloning the code (checkout, subversion guys!), by default mecurial doesnt give you any progress dialogs. It can get frustrating if you are cloning a substantially large repository. +Good thing is mercurial from 1.5 onwards contains an extensoin for doing this, called [progress](http://mercurial.selenic.com/wiki/ProgressExtension). Only thng is you have to enable it explicitly. + +Note that as per the mercurial documentation,system wide hg configuration file is stored in any of the following paths, + + + +``` +(Unix) /etc/mercurial/hgrc +or + /etc/mercurial/hgrc.d/*.rc +(Windows) Mercurial.ini or(Windows) hgrc.d*.rc +or + HKEY_LOCAL_MACHINESOFTWAREMercurial +``` +and repositroy specific configuration in + +``` +/.hg/hgrc [ from man hgrc ] +``` + +To enable the progress extention, Create the file if it doesnt exist and add the fllowing to it. +``` +[extensions]progress = +``` +This enables the progress extention. You can define the configuration specific to this extention, by creating a sperate section in hgrc named [progress]. Information about thease options can be obtained by executing + + + +``` +[dhananjay@dlab orange]$ hg help progress|head + +progress extension - show progress bars for some actionsThis extension uses the progress information logged by hg commands to drawprogress bars that are as informative as possible. Some progress bars onlyoffer indeterminate information, while others have a definite end point... +``` +For example if you want a progress bar with refresh time 05 second, your hgrc should be like this, + +``` +[dhananjay@dlab orange]$ cat ~/.hgrc +[extensions] +progress = + +[progress] +refresh = 0.5 +``` + +Note: This blog is heavily inspired from [http://stackoverflow.com/questions/308491/show-progress-of-mercurial-push-pull](http://stackoverflow.com/questions/308491/show-progress-of-mercurial-push-pull). diff --git a/posts/2012-03-29-thamarassery-mountain-pass-wayanad.markdown b/posts/2012-03-29-thamarassery-mountain-pass-wayanad.markdown new file mode 100644 index 0000000..fea944a --- /dev/null +++ b/posts/2012-03-29-thamarassery-mountain-pass-wayanad.markdown @@ -0,0 +1,16 @@ +--- +author: dhananjayishere +comments: true +date: 2012-03-29 18:34:38 +layout: post +slug: thamarassery-mountain-pass-wayanad +title: Thamarassery Mountain Pass, Wayanad. +wordpress_id: 116868927 +categories: Trips +--- + +[![Thamarasery](http://dbalan.files.wordpress.com/2012/03/7777a-thamarasery.jpg)](http://dbalan.files.wordpress.com/2012/03/7777a-thamarasery.jpg) + + +A snap from the recent trip. ;) + diff --git a/posts/2012-11-21-netbsd-chronicles.markdown b/posts/2012-11-21-netbsd-chronicles.markdown new file mode 100644 index 0000000..2250a0d --- /dev/null +++ b/posts/2012-11-21-netbsd-chronicles.markdown @@ -0,0 +1,28 @@ +--- +author: dhananjayishere +comments: true +date: 2012-11-21 21:45:00 +layout: post +slug: netbsd-chronicles +title: NetBSD Chronicles. +wordpress_id: 169330104 +categories: NetBSD +--- + +To be frank I wasn't doing much for almost an year, got lazy as one can ever be. Today was the day to break it. Got a little push do something and I got down to do it. I was looking at BSD development for a long time, and thought this is the best time to get involved. I am a total noob at BSD, I never really used one. So it was challenging when I started to install NetBSD into an old Comapq nx6120 that was lying around. I know anyone could get to the root shell easily, with help from brilliant click and go installers, configuring and customizing was the real problem. + +Its 0300 now, and I got my laptop running NetBSD 6.0, and connected to wireless (easier than I thought - thanks to legacy hardware.) + +**Configuring Intel PRO/Wireless ** + +** **Unlike linux, BSD can include all the microcode (firmware) in the distribution itself, due the flexibility of licensing system. Reading up _iwi(4)_ reveals youve to accept the EULA by setting the sysctl variable hw.iwi.accept_eula to 1 + +``` +# sysctl -w hw.iwi.accept_eula=1 +``` + +The university wireless is open, so I didnt had to mess too much. + +``` +# ifconfig ssid "SSID" iwi0 dhclient iwi0 +``` \ No newline at end of file diff --git a/posts/2012-11-24-my-perfect-terminal.markdown b/posts/2012-11-24-my-perfect-terminal.markdown new file mode 100644 index 0000000..6ac1c11 --- /dev/null +++ b/posts/2012-11-24-my-perfect-terminal.markdown @@ -0,0 +1,23 @@ +--- +author: dhananjayishere +comments: true +date: 2012-11-24 05:44:19 +layout: post +slug: my-perfect-terminal +title: My perfect terminal +wordpress_id: 169555417 +categories: +- GNU/Linux +- ZSH +- Terminator +- Archlinux +- Solarized +--- + + 1. Install [ZSH](http://www.zsh.org/) + 2. Install [Oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) + 3. Install [solarized](http://ethanschoonover.com/solarized) color theme [~~for gnome-terminal~~](https://github.com/sigurdga/gnome-terminal-colors-solarized). Shifted to [Terminator](http://software.jessies.org/terminator/) with a [base16](https://github.com/chriskempson/base16) theme. + 4. Install a [powerline patched font](https://gist.github.com/1595572). + 5. Set the zsh theme to [agnoster](https://gist.github.com/3712874). + +Happy Hacking. :-) diff --git a/posts/2012-12-06-rooting-a-nexus-7.markdown b/posts/2012-12-06-rooting-a-nexus-7.markdown new file mode 100644 index 0000000..7e9d37d --- /dev/null +++ b/posts/2012-12-06-rooting-a-nexus-7.markdown @@ -0,0 +1,43 @@ +--- +author: dhananjayishere +comments: true +date: 2012-12-06 18:26:00 +layout: post +slug: rooting-a-nexus-7 +title: Rooting a nexus 7 +wordpress_id: 171074083 +categories: +- Android +- Programing +- Hack +- Rooting +--- + +Lot of posts in the web about this is just bogus, all of them want you +to download a fat rootkit and click on the root.exe :-/ + +Being a developer device, rooting nexus 7 is easy. + +1. Gain developer privilege (figure out yourself :-P) +2. Reboot to bootloader +``` +$ adb reboot bootloader +``` +3. Unlock the bootloader +``` +$ fastboot oem unlock # Might have to be the superuser. +``` +4. Download the recovery image for device from [here](http://clockworkmod.com/rommanager) +and flash it +``` +$ fastboot flash recovery +``` +5. Get the [superuser binary](http://forum.xda-developers.com/showthread.php?t=1538053). +6. Reboot the device and put it in the sdcard (or any storage you have,) +7. Reboot to the recovery and flash it. +``` + $ adb reboot recovery +``` + + +Note: People suggested using this to [keep root priviliges](https://play.google.com/store/apps/details?id=org.projectvoodoo.otarootkeeper&feature=search_result#?t=W251bGwsMSwxLDEsIm9yZy5wcm9qZWN0dm9vZG9vLm90YXJvb3RrZWVwZXIiXQ..) after OTA - diff --git a/posts/2012-12-12-name-your-servers.markdown b/posts/2012-12-12-name-your-servers.markdown new file mode 100644 index 0000000..91f43b3 --- /dev/null +++ b/posts/2012-12-12-name-your-servers.markdown @@ -0,0 +1,37 @@ +--- +author: dhananjayishere +comments: true +date: 2012-12-12 10:51:00 +layout: post +slug: name-your-servers +title: Name your servers. +wordpress_id: 171537089 +categories: +- Terminal +- SSH +- GNU/Linux +- Hack +--- + +If your day involves ssh-ing into various servers, you know how +cumbersome is to type all that details again and again. When the number +becomes large, you tend to confuse between host names, IPs and +usernames. + +But, ssh allows you to alias them into cute nicknames you prefer. + +The configuration file needed to be edited is ``` ~/.ssh/config. ``` + +The sample configuration that should be append to this file for adding +alias _server_ to `user@example.org` is : + +``` +Host server +Hostname example.org +User user +``` + +Now all you have to do is +``` +$ ssh server +``` diff --git a/posts/2013-01-01-a-thank-you-note.markdown b/posts/2013-01-01-a-thank-you-note.markdown new file mode 100644 index 0000000..ecc8a7d --- /dev/null +++ b/posts/2013-01-01-a-thank-you-note.markdown @@ -0,0 +1,19 @@ +--- +author: dhananjayishere +comments: true +date: 2013-01-01 00:28:00 +layout: post +slug: a-thank-you-note +title: A Thank You Note. +wordpress_id: 173304734 +categories: +- Life +--- + +[![4918647118_e1c7e4644f_d](http://dbalan.files.wordpress.com/2013/01/869b2-4918647118_e1c7e4644f_d.jpg)](http://dbalan.files.wordpress.com/2013/01/869b2-4918647118_e1c7e4644f_d.jpg) + +Love makes you see the world a lot different than you used to. Life suddenly gets filled with warm glowing colors. Opens up the each and every long sealed corridors of you heart and makes them beat in rhythm, orchestrating a symphony of life. The amount of happiness your life gets filled with might be the real definition of infinity + +Being in love is a privilege, Gifted by a heart indeed is the greatest ever. Even parting hearts cant take away your happiness. We loose and keep some fragments and memories weaved in golden threads. For me, they will be sufficient to push the emptiness of existence out for a life time. More than enough to remain in love + +_[Photo](http://www.flickr.com/photos/juniperberry/4918647118/sizes/m/in/photostream/) reused under a cc license_ diff --git a/posts/2013-05-03-new-home.markdown b/posts/2013-05-03-new-home.markdown new file mode 100644 index 0000000..3285c18 --- /dev/null +++ b/posts/2013-05-03-new-home.markdown @@ -0,0 +1,16 @@ +--- +layout: post +title: "New Home" +date: 2013-05-03 21:01 +comments: true +categories: +- Posterous +- Update +- Octopress +--- + +I loved posterous. I don't know how I missed it but till the final day I had no clue they were shutting down. It was an hour of panic. I had every itch not to go back to wordpress. It was bloated and just not my thing, and Jekyll was way to much work! + +Then I found Octopress - just the right thing, simply perfect. And it was love at first sight. :) + +Welcome to my new home, [Backtrace](http://dbalan.github.io) diff --git a/posts/2013-05-28-getting-started-with-rtems-on-archlinux.markdown b/posts/2013-05-28-getting-started-with-rtems-on-archlinux.markdown new file mode 100644 index 0000000..8e4d5ce --- /dev/null +++ b/posts/2013-05-28-getting-started-with-rtems-on-archlinux.markdown @@ -0,0 +1,100 @@ +--- +layout: post +title: "Getting started with RTEMS on Archlinux" +date: 2013-05-28 21:24 +comments: true +categories: +- RTEMS +- GSoC +- Archlinux +--- + +The default RTEMS geting started does not cover the toolchain setup as it should be. It either redirects the user to download a ~1 GB distro or some pretty old RPMs. This shouldn't be like this. + +There is an excellent tool called ***rtems source builder*** which can help a newbie setup RTEMS environment in a brisk. This post is the authors journal about how he did it, shared beacuse it might be beneficial to people looking to bootstrap RTEMS. + +RTEMS is a real time operating system. It works on various type of hardware, and a devlopment setup is specific to the hardware of developers choice. Here I will demonstrate setting up a sparc toolchain with b-sis simulator. + +### Setting up toolchain +First step of our RTEMS journey. A toolchain consists of a compiler, linker, debuggger and a simulator for the hardware. We need these tools to compile the RTEMS code and execute our programs. + +This was a painful step in past. Cross compiler environments are nasty to get right. But dont worry, we have our wonderful rtems-source-builder to rescue. + +rtems-source-builder automates the task of setting up this toolchain - it downloads the source files, builds them and installs in the system. It also have the option to make a tarball. + +The actuall steps are documented here - [rtems-source-builder documentation][1], but if you prefer a capsule + +- Setup directories and get source +``` +$ cd +$ mkdir -p development/rtems/src +$ cd development/rtems/src +$ git clone git://git.rtems.org/rtems-source-builder.git +$ cd rtems-source-builder +``` +- Check environment. +``` +$ ./source-builder/sb-check +RTEMS Source Builder environment is ok +``` + +- Build a sparc target +``` +$ cd rtems +$ ../source-builder/sb-set-builder --log=l-sparc.txt / +--prefix=$HOME/development/rtems/4.11 4.11/rtems-sparc +``` +this will produce binaries in `$HOME/development/rtems/4.11` directory. + +__Note__: Default version of makeinfo in archlinux is incomaptible with tools we build, source-builder documentations says + +>Archlinux, by default installs texinfo-5 which is incompatible for building GCC 4.7 tree. You will have to obtain texinfo-legacy from AUR and provide a manual override. + +``` +# pacman -R texinfo +$ yaourt -S texinfo-legacy +# ln -s /usr/bin/makeinfo-4.13a /usr/bin/makeinfo +``` + +### Building RTEMS +- First obtain the RTEMS code from github. +``` +$ cd +$ mkdir -p development/rtems/repo +$ cd development/rtems/repo +$ git clone git@github.com:RTEMS/rtems.git +$ cd rtems +``` + +- Bootstrap the rtems and build code. +``` +$ export PATH=/home/dhananjay/build/rtems/4.11/bin:$PATH +$ ./bootstrap +``` + +- Build a b-sis simulator code. +``` +$ cd .. +$ mkdir b-sis && cd b-sis +$ ../rtems/configure --target=sparc-rtems4.11 --enable-rtemsbsp=sis --enable-tests=samples --enable-posix --prefix=/home/dhananjay/build/rtems/src/ +$ make +``` + +### Running example code. +- Find the sample applications and execute them. + +``` +$ cd sparc-rtems4.11/c/sis/testsuites/samples/hello +$ ls + +hello.exe hello.num hello.ralf init.o Makefile +$ sparc-rtems4.11-run hello.exe + +*** GSOC HELLO WORLD TEST *** +Hello RTEMS World +Dhananjay Balan +*** END OF HELLO WORLD TEST *** +``` +*Update*: Newer versions of RSB builds RTEMS automatically, no manual intervention needed. You can skip this step altogether. + +[1]: http://www.rtems.org/ftp/pub/rtems/people/chrisj/source-builder/source-builder.html "rtems-source-builder documentation" diff --git a/posts/2013-05-28-summer-of-code-2013.markdown b/posts/2013-05-28-summer-of-code-2013.markdown new file mode 100644 index 0000000..a45b859 --- /dev/null +++ b/posts/2013-05-28-summer-of-code-2013.markdown @@ -0,0 +1,10 @@ +--- +layout: post +title: "Summer of Code 2013" +date: 2013-05-28 12:35 +comments: true +categories: GSoC Update RTEMS +--- +{% img /images/gsoc_2013.jpg %} + +Google published summer of code results yesterday. I am happy that I was selected. My project is titled __Better GDB support for RTEMS__, it is mentored by _Ms. Jennifer Averett_ from RTEMS. You can find [my proposal here](http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/dhananjay/35002). diff --git a/posts/2013-06-23-debugging-rtems-with-gdb.markdown b/posts/2013-06-23-debugging-rtems-with-gdb.markdown new file mode 100644 index 0000000..a7d4d89 --- /dev/null +++ b/posts/2013-06-23-debugging-rtems-with-gdb.markdown @@ -0,0 +1,40 @@ +--- +layout: post +title: "Debugging RTEMS with GDB" +date: 2013-06-23 19:40 +comments: true +categories: + - RTEMS + - GSoC + - GDB +--- + +RTEMS is difficult to debug, since the default GDB behaviour follows a language based approch and developer will have to debug the application+RTEMS stack as a whole. We are in process of developing a new set of extenstions for GDB to play nice with RTEMS. The intial code is available in this [github repository](https://github.com/dbalan/rtems-gdb). + +To use the extenstion, + - Clone the repository +{% codeblock lang:bash %} +git clone git@github.com:dbalan/rtems-gdb.git +{% endcodeblock %} + - Assuming you have a working [RTEMS toolchain](/blog/2013/05/28/getting-started-with-rtems-on-archlinux/), spin up the GDB and source the code. +{% codeblock lang:bash %} +$ sparc-rtems4.11-gdb + +GNU gdb (GDB) 7.5.1 +Copyright (C) 2012 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. Type "show copying" +and "show warranty" for details. +This GDB was configured as "--host=x86_64-linux-gnu --target=sparc-rtems4.11". +For bug reporting instructions, please see: +. +(gdb) source path/to/clone/__init__.py +RTEMS GDB Support loaded +(gdb) +{% endcodeblock %} + +Here is a sneak peak of what will be capable: +{% gist 5428535 %} +{% gist 5488653 %} + diff --git a/posts/2014-08-16-automatic-log-in-for-act-broadband.markdown b/posts/2014-08-16-automatic-log-in-for-act-broadband.markdown new file mode 100644 index 0000000..3d0f6f7 --- /dev/null +++ b/posts/2014-08-16-automatic-log-in-for-act-broadband.markdown @@ -0,0 +1,26 @@ +--- +layout: post +title: "Automatic log-in for ACT Broadband" +date: 2014-08-16 19:14 +comments: true +categories: + - scripts + - bangalore + - ACT broadband +--- + +In my openion [ACT](http://portal.acttv.in) is the best ISP in [Bangalore](http://en.wikipedia.org/wiki/Bangalore), I found this network to be much better than any other provider in terms of reliability and the bandwidth, they seem very hacker friendly too, logging in as straightforward as a simple HTTP POST. + +I have this script running in my router so that I never have to bother logging in. + +```bash +#!/bin/bash + +USERNAME="" +PASSWORD="" + +curl --data 'act_username=${USERNAME}&act_password=${PASSWORD}&login=login' \ + http://portal.acttv.in -o /dev/null +``` + + diff --git a/posts/2015-02-21-syslog-on-mac-os-x-cheat-sheet.markdown b/posts/2015-02-21-syslog-on-mac-os-x-cheat-sheet.markdown new file mode 100644 index 0000000..2381d35 --- /dev/null +++ b/posts/2015-02-21-syslog-on-mac-os-x-cheat-sheet.markdown @@ -0,0 +1,44 @@ +--- +layout: post +title: "Syslog on Mac OS X: Cheat Sheet" +date: 2015-02-21 00:41 +comments: true +categories: + - mac + - osx + - syslog + - cheatsheet +--- +This is a quick cheatsheet to work with [`syslog(1)`](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/syslog.1.html) implementation OS X uses. + +`Console.app` provides a nice UI to access logs in mac, you can do some basic filtering and search, but its limited in terms of raw control a terminal gives you. + +`/usr/bin/syslog` can be used to both send and receive logs. Alternatively [`logger(1)`](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/logger.1.html) can be used to send logs to syslog. + +## Print logs from a specific facilitiy +```bash +# -w: similar to tailf +syslog -k Facility local1 -w +``` + +## Sending logs +```bash +# -l severity level +syslog -s "message" +``` + +## Sending logs upstream to another syslog server +Syslog can forward your logs too. The configuration resides in `/etc/syslog.conf`. You can append forwarding rules in this file, format is +``` +# Tab separated +Facility.Level @IPADDR:PORT +``` +After this reload syslog daemon. +``` +sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist +sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plistp +``` + +# Extra reading +1. [`asl.conf(5)`](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/asl.conf.5.html) - Configuration file for Apple Syslog Log (A syslog superset apple implements), this is where all the logic to route logs are set +facility.level diff --git a/posts/2015-03-28-state-of-terminal-2015-edition.markdown b/posts/2015-03-28-state-of-terminal-2015-edition.markdown new file mode 100644 index 0000000..26bdfae --- /dev/null +++ b/posts/2015-03-28-state-of-terminal-2015-edition.markdown @@ -0,0 +1,26 @@ +--- +layout: post +title: "State of Terminal: 2015 Edition" +date: 2015-03-28 00:28 +comments: true +categories: +- computing +- emacs +- osx +- terminal +- zsh +--- +I do this every year to keep track of the changes in my style. This is the first that goes public though + +- I've moved to a __Macbook air 2013__ edition as my primary laptop (a work perk, thanks [@plivo](https://twitter.com/plivo.com)). +- __Emacs__ is the primary editor - I use [el-get](https://github.com/dimitri/el-get) to manage my emacs packages (my `init.el` is [hosted here](https://github.com/dbalan/.emacs.d/blob/master/init.el)), I also use [`mg`](http://homepage.boetes.org/software/mg/) heavily while I'm inside a terminal. +- __iTerm2__ for terminal. (My [cheetsheet for for iterm is availabe here](https://gist.github.com/dbalan/378d2f3e4e6a27f0aae8)) +- __zsh__ for shell, with [antigen](https://github.com/zsh-users/antigen) managing plugins and dependencies. +- __vagrant__ for VMs, I tried using `docker` with boot2docker, but my needs are diffrent. I just need a linux box that runs all the time. +- [__Spectacle__](http://spectacleapp.com/) to manage windows. (Yes, I do miss Xmonad and i3) +- __Firefox__ is the primary browser, sometimes __chromium__ running for some special sites and tasks. +- __Todoist__ is a great app to track todo lists, and the concept of gaming the task completion frequency and awarding points is a joy! +- __Evernote__ everything goes inside this. +- __KeePassX__ manages all my passwords. +- __Tarsnap__ for backups, nuff said. + diff --git a/posts/2015-03-29-notes-on-cgo.markdown b/posts/2015-03-29-notes-on-cgo.markdown new file mode 100644 index 0000000..68458e3 --- /dev/null +++ b/posts/2015-03-29-notes-on-cgo.markdown @@ -0,0 +1,130 @@ +--- +layout: post +title: "Notes on cgo" +date: 2015-03-29 00:28 +comments: true +categories: +- golang +- c +--- + +## Referencing c from go. + +### Basic operation + +import "C" imports the C namespace into go, the comment just above this statement is treated as C. + +```c +/* + #include "add.h" + */ + import "C" +``` +Everything you exported from c library is available in the C namespace. + +```go +func main() { + fmt.Println( + C.add_two_numbers(3,4) + ) +} +``` + +Building code is as easy as `go build` + +Accessing standard types are easy as `C.char`, `C.int`. For complex types, prepend the type name with an underscore at end – e.g `C.struct_stat`. + +### Pointers and memory operations + +Go provides an `unsafe` module. Go’s GC cannot manage the memory allocated in C code, you should call `C.free(unsafe.Pointer)` (`free` is defined in `` ensure that this library is imported) to deallocate. +There are some special functions which convert Go types to C types and vice versa. (lifted from cgo documentation) +```go +// Go string to C string +// The C string is allocated in the C heap using malloc. +// It is the caller's responsibility to arrange for it to be +// freed, such as by calling C.free (be sure to include stdlib.h +// if C.free is needed). +func C.CString(string) *C.char + +// C string to Go string +func C.GoString(*C.char) string + +// C string, length to Go string +func C.GoStringN(*C.char, C.int) string + +// C pointer, length to Go []byte +func C.GoBytes(unsafe.Pointer, C.int) []byte +``` + +### Accessing complex objects + +Accessing structs from Go +```go +/* +struct person { +int age; +*/ +// this can be used in go as +var p C.struct_person +p.age = 23 +``` + +You can also pass pointers + +```go +C.function_accepts_ptr_to_struct(&p) +``` + +Accessing Unions : No native counterpart, instead of converting it to a type, go treats them as a block of memory represented as byte array. Accessing data is done by casting unsafe.Pointer + +```go +/* +union quant { + float weight; + int count; +}; +*/ + +var q C.union_quant +ptr := (*float32)(unsafe.Pointer(&q)) +*ptr = 3.14 +``` + +## Extra goodies + +### Compiler Flags +Compiler flags can be set using the `#cgo` directive. (`CFLAGS`, `LDFLAGS` etc) + +```go +/* +#cgo: LDFLAGS: -lmath +#include +*/ +import "C" +``` + +### Restricting building +In many cases using cgo breaks the portability of your app, use build constraints to specify compatibility in source. Build constraints are comments which begin with + +```go +// +build +``` +Now, build comment must appear before package clause and should be followed by a blank line To restrict building just to Linux with cgo, + +```go +// +build linux,cgo !darwin + +package main +``` + +These are evaluated as `OR` of each constraint so the above line becomes `(linux AND cgo) OR (NOT darwin)`, also multiple build tags can be embedded in file. + +There are other methods to restrict builds, see references. + +## Reference + + - [Link to example code gist](https://gist.github.com/dbalan/ace29f0c43638ee4f81d) + - [cgo Talk by Rajesh Ramachandran (Gophercon India)](https://www.youtube.com/watch?v=oeEVtyypYPg) + - [Conditional compilation with go build](http://dave.cheney.net/2013/10/12/how-to-use-conditional-compilation-with-the-go-build-tool) + - [cgo compiler directives](http://golang.org/cmd/cgo/) + diff --git a/posts/2015-06-30-static-site-generators.markdown b/posts/2015-06-30-static-site-generators.markdown new file mode 100644 index 0000000..546463b --- /dev/null +++ b/posts/2015-06-30-static-site-generators.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Static site generators" +date: 2015-06-30 00:28 +comments: true +categories: +- blogging +- octopress +- meta +--- +I use octopress with github hosting my pages. +Everytime I sit down to write, I have to look up commands in my bash history and read documentation. Its very distracting when you just want to write. + +Maybe its my workflow thats wrong, I should replace all this with a set of small shell scripts :-P, maybe octopress 3.0 (insert another tool) will solve this. + +But at this point I dont even remember which branch in my repo has what, and I should switch to a firendlier paltform (ghost or posthaven) or do a massive cleanup ASAP. + +_EDIT: I finally managed to do that clean up_ diff --git a/posts/2015-08-22-recursion.markdown b/posts/2015-08-22-recursion.markdown new file mode 100644 index 0000000..45a617b --- /dev/null +++ b/posts/2015-08-22-recursion.markdown @@ -0,0 +1,23 @@ +--- +layout: post +title: "Recursion" +date: 2015-08-22 00:28 +comments: true +categories: +- haskell +- recursion +- fibonacci numbers +--- + +```haskell +fibonacci :: [Integer] +fibonacci = 1:1:(zipWith (+) fibonacci (tail fibonacci)) +``` + +Above is a simple function that generates an infinite stream of fibonacci numbers. Its written in haskell. + +This is a piece of code that made me think a lot lately, it make clever use of recursion to define the stream and computes with a linear number of additions. I think its pretty damn sexy! + +## Notes: +- Many thanks to a co-worker who helped me figure this out. +- I hear that there are more efficient ways to compute fibonacci numbers (namley O(logn)). - should investigate this diff --git a/posts/2015-12-01-a-random-rant.markdown b/posts/2015-12-01-a-random-rant.markdown new file mode 100644 index 0000000..708ac89 --- /dev/null +++ b/posts/2015-12-01-a-random-rant.markdown @@ -0,0 +1,37 @@ +--- +layout: post +title: "A Random rant" +date: 2015-12-01 00:00 +comments: false +categories: +- life +- rant +- filesystems +--- + +``` +/me sets +rant +``` +Yesterday, Found an old portable hard disk in the attic. Face lights up. Connect to computer, doesnt work. The connection probabaly fried. Its probabaly the connector, HDD internally uses a `SATA` bus. + +I know what to do, lets oopen the server box and connect to the motherboard. Can’t find any SATA cable. `find sata ~house` + +Finally hard disk plugged in, `FreeBSD` boots. `dmesg` shows everything is alright, except `ext4`. #sigh + +Somebody suggests `fuse`. Alright, thats it then. Compile, `kldld` and booyeah! + +Okay, its full of photos from past. Wow! I need to see them, lets share it to something with a monitor. That’d be my mac. `sshfs`? Sorry dude, you need the whole `XCode` suite and should sacrifice an extra kidney to load unsigned `kext`s. + +But there are other ways of sharing files. `SMB` FTW! + +Why the fuck are there three samba versions in ports. `cd /usr/ports/samba$(random_ver)` + +Okay, samba is setup and mounted, tears + +Nooo - I can’t access the hard disk. Why? huh perms fucking perms! + +I got this! gonna chmod the shit out, but except… it doesn’t work. What the fuck does not implemented mean? + +JFGI. JFGI POints to ext4 code - ext4 fuse is strictly read only. (facepalm) + +Story still continues… diff --git a/posts/2015-12-28-swanthathralokam.markdown b/posts/2015-12-28-swanthathralokam.markdown new file mode 100644 index 0000000..f245f1c --- /dev/null +++ b/posts/2015-12-28-swanthathralokam.markdown @@ -0,0 +1,46 @@ +--- +layout: post +title: "Swanthathralokam '15" +date: 2015-12-28 12:52 +comments: true +categories: + - rationality + - malayalam + - trivandrum + - freethought +--- + +_[Swathathralokam '15](http://swathanthralokam2015.com/) was a conference on rationality and free thought that happened during 24th and 25th of december 2015_ + +This was my first experience of attending a non tech conference. Also, first one with malayalam as the primary language. I have been to conferences which dealt with intersection of technology with other things, like hillhacks and hackbeach. But SL caters to an entirely different crowd. + +I was the only one actively using a laptop, first stint of culture difference. At Least I could tether my mobile internet without interfering wifi APs. Except two of the linux boxes organisers were running, everything else was windows. I guess desktop linux has to catch up a lot more than I previously thought. + +SL is put together by an organisation called “Kerala Freethinkers Forum”, the way this community has come together using social media, esp facebook is amazing. It did push my dilema further about maintaining a facebook account. Definitely delayed the decision to eventually delete the account. Some more thinking is needed. + +The conference had around 20 talks spanned over two days, I found the talks to be dense, more than my feeble brain could process. I had to take an extra break between talks (sadly, missing a part of next one) to reflect on the newly obtained information. + + +Language was a barrier. Malayalm has become a bit more cumbersome to process. I seem to have lost the fluidity in using it, like a machine that has kept unused for long. At this moment giving a formal talk is way too hard for me (this was also, my first malayalam talk) + +I found that out during my ten minute pitch of [Nemo’s Bug bounty for homeopathy](http://captnemo.in/homeopathy/). I had to switch languages - which I'm afraid got interpreted as an elitist talk. Anyway, it did produce results. I got to meet [Dr. Manoj Komet](https://www.researchgate.net/profile/Manoj_Komath) who has written [many articles against homeopathy](http://yukthiyugam.com/tag/manoj-komath/) and state of health sciences in general. I am going to go through all the content he pointed out and do something about it. + +I got [one more donor for bug bounty](https://github.com/captn3m0/captn3m0.github.com/pull/8) as well. :-) + +These were my favourite talks from SL - + +Megha's talk on __"Phantoms in human nature"__ was a spot on because I just finished _"Thinking fast and slow"_ and was scouring _LessWrong_ for more content. She did a good job of explaining. I enjoyed talking to her post session very much. + +Nishad's Talk on __"Wason selection task and rational thinking"__, He introduced wason selection task and went ahead to explain _Necessary and sufficient conditions_. The simplicity in which he introduced the math behind was amazing. + +__"Luca, Luci and me"__ was a talk by Dr. KP Aravindan on evolution. It was refreshing to go through those contents again. It made me dig up my old notes from my brilliant genetics teacher [a grad student in genetic engineering at that time] and refresh them when I was home. + + +_I was told that recordings will be uploaded to youtube soon. Will try to link them as soon as they are up._ + +There was an open forum on _"Family and rationality"_. I felt it contained way too much anecdotal statements (of kind “I have this experience so I support this worldview of family”). It was also loosely structured, making it a bit difficult to follow. I guess that's the difference between a debate and an open forum(?). I don't think it helped me much. I would have been much happier with a proper debate with bit more moderation. The gender parity was at the forum was another concern. There were fewer women speakers. + +Last but not least, I did encounter some cool tech in the conference venue. The org tech team, [Rahul](https://www.facebook.com/2ar.rahul), [Abhay](https://www.facebook.com/abhai.sasidharan), and [Akhil](https://www.facebook.com/profile.php?id=100009322327244&fref=ts) setup a [live feed using gstreamer](https://gist.github.com/ar-rahul/50b5044aca38918223e7). They used UDP multicast to stream the feed to monitors in surrounding buildings. It worked very well, except for a bit noisy audio signal due to poor earthing. + + +Overall, it was a nice conference,met a lot of old friends, made few new ones. perfect way to start the winter break. diff --git a/posts/2016-01-14-golang-shorthand-operator-allows-accidental-shadowing-of-variable.markdown b/posts/2016-01-14-golang-shorthand-operator-allows-accidental-shadowing-of-variable.markdown new file mode 100644 index 0000000..bd28809 --- /dev/null +++ b/posts/2016-01-14-golang-shorthand-operator-allows-accidental-shadowing-of-variable.markdown @@ -0,0 +1,132 @@ +--- +layout: post +title: "go: `:=` operator causes accidental shadowing" +date: 2016-01-14 21:13 +comments: true +categories: + - go +--- + +Go provides `:=` operator to make declaring variables easier. It is a [shorthand to declare and set a value of a variable](https://golang.org/ref/spec#Short_variable_declarations). for example, + +```go +var x int +x = 42 +``` +can be written as + +```go +x := 42 +``` +But if not careful, this can accidently shadow variable bindings. Let's look at the fictitious piece of code. + +```go +package main + +import "fmt" + + +func fictitiousFunc() (int, error) { + return 42, nil +} + +func main() { + x := 10; + x, err := fictitiousFunc() + if err != nil { + fmt.Println("I'll never print") + } + fmt.Println("value of x: ", x) +} +``` +This produces following output + +``` +value of x: 42 +``` +While, this following piece of code will fail to compile + +```go +package main + +import "fmt" + +func fictitiousFunc() (int, error) { + return 42, nil +} + +func main() { + x := 10 + // replace := + var x int + var err error + x, err = fictitiousFunc() + if err != nil { + fmt.Println("I'll never print") + } + fmt.Println("value of x: ", x) +} + +``` +output: +``` +prog.go:12: x redeclared in this block + previous declaration at prog.go:10 +``` +So we can see that the operator is somewhat intelligent, and does not redeclare the variables. + +Now what if we push it down a scope? See the following code + +```go +package main + +import "fmt" + + +func fictitiousFunc() (int, error) { + return 42, nil +} + +func main() { + someCondition := true + + x := -1; + + if someCondition { + x, err := fictitiousFunc() + + if err != nil { + fmt.Println("I'll never print") + } + + fmt.Println("value of x inside: ", x) + } + + fmt.Println("value x outside: ", x) + +} +``` + +This produces, +```go +value of x inside: 42 +value x outside: -1 +``` + +At line: 16, since the immediate scope (line:15-32) does not have variable `x` declared, `:=` is redeclaring the variable. a.k.a the __variable `x` gets shadowed__. + +Only workaround I can think of is not to use `:=`, i.e change the code to +```go + if someCondition { + var err error + x, err = fictitiousFunc() + + if err != nil { + fmt.Println("I'll never print") + } + + fmt.Println("value of x inside: ", x) + } +``` + +If you know something better let me know. diff --git a/posts/2016-03-31-finding-a-programming-job.markdown b/posts/2016-03-31-finding-a-programming-job.markdown new file mode 100644 index 0000000..79bc424 --- /dev/null +++ b/posts/2016-03-31-finding-a-programming-job.markdown @@ -0,0 +1,60 @@ +--- +layout: post +title: "Finding a programming job" +date: 2016-03-31 17:01 +comments: true +categories: + - progamming + - job +--- + +** TL;DR** My learning from job hunting as a programmer._ + +Sometime ago I decided that I need a change of scenery and decided to look for new gigs. + +My current job is my first real job after university. Looking back, now that I've more experience of the hiring process, I feel landing it was ridiculously easy ! So you can see job hunting is a quite new territory for me. This is in no way a definitive guide for finding a job; merely my experience. + +I've couple of friends who insist it's a sellers market - but there are lot more variables that are at play. + +The first obvious approach was to apply to all the companies I care about. Fill up the forms in `https://company.com/careers`. Turns out this is far from truth. Almost no one replied, so I started scouring job boards. + +Here is the data from my experiments + +{% img /images/job_hunt_plot.png %} + +I did my due diligence before applying to these companies, reading the job description thoroughly, googling a bit about the engineering, etc. Even then, the conversion rate to an interview is really really small. Most of the organisations don't reply at all. + +This are the things I picked up from my efforts - + +## Write a good cover letter. + +This is really important if you are applying via email. In the beginning, my cover letters were mostly focused on my interest in the position and organisation with resume which talked about the profile and work experience. The moment I started moving more info into the cover letter, response rate increased. Its OK if you end up duplicating information, try to cram more info onto the letter without increasing the word count much. + +Also, be very open about your status, if you'd need sponsorship for VISA, mention it in the beginning itself, saves time for both you and the organisation. + +## Automate all possible things + +Nobody has time to write a billion emails and manage regular work, so automate them. In my case I separated my cover letter into parts that are common and specific to a position. + +Then I wrote a small script that reads the email and the specific bits from an spreadsheet and sends out application emails. + +## Use the network + +This is so far the best option to search for a job. Friends can give you a direct connection to a prospective employer. Also, conversion rate is really huge because the recommender often has a good idea about job and the candidate. + +## Find a real person + +The job descriptions usually is too generic and most times there'll be hidden requirements. Find a direct contact in the company and ask about their current stack, engineering workflow and exact needs. This person can also turn out to be your biggest ally in the process. + +## Get a good calendar application + +Interviews mean lots of meetings spanned across multiple time zones, so add everything to a calendar and stick to it. Pay extra attention to time zone conversions. + +## Get over with rejection + +There are plenty of reasons to get rejected, and it may not be anything you control. Maybe the company is going through a restructuring, maybe the position is no longer available or the all time favourite VISA restrictions. + +Important thing is to get feedback so that you can fix all possible issues. [Interviewers are generally hesitant to give feedback](https://www.quora.com/Why-do-interviewers-refuse-to-give-valuable-feedback-to-rejected-candidates-after-interviews). But there is no harm in asking. + + +_thanks [@technikhil](https://twitter.com/technikhil), [@imdonatello](https://twitter.com/imdonatello), [@tsudot](https://twitter.com/tsudot) and [@\_gsin\_](https://twitter.com/_gsin_) for reading the draft._ diff --git a/site.hs b/site.hs new file mode 100644 index 0000000..2751f77 --- /dev/null +++ b/site.hs @@ -0,0 +1,67 @@ +-------------------------------------------------------------------------------- +{-# LANGUAGE OverloadedStrings #-} +import Data.Monoid (mappend) +import Hakyll + + +-------------------------------------------------------------------------------- +main :: IO () +main = hakyll $ do + match "images/*" $ do + route idRoute + compile copyFileCompiler + + match "css/*" $ do + route idRoute + compile compressCssCompiler + + match (fromList ["about.rst", "contact.markdown"]) $ do + route $ setExtension "html" + compile $ pandocCompiler + >>= loadAndApplyTemplate "templates/default.html" defaultContext + >>= relativizeUrls + + match "posts/*" $ do + route $ setExtension "html" + compile $ pandocCompiler + >>= loadAndApplyTemplate "templates/post.html" postCtx + >>= loadAndApplyTemplate "templates/default.html" postCtx + >>= relativizeUrls + + create ["archive.html"] $ do + route idRoute + compile $ do + posts <- recentFirst =<< loadAll "posts/*" + let archiveCtx = + listField "posts" postCtx (return posts) `mappend` + constField "title" "Archives" `mappend` + defaultContext + + makeItem "" + >>= loadAndApplyTemplate "templates/archive.html" archiveCtx + >>= loadAndApplyTemplate "templates/default.html" archiveCtx + >>= relativizeUrls + + + match "index.html" $ do + route idRoute + compile $ do + posts <- recentFirst =<< loadAll "posts/*" + let indexCtx = + listField "posts" postCtx (return posts) `mappend` + constField "title" "Home" `mappend` + defaultContext + + getResourceBody + >>= applyAsTemplate indexCtx + >>= loadAndApplyTemplate "templates/default.html" indexCtx + >>= relativizeUrls + + match "templates/*" $ compile templateBodyCompiler + + +-------------------------------------------------------------------------------- +postCtx :: Context String +postCtx = + dateField "date" "%B %e, %Y" `mappend` + defaultContext diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..a1efa8b --- /dev/null +++ b/stack.yaml @@ -0,0 +1,67 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# http://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# resolver: ghcjs-0.1.0_ghc-7.10.2 +# resolver: +# name: custom-snapshot +# location: "./custom-snapshot.yaml" +resolver: nightly-2016-10-31 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# - location: +# git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# extra-dep: true +# subdirs: +# - auto-update +# - wai +# +# A package marked 'extra-dep: true' will only be built if demanded by a +# non-dependency (i.e. a user package), and its test suites and benchmarks +# will not be run. This is useful for tweaking upstream packages. +packages: +- '.' +- '../../public/hakyll' +# Dependency packages to be pulled from upstream that are not in the resolver +# (e.g., acme-missiles-0.3) +extra-deps: [] + +# Override default flag values for local packages and extra-deps +flags: {} + +# Extra package databases containing global packages +extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=1.3" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor diff --git a/templates/archive.html b/templates/archive.html new file mode 100644 index 0000000..b43eeb2 --- /dev/null +++ b/templates/archive.html @@ -0,0 +1,2 @@ +Here you can find all my previous posts: +$partial("templates/post-list.html")$ diff --git a/templates/default.html b/templates/default.html new file mode 100644 index 0000000..c3dd400 --- /dev/null +++ b/templates/default.html @@ -0,0 +1,33 @@ + + + + + + + My Hakyll Blog - $title$ + + + + + +
+

$title$

+ $body$ +
+ + + + diff --git a/templates/post-list.html b/templates/post-list.html new file mode 100644 index 0000000..71cf1b9 --- /dev/null +++ b/templates/post-list.html @@ -0,0 +1,7 @@ +
    + $for(posts)$ +
  • + $title$ - $date$ +
  • + $endfor$ +
diff --git a/templates/post.html b/templates/post.html new file mode 100644 index 0000000..bf0f826 --- /dev/null +++ b/templates/post.html @@ -0,0 +1,8 @@ +
+ Posted on $date$ + $if(author)$ + by $author$ + $endif$ +
+ +$body$