Everything's Beta

things I don't get to do at work :)

Archive for the ‘no-code’ Category

Release & iterate and codereviewr PuSH support

without comments

I have recently been working on CodeReviewr. It’s motivated by the need to have a place to easily stick up code and discuss it with minimum hassle. I have rewritten the code numerous time using various platforms(from mochiweb to node.js to tornadoweb) towards multiple goals (collaborative coding, reviews, etcs) as I succumbed to feature creep, premature optimization, not built here, et al.

Anyway, a couple of weekends back I decided to just deploy it so that we could use it for rackjam. I don’t consider it even close to finished. For eg, you have to refresh in order to see comments you just made (ack), and there is no documentation on how to use it. But, it’s finished enough. I decided to stop trying to release something perfect and go with the release and iterate model. So, I rounded off the minimal feature set and let dog fooding sort out the priorities.

A few weekends later, I am still adding features. BUT, these are user driven requirements. And I have a website that people are using :) It’s surprisingly good motivation to keep trying to make something better when you see people actually using it. Driven by feedback, I have added support for multiple versions, diffs between versions, better diff visualization, ability to download raw files, free private domain support etcs etcs. Funnily enough, I still haven’t been asked to fix commenting to address the refresh annoyance! More than anything else, this has taught me the importance of release+iterate as opposed to trying to imagine complete use cases. Of course, I will throw in real time comment updates in there, but not before the core featureset.

But this blog post isn’t only about extolling the virtues of MVP, release+iterate, dog-fooding blah blah blah. It’s about a new feature I have been asked to add; the ability to get emails when a review or set of reviews you are interested in changes. Before beginning this task, I wanted to make sure that sending subscribers updates should be as painless and decoupled from the current code as possible. The web app really shouldn’t care who gets updated and how. And anyway, I definitely don’t want the webapp sending email. So, my ideal solution is 1 line of code fire off an event so w/e subsystem or subsystems are in charge of updates inform interested parties as (and when) they see fit. I also wanted the update management subsystems to be as pluggable as possible. The first thing that I thought of was a message queue(à la beanstalkd) where I push out messages whenever an update occurs. Interested consumers could then process the message and send updates to whomever and however they wanted. All the logic in handling the complexity in delivering the message would be solely in the consumers, the webapp fires [off an event] and forgets. Sounds pretty perfect. Could we do better? Enter PubSubHubBub. (I’m going to assume you know about it, or will do the required research to get up to speed if you are interested). After some prototyping I decided to go with it because

  • It met the 2 requirements I set forth.
  • It’s easy.
  • And, it allows me to have an interim solution for free that
    was good enough (rss feeds).

So after adding rss feeds to reviews (append .rss to the url) and subdomains (/feed.rss), creating a hub at superfeedr, and adding the 1 line of code to ping the hub when there is an update, I am 100% there w.r.t providing users with a way to receive updates and 80% there w.r.t email alerts. All I have to do now is to write bots that will subscribe to the hub and push out notifications through w/e medium people want. The best thing about this is CodeReviewr is now PubSubHubBub capable so anyone else can subscribe to the hub right now if they don’t want to wait for me to implement the bots they want :)

Written by srijak

May 9th, 2010 at 9:53 pm

Posted in Uncategorized,no-code

Tagged with

How I stopped worrying and started loving my iPad

without comments

I got a nice little surprise yesterday from my girlfriend; a 32GB iPad. And, now that I’ve played with it, I think I understand why it’s such a great device. Yeah, I know, it doesn’t have X amount of RAM, Y input ports, and is a closed system etcs. I, too, scoffed at this “crippled” device and bemoaned various things missing that, if only they were present, would make it BE-AWESOME.

But, after owning it for a day+ish, I think I get where I was wrong. The reason I, and many others, get mired in these comparisons is because we think that the iPad is meant to be a smaller laptop. It’s not. Whereas, on a laptop you can do both content creation and consumption, the iPad is primarily a content consumption device; you can watch movies, play games, listen to music, read books, but you really can’t edit or create anything of the sort.

And that’s perfectly fine. Think of it as a TV on steroids, rather than a downsized laptop. For lots of people, especially during their personal time, content generation really isn’t what they spend time doing. Despite this, the average computer is designed more for content generation than consumption.

If you think you are primarily a producer rather than a consumer, you may be surprised. I know I was. I went through the entire weekend, reading books, checking email etc. on my new iPad without missing my laptop in the least. Yeah, I need my laptop to code and I could never be without one, but the iPad fills a lot of gaps I lug my laptop around for.

A side effect of having a consumption only device is that now I can manage my time better. While I am on my laptop, I may be on hacker news or reddit for hours before realizing how much time I have wasted. However, by restricting the consumption activities to my iPad and productive ones to my laptop, I find it a lot easier to get more done :)

TL;DR: If you don’t think the iPad is great, then you probably don’t get it. You may need to get it to get it.



P.S: No, I dont think I am suffering from the Stockholm syndrome.

Written by srijak

April 4th, 2010 at 10:46 pm

Posted in no-code

Tagged with

Easy session management

with one comment

I hardly ever shut my laptop down as I don’t want to bother opening up all my applications again.
So, I just hibernates/wake up instead. The last time I actually rebooted was Sept. 2009. Unfortunately, this hasn’t had a good effect on my battery.

not good

I did a few quick searches but couldn’t find a simple session management app for OSX.
And since I haven’t written anything for cosmcoa, I figured this is the perfect excuse to start.
So, let me present the aptly named “sm” a simple session management app for OSX.

smPrefs

Setup sessions as you want. When you launch a session, all apps in that sessions will be started. Restore your workspace with minimum hassle. You can do so as shown below through the status bar menu, or through the “Manage Sessions” list (select the app or session you want to launch and press “Launch”)

smMenuLaunch

Should be good on 10.5+, but I’ve only used it on Snow Leopard.  Download now.

Possible improvements I may add later: ability to provide customer arguments to apps, timed session start-up, strict mode (only apps in the currently running session are allowed to run),  auto-update, auto-start on boot. But, its functional enough for now :)

p.s: this is the first OSX app I have tried to write. If it crashes etcs, don’t get mad. Instead, send me a bug report and I’ll fix it :)

Written by srijak

January 9th, 2010 at 6:46 pm

Posted in no-code

Tagged with , ,

Me Likey

without comments

One of, if not *the*, book(s) in computational linguistics is Foundations of Statistical Natural Language Processing by Christopher Mannin and Hinrich Schuetze. I have been working my way (slowly) through this book for a personal project and feel its value to the point where I am seriously considering buying it (current copy is from the library).

Anyway, I went over to Amazon and decided to look see what other books the authors had out which lead me to Intro. to Information Retrieval

Seems like an interesting book right? But, with books like these being pretty expensive, its hard to justify buying one out right. If I did that with all the books I felt like checking out I would be much (much) poorer. So, like we all do, I fired up google to see if I could find a google books version. I found something even better: the book’s site containing a wealth of online resources including free PDF copies. Perfect.

Even as increasing number of books (SICP, Real World Haskell etcs) have an online version for free(*legally*), I think it’s laudable that the authors are doing this.

I like to buy books that are worth keeping for years so I really appreciate being able to vet what I spend my money and shelf space on.

Note to publishers: providing a free online version of a book makes it more likely that I will buy the dead tree version.The catch is the book cant be a throwaway/one time read so YMMV.

Written by srijak

August 20th, 2009 at 10:31 pm

Posted in no-code

Tagged with

Starting Erlang on osx

with one comment

Here’s some quick info on getting started with Erlang on osx:

Installation: Forget macports etc. just compile it from source :

curl http://www.erlang.org/download/otp_src_R13B.tar.gz
tar -xvfz otp_src_R13B.tar.gz
cd otp_src_R13B.tar.gz
./configure --enable-hipe
make
sudo make install



Editor/IDE:
I use aquamacs of course.
But beyond that, I don’t have a definitive answer here.
I am evaluating Distel and Erlang mode that comes with the distro.

ErlangXCode looks interesting, but I haven’t given it a go yet.



Written by srijak

July 20th, 2009 at 7:17 pm

Posted in no-code

Tagged with ,

Emacs line numbers

without comments

*Emacs. Yeah. No line numbers. Pretty annoying.

Amoung the various choices this one is the one that works/feels the
best: linum.el

I added (global-linum-mode 1) to my preferences.el (aquamacs) so that line numbers are on by default.

To save you the hassle of reaching your decision in a more protracted manner here is what you need to know : Aquamacs is free and better(er) than textwrangler/bbedit etcs.

Trust me.




*Using aquamacs. Moved to (aqua|e)macs because I just got a macbook pro. And it doesn’t have pg-up/pg-down/home etcs. Which supplied me with the needed shove. Assign caps lock to control sooner than later. Life/efficiency++. Stopping staccato sentences soon-ish.

Written by srijak

October 31st, 2008 at 2:23 pm

Posted in no-code

Tagged with , ,

Hello world!

without comments

first post.

Trying out Prolog.

Seems like swi-prolog is the way to go.
Better emacs mode: Prolog mode for (X)Emacs

Written by srijak

October 30th, 2008 at 12:58 pm

Posted in no-code

Tagged with