Official ObjectGraph Blog

Archive for the ‘Uncategorized’ Category

ObjectGraph + Studio Yumi + iPhone = Yum Memory Released!

Saturday, October 11th, 2008

We are happy to announce that our recent collaboration work with Studio Yumi, which is a memory challenge game, Yum Memory, the latest iPhone application and it’s already available at iTunes App Store. Yumi is a talented artist in New York, and she recently opened her gallery. ObjectGraph already scheduled multiple iPhone application series with her original character, “Yummy”.

Yumi with iPhone
Yumi with Yum Memory

Yummy on iPhone
Yumi is showing Yum Memory

Yumi with Yummy
Yumi with Yummy

Yummy and folks
Yumi with her folks

She is widely known as Ram-chan, and she is an ex-vocal of a hip-hop duo, Heartsdales in Japan. A famous animation, Ghost in the Shell’s TV series, “Ghost in the Shell: Solid State Society” featured her song as the opening music.

Download Yum Memory Now!

App Store Download

iRetroPhone ver 1.1 Movie

Sunday, July 27th, 2008

iRetroPhone Version 1.1 released

Saturday, July 26th, 2008

After two weeks of submission, Version 1.1 is ready. This version features:

  • Better Sound Synchronization
  • Cancel Button if you dialed the number incorrectly (with the appropriate sound when you hang up a retro phone)

Also we changed the primary category of iRetroPhone to “Entertainment”

iRetroPhone ready for Sale

Thursday, July 3rd, 2008

Just got approval for Sale of iRetroPhone on the soon-to-be-launched App Store.

iretrophone for sale

iRetroPhone has been digged!

Thursday, July 3rd, 2008

DVICE.com published a nice article for our iRetroPhone which dial numbers on iPhone on the rotary interface.

Haven´t we all been waiting for this?
But seriously.. How many kids nowadays have ever dialled a phone with an actual dial plate?
I think it´s worth while preserving this.

read more | digg story

Accessing Lon/Lat/Alt

Wednesday, April 16th, 2008

I could access Lon/Lat/Alt values from iPhone’s Location Manager class. This is kind neat. I got exact same value that I put my apartment address in google map. When I run this on the simulator, it always returns a address in Santa Clara. Is this Apple’s company building address or something? Let me know if anyone familiar with the address below.

Lon Lat on Simulator

Simulator generates values

iPhone Application Movie - Shake Me 3 times!

Monday, April 14th, 2008

Check out our sample iPhone Application demo movie. It says “boring” after you shake it 3 times.

Arthur C. Clarke passes away

Tuesday, March 18th, 2008

Information is not knowledge, knowledge is not wisdom, and wisdom is not foresight.

Arthur C. Clarke


O’Rielly Maker: Make fun O’Rielly Book Covers

Monday, January 21st, 2008

Make funny book covers that resemble O’Reilly books using the link below.



http://www.oreillymaker.com

We just launched it yesterday and there are already some really funny ones.

Check these out.








Zen of Python

Wednesday, November 7th, 2007

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

iPhone Cake 2.0

Sunday, October 21st, 2007

10_20_07 120.jpg

10_20_07 124.jpg


Happy Birth Day!

django vs rails - Funny

Monday, October 15th, 2007

and yes, we are DJ Ango!

PyScraper: The Python Screen Scraper

Tuesday, September 25th, 2007

I wrote a light weight python based screen scraper, which seems to be working great.

Some of the features:

  • Session Management when using cookies
  • Seperate functions for get,post and downloading large files
  • Automatic handling of redirections

Here is the code for it.

import httplib,urllib,random,sys,re,os
from urlparse import urlparse

class PyScraper:
 def __init__(self):
  self.cookie=""
  self.currenturl=""
  self.urlhist=[]

 def __str__(self):
  ret=''
  for item in self.urlhist:
   ret=ret+item+'->'
  return ret

 def download(self,url,localfolder):
  bufsize = 1024
  self.urlhist.append(url)
  o=urlparse(url)
  scheme,hostname,path,q,query,position=o
  head,fname = os.path.split(path)
  if(query!=''):
   path=path+"?"+query

  conn=httplib.HTTPConnection(hostname)
  conn.request('GET', path,None,{'Cookie':self.cookie})
  resp=conn.getresponse()
  total=int(resp.getheader('content-length'))
  f = open(localfolder+"/"+fname,'wb')
  sofar = 0
  while 1:
   data = resp.read(bufsize)
   f.write(data)
   sofar += len(data)
   perc = (float(sofar)/float(total))
   count = int(perc * 20)
   sys.stdout.write("\r%-30s|%-20s|%3d percent" % (fname,'#'*count,perc*100))

   sys.stdout.flush()
   #sys.stdout.write("\r" + str(sofar) + " / " + str(total))total
   if len(data)==0:
    break
  f.close()
  if(resp.getheader('set-cookie')!=None):
   self.cookie=resp.getheader('set-cookie')
  conn.close()
  if(resp.status==302 or resp.status ==301):
   return self.get(resp.getheader('location'))
  return data

 def get(self,url):
  self.urlhist.append(url)
  o=urlparse(url)
  scheme,hostname,path,q,query,position=o
  if(query!=''):
   path=path+"?"+query

  conn=httplib.HTTPConnection(hostname)
  conn.request('GET', path,None,{'Cookie':self.cookie})
  resp=conn.getresponse()
  data= resp.read()
  if(resp.getheader('set-cookie')!=None):
   self.cookie=resp.getheader('set-cookie')
  conn.close()
  if(resp.status==302 or resp.status ==301):
   return self.get(resp.getheader('location'))
  return data

 def post(self,url,data):
  self.urlhist.append(url)
  o=urlparse(url)
  scheme,hostname,path,q,query,position=o
  conn=httplib.HTTPConnection(hostname)
  conn.request('POST', path,data,
{'Content-Type':'application/x-www-form-urlencoded','Cookie':self.cookie})
  resp=conn.getresponse()
  data= resp.read()
  if(resp.getheader('set-cookie')!=None):
   self.cookie=resp.getheader('set-cookie')
  conn.close()
  if(resp.status==302 or resp.status ==301):
   return self.post(resp.getheader('location'),data)
  return data

Here is some snippet of code on how to use it.

from pyscraper import PyScraper

p=PyScraper()
data=p.get("http://www.yahoo.com/")
print data

Guide to use screencasting to save time of programmers for free

Monday, April 9th, 2007

You might think, “I’m coding guy, not movie guy”, but I know what you hate if you are a programmer: Documentation and Training. I was impressed by some OSS communities, Like Ruby On Rails guys, because they demonstrated the power of screencast in their movies. After I start using screencast softwares, it released me from tons of burdens to explain how-to-use-it for my end users. I save time for training, and user’s undersdanding level increases.

Wink

Wink is a completed package in order to publish your movie tutorial. This is basic steps:

  1. Create a New Project
  2. Select capture area. At this point, you are able to choose rectangle area or each window. This window selection is very neat because it allows me to choose inside tab of my browser.
  3. Hit Shift-Pause to start. Do the same thing to stop.
  4. Edit the movie if you need. You are able to add speech bubbles, rounded rectangle, arrows, and so on.
  5. Render and publish. You might save this project as *.wnk file.


I had some problems to capture my secondaly monitor, but it works pretty well if you use it in regular way. A lot of features are included in this software, but it’s designed to use in minimal steps.

DebugMode



wink.png


CamStudio

CamStudio.org

I had some problems to play video on FireFox 2.0, however it’s quick and easy. Recording steps are minimized.

  1. Hit the record button
  2. Select the capture area and go. It will start recording right after you release button from the rectangle area.
  3. When you stopp it, it will ask you where to save.

After finding Wink, I just use this when I need to dump my screen cast into avi, but it still useful and extream minimized steps to use.


cam.png

CSS Cross Browser Initialization

Sunday, March 11th, 2007

Yahoo YUI developer explains how to absorb gap between various browsers. They recommend to include this css in beginning of your css first.

Click here to get Yahoo YUI website.

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
 margin:0;
 padding:0;
}
table {
 border-collapse:collapse;
 border-spacing:0;
}
fieldset,img {
 border:0;
}
address,caption,cite,code,dfn,em,strong,th,var {
 font-style:normal;
 font-weight:normal;
}
ol,ul {
 list-style:none;
}
caption,th {
 text-align:left;
}
h1,h2,h3,h4,h5,h6 {
 font-size:100%;
 font-weight:normal;
}
q:before,q:after {
 content:'';
}
abbr,acronym { border:0;
}

Seven Habits For Effective Text Editing

Wednesday, March 7th, 2007

Bram Moolenaar who is creator of the Vim gave speech about how to improve your coding experience. He also works at Google in Zurich.




This is very basic but powerful principal he offers:




1. Detect inefficiency

2. Find a quicker way

3. Make it a habit




Google Video

You can download hi-resolution avi version and his keynote here

This is not only about bunch of vim tricks but there are a lot of hints to increase your productivity. Even if you are emacs guy, it’s worth to review his presentation.

New Dictionary Launched

Sunday, March 4th, 2007

I just got some time to fix the CSS and launch ObjectGraph.com with a new design. I learned a lot about CSS during this transformation process.

But the best part is i got a chance to launch the new much improved interface to the ever popular dictionary

Check it out here

http://www.objectgraph.com/dictionary.html


ObjectGraph.com running in a virtual server

Wednesday, February 28th, 2007

With some downtime, i was able to completely move ObjectGraph.com to a virtual server running on an AMD 64 X2 with 4GB of RAM. Looks like dictionary is running very fast after the upgrade.

Moving Physical Machines to Virtual Machines

Sunday, February 25th, 2007

We have an old server that served us well for the past 5 years. It has a 500 MHZ Xeon and makes a lot of noise. Definitely needed an upgrade. Since we already have dedicated linux servers at our hosting facility, this machine was just legacy Windows stuff that i wanted to preserve. I have been using VmWare workstation for a long time and really a big supporter of Virtualization. So we decided to go the virtual server route

I had two options

  • 1. Create a new virtual machine from scratch, Install OS, and move the necessary files
  • 2. Try to create the exact replica of the machine if possible

I started option 1 and then realized its too much work and you always are not sure if you moved everything. Then i found VMWare converter, that just needs the address of the physical machine and creates a virtual machine out of it.

It works by installing a client utility on the remote machine. After the installation is done it starts copying the hard drives to a network volume. This volume needs to be accessible to the source machine.

New Site Design coming soon to ObjectGraph.com

Tuesday, February 20th, 2007

Just started rebuilding the interface for Objectgraph.com using some recently gained knowledge of CSS. Here is the outcome so far.

http://www.objectgraph.com/beta

I just love the new firebug (http://www.getfirebug.com), it has become an indespensible tool for debugging Javascript and CSS