Software
Website Portfolio
Resume
Wiki
Blog
Contact

Archives

  • October 2010
  • June 2010
  • December 2008
  • February 2008
  • March 2007
  • December 2006
  • November 2006
  • September 2006

Meta

  • Log in

BitTorrent Libraries for .NET (a plea for sanity)

Posted on September 28th, 2006

Dear Prospective library maintainer,

I am a .NET programmer, with the need for specialized tools reliant on the BitTorrent network. Now I would have no issue if mature libraries for my platform of choice existed. I am also one man without the time to create his own library for .NET. This said, I am writing this as a plea to the other people out there who are creating their own libraries with no considderation given to independant open developers.

As far as I can tell, there are few choices for someone like myself.

1) Port existing C libraries to Managed C++ and create a wrapper in C# (ick)

2) Use David Smith’s binary open binary open free commercial library which lacks documentation and uses disingenuous licensing

3) Wait for someone to make an open-source library with a compatible license (I’m watching you Miguel & Alan)

4) Write my own
Obviously, you (as developers) are welcome to license and offer your code in any manor you deem prudent. I’m also quite aware of the impact your careers in software development may have tainted your view on licensing. I’ve had a similar experience with my current employer. The majority of our development team is composed of ex-Microsoft employees formerly associated with the ‘Indigo’ project. I am also sensitive to the importance required in keeping your intellectual property yours, and imposing stringent guidelines upon those who would use your works in an effort to sustain your business.

I mean, I know you put an enormous amount of effort into the development of this library, and I believe every developer should be compensated for his or her hard work. But, I certainly would never incorporate a library into any of my personal or professional applications that did not have a clearly defined path of evolution. On the other hand, I would be willing to incorporate a library with a clearly defined state of existence, a high level of developmental transparency, and a strong community derived support platform. It’s good to know that if development ceased for whatever reason, that my product (whatever it may be) would still continue to evolve without hindrance.

Maybe I’m wrong, but I see enormous benefit with an open model, and little with the traditional in the case of this particular project. You can still sell your product commercially, but I find it silly to cut out hobbyists and open source developers who could potentially build applications around your library, bolstering it’s worth in the eyes of potential buyers. But that’s just my take on it.

Because of the inherently restrictive nature imposed by a closed development process, closed code is quite literally unfeasible for most open source developers. In the event that the maintainer decided to cease development, it would leave every derived application out in the cold. When it comes to porting, patching, and altering his or her existing platform, no open developer with any common sense would allow his or her application to become ‘tainted’ in this way.

The principals behind an open model would involve open code. Developers and users abound can and would create feature rich applications using code derived from your library. This could come in the form of an extended feature set using the available code, bundled binaries, bundled code (Tested with a daily BVT recompile), community patch submissions, and quite likely other unforeseen applications.

Ideally, the open model can be used to embrace the addition and alteration of all interested parties, with ownership of the elements in question being returned to the developer. The idea is to restrict usage, license the source, and charge those who stand to profit by direct use of the library (commercial entities), but not those who foster the growth of the technology itself.

The technologies we use at my workplace are numerous, but we retain usage rights to all the source code involved (open source, or licensed). In fact, we have a stringent requirement that all involved technologies be built from source nightly. So in the unlikely event we find a cost benefit to move all our production servers to Mono/Apache
(or something), all the porting can happen in-house, and we are not reliant on any particular vendor.

Personally, I will have to wait until someone else develops a library without usage restrictions in order to offer my applications free of charge, in their entirety. Or if this does not happen, and in the unlikely event that I discover an exorbitant amount of free time, I could create my own library. (It’s sad, but work occupies 99% of my coding nowadays)

Subversion+WebDAV+PAM using Win2003 Domain Credentials on Ubuntu 6.06

Posted on September 14th, 2006

Installing OpenSSH
Pop up a terminal, and edit /etc/apt/sources.list – like this:

$ sudo gedit /etc/apt/sources.list

Remove the cdrom source line

Add “universe multiverse” to the first deb line after “dapper” so that it looks like this:

deb http://us.archive.ubuntu.com/ubuntu/ dapper universe multiverse main restricted

save and quit

then run

$ sudo apt-get update
$ sudo apt-get install openssh-server

You’re done.

Installing Development Tools – Optional

Run these commands.

sudo apt-get install build-essential
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install monodevelop mono mono-gmcs

Install FreeNX
For 32-bit Systems

Run these commands.

$ sudo gedit /etc/apt/sources.list

add these lines to the top.

# FreeNX

deb http://free.linux.hp.com/~brett/seveas/freenx dapper-seveas freenx

now run these commands.

gpg --keyserver subkeys.pgp.net --recv-keys 1135D466
gpg --export --armor 1135D466 | sudo apt-key add -
sudo apt-get update
sudo apt-get install freenx

Use the NoMachine Keys

You’re Done.

For AMD64 (might work)

Run these commands.

$ sudo gedit /etc/apt/sources.list

add these lines to the top.

# FreeNX

deb-src http://free.linux.hp.com/~brett/seveas/freenx dapper-seveas freenx

now run these commands.

$ gpg --keyserver subkeys.pgp.net --recv-keys 1135D466
$ gpg --export --armor 1135D466 | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get source nx freenx expect fakeroot cdbs autotools-dev dpatch debhelper patchutils autoconf automake1.4 libjpeg-dev libpng12-dev libssl-dev libx11-dev libxaw7-dev zlib1g-dev
$ cd nx-nx-1.4.92+1.5.0/
$ fakeroot dpkg-buildpackage -b (Go get coffee, this takes forever)
$ sudo dpkg -i ../*.deb
$ cd ../freenx-0.4.4+0.4.5
$ fakeroot dpkg-buildpackage -b
$ dpkg -i ../freenx_0.4.4+0.4.5-4ubuntu2_all.deb

Use the NoMachine Keys

You’re Done.

Installing Apache 2.0 (WebDAV, PHP)

Run these commands

$ sudo apt-get install apache2
$ sudo apt-get install php5

Installing Samba/Winbind – (pam_mkhomedir, login, ad)

run this command:

$ sudo apt-get install samba winbind

Now, the first thing we are doing is setting up samba/winbind to work with the domain, so do a nano /etc/samba/smb.conf and insert the following lines:

workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%D/%U
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind separator = +
security = domain
password server = *
winbind use default domain = yes

Remember that this is just and example, you should/can change the values according to your needs.
After that we need to make the system to use winbind.

First edit /etc/nsswitch.conf and replace:

passwd: compat
group: compat

with:

passwd: compat winbind
group: compat winbind

Now go to /etc/pam.d and edit the following files:

common-account:

#Commented for winbind to work
#account-required pam_unix.so
account-required pam_winbind.so

common-auth:

auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass

common-session:

session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel/

sudo:

auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass

Finally, there are only a few things left to do:

Join the domain:

$ net rpc join -D MYDOMAIN -U Administrator

Test it with:

$ wbinfo -u
$ wbinfo -g

Make the domain home dir (users home dirs will be inside this one, but can be configured in smb.conf):

$ sudo mkdir /home/MYDOMAIN

You’re Done!

Installing Subversion

run this command

$ sudo apt-get install subversion libapache2-svn libapache2-mod-auth-pam
$ sudo mkdir /usr/local/svn

Edit /etc/apache2/mods-enabled/dav_svn.conf

uncomment DAV and SVNPath

change SVNPath to SVNParentPath and have it point to /usr/local/svn

Before the tag, paste this

AuthPAM_Enabled on
AuthType Basic
AuthName "Subversion Repository"
Require valid-user

save/quit

$ sudo /etc/init.d/apache2 restart

Installing WebSVN

$ sudo apt-get install websvn enscript

Our repositories are in /usr/local/svn – please use that.

Yes to all.

—-

That’s it, you’re done.

You’re Ubuntu server should now happily co-exist on any NT Domain based network. Congrats.

Windows Vista RC1 on a Macbook Pro: My distain is growing

Posted on September 13th, 2006

I am the proud owner of a Macbook Pro.

As you may or may not be aware, this lovely incarnation of x86 hardware runs OSX flawlessly; however, it becomes less enjoyable once you decide you want to get some work done and slap Windows on the beast.

I hope this post will serve as a warning for those of you (like myself) who may want to endulge in some of the latest technology, on some of the latest hardware, while still seeking to maintain the ability to complete your job.

Now, I’m relatively experienced when it comes to fussing around with the betas microsoft offers it’s testers (and some they don’t). I was a willing tester of every client and server solution they’ve offered since the early versions of Windows 98.

Windows 98, wow was that a rough release through the earliest stages of development. Sure, they basically had to rewrite 95 to be rendered by a browser, but that seems like smooth sailing when compared to the hurdles Vista has overcome.

Vista’s release has been rough, very rough. Features have been hacked and slashed more times than the release date has been pushed back. Working subsystems based on proven code have been rewritten (from scratch) with an emphasis placed on compatibility. Fundamental usability guidelines have been broken time and time again, but Microsoft never was very good with consistency.

I mean, I guess I’m ranting here, but I’m pissed. RC1 gave me the feeling things were looking up. It was faster and more consistant then every build before it, and it maintained enough backwards compatibility that I was able to compile and run the entire Payscale system on the thing, I was excited!

But then it started to turn into tar, slowing down with every day I used it. I can recall expanding a 4MB zip file, and waiting for 2 minutes… 2 minutes! Speed was starting to irritate me, but I had enough patience to work through those issues, it was afterall, a beta. Well, stortly thereafter, the display began to corrupt, more artifacts appeared every day I used the thing, it was horrible, I wanted to cut my eyes out. I could not look at code without developing a headache, yet I continued. I had put myself in this situation, and I still had deadlines.

So I wake up today, on my telecommuting day, I was excited to begin a morning of code. To my suprise I was welcomed into the conscious workday with a BSOD. I uninstalled every new application, and disabled every device I could think of, one by one, hoping to find the culprit. Before long, safe mode wasn’t safe from the BSOD.

I speak to you today from my brand new install of Windows XP (I had to wipe out Vista AND OSX to install it). Bootcamp decided it did not want to resize partitions anymore and recommended I re-install OSX. Fuck em. I formatted the whole thing and installed XP.

I am a little annoyed at the situation, and the simple fact I lost almost 6 hours of would-be code. I won’t be touching Vista until RTM (At least, that’s what I claim today) and neither should anyone who does not considder themselves a masochist.

Site content and design copyright 2005-2010 bsd.bz