|
|
|
|
|
GNOME-Do Plugin
|
4/24/2008 11:52:56
|
At 2AM last night I decided I liked GNOME-Do, so much so that I was willing to stay up an extra hour late and write a plugin for MPD; because I was told writing such plugins was easy and I wanted quick access to my music.
So I did, and the results: https://wiki.ubuntu.com/GnomeDo/Plugins/MPD (Source)
-Zach Goldberg
|
|
|
|
|
The internet has failed me.
|
3/31/2008 10:22:29
|
I get frustrated rather quickly by 5, 6, 12 email long conversations simply trying to find a time to meet sometimes. As such I have been looking to sync my MS Outlook Calendar with something public like Google Calendar for a long time.
Well last night I tried to redo my entire scheduling routine. I figured I would go 100% syncML, a business-style standard fully supported by my phone. I wanted sunbird on my desktop and laptop, google calendar and my phone to all be in sync. The end result: Somehow in the year 2008 such a thing is. not. possible. PERIOD!
Long story short, I did a lot of digging and one of the only things (maybe the) only website I could find which serviced all these clients was scheduleworld.com. An extraordinarily promising website promising to sync everything six ways from Sunday.
Scheduleworld works... ish. I could sync most things some of the time. However, 95% of the time somewhere in the chain a duplicate would be introduced, or something would go missing, or a recurring MWF event would somehow not show up on wednesday etc. In short: It was unpredictable. I spent more than 6 hours tinkering; nada.
Thus I bit the ultimate bullet, and went back to MS Office -- which in its own right as a scheduler isn't so terrible. Its just horribly inoperable with everything else, aka it doesn't sync with GCal nicely.
However google has introduced a tool to sink a single outlook calendar with GCal. Its primitive. Outlook has folders and such and google will only pick one of them. So I had to basically wipe my 'main' calendar and redo it (10th time in the last 2 days...). Anyway, I'm now back with outlook and using Google's Calendar sync to give you: my public calendar for knowing when I'm available.
-Zach Goldberg
|
|
|
|
|
What of Android Messenger?
|
3/15/2008 2:23:37
|
So its been a while since I've mentioned the messenger. I did go through the effort of updating the code for the most recent SDK release however I'm not going to be releasing the code for any future updates until May.
I'm not going to be entering Google's developer challenge with the code; instead the code has become the platform for a final project in the class I am TA-ing at Penn: hence why I am not releasing any of the code for a while. The project hasn't yet been given out to the students so I cannot post too much information here, however for those interested in just playing with android I will also post the writeup here for people to play with.
-Zach Goldberg
|
|
|
|
|
An intellectual comment on slash?
|
2/15/2008 1:39:14
|
http://politics.slashdot.org/comments.pl?sid=455348&cid=22434838
Let me preface this comment by saying I am not an American, but an observer of American politics and culture.
It is a sad testament to the strength of anti-intellectualist tendencies in American culture that American politicians tend to have little academic expertise on the issues pertaining to the policies they espouse (e.g. Ted Stevens' "internet = series of tubes").
The benefit provided by academic expertise is not simply the number of degrees one acquires, but dialogical engagement with other experts who dedicate themselves to finding fault in arguments (via journals, conferences, etc). Thus, the arguments presented by an academic to the general public may well be bastardized (because simplified) versions of the arguments they would present within academia, but we (the public) can assure ourselves that those arguments could be elucidated in ways that stand up to some level of harsh criticism.
To put one's faith in the honesty of a politician whose views and arguments arose in an academic setting, then, is a better bet than putting one's faith in the honesty of a politician who may only be concerned with rhetorically covering up his/her true influences (e.g. pressure by lobbyists or campaign contributions). Lessig for congress is, in my eyes, a good move regardless of how much/little I may agree with him politically. This is simply because the development of his views and arguments is well documented in his books and articles, and with reference to an academic context which is accessible to anyone interested in putting the time into investigating it.
As I see it, this would be a move towards transparency in government, which is a prerequisite for true democracy.
|
-Zach Goldberg
|
|
|
|
|
Legalizing file sharing
|
1/11/2008 11:25:08
|
In response to this slashdot article and its Source article by Karl Sigfrid (politician in sweden) I have a few words. First, a quote from Karl Sigfrid's article:
Politicians who play for the antipiracy team should be aware that they have allied themselves with a special interest that is never satisfied and that will always demand that we take additional steps toward the ultimate control state. Today they want to transform the Internet Service Providers into an online police force, and the Antipiracy Bureau wants the authority for themselves to extract the identities of file sharers. So any words I have to say from here on are in the giant shadow of that paragraph. I am of course as usual not endorsing theft, but internet freedom. Realizing and understanding that the internet is made up of connections of computers. Everybody's computers, backbones everywhere; almost by definition de-centralized and in everybody's hands. The internet is now omni-present; and it shall only continue to be more so in the future. It has become (minus ISP fees) a near public-good; a universal source of information and connectivity.
The sooner politicians, big interest groups (read: RIAA), and other self-interested people of supposed 'power' come to grips with the reality that the internet can not, and should not be controlled the better off the world will be. Not only because I fear a police state as Karl Sigfrid does, but because I value the personal power I have to communicate with anybody, sending any information via any means on any protocol at any time for any purpose.
My message to those who wish to control the 'internet' (read: all the people in the world using the internet. Me. You.) remember whom you serve. The constitution of the United States begins with "We The People", all the powers of the United States government are derived directly from the will of the people giving them those powers. This is a fundamental in the philosophy of American government. The instant the government is perceived to be acting against the will of the people (which limiting the people's ability to communicate and share information certainly is) the people have the right to demand change in their government. Similar ideas reside in many other governments of our world and these thoughts should apply universally.
The simple truth is that almost all communication channels on the Internet can be used to distribute copyrighted information. If you can use a service to send a message you can most likely use the same service to send an mp3-song. Those who want to prevent people from exchanging of copyrighted material must control all electronic communication between citizens.
Not most likely Karl, definetly.
-Zach Goldberg
|
|
|
|
|
Android Test 7 (Success)
|
1/3/2008 0:18:53
|
Good news: We have a working AIM client that can handle a conversation :) There were many bumps and bruises along the way (lots of technical hickups) but it works, with surprisingly few hacks.
I'll put aside the detailed analysis of what i've done (I plan to comment the code extensively and post a tarball. Thus far about 800 lines of code without including the protocol library) for a while for sake of screenshots:
-Zach Goldberg
|
|
|
|
|
Android part 6
|
1/1/2008 2:35:17
|
Happy new year all!
It's time for a really big status report. After talking with some folk on IRC I've learned how to properly use ListAdapters and work their magic. Google really, really, likes polymorphism. Thats cool though.
I spent most my time during the day today (12/31) actually working on the buddy list. I was using some fairly complicated number juggling but after about 3 hours I got things to display in a ... sort've right way.
So I got back from my new years part post 1AM. I said to myself, wow, this buddy list code is maybe 70 lines long, its ugly, horribly un-modifiable and i'm not confident the output it produces is 100% accurate. So, I commited to SVN for safe-keeping then scrapped it. All of it. About 6 hours of work writing/debugging down the tubes. We learn from our mistakes.
As you can tell, I'm writing this blog post at 2:40 and I'm not in a terribly sour mode. Yep, in a bit over an hour I've entirely re-written the buddy list (using vastly wiser data structures) and debugged it. Now not only is the code squeaky clean, and short; but i'm much more confident that the buddy list looks right.
So as of right now, I have 3 different AIM accounts signed on and its showing all their buddies in one big list. The actual "sign on" process takes a reasonably small amount of time; but collecting all of the "this buddy signed on" messages from AIM for some reason takes a bit longer than it should it seems. Will have to investigate and optimize.
Also, if anybody from google who is knowledgable in Android is reading this I have a question. Early on I was worried that I was sending too many intents from my network service; afraid some might get lost because the IntentReceiver was still busy handling the first one. So I wrote a queueing system: The network adds the intents to be sent to a queue and the messenger, in a round robin, when it completes an intent polls each network service for any intents it has left. If they have any, they get broadcast and de-queued. The system works 100% and I'm confident there is no Intent-back log. However, it does require some extra marshalled calls back and fourth; which are expensive. If I don't have to worry about Intent-backlog I can scrap the whole system and save a handful of marshalled calls.
-Zach Goldberg
|
|
|
|
|
Android Part 5
|
12/29/2007 11:35:00
|
Wow what a roller coaster thus far. I can spend an hour trying to get things to show in a list, when all I needed to do was call list.setAdapter(null) (I am programmatically adding elements so I don't need an adapter). Apparently lists MUST have that called or else they display nothing. So I got things to show in a list (possible connections), when you select a connection it marshalls the appropriate data to the service and connects to aim. Everything is going smoothly (read: slowly) but thus far everything i've wanted to do, even if it took forever, was eventually achievable.
I'm going to try and work on reverse IPC (service -> activity) tonight. If I can get just one message through and update the UI i'll call it a night. Thus far good progress. I've been committing too if you'de like to checkout whats going on. I've been trying to keep it fairly neat as of tonight. It's still very sandbox looking (as in im playing with ideas of how to do things in some places) and not yet well commented but, all good things in time.
Update: Yep, I got some reverse communication working via intents. The interface now says "Connected" if we connected successfully! :)
-Zach Goldberg
|
|
|
|
|
Android Part 4
|
12/29/2007 1:27:35
|
So last night ended in a bit of a disappointment with the blowing up the heap nonesense. So first thing this morning is to try and find a way around that: simple enough I won't call that function in java.net, find a way around it. That took all of 3 minutes and I have a working work-around.
Then I realize that the android AIDL functionality only allows the activity to talk to the service and not the other way around. So I ask on IRC which lets me know I need to go the other way around using intents. GR! They like being difficult.
Alright fine, all thats sorted out: now to sign on to aim via android. .... IOException! Yay. So something that works outside android doesn't work inside, alright lets find out why. Turns out somethingy is going a bit wacky with a .skip() on a filterInputStream. Alright, so after messing with protocol level code (not my specialty, who wants to mess with that stuff?) for 45 minutes or so I work around the bug. Only problem is now the client spams error 983 at me. I'm thinking gyah what the heck is wrong now, error 983... error 983.
So I google it. Error 983: You've made too many attempts to signing on ... Yay! So in my debugging I pissed off the aim servers, oh well. I guess thats one way to determine when a good time to take a break is! Mostly success this morning, good.
-Zach Goldberg
|
|
|
|
|
|
|
|