Warning: strpos(): needle is not a string or an integer in /home/saltybanana/www/blog/peel/index.php on line 31

Warning: strpos(): needle is not a string or an integer in /home/saltybanana/www/blog/peel/index.php on line 37

Warning: strpos(): needle is not a string or an integer in /home/saltybanana/www/blog/peel/index.php on line 43
The Banana Peel
No ICloenable<T> in .NET Framework 2.0 
Tuesday, September 11, 2007, 4:28 AM
I just realized that I needed to implement the ICloneable interface in one of the classes I wrote for work, only to find out that there is no generic-enabled ICloneable<T> equivalent in .NET Framework 2.0. So I whipped one up for myself.

It's such a useful little interface, wonder why the .NET Framework architects didn't think to include it.

I looked into the documentation for Framework 3.0, and it appears to absent there as well. Hmm....
  |  permalink   |   ( 3.1 / 1439 )

Vim, My New Ruby on Rails Editor 
Tuesday, September 11, 2007, 3:15 AM
Back when I computed on green-screen terminals running VT100 emulation connected via telnet to Unix systems, just about everyone used vi. I think some people used emacs, but I liked vi's simplicity and usability.

Now, some years later, I have bought and drank the IDE kool-aid. I use Apple's Xcode to support Freeciv on the Mac, Microsoft's Visual Studio 2005 to support my day job as a C#/ASP.NET developer, and Eclipse + Aptana to dabble in Ruby on Rails in my spare time.

However, I finally got fed up with Eclipse's speed on my not-so-recent Mac (alright, it's actually ancient by computing standards) that serves three masters: myself and two other family members.

So I took inventory of the features I relied on when I used Eclipse, and I went about searching for a speedier and equally priced replacement. Lo and behold, I came cross the Vim editor, which is not only a much improved version of the old vi editor I, but it also supports a large array of scripts that can be easily downloaded and installed to enhance and extend vim.

After some experimentation, I settled on the following setup:
  • Vim.app - GUI version of vim, installed via MacPorts
  • vim - Command-line version, installed via MacPorts
  • rails.vim - Ruby on Rails: easy file navigation, enhanced syntax highlighting, and more
  • genutils.vim - Enables extra functionality in rails.vim
  • vividchalk.vim - Color scheme strangely reminiscent of Vibrant Ink for a certain OS X editor
The following table gives you an idea of the features in Eclipse that I relied on, and how I am coping with vim:

Feature Eclipse Vim
Syntax highlighting Yes Yes
Auto-insertion of keywords, symbols, & markup tags Yes No
Hierarchical view of Rails application directory structure Yes No, but I can get there using the Finder or Terminal
Integration with Subversion Yes Yes, with the use of another script, but I found it clumsy, so I reverted to using svn via the command-line
Class outline Yes No, but a quick text search suffices for now

As you can see, I am doing pretty well. For a little extra typing, I gain development speed plus a much smaller CPU footprint. I'll buy that for ... hey, it's free!

  |  permalink   |   ( 3 / 820 )

Recursive Dependencies in MacPorts 
Wednesday, May 2, 2007, 11:14 PM
Someone posted a query to the MacPorts user maiing list asking why the bittorrent port requires XFree86 or Apple's X11 to build. It is a reasonable question, since at first glance bittorrent doesn't seem to need it:
% port deps bittorrent
bittorrent has library dependencies on:
A second glance says the same as well:
% port deps py-wxpython
py-wxpython has library dependencies on:
% port deps py-twisted
py-twisted has library dependencies on:
% port deps py-crypto
py-crypto has library dependencies on:
I ran into a similar problem in my use of MacPorts, where I needed to determine all the dependencies a port has. So I wrote a Python script, rdeps.py, which outputs the following (emphasis added):
% rdeps.py bittorrent
+- bittorrent
+- (L) py-wxpython
| +- (L) python24
| +- (L) wxWidgets
| +- (L) jpeg
| +- (L) tiff
| | +- (L) jpeg
| | +- (L) zlib
| +- (L) libpng
| | +- (L) zlib
| +- (L) zlib
| +- (L) libiconv
| | +- (B) gperf
| +- (L) expat
| +- (L) libsdl
| | +- (L) XFree86
| | +- (B) perl5.8
| +- (L) libsdl_mixer
| +- (L) libsdl
| | +- (L) XFree86
| | +- (B) perl5.8
| +- (L) smpeg
| | +- (L) libsdl
| | +- (L) XFree86
| | +- (B) perl5.8
| +- (L) libvorbis
| | +- (L) libogg
| +- (L) libogg
| +- (L) libmikmod
+- (L) py-twisted
| +- (L) python24
| +- (L) py-zopeinterface
| +- (L) python24
+- (L) py-crypto
+- (L) python24
This has saved me from needing to repeatedly execute the port deps command by hand or going through Portfiles to hunt down dependencies on many occasions.

Of course, my little handy Python script only provides a skin-deep explanation of why X11 is needed by saying "because the Portfile says so", which isn't all that insightful. A slightly better explanation can be found here. Basically, bittorrent has a dependency on libsdl, which will not compile unless X11 is present.

Now why does libsdl need X11 to build? I don't know the answer to this one. Do you?
  |  permalink   |   ( 3 / 817 )

@voip_provider = voip_providers.next if vonage.go_under? and voip_providers.next? 
Wednesday, April 18, 2007, 1:35 AM
Thanks to a speedy Internet connection and Vonage, I have been landline-free for a little over two years now.

My VOIP service during the past 24+ months hasn't been trouble free, but it has been pretty good.

However, given the troubles Vonage is currently going through, things don't look so hot. The latest news for the company sounds downright ominous. Yes the company keeps stating that existing customers aren't affected. But I wonder when that statement might change.

Vonage is in the business of providing a service/solution using technology. But it would seem it has reached a roadblock that technology is unable to solve. So either Vonage needs to solve its problems another way, or I will have to start shopping for another VOIP provider.
  |  permalink   |   ( 2.9 / 427 )

Freeciv 2.1.0 Beta 4 and the Future 
Tuesday, April 3, 2007, 5:42 PM
The developers cranked out the 4th beta over the weekend. You can download the Mac OS X Tiger (PPC) binary here.

Someone asked about a Universal version of Freeciv some time ago. Unfortunately that's not quite possible right now, because the option to build the libraries Freeciv depends as universal binaries isn't yet available, and I have no control over when this will change.

At some point in the future, when I do purchase an Intel-based Mac, I will be able to product Intel-native binaries. Then, assuming I will continue to have access to my current as well as the new machines, two packages could be produced: one for PowerPC and the other for Intel. But, it will not be something I want to do long-term. And of course, there is the Leopard consideration as well.

For now, though, my Freeciv binaries run on Tiger+X11 on PowerPC, or on Tiger+X11+Rosetta on Intel.


  |  permalink   |   ( 3 / 746 )