Leadership in an OpenSource Project

In the past week have been confronted with several issues related to project planning, task & time management and project execution. Just defining the “deliverables” has been a real challenge. Given that the workforce of the company I work for is largely constituted of people who consider themselves to be volunteers, it makes for an interesting work environment. I naturally gravitate towards planning for tactical success and wanting to view things from the “big picture” perspective – knowing how the parts fit together. Project planning and project execution involves a lot of decision making and a lot of communicating about decisions.

Over the last year I have been watching with some interest the UI development of WordPress. UI design is an area that I really enjoy. So when I saw Jane presenting on this issue of “How decisions get made at WordPress” (on the Open Source part of the project), I thought I would watch it. I thought that I would be watching how a company does UI decision making. But the focus of the talk was broader than that. It was generally good to see a model at work in a company where there is a successful product. As I listened to the discussion I was struck at how their project deals with:

  • Decision Making
  • Community Involvement
  • Consensus Building
  • Project Planning
  • Leadership
  • Sustainability

In many respects the company I work with deals with these same issues. It was good to see how another company/project deals with these issues, and sees these kinds of issues as important to the success of their product.

Chronicles of DNS & Sub-Domains on OSX Server

The Intended Setup:

We want to be able to run the OSX provided Wiki, Calendar and Blog features of the WebService. In addition we want to also run Mercurial (http://mercurial.selenic.com/) and RefBase (http://www.refbase.net/).
We want to run:

  • OSX services at mephaa.xyz
  • Mercurial at: hg.mephaa.xyz
  • Refbase at: ref.mephaa.xyz

These sites are for our work group only, they need not be accessible to the outside world. But if in the process we can make our setup of such a nature that an invited guest could collaborate with us on our project and view our workgroups’s collaboration area that would be ok. We will be using the MacPorts version/method of running mercurial.
Aside: Since I originally started out to resolve this challenge I have acquired mephaa.org, as a real registered domain.

Network layout:

Network Diagram

Mephaa LangDoc Program Network Diagram

We have a dynamic IP from our neighbor’s router. (We share the line and they are up stream. That is just the way things work in this location in Mexico. They are in turn connected to the ISP.)
The connection from the neighbor is hardwired to the WAN port on the Airport Extreme. The Airport Extreme is using NAT & DHCP (see settings below). I have 9 machines connected to the Airport. One of which is the MacMini server. It is the only one that is hard wired to the Airport. The rest are laptops that connect wirelessly.
The MacMini is assigned a stable IP address by the Airport Extreme based on its MAC address. The IP address for the server behind the firewall: 10.0.1.5.

The Settings on the AirPort Extreme:

The Challenge: As I presented it and discussed it on apple’s forums, on Nov. 20th.

Status: (Nov 20th)

We do not have an outside domain name that we have purchased. We just are using the name of the computer as it was set up during the install of the OSX.

I have the Wiki, Calendar and Blog features running at macminimarlett.local.
I can type macminimarlett.local in any web browser on the server side of the Airport Extreme and access the OSX provided WebServices (aka the wiki, blog and calendar.)

I would like to make the mercurial repository available at: hg.macminimarlett.local
I would like to make the refbase instance available at: ref.macminimarlett.local
These “additional” websites are hosted on the same machine as MacMiniMarlett.

§1. So What must I do to get hg.macminimarlett.local to resolve at all to anything?
§2. So What must I do to get hg.macminimarlett.local to resolve to my mercurial instance?

Currently I can not get hg.macminimarlett.local to resolve at all. “Safari can not find the server”. But browsers do find macminimarlett.local.
This leads me to think that it is a problem with my OSX server settings not with my install of Mercurial.

Suggestions offered on the 20th:

  1. Do not use .local.
  2. Do not use .private.
  3. Change the domain to something other than the computer name.
  4. Computers on the LAN can find macminimarlett.local because of bonjour. Not because of any special DNS entry.

We dropped the .local and the .private and switched to mephaa. instead of using macminimarlett.. I left the macminimarlett. zone in the DNS records just incase. This leads us to the server settings on Nov. 21st.

To this point I had been assuming that .private in the DNS registry was being translated to .local in the bowsers. This was an errant assumption.

Server Settings: Nov 21st

MacMiniMarlett DNS Settings

Suggestions received from John on Nov. 21st:

Your DNS is incorrect. Run the terminal command:
sudo changeip -checkhostname
You need to get this sorted out because it effects a lot services.

Here’s the crash course version: the . (period) at the end of the domain name means it is a full qualified domain name (meaning that it is real domain that real people use, like google.com.) also the primary domain record should be like this macminimarlett.com. Or macminimarlett.private. Or macminimartlett.local. (beaware that Microsoft Server 2008+ is droping .local support and you need a real domain name and public IP/dedicated IP – which means using .local isn’t future proofing).

One thing to know, the primary domain record doesn’t have to be a fully qualified domain, but it should be as everything is heading that way in the future.

At the moment your server is thinking the macminimarlett. And mepaa. Are the .com part of the domain name.

Yeah there will be a lot of confusion in the mepaa domain record as there isn’t any reverse mapping for it. And the cname record is at the .com level (layer 1) which won’t resolve very well for clients.

Next, what is the forwarder settings set to? These should be set to the ISP DNS and then to the router (you can add as many DNS servers as you like for redundancy).

What is doing DHCP to the clients? What DNS are they getting? The clients need to know where your subdomains are in the network. For example if a pc is typing in hg.macminimarlett (which is a bad idea – it should be hg.macminimarlett.private or something like that) then the pc client checks the DNS server for which server (IP address) has the subdomain hg.macminimarlett – but if the DNS server doesn’t have a record of hg.macminimarlett then the DNS server will reply with not a real address (because it doesn’t know who that is).

Regards,

Nov. 22nd.

I now realize that the syntax of my DNS entries (when and only when I am not using a registered domain name) need to be:

  • For a Zone: <Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (domain name level).(TDL level).

  • For the domain root, which is an entry in the zone: <Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (domain name level).(TDL level).

  • For a subdomain, which is also an entry in the zone: <Some Name>.<Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (subdomain prefix).(domain name level).(TDL level).

My current entries in my DNS are not set up this way. I need to change them. Before I do that I should likely run the changeip -checkhostname as suggested by John.

I ran sudo changeip -checkhostname
And this is what I got:

changeip Results

Now my question is: is this message saying I need to run this again? What am I to do with the results of the message from changeip? I read the Manuals but that did not yield any profound insights.

I added .private to all the DNS records in the DNS service, in order to fix the syntax of the DNS records as indicated by John. After that I ran changeip again. It now shows that there is nothing needing to be changed. I think this part is now resolved.

Resolved changeip Results

Now this is what the server settings are (Noon 22nd) :

Aside: I corrected a spelling error in the DNS Records where mephaa was mispelled as mepaa. All the records now read with the mephaa spelling, as indicated in the second picture.

I got hg.macminimarlett.private to resolve from the server to a test index.html page on the server. But I could not get it to resolve from a client on the network.

  • Is this because I have the wrong type of records?
  • Is this because I am not passing the DNS records to where the clients are looking for the records?
  • How do I pass these DNS entries to my clients?
  • Is this something I have to enter in the Airport Extreme? If so which entries on which lines?

Airport Extreme TCP/IP

From Camalot via the Apple forum post:

A hostname is a record of a host within the domain. For example, hg.macminimarlett.private is the hostname for the host hg within the macminimarlett.private domain.

I don’t see anything in the Server Admin titled “hostname”… There is one thing under the Primary zone that says “hostname” but what should this be set to? the IP of the computer on this LAN?

Server Admin doesn’t know what additional hostname you want for your domain. It’s up to you to create them. You create additional records (either ‘A’ records (Alias) for physical machines, or ‘CNAME’ records for additional hostnames that you want to map to an existing machine.

§7. Ok so in what manner do I add hg.macminimarlett.private. to that zone? Do I add it as a CNAME, as a secondary zone, as a Machine (A) recored?

In this case it sounds like you want to add three records to your existing zone.

One A record for your server (call it whatever you want, but server.macminimarlett.private seems to make sense). Give this the IP address of your server.
Two CNAME records – one for hg and one for ref that both point to server.macminimarlett.private.

Now you’ll be able to resolve all three hostnames, and they’ll all point to the same physical IP address. From there it’s just Apache’s configuration telling it how to deal with the different requests.

From John:

Yeah there will be a lot of confusion in the mepaa [sic] domain record as there isn’t any reverse mapping for it. And the cname record is at the .com level (layer 1) which won’t resolve very well for clients.

Next, what is the forwarder settings set to? These should be set to the ISP DNS and then to the router (you can add as many DNS servers as you like for redundancy).

What is doing DHCP to the clients? What DNS are they getting? The clients need to know where your subdomains are in the network. For example if a pc is typing in hg.macminimarlett (which is a bad idea – it should be hg.macminimarlett.private or something like that) then the pc client checks the DNS server for which server (IP address) has the subdomain hg.macminimarlett – but if the DNS server doesn’t have a record of hg.macminimarlett then the DNS server will reply with not a real address (because it doesn’t know who that is).

I am not sure what is giving DNS to the clients. I did have to put something (I think it is the IP of my neighbors router, see the image above) in the DNS settings of the Airport Extreme in order to get the Internet to be passed to the clients. So what I did was put the internal IP address of the MacMini Server in the DNS field on the Airport Extreme. I also found this interesting: http://www.dyndnscommunity.com/questions/4567/custom-dns-with-subdomain-and-airport-extreme

It seems that an AirPort Extreme will always identify itself as the DNS server. If I want the network to look for a DNS server elsewhere. Then I need to follow one of these options: http://discussions.apple.com/thread.jspa?threadID=121990, http://wiki.amahi.org/index.php/Airport_express or http://discussions.apple.com/thread.jspa?threadID=2288123&tstart=0. (Restart might be required. Also I might be looking for something called “split horizon DNS”.)

http://www.dyndns.com/support/kb/apple_airport_with_custom_dns.html
http://www.dyndnscommunity.com/questions/1087/apple-airport-does-not-create-global-dynamic-hostname-in-custom-dns-zone

Better Extended Live Archives

A long time a go, when WordPress was young (like version 1.5), And K2 was young. There was a plugin called Extended Live Archive (ELA).

I love the organization that this plugin gave to a bolg’s entries. It is still my preferred presentation of posts on a blog. Over the years all the software has developed K2 is now in version 1.0.3, WordPress is in version 3.0 and ELA has become Better Extended Live Archive (BELA) thanks to Charles

Here is a series of links – in no particular order – which talk about the development of ELA.

.

I have had a problem with how BELA Presents the entries by Date:

Better Live Archives by Date

Better Live Archives By Date

Notice how all the blog entires at the bottom are displayed on top of each other.
I can not figure out how to un-do that.

Notice also in the following two pictures of the sort by Tags and sort by Category list the entries are not displayed on top of each other.

Better Live Archives By Tag

Better Live Archives By Tag

Better Live Archives By Category

Better Live Archives By Category

For checking this live: you can look at the archive. This has been checked in several browsers:

  • Safari
  • Flock
  • Firefox
  • Cruz

All to no avail. (That is it does not appear to be a Browser based issue.)

The Offending Element:

bugs

Things to Change per Charles.

Tornado in Grand Forks, ND

I saw my first tornado today. Amazing sight! Actually I saw three tornadoes, but I only managed to get two of them on video.
I missed the first one (right before min. 1:48 in my video) Because I was driving. But found some pictures of it on Flickr and a video of it on YouTube.

Jump to Min: 2:30 to see two of them at once.
httpv://www.youtube.com/watch?v=ME_LTNGMRVQ

SSH, Unix commands & RegEx

This summer I am sitting in on a computational linguistics course. It is the first instruction I have had about UNIX. Pretty Awesome.
This has required me to do some googling looking from terminal commands.

This is kind of a sketch of where I have been.

UNIX:
http://www.osxfaq.com/Tutorials/LearningCenter/

SSH:
http://kimmo.suominen.com/docs/ssh/
http://ss64.com/osx/

TERMINAL:
http://homepage.mac.com/rgriff/files/TerminalBasics.pdf

grep:
http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/
http://en.wikipedia.org/wiki/Grep
http://www.computerhope.com/unix/ugrep.htm

Regular Expressions:
http://www.zytrax.com/tech/web/regex.htm
http://www.regular-expressions.info/tutorial.html
http://gnosis.cx/publish/programming/regular_expressions.html

RegEx and Unicode:
One of the issues that I have had with RegEx has been what is a natural class? i.e. [A-Z], [A-Za-z], [0-9], etc. As a linguist I deal a lot with IPA characters, subscripts, superscripts, unicode, and diacritics. How am I to define a natural class with these? Can I define a natural class based on the phonology of the language?

So I did some more searching:
http://unicode.org/reports/tr18/
http://unicode.org/reports/tr18/tr18-5.1.html
http://icu-project.org/docs/papers/iuc26_regexp.pdf
http://courses.ischool.berkeley.edu/i256/f06/papers/regexps_tutorial.pdf
http://wapedia.mobi/en/Regular_expression?t=5.

RegEx+PERL+Unicode:
http://perldoc.perl.org/perlretut.html

PERL:
http://www.enginsite.com/Library-Perl-Regular-Expressions-Tutorial.htm
http://www.cgi101.com/book/connect/mac.html
http://www.mactech.com/articles/mactech/Vol.18/18.09/PerlforMacOSX/index.html

Python:
http://www.amk.ca/python/howto/regex/

Social Network Marketing

My friend Abbie, (Facebook, MySpace) is currently in a competion to perform live with Ingrid Michaelson. She is also in first place currently. (Go ahead vote for her. http://www.ingridmichaelson.com/videocontest/vote/ Her’s is #6 in the top ten listing.)

That is not what is the most interesting though.

What is interesting is the social networking going on to get all the votes needed.

Someone created an Open Event on Facebook. Abbie has about 1700 Facebook friends and a fan page. But by creating an open facebook event other people could envite their friends to the event. So now there are over 11,500 people who have been invited to the event! That is 10 times the number of people that Abbie knows. And this has only been three or four days running.

When people respond to the event then there is an option for a personal message. Followed by clear instructions (and links) on the event page describing how to vote. The event has gone viral. That is the point of Social Network Marketing.

I wonder if I created an event for my business purposes if it would fly. I only have 500 friends so to reach the 10x number we would only need to send out 5000 invites.

You can follow Abbie’s Youtube channel.

Selected Works™ & BePress

Bepress is an internet based service from Berkeley Electronic Press. They basically allow a user to display their work. i.e. a Professor’s CV which has a list of publications, those publications are then displayed by Selected Works™ & BePress as downloadable PDFs. These works can then also be described, downloaded, their bibliographic references can be downloaded, etc. Berkeley Electronic Press archives the Documents and presents them in an understandable, accessible, usable format. They have integrated Google search. Seems like lots of Love all around.
This kind of thing would be really good for an organization like the one I work with.


This is a picture of a page. See this page live.


This is a picture of a page. See this page live.

BePress has a lot of features, it integrates with a lot of other services too. One service which looked really cool was their service for working with the editorial process used in working papers.


Simple Linguistics software

I often see good (maybe not sexy), software, like iBable designed on the Mac for scientific purposes. I often wonder, “Why hasn’t anyone done something for or with linguistics?” linguistics is a big field. Don’t get me wrong. It is also a field with few standardizations for data interoperability, and even fewer standards for data description and markup. Just seeing something like iBable is inspiring to want to learn Ruby and do something for linguistic data.

The Apple developer program is only $99 a year.
Tutorial on Ruby by Phusion.