Wednesday, June 14, 2006

Maemo 2.0

Maemo is the software platform the Nokia 770 runs on. It is based on Debian and gtk with lots of great modifications for a handheld device. Nokia just recently released a beta version of its new software on maemo.org. There are a great number of detailed reviews already written.

The most prominent new feature of OS2006 is the inclusion of IM and VoiP capabilies through jabber by way of Telepathy and Galago. This is old news to anyone who has followed the development of 2.0.

There are screenshots in the above links for people looking at seeing the apps in action.

I am very pleased to see how well integrated presence/IM is into the existing functionality of the n770. For starters, I think the presence interface in the menu was a stroke of genius. It has an easy factor, which will make signing in not a chore. Though, I would like to be able to set available ("On") messages though in addition to Away status messages.

I also like the integration of contact management into the side menu.

Having been using the IM client (haven't tried voice yet) for the past day I would have to say that the following are my most desired features.

Although maemo integrates all my jabber contacts into my contacts database it does not populate that data with vCard information, which would be amazing. Instead I have to manually type people's names into the contact window. When you have hundreds of contacts this becomes quite a burden. Additionally, the left hand column in the chat view should contain all contact details for that user, their status message and other pertinent information.

Labels:

Wednesday, April 5, 2006

Leaving AIM

Most of you have gmail accounts. Not a ton of you use GTalk. By the end of the summer, one month after I return I will log on to AIM/MSN/ICQ for the last time. After this, if you care to talk to me, please log into gmail/gtalk/jabber and talk to me there. As it stands now, I'm usually online via my work jabber account (aka firstinitiallastname@google.com the same as my usual gmail account name.) more than any other account anyways, this just makes it official.

Labels:

Thursday, September 22, 2005

New things to do.

I'm bored with xmpp2blogger now that it works well enough (for me). Since I'm still on a jabber/xmpp kick; I think I'm going to try to implement a JEP. Because I've been meaning to try twisted since I read about it last year on the way to California, I think I'm going to use Idavoll2 for the pub-sub part of my chosen JEP. Thinking further on this subject, to coordinate with my other current interest Plazes and my idea mentioned previously, and since its pretty simple, I'm going to implement JEP-0080.

Labels:

Thursday, September 15, 2005

Plazes and Jabber

This is not directly related to the api, but it would be most awesome if plazes used the XMPP uri schema as outlined @ JEP-0147 for the "J" "Send Jabber Message" in a user profile, if the user themselves had a jid registered in their profile. Like so:

Scenario 1:
User A: jabber: usera@example.com in their profile
User B: jabber userb@example.com in their profile

if either user looks at the other's profile, the J button will be an xmpp URI.

Scenario 2: User A jabber usera@example.com in their profile
User B no jabber id in their profile

If user B look's at user A's profile the J would be a link as you have it now. If user A looks at user B's profile, then plazes.com should use the user's assigned JID user@plazes to send the message internally, through the plazes.com web interface and messages to user A should be routed externally to their client.

I wonder what other plans plazes has in store for jabber interaction? I think it would be amazing if it used JEP-0080 (or JEP-0112) to provide @plazes jid users geolocation presence via xmpp.

Labels:

Sunday, August 28, 2005

Future Plans

I've gotten the blogger bot working about as solidly as I wanted it to. Its time to look into ATOM over XMPP and see how in the world that works. I still want to figure out how to support "conversations" with the bot such that there can be a question response question flow to user interactions as opposed to the command args method I use for interaction now.

It'd be nice to be able to have something like this:
me: post an entry
bloggerIM: What is the title of the entry
me: This is my title
bloggerIM: Your title is "This is my title." What would you like your post to say?
me: This is my post. I like this new bloggerIM conversation thing
bloggerIM: Now posting:
This is my title
This is my post. I like this new bloggerIM conversation thing
bloggerIM: Successfully posted entry #12345432354352435

Wouldn't that be nice! I don't know what exactly the best way to implement this without a massive sort of rewrite of the bot architecture.

Labels:

Wednesday, August 24, 2005

xmpp2blogger running as bloggerIM@gmail.com

I am running a test instance of my script on this server. Don't use it if you are not going to do so at your own risk. The passwords for accounts are not stored on disk so if the script restarts you must reregister.

I am now dealing with a formatting issue related to escaping html entity chars: <:, >, and & . . . I don't have a good idea of which path to take.

(04:02:31) me: ?
(04:02:32) bloggerim: You've reached a bot, I don't know what to do, so I'm going to tell you a few things.
Unrecognized Command! Valid Commands:
"use blog #####" Change which blog you default to using.
"delete entry #####" delete's an entry from your registered blog
"get entry #####" get the details of a particular post.
"get recent" get the titles and ids of the 15 most recent posts.
"get all entries" get the titles and ids of the all your posts.
"register username password blog_id" Use this to register a blogger
  account and blog to your jabber ID. Please note, this password is stored
  unecrypted on the server's disk. People with access to this server have
  access to the password. Only use this bot if you trust me; meaning . . . its
  probably not the best idea.
"unregister #####" Remove your blogger account details from this bot's database.
"get details" Get information about your registered blog, including
  title, id and last modified date.
"post" Post an entry to blogger.com on your registered blog.To successfully post, you would compose a message with "post entry" online one. The next line is the title, leave it blank for no title. Anymore text in the messsage is considered the body of your post.
"search TERM" search your blog for entries containing your term
(04:08:27) me: register jlapenna password 8675309
(04:08:27) bloggerim: Registering Blog . . .
(04:08:27) bloggerim: You have registered blog #8675309 as jlapenna
(04:08:27) bloggerim: Retrieving Blog Details . . .
(04:08:31) bloggerim: Joe LaPenna's Stuffs
  Don't blame me for reading this.
http://joelapenna.com/blog
Last Modified: 2005-07-18T05:00:00Z
Blog ID: 8675309
(04:08:42) me: search XMPP
(04:08:44) bloggerim: Results for XMPP:
XMPP Reading List (111125535275998998)

atom test (111854651847889769)

Things I would like to do. (111009939072894544)

mod_python request objects & caching (111497181797955680)

Too damn busy (112338791560376163)

gaim & jabber (111518882106858954)

Psi (111564453712206139)

The weekend (112468508488472037)

(04:08:50) me: get entry 111854651847889769
(04:08:50) bloggerim: Retrieving Entry . . .
(04:08:51) bloggerim: Title: atom test
Issued: 2005-06-11T22:21:58-05:00

<div>
<div>Tonight I'm going to make an xmpp bot to be used for posting to blogger. The first part is getting the
    ATOM API to work, which, it seems is
    working now. In fact, this very post was posted using python and the API!
    </div>
</div>

Labels:

Sunday, August 21, 2005

The weekend

Title:The weekend Friday night I went with some guys from work to the Bottom Lounge to see Pretty Girls Make Graves. I would tell you how the show was but unfortunatly it was sold out. As a resu< we instead just hung out, ate at Pick Me Up's and walked around a bit. I returned home to the burbs and promptly went to sleep.

Saturday was nothing special either. I spent the morning/afternoon working on xmpp2blogger, my jabber bot and ATOM api for python. In the evening I went downtown again, this time to hang out with my buddy Chris's place. We walked around a bunch, got some pizza, watched the Family Guy movie and talked about Jesus . . . and how he's a tricky guy. There was this one time Jesus and I saw this guy with two cigarettes; one tucked into each ear. So I went up to him and asked, "Hey, can I bum a cig?" The guy was totally cool about it and handed me one. He then reached to his other ear to grab the second cigarette but there was nothing there. Jesus tapped him on the shoulder smiled and lit the cigarette he had taken when the guy was handing me his other one. The guy almost cried.

Lately I've been toying with the idea of registering a domain and hosting all of my friends websites. Kind of like a community hub for my group of friends. If people would be interested, I'd do it . . . Give me the word.

On the xmpp/blogger front, I've spend a good couple of hours hammering out the fixes needed to use the SVN version of pyxmpp. Additionally, I threw together a command line tool so that I can easily write my post in vim and upload. I'm hitting an awful bug when trying to connect to some jabber servers where pyxmpp throws an exception while doing some stream manipulation:

[jlapenna@zane] $ python2.3 blogger_bot.py -s joelapenna.com jlapenna@joelapenna.com 'password'
jlapenna@joelapenna.com/xmpp2blogger password joelapenna.com 5222 True
*** State changed: resolving 'joelapenna.com' ***
*** State changed: connecting ('68.78.96.105', 5222) ***
*** State changed: connected ('68.78.96.105', 5222) ***

Connected

Processing
/usr/lib/python2.3/site-packages/libxml2.py:2897: FutureWarning: %u/%o/%x/%X of negative int will return a signed string in Python 2.4 and up
  return "<xmlNode (%s) object at 0x%x>" % (self.name, id (self))
*** State changed: tls connecting <JID: u'joelapenna.com'> ***
*** State changed: tls connected <JID: u'joelapenna.com'> ***
No handlers could be found for logger "pyxmpp.StreamTLSMixIn"

Disconnecting
Traceback (most recent call last):
  File "blogger_bot.py", line 492, in ?
    bot.Start()
  File "/home/jlapenna/src/code/xmpp2blogger/xmpp_bot.py", line 146, in Start
    self.loop(10)
  File "/usr/lib/python2.3/site-packages/pyxmpp/client.py", line 240, in loop
    act=stream.loop_iter(timeout)
  File "/usr/lib/python2.3/site-packages/pyxmpp/streambase.py", line 619, in loop_iter
    return self._loop_iter(timeout)
  File "/usr/lib/python2.3/site-packages/pyxmpp/streambase.py", line 629, in _loop_iter
    ifd, _unused, efd = select.select( [self.socket], [], [self.socket], timeout )
Now is the time to investigate.

Labels:

Saturday, August 6, 2005

Too damn busy

Alright, I'll admit it, I've gone too far over the edge. Too busy. Too little time. Too much stuff. Too little sleep. Too much to do. Too distracted. Too easily tired. Too boring.

This summer, as I've been ranting and raging about has been filled with three things: Work, School and Sleep. They are not the three things I wanted them to be. We're entering the second week of August and for the most part, this summer I've done the following:

  1. Worked
  2. Studied
  3. Hung out with friends four times
  4. HUNG OUT WITH FRIENDS ONLY FOUR TIMES!
  5. See above
I wanted to:
  1. Hang out with friends every weekend
  2. Work on my programming projects, xmpp related as mentioned ---->
  3. Travel to another city
  4. Gone on a road trip with people
  5. Meet more people
  6. Spend more time in the City

Labels:

Tuesday, July 26, 2005

100th Post

Calculus is still death.
Work is quite tiring, big deadline coming up soon.
No time to work on xmpp2blogger.
Much needed hangout time this past Saturday/Sunday with my friends, Real Ultimate Fun
I have ninja AT google dot com as an email addy at work.
I want to work on the jabber wiki, but no time.
I want to publish my webcode for my music player daemon service running on my home server.
I am now alergic to my bedroom, this is not good.
I need to go to New York, I need a friend to come with me.

Labels:

Tuesday, July 5, 2005

Jabberwoky

Jabber Wiki So funny! hahahahahahaha

Peter Saint-Andre posts about the reopening of the Jabber Wiki

Joe LaPenna makes a mostly not funny post about it.

Labels:

Saturday, June 11, 2005

atom test

Tonight I'm going to make an xmpp bot to be used for posting to blogger. The first part is getting the ATOM API to work, which, it seems is working now. In fact, this very post was posted using python and the API!

Labels:

Monday, May 9, 2005

Psi

I've recently (read two days ago) switched from gaim to Psi, something akin to trading a friend of five years for a some new person that may or may not be as cool. I did this for the betterment of mankind though, so I feel less bad about it. As trite as that may sound, jabber/xmpp is going to get big in a serious way and I hope it brings a better communication experience to the internet.

I have AIM transports set up, so you can still reach me on AOL IM, but I hope you consider a switch. I understand if its not ready for you, but I hope I can start making things more approachable, first though I have to learn C++ to an extent greater of being able to *mostly* read "Hello, World!" Lucky for me, I know a Psi developer to ask questions if I need assistance with figuring out the Psi code base. Unfortunate for me is the fact that most of the little things that I can think of right now are already implemented in Psi, so my ideas of starting very small are potentially thwarted.

In other news, I've been listening to this band thing, Stereolab that suddenly found its way onto my mp3 player. Ah ha! I found out where it came from. I blame one of my coworkers from whom I copied a ton of music. She did it, blast! The pirate strikes again!

Well, time to go wait for my taxi.

Labels:

Tuesday, May 3, 2005

gaim & jabber

I use gaim as my primary IM client due to its multi-protocol support and the fact that I've been using it for five years and habits are hard to kill.

A while back I submitted a minor patch (3 lines, with some help from some of the developers on that, so I would even hasten to say that I wrote the patch) for a dns whitespace issue. Due to my growing interest in jabber, I want to see gaim support more XMPP features. The first one I decided to try and tackle is resource priority. I sent an email to the devel list requesting commentary on the proper implemnattion of priority in gaim and solicited a couple of possible options. We'll see how things go.

Looking at the source this time around things seem a bit easier. I blame this in part upon Chris since he's been helping me understand C a bit more. (For all the ladies out there, yep, Chris is a geek, you need not talk to him anymore all hope for him is lost).

There are two options for setting/supporting resource priority in gaim. One method is tie it to the account, and allow the client to have only one priority no matter what status it is set to. Eg, no matter if you're Away, DND, Missing, or Available the client would always have the same priority and would always have messages routed to/past it when another client with lower/higher is online.

The other option is have priority tied directly to status, so that all different statuses will have variable priorities; an example of this would be if you were away for your client to have a -100 priority but if you were available a 5 priority, that way if you were on said client and around then you'd get messages routed for anything with a priority less than 5, but if you were to set it to away, you'd more than likely not get any messages as they'd be routed to a different higher priority resource. This second method seems to be what the gaim developers had in mind when sprinkling the little bits of priority code in the jabber protocol plugin thinger.

Labels:

Sunday, May 1, 2005

mod_python request objects & caching

How can I set no-cache on requests served by mod_python? I am having this agravating issue of image caching that causes images that rotate in my photo gallery to show up un-rotated even though the rotated image is sitting on disk. I think the solution to this would be to set up an image handler in apache that will serve No-Cache no-cache and Pragma no-cache headers to image GETs . . . but that means no caching.

So it think the only valid solution would be to make a handler that dealt entirely with my photo gallery stuff, no more using the publisher handler. This has the makings of an interesting project.

A project for another day, because I have to get back to my XMPP/jabber (not-yet-existant) work.

Labels:

Distracted

I've been distracted the past month with massive quantities of work, its time to get back to doing stuff with jabber. Really, I will.

On another note, it looks like I'm not getting accepted to UofI @ Chicago. I struggled with the regular physics cirriculum; but that of course is not good enough, I need the 200 level sequence. I did poorly in Calc; I need to complete Calc 2,3 and Differential Equations. I could also do for more CS coursework. How many years do I have to spend at community college before I can even try to go to a real school? Probably sixteen.

Labels:

Friday, March 25, 2005

Goals for the weekend

2005-3-27 1pm
Shoot, I'm more than 75% through the weekend and I haven't read either of the JEPs I wanted to. On the plus side, I did get to work on building my environment for the Something that I am coding. Eg, I got the Java VM & SDK installed. Ready to rock out with my . . .
2005-3-27 1pm
Well, got Service Discovery read. Very not complex. Next step, MuC.

Labels:

Saturday, March 19, 2005

XMPP Reading List

Today I begin my foray into XMPP. I've been "using" jabber for a number of years now. (Reality: Signed up for an account at jabber.org . . . never talked to anyone on it) It is time to figure out a way to contribute.

Here is my reading list

Wow, That's a lot of reading. 3921 Took me most of today, starting at around 10am and ending around 8:40pm. I'm surprized I didn't stop. I'd have to say the most complex thing in the entire pair of RFCs are presence subscriptions, even then, the general concepts around it are not complex just the if/then/else logic required for proper privacy rules.

I'm surprized about the privacy lists IQ set/result mechanism, I assume that like most of what I've read today that XMPP tries to follow the anti-perl method of there is more than one way to do anything. With this in regard, it makes sense I suppose to only support full list writing versus modififying privacy lists. (No Deltas allowed). This is a wierd semantic given that rosters allow additions/subtractions to the list, and full rewrites of it are not required . . . not allowed in fact due to the storage mechanism for the whole subscribe notion of Pending/None/etc.

I'm sure for most people who understand XMPP I'm only partly right and mostly wrong, but this was my first time through the documentation.

Labels:

Sunday, March 6, 2005

xmpp & bloglines

My goal for the evening was to get a bot running on a jabber server that would send you IMs whenever bloglines was updated. I am very close to having this done, problems remain though. Seems pyxmpp does not play well with feedparser.

DEBUG: tls_verify_callback(depth=0,ok=0)
DEBUG: Traceback (most recent call last):
DEBUG:   File "/home/jlapenna/botlibs/pyxmpp/stream.py", line 1271, in _tls_verify_callback
    ok=cb(self, ctx,cert,errnum,depth,ok)
DEBUG: TypeError: 'NoneType' object is not callable
DEBUG: tls_verify_callback(depth=0,ok=0)
DEBUG: Traceback (most recent call last):
DEBUG:   File "/home/jlapenna/botlibs/pyxmpp/stream.py", line 1271, in _tls_verify_callback
    ok=cb(self, ctx,cert,errnum,depth,ok)
DEBUG: TypeError: 'NoneType' object is not callable
DEBUG: tls_verify_callback(depth=0,ok=0)
DEBUG: Traceback (most recent call last):
DEBUG:   File "/home/jlapenna/botlibs/pyxmpp/stream.py", line 1271, in _tls_verify_callback
    ok=cb(self, ctx,cert,errnum,depth,ok)
DEBUG: TypeError: 'NoneType' object is not callable
DEBUG: OUT: ''
Traceback (most recent call last):
  File "blog.py", line 88, in ?
    bot.run_forever()
  File "blog.py", line 28, in run_forever
    self.loop(1)
  File "/home/jlapenna/botlibs/pyxmpp/client.py", line 134, in loop
    self.stream.loop(timeout)
  File "/home/jlapenna/botlibs/pyxmpp/stream.py", line 517, in loop
    self._loop_iter(timeout)
  File "/home/jlapenna/botlibs/pyxmpp/stream.py", line 533, in _loop_iter
    id,od,ed=select.select([self.socket],[],[self.socket],timeout)
TypeError: an integer is required

Labels:

Things I would like to do.

There are many things today that I would like to do.
I would like to:
-Read up on XMPP
-Start a project in java related to XMPP
-Release gmail_tell v1.0
-Catch up on work stuff
-Get File sharing working perfectly off of my server
-Read 1984
-Read Brave New World
-Fix gaim's incesant need to have three lines of text in the input field of a message window
-Finish my story
-Read Mike's Story
-MORE

Now, I'm sure you can see the problem here. There is really not enough time in the day to do all the things I want to. Even if I didn't have to work, there would only be one less item on my list. So what is one to do? Prioritize? Well, the things I want to do most are also the most challenging and will take the most time. So what do I do? The quickest things aren't even that quick. I still won't be able to get 50% of these things done. I will have to just give up and say save it for the next day. But I'll bet between now and the next day, I will have added even more to this list of things to do.

There is only one solution. I lied. Two solutions
1. Less sleep
2. More Day

I can work on one. Two is out of my control. Fuck it, I'm going to bed.

Labels:

The views and opinions expressed in the blog are of Joe LaPenna. Google has nothing to do with these pages.
For information about Google please visit: Google Press Center