Wednesday, February 16. 2011
Let us take a this hypothetical situation. You have to serve a web
page. You want the whole page to be sent back in 500 ms
(milliseconds). If your user has a good network and he is not too far
from your webserver, you can further assume that around 50 ms will be
spent on the network. This means that you have 450 ms to collect all
the data about this web request, do the fancy manipulations
(sorting/filtering/updating files etc.) and serve it to the user. You
need to make four external calls to get this data - 2 of them to an
external web service and 2 of them to your own database.
Now assume that one of your external webservice calls take one second
to send back the result 50% of the time and one of your database
queries can take upto a second to give back the result 25% of the
time. What will you do to make sure none of your users ever have to
wait for more than 500 ms to get back the page? (500 ms excludes the
time taken to download the images/css/do fancy javascript magic).
Read more on my website
Sunday, January 3. 2010
I am in love with the book Higher-Order Perl, especially the technique in the Chapter 2: Dispatch Tables.
Wednesday, August 12. 2009
Today morning I came across this piece of writing -
Does GPL still matter?. The whole article is based on a few anecdotes
from CEOs and marketing droids. They have gotten quite a few points
wrong in the article.
GPL is a developer friendly license. The basic premise of the GPL is
that the user should not subtract from the freedom he gets when
redistributing software. GPL is not restrictive. It merely insists
that whoever takes from the common pool must contribute back to the
pool.
I would like to point to these 2 articles in support of GPL -
Wednesday, July 15. 2009
I attended the Hackers and Founders meetup yesterday. It was a high
energy meetup and I liked it. When I walked in, I was already 2 hours
late but there were still quite a few people around. I walked in,
took a name tag and tried to "merge in". Merging was easy - the folks
were friendly and did not mind if you joined the discussion.
Some observations
- I did not have a good answer for "what are you working on right
now"
. This made me realize that from a technology
perspective, I have not worked on anything interesting for some
time now. I have tinkered with a few things in the past 6 months
(man!), but have not really done a deep dive on any of them.
- There was a focus on programming language in the group. I am not
sure if the choice of a programming language is really a big deal
when creating a webapp. Rails, PHP, Python, Perl, Java - all have a
good web framework. One of the arguments was that it would be
difficult to organize PHP code in a coherent manner. In my
opinion, that is a matter of discipline instead of language.
- I did not find people thinking of totally different ideas. Or
maybe, the folks were not telling those ideas
. The ideas
floated around ads, community, social networking, websites etc.
- I am not a unique case when it comes to the case of creating a
startup. A few folks there had a regular job and were planning on
side projects.
Saturday, December 27. 2008
I am using a Mac now, and this blog post is brought to you by the same php and lisp scripts that I was using on my linux box. Cheers! 
Tuesday, November 11. 2008
Have you read the man malloc page recently? Did you notice this section there
Recent versions of Linux libc (later than 5.4.23) and GNU libc
(2.x) include a malloc implementation which is tunable via
environment variables. When MALLOC_CHECK_ is set, a special (less
efficient) implementation is used which is designed to be tolerant
against simple errors, such as double calls of free() with the same
argument, or overruns of a single byte (off-by-one bugs). Not all
such errors can be protected against, however, and memory leaks can
result. If MALLOC_CHECK_ is set to 0, any detected heap corruption
is silently ignored; if set to 1, a diagnostic is printed on
stderr; if set to 2, abort() is called immediately. This can be
useful because otherwise a crash may happen much later, and the
true cause for the problem is then very hard to track down.
So, you can do export MALLOC_CHECK_=1 and malloc will
print debugging messages to the stderr.
Monday, October 20. 2008
I have created a emacs major mode, called lunatech-journal, that I use
for blogging. It is a derived mode from muse-mode, an excellent mode
for writing and publishing.
Currently, it has following functions defined
lunatech-journal-skeleton - loads a skeleton for blogging
lunatech-journal-show-hints - shows a buffer with questions to help me blog about my day
lunatech-journal-make-html - creates a html file from the muse-mode
lunatech-journal-preview - allows me to preview my journal in the browser
I use a php script to post the blog entry to the website. To use it, I have the following in my .emacs file
(defun journal ()
(interactive)
(find-file "~/blog/journal.muse")
)
(require 'lunatech-journal)
(add-to-list 'auto-mode-alist '("journal\\.muse\\'" . lunatech-journal-mode))
When I feel the need to blog, I do M-x journal, I get dropped into my
journal file and I can blog.
Links:
|