ehsanul | 15 years ago | on: Node.js Guide
ehsanul's comments
ehsanul | 15 years ago | on: A conversation between two chatbots and how one found out the other is an AI.
ehsanul | 15 years ago | on: A conversation between two chatbots and how one found out the other is an AI.
ehsanul | 15 years ago | on: A conversation between two chatbots and how one found out the other is an AI.
However, I am aware that the meaning of AI is always pushed to "whatever we can't yet do". Yet, in this case it's hardly justified to think that these chatbots even slightly challenge Penrose's thesis.
I read the book too BTW, loved it. I'm not sure if he's right, but it's nevertheless a wonderful book and heartily recommend it to all.
ehsanul | 15 years ago | on: A conversation between two chatbots and how one found out the other is an AI.
It somehow got no attention though, when I posted it to HN a long time back. The title matters a bit too much, I remember keeping the original title for my post.
ehsanul | 15 years ago | on: Sequoia gives photo-sharing startup more money than they gave Google
For my own startup-wannabe, I had to pivot because of the same problem: the app would only be useful if millions of people were using it, the way it was originally conceived.
ehsanul | 15 years ago | on: Tempo: a tiny JSON rendering engine
Graceful degradation is less common for JavaScript now than it used to be though. So if you want a smooth web experience, these days you just can't go without JavaScript. I personally don't think that's a horrible thing, but I guess most people who've disabled JavaScript (or use Lynx or something) would disagree.
ehsanul | 15 years ago | on: YC Applicants: What did you put for the "surprising/amusing question"?
ehsanul | 15 years ago | on: Redis: under the hood
What changed since this article was written:
1) The Server structure in the unstable branch is finally divided into sections using comments.
2) The command table is now loaded into an hash table, so the lookup is now O(1) and it is possible to alter the hash table at runtime. This is how we implement ed the command renaming and shadowing in redis.conf.
3) The shared integers are not used when diskstore is enabled, since we need tha t every object is independent with a different LRU timestamp and so forth. But o therwise using the default mode of operations (in memory) shared integers are us ed.
4) Databases are now watched for the implementation of "WATCH" using a better AP I, that is signalModifiedKey().
5) Now we listen to the TCP socket and to Unix socket if configured. The Redis C luster branch (not public) will also listen to an additional TCP port using for cluster message passing.
7) Loading data from disk to memory is now non blocking, we do this re-entering the event loop while loading data.
8) Response reading is now faster and cleaner code, thanks to Pieter's work.
This is a very nice overview. Of course only the surface is covered, there are a lot more things going on in the specific commands, in VM / diskstore command (by far the most complex part of Redis), in specially encoded data types, and in rdb/AOF loading/saving, incrementally expanding hash tables, ...
In just 30k lines of code there is already a lot to take in mind!
Basically I and Pieter already reached the point where we are experts in different areas. We both understand the whole Redis codebase, but for instance he is more expert in the sorted sets and special encoding code, I'm more expert in the diskstore things, and so forth.ehsanul | 15 years ago | on: Multitasking
As an XMonad user with a 15.4" screen, I disagree. For example, when programming, I find it quite easy/fast to alt+1 to my browser for documentation, and alt+8 to go to my 8th workspace, where I usually have a couple terminals open with vim. Or sometimes I'm switching between those two and Gimp on workspace 6.
This doesn't really require XMonad, just having workspaces and quick shortcuts for moving through them is good enough. Most applications are easier to use when you give them the whole screen (at least smaller screens). But yeah, if you're using some sort of taskbar/dock to switch between applications with your mouse, it's probably easier to just have both open together.
ehsanul | 15 years ago | on: Greplin Founder Daniel Gross on amazing story behind building the company
ehsanul | 15 years ago | on: A Week After Google Changes Algo, Mahalo Fires 10% of Staff
ehsanul | 15 years ago | on: Chicken - Portable, Efficient C Compiler for the Scheme Programming Language
ehsanul | 15 years ago | on: Is Tor Safe? Think Again.
ehsanul | 15 years ago | on: Google Forecloses on Content Farms with "Farmer" Algorithm Update
ehsanul | 15 years ago | on: Chrome Developer Tools: Back to Basics
ehsanul | 15 years ago | on: Switching to Plan J (From Scala back to Java)
ehsanul | 15 years ago | on: Changes to my life as a result of just four weeks of daily meditation
They're only about an hour to 1.5 hours long, and there's only 6 of them. They are supposed to be spread over a 6 week period. So every week for six weeks, you need to find an hour to spend listening to the talk for that week.
You will be meditating during part of the talk. Other days, you will meditate 20-30 minutes. This is not a large time commitment, and since you're on HN, I'm guessing you'd be able to manage.
Good luck! The first two talks have been pretty nice so far.
ehsanul | 15 years ago | on: Formula for love: X^2+(y-sqrt(x^2))^2=1
heart = (scale,x,y)->
ctx.beginPath()
ctx.moveTo(x,y)
p1 = [x-75*scale,y+20*scale]
ctx.bezierCurveTo(x-20*scale,y-55*scale,p1[0]-50*scale,p1[1]-55*scale,p1...)
p2 = [x,p1[1]+60*scale]
ctx.bezierCurveTo(p1[0]+25*scale,p1[1]+22.5*scale,p2[0]-35*scale,p2[1]-40*scale,p2...)
ctx.moveTo(x,y)
p1 = [x+75*scale,y+20*scale]
ctx.bezierCurveTo(x+20*scale,y-55*scale,p1[0]+50*scale,p1[1]-55*scale,p1...)
p2 = [x,p1[1]+60*scale]
ctx.bezierCurveTo(p1[0]-25*scale,p1[1]+22.5*scale,p2[0]+35*scale,p2[1]-40*scale,p2...)
ctx.strokeStyle = 'rgba(255,40,20,0.7)'
ctx.stroke()
heart(1.0, 450, 250)ehsanul | 15 years ago | on: Lisp inventor John McCarthy on human progress and its sustainability