Archive

Archive for August, 2004

Docs Grow New Jawbone for Cancer Survivor

August 29th, 2004 Comments off

This is pretty impressive. Using a metal frame and some magic, they grew a fellow a new jawbone: article. I don’t usually post this type of stuff, but wow.

Categories: General Tags:

AsteriskiChat

August 29th, 2004 Comments off

I will eventually keep a cross-reference of related content here.

Categories: VoIP Tags:

Adding Wiki Functionality

August 29th, 2004 1 comment

As I mentioned here, I am attempting to add CamelCase Wiki functionality to this blog.

For example, I could have a AsteriskiChat page!

Update: I see that posts created as Wiki pages are still treated as normal by the front page. It would be nice if they could be ignored, no?

Categories: This Blog Tags:

Upgrades

August 29th, 2004 Comments off

I went on a binge hack session on this blog!

  • Converted from Textile 2 to Markdown and setup GeSHi
  • Discovered per-category feeds and added myself to java.blogs

    To use this, simply ask fo /archives/category/$CATEGORY/$FEED, where $CATEGORY is the category path amd $FEED is the type of feed you want: rss2, atom, etc. For example /archives/category/software/j2ee/rss2.

  • Setup search URLs

    This is cool! Want to monitor what garbage I have to say about “elephants”? Easy as pie! Simply point to /search/elephants like so, it even works with feeds: /search/elephants/atom. (Don’t send me bug reports about the previous search link sending you back to this post!)

  • Setup a custom 404 handler here

I want to setup a Wiki style linking system as well, from here and I guess I should learn to write plugins eventually.

A.

Categories: This Blog Tags:

Hacking iChat for Generic SIP Support

August 28th, 2004 Comments off

The Setting

At this week’s OJUG meeting, I mentioned to Patrick Linskey that I would really like to see iChat as a client to generic SIP servers. He said that it may be possible given Cocoa’s design, so I’ve been looking into it. Here is a set of related links:

  1. Apple iChat Technology Brief,
  2. Blog entry on the subject, gives some protocol details
  3. Another entry discussing the protocols

I also took a look around to see what iChat is doing under the covers. First, when iChat is running, it uses 2 pieces:

  • /Applications/iChat.app/Contents/MacOS/iChat
  • /System/Library/PrivateFrameworks/InstantMessage.framework /iChatAgent.app/Contents/MacOS/iChatAgent

When you are doing audio or video communications, you will notice access another shared library:

  • /System/Library/PrivateFrameworks/VideoConference.framework

The above is where it gets interesting. I ran class-dump on it, output available here. Of particular interest is an interface called SIPManager. There is also a lot of RTP and SDP related things in there, but I’m now over my head in regards to grokking Objective-C.

Where Do We Go From Here?

I believe it is very important to have a general SIP client that has iChat’s audio quality and integration into the operating system. Can we hack it?

Categories: Software, VoIP Tags:

Converting from Textile 2 to Markdown

August 28th, 2004 Comments off

I just ran a hack to convert all of my markup to Markdown from Textile 2 in order to improve my text and be compatible with GeSHi.

[php] < ?php $query = sprintf(“SELECT ID,post_content FROM %s”, POST_TABLE);

$db = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); mysql_select_db(DB_NAME, $db);

$rows = mysql_query($query, $db); while($row = mysql_fetch_row($rows)) { $post = $row[1]; $post = preg_replace(‘/^bq./m’, ‘>’, $post); $post = preg_replace(‘/^#/m’, ’1.’, $post); $post = preg_replace(‘/ ([s[{(]|[[:punct:]])? # $pre ” # start (‘.$textile_c.’) # $atts ([^"]+) # $text s? (?:(([^)]+))(?=”))? # $title “: (S+b) # $url (/)? # $slash ([^w/;]*) # $post (?=s|$) /Ux’,’ $3‘, $post); $output[] = array(0 => $row[0], 1 => $post); }

foreach($output as $row) { $update = sprintf(“UPDATE %s SET post_content = ‘%s’ WHERE ID = %u”, POST_TABLE, mysql_real_escape_string($row[1]), $row[0]); $result = mysql_query($update, $db); } } ?> [/php]

(And if anyone knows why the above code is not monospaced, please yell!)

If anything is amiss, please let me know. I doubt I will be fixing all the issues with punctuation after links…

Thanks,

A.

Categories: This Blog Tags:

OJUG on August 26th, 2004

August 28th, 2004 Comments off

I attended this past week’s OJUG meeting in Ottawa, which was very useful. Patrick Linskey, CTO of SolarMetric (developers of Kodo JDO) and co-author of Bitter EJB. He discussed JDO 2.0 JSR 243.

I am very interested in the next version of JDO as I’ve used Hibernate with great success and am looking for something similar, but standards based.

Some implementations of JDO 1.0 and 2.0 are listed at JDO Central. Kodo JDO 3.2 Beta has many of the JDO 2.0 features.

Some of my notes from the presentation:

  1. The big problem in the OR/M world is not the M, but rather the remoteness of data being manipulated
  2. JDO is an Abstract API for Object Persistence
  3. OR/M is an old, well understood problem. It has been solved many times and there is probably little room for real innovation. This is the counter for those that believe that a specification stifles innovation. Isn’t there room for innovation at the API level?
  4. Provides portability between relational and non-relational datastores
  5. Can support J2ME if you provide a Java Collections implementation since J2ME does not provide one
  6. You shouldn’t see the JDO API very often. Most of your data access happens through your object model. You will only see the API for queries & deletions. (Supposing your container is handling transactions.)
  7. Very much tries to do things the Java Way
  8. There is no such thing as POJO persistence
  9. Regarding some Java OR/M implementations that use object proxies: proxies are not the real objects. This will bite you in unusual places. The example is that EmployeeProxy does not extend PersonProxy.
  10. The current problem with bytecode manipulation is that there is no standard to prevent multiple tools from stepping on each other
  11. Gavin King is no longer on the JDO 2.0 committee
  12. No more “autocommit” support!
  13. Uses named queries. You can override a named query with a custom piece of SQL for each targeted database, if necessary
  14. Kodo has a cool workbench
  15. We all should watch TSS
  16. Primary key support: transparent (implementation specific), application identity or simple identity and non-durable
  17. SolarMetric has a disconnected operation and synchronization product
  18. No criteria API, but third party tools can provide this by generating JDOQL. Neither is there find-by-example, but this can also be implemented externally

We all went over to the Mayflower II for beer and conversation after the meeting. A good time was had by all.

Cheers,

A.

Categories: J2EE, Software Tags:

babyTEL and Asterisk

August 19th, 2004 7 comments

Jonathon Moody contacted me to ask how I had setup babyTEL to work with Asterisk, so here’s a quick note:

  • babyTEL requires use of their outbound proxy;
  • Asterisk’s chan_sip.o module does not support using an outbound proxy;

There are two known solutions:

  1. Use chan_sip2 by Olle E. Johansson;
  2. Use the hack originaly proposed to me by one of babyTEL’s technicians;

The hack is to put the IP address for nat.babytel.ca into your /etc/hosts file as sip.babytel.ca. This will force your system to resolve sip.babytel.ca to babyTEL’s outbound proxy. The second step is to put “port=5065″ in your sip.conf entry for babyTEL (You may also need “insecure=very”, although I don’t completely understand that.)

Hope this helps someone!

A.

Update: Page on the VoIP-Info Wiki about babyTEL is here.

Categories: VoIP Tags:

Looking for Enterprise Java Developers

August 17th, 2004 3 comments

We are looking for two Java developers for a project starting shortly. Please do not bother to apply if you do not meet the following criteria:

  • Portfolio of code; or

  • Demonstratable involvement in an Open Source Java project; and

  • Experience with tools such as Ant Subversion and XDoclet; and

  • Experience with UNIX integration and development;

Update: This is for a consulting firm that is waiting to hear whether they have been selected for a medium sized project. They want to have potential team members selected in advance.

Update: This project has not been given funding.

Thanks.

A.

Categories: General, J2EE Tags:

ENUM Lookups Work

August 17th, 2004 Comments off

I just got ENUM lookups working with a client’s Asterisk setup. Very cool.

This is how it works:

  1. My Asterisk takes the number you input “NNNNNNN”,
  2. fully qualifies it to “1613NNNNNNN”,
  3. a DNS lookup in e164.org and e164.arpa which returns sip:general@domain.ca,
  4. an SRV query on domain.ca returns server.domain.ca,
  5. the call is put through IP-to-IP without hitting any provider.

That is a beautiful thing.

A.

Categories: VoIP Tags:

babyTEL

August 3rd, 2004 1 comment

I’ve just signed up for a babyTEL account in the Ottawa dialing area (613). Their pricing structure is very good and it works with Asterisk and various SIP softphones. (I’m using SJPhone and X-Lite under Mac OS X at the moment.)

I will be testing the service over the next few days, as they provide a 14 day guarantee, and reporting back my experiences. One of the key questions for me is how multiple incoming and outgoing calls are handled. This is also important for my clients.

I’m heading to a client’s site this morning to hook-up their Asterisk to a Broadvoice account in Chicago. Looking forward to it!

Categories: VoIP Tags:

Nova Scotia

August 2nd, 2004 Comments off

I’ve was in Nova Scotia for the past few days, enjoying the friendly people, the Tall Ships and the beach

Notably, we enjoyed some Mexican hospitality on their Tall Ship, the Cuauhtemoc

Categories: General Tags:

Local IPv6

August 2nd, 2004 Comments off

Last week I successfully setup a tunnel from my local network to Freenet6 Hexago I now have a /64 prefix of IPv6 addresses and am advertising them on my network using radvd This works great!

The next step is to get DNS working properly for IPv6 addresses.

Categories: Networking, System Tags: