ano.malo.us pretty typical actually..

few from flickr piro2008-18piro2008-17piro2008-16piro2008-15piro2008-14piro2008-13piro2008-12piro2008-11

Of Tapasvis and cheap SD card

My mother finished a big Jain sacrifice today. In Jainism, there are 24 tirthankars (or trascended souls) and so my mother did the following: Did K ekasanus (eat a restricted meal and only once a day) in a row where K starts at 1 and ends at 24. So, she did 1 ekasanu, took a break, did two in a row, then a break, then three in a row, break…. all the way upto 24. It took her three years to finish and so today was a pretty big event. There were about hundred people at our house and it was a nice religious ceremony.

During the ceremony, people come up to the tapasvi (ascetic, my mother in this case), wish her well and feed her some food. I took over a hundred pictures and then the memory card somehow failed and the pictures seem to be corrupted. Let that be a lesson — don’t buy a nice camera and then use a cheap memory card.

Bucca Di Beppe means “Lots of food”

Ate at Bucca di Beppe in Livonia. More flare per square inch of wall than any other restaurant I’ve been to. And ginormous portions.

Nodebox

Nodebox is a Mac/Python app for programatically creating graphics and animation, like Processing but with less power but also much simpler to use. I’m currently working on a webapp, Bubble (Bayesian User-Based Biological Learning Environment, natch) that’s written entirely in python. The actual bayesian learning happens using PEBL (Python Environment for Bayesian Learning (see a trend here?)) and the web interface and database are created using the python web framework, Turbogears. So, rather than introducing Photoshop into this all-python party, I decided to create the logo for Bubble using NodeBox. This is the initial draft:

Bubble logo, 1st draft

And it’s created using this script:

size(800, 400)
fill(0)
rect(0,0,WIDTH,HEIGHT)
from math import sin, cos, tan, log10
 
cX = 1
cY = 3.9
x1 = x2 = 100
y1 = y2 = 20
 
helix1 = []
helix2 = []
 
GENE, BINARY = 1,-1
 
for i in range(128):
    x1 += cos(cY)*8
    y1 += log10(cX)*random(2.0,2.2) + sin(cX) * 1
    s1 = 12 + cos(cX)*6    
    helix1.append((x1,y1,s1))
 
    x2 += sin(cY + 60)*8
    y2 += log10(cX)*random(2.0,2.2) + cos(cX) * 1
    s2 = 12 + sin(cX-45)*6
    helix2.append((x2,y2,s2))
 
    cX += .2
    cY += random(.145, .17)
 
def draw(x,y,s,c):
    fill(random(), 0.8, 0.9*c, random(.15,.3))
    oval(x-s/2, y-s/2, s, s*1.2)
    fill(random(), 0.8, 0.9*c, random(.8,.9))
    fontsize(s)
    if c is GENE:
        text(choice(['A', 'G', 'C', 'T']), x-s/2,y+s/2.5)
    elif c is BINARY:
        text(choice(['0', '1']), x-s/2.5, y+s/2.5)
 
 
for i,(h1,h2) in enumerate(zip(helix1,helix2)):
    if i < 20: continue
 
    x1,y1,s1 = h1
    x2,y2,s2 = h2
 
    if (i-20)%20 < 10 and (i-20)%20 > 2:
        draw(x1,y1,s1, GENE)
        draw(x2,y2,s2, BINARY)
    else:
        draw(x2,y2,s2, BINARY)
        draw(x1,y1,s1, GENE)
 
fontsize(150)
font("Chalkboard")
path = textpath("Bubble", 220, 280)
beginclip(path)
for i in range(1500):
    fill(random(), 0.8, 0.9, random(.3, .6))
    x = random(220,800)
    y = random(100,300)
    oval(x,y, random(10,20), random(10,20))
endclip()

Verizon

Boo for competence (trouble porting old number, phone broke within 2 weeks, first bill for $321(yikes!)) but Yay for customer service (real live human within 10 minutes, replaced phone without hassle, fixed billing error, all done with politeness and no attitude).

New Phone

Got new phone today: LG VX8600 from Verizon. iSync doesn’t support it yet, so I downloaded bitpim and had my contacts and calendar in the new phone within minutes. Bitpim even syncs the phone with my google calendar. Let’s me upload mp3s to the phone and download pics. And it’s written in python.

Followed these instructions to setup a free wap proxy and now I’m checking email on my phone. For Free. Cool phone, cool hack and a couple hours of real-work-avoiding procrastination!

I’m a little worried about having a 2 year contract. Here’s to hoping this one doesn’t break soon.

Hello World

I can’t remember how many times I’ve resumed a stale livejournal or blog with great fanfare only to stop posting within a week or two. So, this iteration, minimal fanfare.

This blog is more about getting content into google’s db than about communicating with people. So it’ll be mostly be filled with dry info on managing servers or my experiences with a new python library or something else equally exciting..

Yay!

After →