Archive

Archive for the ‘Software’ Category

Versature is Hiring

May 20th, 2010 No comments

Thought I’d leave a note here that Versature is hiring. Notably, I’m looking for a developer with fresh user interface design ideas:

Versature is looking for a developer with experience designing and building awesome user interfaces for complex problem domains. Visual analytics tools, integration with Google Apps, Mobile Safari support, real-time user interaction are all topics we cover.  Knowledge of the Java platform and experience using remote service APIs a must. Send your cover letter to the email address listed in the TXT record of hr.versature.net.

I’m hoping we can leverage the Google Web Toolkit (GWT) for this.

Categories: Software Tags:

Solaris Shared Library Troubleshooting Notes

March 25th, 2008 1 comment

Recently I have been building a few packages under an OpenSolaris Zone hosted by Joyent. Ran into a few issues with shared libraries, so here are my notes:

Telling the Linker Where to Look

You will often get an error like ld.so.1: conftest: fatal: libreadline.so.5: open failed: No such file or directory. This simply means the linker can not find your library. The following command will tell the linker to append a new entry to the existing search path:  

# crle -u /path/to/lib/dir
You can retrieve the current configuration by simply running crle on it’s own, output should be something like this:
$ crle
Configuration file [version 4]: /var/ld/ld.config
  Platform:     32-bit LSB 80386
  Default Library Path (ELF):   /opt/local/lib:/opt/csw/lib:/usr/lib:/lib
  Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
Command line:
  crle -c /var/ld/ld.config -l /opt/local/lib:/opt/csw/lib:/usr/lib:/lib
 

Getting Yourself Out of Trouble

You can easily get yourself into a situation where your system is a brick by having an incomplete search path for the linker. For example, if you run crle -l /foo/path/lib, you will no longer be able to run anything at all since the linker will not find basic libraries it needs. I found a great post on this topic which instructs you do use the LD_NOCONFIG environment variable to tell the linker to use a default configuration. You can then fix the issue:

$ sudo crle -l /opt/local/lib -l /opt/csw/lib -l /usr/lib -l /lib
ld.so.1: sudo: fatal: libpam.so.1: open failed: No such file or directory
Killed
$ LD_NOCONFIG=yes sudo crle -l /opt/local/lib -l /opt/csw/lib -l /usr/lib -l /lib

Categories: Software, System Tags:

Open Source Includes Support Options

July 24th, 2005 No comments

O’Reilly’s ONLamp has a great article which is most interesting. The premise is that Open Source software includes support options instead of support futures. I love it:

[Open source is] converting warrants on future maintenance and enhancements into options, which means that instead of having a sole supplier (warrants), we have created a third-party market (options) of these derivatives.

How capitalistic is that?

Very well said indeed. Found it from here.

Categories: General, Software Tags:

DrunkenBlog: Behind the Red Shed, with Jonathan ‘The Wolf’ Rentzsch

March 28th, 2005 No comments

In this post on DrunkenBlog, Jonathan Rentzsch gives a terrific interview. Notably, he discusses Apple’s enterprise software development gem, WebObjects, which I’ve always wanted to know more about.

Anyone know if there is a downloadable developer’s version somewhere?

Update: Yes, you can download a 1 month evaluation copy from http://connect.apple.com/.

Categories: General, J2EE, Software Tags:

JINI and JXTA

March 14th, 2005 2 comments

Some days I wish I had way more energy in order to explore all the technology I’m interested in.

How does JXTA figure in relation to JINI?

Dan Creswell’s post about JINI not being RMI brought JINI back to the forefront of my technology todo list. This stuff is cool.

Categories: J2EE, Networking Tags:

Extracting URLs from .webloc Files

March 2nd, 2005 No comments

Before I forget how to do this, here is a simple way to extrac URLs from Safari’s .webloc files:

find ./ -name '*.webloc' -exec strings '{}'/rsrc \; | grep http | sed '/^.http/s//http/' | sort -u | pbcopy

Seems to work for me.

Categories: General, Software Tags:

JAM’ing with Maven and Ant

February 28th, 2005 2 comments

Now I really don’t get this project. At first glance, JAM seems to provide some of the Maven functionality in a nice, structured, way using Ant. The part I don’t grok is that JAM depends on Maven. Huh?

Since I am sure to be missing something and am very interested in build tools, please comment if anyone can do a good job of explaining where JAM fits.

Categories: J2EE Tags:

Trails Makes Tapestry Smell Good

February 22nd, 2005 No comments

I should now say something witty about Kool-Aid here…

I’m in the process of reading the Trails tutorial by this guy (Trails’ creator) and I am very enthused about the idea: I’ve always felt that code-generation is being overly used in J2EE development. I believe, as do others, that if you can generate it, you should be able to handle it at runtime. (There are exceptions to this rule, of course.) Java has an exceptional reflection API, we should use it. Also, Spring allows much of the work to be done via AOP. But I’m rambling a little here.

The major exception to my dislike of code generation has always been page templates. These are just dumb pieces of text, so you either need to build them by hand or generate them. I’ve never really understood what Tapestry was about until I started reading about Trails and realized that it was allowing us to push object oriented design all the way into the template layer of our applications.

They features of Trails, like allowing us to override the presentation of a specific field without building a template for the entire form and lack of code generation, are really exciting and will provide some great ideas for my current side project.

Those familiar with Plone development will see some similarities here.

A.

Categories: J2EE Tags:

Top Ten Technology Predictions

February 20th, 2005 No comments

I try hard not to link blog, but this post on Cameron Purdy’s blog, /dev/null, is great. I’ll save you the anxiety:

And a drum roll, please ..

1 – At the 2005 TSS Symposium, Rod Johnson will not be able to resist saying the word “Spring.” Yup, it’s like trying not to think of pink elephants — impossible once you get that in your head. Spring, spring, spring, spring. La tee dah, spring spring spring. Take that, Linda. Spring-diddy-spring spring. Spring.

grin

Categories: General, J2EE Tags:

Maven vs Ant Reloaded

February 20th, 2005 No comments

Some time ago, I posted a short entry on Maven vs Ant. Since then, I have continued to use Ant while periodically taking yet another look at Maven.

This week, I came across this post on Otaku talking about keeping your Ant builds maintainable using <import> and <macrodef>. Greater maintainability seems to be one of the reasons Maven was created: allowing you to avoid creating build target spaghetti by describing the project and applying standard goals. These new Ant features can provide this maintainability, while keeping all the flexibility we’ve grown accustomed to.

Cedric’s post then led me to this comment thread on techno.blog(“Dion”) where a good discussion is taking place.

Finally, I can no longer remember how I got there, but dependancy management tools for Ant came up. TSS has an article on Savant, part of Inversoft‘s Verge project and a post on Mallim Ink pointed me to Jayasoft’s Ivy project. Both projects look very interesting; I think I will try out Ivy shortly.

Update: Colin writes about Ivy and seems very positive.

Categories: J2EE Tags:

IPsec with Linux 2.6.9 & Shorewall

December 9th, 2004 1 comment

My previous post promised some information about how firewall rules interact with IPsec under Linux 2.6, well here it is.

The Shoreline Firewall has full support for declaratively defining IPsec tunnels and hosts under the new IPsec support. To do this however, you will need the policy match netfilter extension from the Patch-o-Matic NG and also 4 other patches:

  • ipsec-01-output-hooks.patch
  • ipsec-02-input-hooks.patch
  • ipsec-03-policy-lookup.patch
  • ipsec-04-policy-checks.patch

While these patches are in the POM-NG, they will not cleanly apply to linux 2.6.9. Ronald Moesbergen was nice enough to port the patches are are available from the list archive.

To apply the patches, simply run patch -p1 < ipsec-* from the top of our kernel source tree. Also copy the policy match extension’s files from the POM-NG directory into your kernel tree and insert the contents of the two .ladd files into the relevant Makefile and Kconfig file. Then reconfigure, enabling the policy match, and rebuild. Then follow the documentation.

If I have time, I’ll try and add some more information here.

Categories: IPv6, Networking, Software, System Tags:

NailGun Released

November 21st, 2004 Comments off

Martian Software was talking about NailGun way back in January of 2003 when I emailed them asking about it. I received a message today from Marty Lamb:

If you are receiving this, you have expressed an interest at some point
in a notification when NailGun is available.

Well, it's available.

If it's been so long that you don't remember what it is, NailGun is a
client, server, and protocol for running Java programs within a
persistent JVM, eliminating the JVM startup time.  I appreciate your
patience with the project as I have been swamped with other priorities
for some time now.

Although there are no known issues, there is still some work to be
done.  Most importantly, I need to compile Windows and OSX binaries for
the client.  If you can provide any assistance with this I'd be most
grateful.

More information, a quick start manual, javadocs, and downloads are
available from http://www.martiansoftware.com/nailgun.  There's also
information for joining the NailGun mailing list.  The fact that you are
receiving this message does NOT mean you have been added to the list.

This is a one-time mailing.  If it's unwelcome, you have my sincere
apologies.

- Marty

--
Marty Lamb
Martian Software, Inc.
mlamb at martiansoftware dot com

I’m quite excited about NailGun for use in writing trivial command-line Unix scripts in Java. Going to download it and build a Mac OS X binary while I’m at it too.

Update: Runs nicely on my system, now to explore a bit.

Categories: J2EE, Software, System Tags:

Awesome Quote from Frank Herbert

November 12th, 2004 Comments off

A fantastic quote from Frank Herbert:

Above all else, the [architect] must be a generalist, not a specialist. Experts and specialists lead you quickly into chaos. They are a source of useless nit-picking, the ferocious quibble over a comma. The [architect] on the other hand, should bring to decision-making a healthy common sense. He must not cut himself off from the broad sweep of what is happening in his [application]. He must remain capable of saying “There’s no real mystery about this at the moment. This is what we want now. It may prove wrong later, but we’ll correct that when we come to it.” The [architect]-generalist must understand that anything which we can identify as our [application] is merely part of a larger phenomena. But the expert looks backward; he looks into the narrow standards of his own specialty. The generalist looks outward; he looks for living principles, knowing full well that such principles change, that they develop. It is to the characteristics of change itself that the [architect]-generalist must look. There can be no permanent catalogue of such change, no handbook or manual. You must look at it with as few preconceptions as possible, asking yourself: “Now what is this thing doing?” – From Children of Dune by Frank Herbert (1976)

I love it. Something to keep thinking about. Thanks Grant.

Categories: General, Software, System Tags:

Scalix Brings Group Calendaring to Linux

October 31st, 2004 Comments off

eWeek is running an article on groupware for Linux:

Companies looking to migrate from Exchange to a Linux-based messaging system or that want broader groupware functionality will find a good solution in Scalix’s Email and Calendaring Platform. From the user’s perspective, the Outlook experience is very good, although the Web client could use some improvement. Email and Calendaring Platform is priced at $60 per user, $600 for a server with 500 mailboxes and $3,500 for the Enterprise Edition. More information is available at www.scalix.com.

I know that many clients are using Microsoft products only for groupware, so this is important.

Categories: Software, System Tags:

VoIP and Presence

October 21st, 2004 1 comment

Corporate and personal communications is undergoing an obvious revolution right before our eyes. I won’t comment on this aspect of VoIP since there are so many doing so, particularly in the large news publications. However, we’re missing something: presence.

Instant messaging has boomed and become an almost integral part of our society, with youth leading this integration. Have we not noticed that this form of communication is almost entirely controlled by a select few corporations? To name a few:

This is all a Bad Thing™! Lets reminisce for a moment about good, old fashioned, email service. This technology is completely decentralized and relies on each entity having their own SMTP system. If I want to send you mail, I simply do a DNS lookup to find your mail server and off I go. This server can either be provided by your ISP, out-sourced to another provider or you may have set it up internally.

Contrast this with IM, where your messages are being routed by a third-party who:

  • Is not receiving money from you
  • Made you accept a disclaimer that basically guarantees less than nothing
  • Doesn’t really want to interface with the other IM providers

To actually start discussing VoIP now, the above prevents good presence for VoIP applications.

Thankfully, the defacto VoIP protocol, SIP, has full support for an SMTP-like distrbuted model using SRV records in DNS. This allows the DNS system to be queries for the correct SIP server for a domain and therefore gives us nice, convenient addresses for voice communications using the familiar “user@domain” form.

Built on top of SIP, there is SIMPLE or the S I M P L E. This upgrades your SIP infrastructure to support full presence and instant messaging capabilities. So far, I know of very few clients that have full SIMPLE support:

Also, I believe that Microsoft‘s Windows Messenger is available in a SIP edition.

A major open instant messaging protocol, Jabber, also has the above mentioned SRV capability. It seems to be under implemented in practice, however, with many people not even bothering. Jabber uses the XMPP protocol and bridges exist to allow SIMPLE to interoperate with it.

I’m rambling here. To get to the point, it seems that integrating SIP hardware devices : Analog Telephone Adapters (ATAs), like those from Sipura, and desk phones like those from Polycom; with presence provided either by SIMPLE or XMPP, is a problem. See, when you are using a great hardware phone for actual calling, you can’t do decent presence. How will my Jabber client know that I’m on the phone in order to set my status to “On the phone”?

My conclusion is that we should really be using softphones. Why not? Don’t we all have laptops and Bluetooth headsets? :-) Well, I intend to get myself fully setup this way. To heck with all the other ways of getting voice service. Also, Jabber isn’t a great candidate unless you use something like the myJabber Instant Messaging Client for XMPP and myJabber AE Soft Phone combination, which is non-standard.

More to come on this topic once I get a copy of eyeBeam for Mac OS X to play with.

Categories: Networking, Software, VoIP Tags:

ReferenceField can not be searchable

October 5th, 2004 Comments off

Under Archectypes 1.3 (final), I had a ReferenceField setup with searchable=True and this caused a TypeError when saving the object:

Traceback (innermost last):
  Module ZPublisher.Publish, line 100, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 40, in call_object
  Module Products.CMFFormController.FSControllerPageTemplate, line 98, in __call__
  Module Products.CMFFormController.BaseControllerPageTemplate, line 39, in _call
  Module Products.CMFFormController.ControllerBase, line 191, in getNext
  Module Products.CMFFormController.Actions.TraverseTo, line 36, in __call__
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 40, in call_object
  Module Products.CMFFormController.FSControllerPythonScript, line 105, in __call__
  Module Products.CMFFormController.Script, line 141, in __call__
  Module Products.CMFCore.FSPythonScript, line 104, in __call__
  Module Shared.DC.Scripts.Bindings, line 306, in __call__
  Module Shared.DC.Scripts.Bindings, line 343, in _bindAndExec
  Module Products.CMFCore.FSPythonScript, line 160, in _exec
  Module None, line 11, in content_edit
   - <fscontrollerpythonscript at /plone1/content_edit used for /plone1/organization.2004-10-04.8620291094>
   - Line 11
  Module Products.Archetypes.BaseObject, line 573, in processForm
  Module Products.Archetypes.BaseObject, line 566, in _processForm
   - __traceback_info__: (<organization at /plone1/organization.2004-10-04.8620291094>, <field Notes(text:rw)>, <bound method Organization.setNotes of <organization at /plone1/organization.2004-10-04.8620291094>>)
  Module Products.Archetypes.CatalogMultiplex, line 60, in reindexObject
  Module Products.CMFMember.CatalogTool, line 51, in catalog_object
  Module Products.ZCatalog.ZCatalog, line 513, in catalog_object
  Module Products.ZCatalog.Catalog, line 381, in catalogObject
  Module Products.ZCTextIndex.ZCTextIndex, line 163, in index_object
  Module Products.ZCTextIndex.ZCTextIndex, line 173, in _index_object
  Module Products.Archetypes.BaseObject, line 475, in SearchableText
  Module Products.Archetypes.BaseObject, line 475, in <lambda>
  Module Products.Archetypes.utils, line 276, in getValue
TypeError: DisplayList keys must be strings or ints, got <extension class Acquisition.ImplicitAcquirerWrapper at 775140>

The only reference to this that I’ve found is on the list. Setting searchable=False avoids the issue. I do not know if this is an actual bug.

Categories: Python Tags:

Aswath Rao on Apple and VoIP

September 30th, 2004 Comments off

I was hoping to generate interest with my post about hacking iChat, and it seems that others share my view on the subject:

A.

Categories: Software, VoIP 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:

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:

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: