Google Health
Comments Off Google health launched today and could be really big. The new Google product will let you store and manage all of your health information in one central place. I think this is a great step forward for the online medical community. Sites like webmd are very informative but not personal. I can only imagine the amount of data Google will be able to index now. But hey, it’s free.
I hope Google doesn’t drop the ball on the social side, because it could be really helpful to a lot of people. Let users rate and comment on doctors and perhaps even view your friend’s doctors. Let users exchange medical treatments they tried out and give first hand accounts of medications. I’m tired of going to sites that pretend to be informative when, in actuality, are trying to push a certain new medication or treatment process on you.
- Start tracking a medical history and learn about your conditions
- Import your medical records
- View your medical history
- Find out how medications might interact
- Make your health information work for you
- Search for doctors and hospitals
Find out more information here.
call-with-current-continuation
Comments Off Closures get a lot of the press; so here’s something that many everyday programmers don’t know about.
First off, definitions:
- A Continuation is the computational state of a program (i.e. – function stack, not heap) saved into a data structure for later user.
- A higher order function is a function that takes another function as a parameter; or it is a function that returns a function as its output; or it is both.
- A non-local return is a way to immediately exit a function and transfer control to some point in function stack; similar to goto, but not quite.
call-with-current-continuation is a Scheme higher order function that saves the current computational state, and then executes an abortable procedure (a higher order function passed in as the call-with-current-continuation’s sole parameter); the called abortable procedure, which has only one parameter, is given an escape procedure; calling the escape procedure from within the abortable procedure will execute a non-local return back to its respective call-with-current-continuation; the return value of the call-with-current-continuation is either the natural return value of the abortable procedure or a single value passed to the escape procedure; and call-with-current-continuation is also known by its shorter alias: call/cc.
Example:
; Define some procedure I want to escape from.
(define my_abortable_procedure
(lambda (escape_procedure)
; Do stuff
(+ 1 1)
;nonlocal return
(escape_procedure ‘SOMEVALUE)
(display ‘NEVERREACHED_WHEN_ESCAPE_IS_CALLED)))(display (call/cc my_abortable_procedure))
; displays: SOMEVALUE
; The return value of call/cc is the value either returned by my_abortable_procedure or
; the value passed to escape_procedure
Here’s an example I found showing how one can jump back into a function call instead of escaping it.
(define return #f)
(+ 1 (call/cc
(lambda (cont)
(set! return cont)
1)))
; The above returns 2(return 22)
; The above returns 23
So what’s it all good for? Well, examples of use include Exceptions (e.g. – catch, throw, raise, and rescue), Co-routines, Backtracking, and Cooperative Multitasking.
“But I don’t use Scheme (or Lisp).”
[UPDATE:12JUNE2007] – I just watched the The 90 Minute Scheme to C compiler talk given by Marc Feeley in 2004; part one takes an incredible 10 minute tangent into talking about call/cc (while talking about continuations in general). Definitely watch it for a great explanation.
Media Storage Format of the Future???
Comments Off Every few years or so there’s a new format that is supposed to revolutionize the way we store and transfer our data. In my opinion, storage has progressed in a manner that practically defines Evolution, not Revolution. Wether this is because of consumer quirkiness, Govenrment conspiracy, or Big Biddness reluctance to swerve from the status quo is an interesting question…for another time.
 A student at Muslim Educational Society Engineering College in Kuttipuram, has developed a storage format that has the potential to change the way the world stores data. Time will be the judge of whether or not it has the legs to go the distance, but I love the concept.
So, the short and sweet of it is that using “Rainbow Technology” one can essentially “Print” data onto paper, then it can be “Read” from a scanner. This would mean cheap and disposeable data storage. The article describes “Rainbow Cards” which would be SIM card size and store 5 gigs of data, predicting their cost to be somewhere in the neighborhood of 4 cents US. Sure that’s the manufacturer cost…they’ll probably mark it up at least 50% for consumers.
This concept is the kind of thing that causes the fabled “Nerdrection.” Buying a game or program that is stored on a piece of paper the same size as the reciept, having your resume stored as data on the back of your buisness card, saving a season of your favorite TV show to a couple of sheets of paper…make those Pee-chee folders useful again!
 And anything “Star Wars” related could come printed on Toilet Paper! Hey, George wipes his ass with it. Why can’t we?
I would have linked Star Wars to one of Lucas’ crimes against his fans but I can never decide which he should be shamed by more, the unfinished consistently buggy games, his violation of the original trilogy, or the slightly decreasing sins that he called the prequels.
I guess it’s not that bad
1 Comment Over the years, I had developed an absolute hatred in my heart when it came to Javascript and DOM programming. No one big specific reason, just all the little annoyances: browser incompatibilities, debugging sucked (was tedious), never found any javascript library helpful or easy to use (this includes prototype, MochiKit, and Dojo), etc. Let’s just say that I would have rather gotten teeth pulled using rusty pliers.
But I’ve come to rethink my position… I can now stand, even enjoy, Javascript programming. Wow, what could have possibly happened to me (a once huge Javascript hater) to actually like it now? I give you the three reasons why:
- I started to work the Javascript language as it were actually Scheme (or similar functional language), closures and all.
- I found the Firebug debugging plugin for Firefox. I will never have to use an alert() call ever again
. - And the biggest reason why I changed my mind: I found jQuery. This libary removed all the little pains I listed above, and released me in a way that I could focus on doing #1 above.
Take those three, and mix it up with with a Django powered backend… I am thoroughly confident that Javascript does not suck.
On Programming
2 Comments Learning to design programs is like learning to play soccer. A player must learn to trap a ball, to dribble with a ball, to pass, and to shoot a ball. Once the player knows those basic skills, the next goals are to learn to play a position, to play certain strategies, to choose among feasible strategies, and, on occasion, to create variations of a strategy because none of the existing strategies fits.
– Felleisen, Findler, Flatt, and Krishnamurthi, How to Design Programs: An Introduction to Computing and Programming
One cannot truly be a master until one perfects its basic fundamentals; only then does one attain enlightenment.