Skip to content

Announcement: FRUGOS GeoSummit 2007

One of my clients is helping out with this unconference. If you’re into GIS, it seems like it’d be worth going. I certainly had fun at the last unconference I went to.  I am planning to attend; hope I see you there.
———————–

FRUGOS (Front Range Users of Geospatial Open Source) is holding its
first GeoSummit on Saturday, June 16th at Churchill Navigation–100
Arapahoe–in Boulder.

This will be a unique gathering of a variety of folks interested in
Place–geo-types, hackers, academics, artists, amateur enthusiasts,
etc. While there certainly will be representation from the GIS and open
source worlds, we encourage all who are fascinated about the
intersections of technology and engagement with the world around us to
participate.

Also, we’ll be structuring the day around the “un-conference” model (see
http://www.barcamp.org), so, for starters, you
can expect:
No Pitches
No PowerPoint
No Passivity (unless you’re a little sleepy after lunch)

Bring your laptop (we’ll have wireless), and a project or enthusiasm
you’d like to talk about with the group, get feedback, and collaborate
on fresh solutions: the agenda of the day will be structured during
the morning registration/sign-up/socializing period.

If interested–
1) RSVP by joining the Google Groups set up for this event–

http://groups.google.com/group/geosummit

2) Bring a laptop (and cellphone/GPS if your enthusiasms tilt that
way), your idea/project, and willingness to collaborate

3) Spread the word

Tentative Schedule

9:30-10:30AM Registration, refreshment, socializing
10:30-12ish Sessions
12ish-2 Lunch (there’s a grill, beverages, and hiking trails)
2-? Sessions

This promises to be a great combination of creativity, intellectual
engagement, eating and drinking, and socializing.

————————

[tags]barcamp,gis,unconference[/tags]

Find (or found) a consulting support group

I work on my own most of the time, out of my house. This means that I have regular email and phone contact with other people, typically clients, but only occasional face to face time. This style of work suits me, though I have friends who say it drives them batty. I enjoy the short commute and the freedom to order my day as I see fit (as long as I deliver).

However, sometimes it’s nice to have contact with people who aren’t paying you money. Users groups (such as BJUG) and meetups (such as the New Tech Meetup) can be informative and through provoking, but the presentation focus makes it hard for me to connect with other people. What I’ve found works best is a small regular lunch group with other consultants.

At lunch, you can discuss business problems, sometimes related to people who aren’t paying you money, but should be. You can get referrals for professional services that you may need–accountants, lawyers, etc. The group can be a source of business for you, as well as a place you can find someone to refer clients to for projects beyond your expertise. I always find it interesting to hear what other people are doing: one of my favorite lunchtime activities is the ‘new project go around’, where everyone talks about what new project he or she is working on.

In short, gathering on a regular basis with a set of consultants who you know and trust can be very useful. I have found once a month works just right for me–we always have plenty to talk about. We have also met semi monthly, and that was alright too–a bit harder on the schedule. A group of 4-8 people is about the right size–less and you don’t get as much cross pollination, more and you start to lose track of people. If you can, try to have people from different parts of the technology world in the lunch. The group I belong to has development managers, UI folks, project managers, developers and designers. This means that if I have a problem to discuss, I can get a lot of different viewpoints.

How do you start such a consulting support group? I think the best way to do it is to pick a restaurant and time, and invite 10 colleagues that would find this type of networking both useful and geographically convenient. At the restaurant the first time, see if people are interested. If so, set up an email list, and pick future dates. Don’t try to pick a time to meet that always works for everyone–part of the reason to invite 10 or so people to start the group is so you have enough people for a good conversation when someone inevitably can’t make it.

My group wrote up some bylaws–the most important of which was that no clients would be invited, except with prior notice to the email list. The reason for that was to allow the sometimes frank discussion of issues. Other than that, just set up a recurring event in your calendars and ping the email list when the lunch is near. And let the discussion commence!

Connecting PHP and Java

Have you ever had a project written primarily in PHP, but there were some java systems that you wanted to connect to? Perhaps there was a third party library or a java API that you really want (or are required) to use, but PHP had been chosen for other reasons.

The php java bridge is your solution. The documentation is good, and the performance is pretty darn good (if you’re looking for benchmarks, search for ‘How fast is it?’). You can use the bridge over sockets, a xml based protocol via servlets, or over a mono application. The mailing list is active, and it looks like the primary developer actually answers questions on said list (as of May 2007).

I’ve always been a bit hesitant regarding cross language programming: “Great, now I get to debug in two languages that communicate via sockets! Yahoo!”. But for a certain set of circumstances, using this bridge can be the right answer.

[tags]php, java, cross-language programming,php java bridge[/tags]

Extending AWStats reporting

AWStats is a powerful, free web log analysis tool. I had a client that had some specific reporting needs–parsing urls retrieved and reporting how many times any document in a specific set of directories (but no other ones) had been viewed.

Luckily, AWStats is configurable enough to do this using the Extra Sections feature; in fact, there is an example in the documentation showing how to do exactly what the client needed. In fact, you can do a ton with regular expressions and AWStats. Basically, if the data is in the web logs, you can build a custom report for it.
[tags]awstats,custom reporting[/tags]

Mobile Device Capability Database

It’s been a few years since I’ve done any mobile development, and it seems like things have moved on. But one of the hardest problems I faced was finding out what devices supported what APIs. It looks like WURFL is trying to solve this problem:

The WURFL is an XML configuration file which contains information about capabilities and features of several wireless devices.

The main scope of the file is to collect as much information as we can about all the existing wireless devices that access WAP pages so that developers will be able to build better applications and better services for the users.

Via the good folks at SitePen.

[tags]open source,mobile devices[/tags]

How to rotate catalina.out without restarting tomcat

There seems to be some confusion regarding rotating tomcat logs, in particular rotating catalina.out without restarting Tomcat. With Tomcat4, catalina.out contains everything the application developers logged using System.out.println. Because of the way that Tomcat holds onto the file descriptor on Unix, simply moving the file doesn’t work: Tomcat merrily writes to a file that you can no longer access.

This is important to do for the same reasons you should rotate any other system log; disk space is cheap, but logs can fill it quickly, and the information value of logs decreases rapidly with time. Rotating logs typically means you remove them from the filesystem, but you can also archive them off line with tape, or to a SAN, etc. I’ve run into issues with JSVC and large log files too.

There’s an entry in the FAQ and a pointer to a maillist discussion. But you have to dig a bit and I thought I’d just document what I did. (This works for Tomcat4–Tomcat 5.5 did away with the Logger element and I’m guessing you’d just use some of the log4j configuration and RollingFileAppender.)

First off, you want to make sure that you’re rotating your other logs. This is typically done with a Logger component, configured either at the host or context level. Set the timestamp attribute to be ‘true’.

Now Tomcat is handily rotating all your host and context level logs. You may want to gzip or delete old ones via find:
/usr/bin/find ./logs -mtime +60 -name "mylog_log*"|xargs rm -f

The next step is to set the swallowOutput attribute to ‘true’ on all contexts. According to the docs, this attribute causes

the bytes output to System.out and System.err by the web application [to] be redirected to the web application logger.

Now you have to restart tomcat. But from here on out, Tomcat will rotate all configured logs, and catalina.out will only contain start and stop messages.

Oh yeah, and just as that email thread does, I heartily condemn using System.out.println because log4j is so easy to setup and use. But I’ve written code like that (admittedly, usually with a sheepish grin on my face), so I can’t cast the first stone.

[tags]tomcat4,logfile rotation[/tags]

My software internationalization article is now up at Ccaps

A few months back, I was approached to write an article for the web newsletter that the folks at Ccaps publish. With the help of Mike and Jeff from Zia Consulting, and Brian Pontarelli, I was able to write what I think is a fairly decent introduction into internationalization from a software engineering standpoint, based on the project I’ve presented about in the past. I hope you’ll enjoy it. (I’ll be archiving it permanently on my website soon.)

Update 4/19/07: I corrected the format of the name Ccaps, and linked to their website.
[tags]i18n[/tags]

MySQL tuning

If you’re trying to tune MySQL, make sure you measure before and after. mysqlreport is a great way to measure a number of aspects of mysql (make sure you check out the guide). If you want graphing and long term tracking for mysqlreport and just about any other measure you care to track, I recommend cacti, which works with rrdtool.

[tags]mysql performance, monitoring[/tags]

Boulder BarCamp notes

I just went to BarCampBoulder, and had a blast. Basically, it’s a self organized conference. Free, no set schedule (there’s a white board with a tenative schedule) and anyone can give a talk about anything. Very cool. Here’s a random link fest covering topics I chose to make note of.

  • Microformats, especially hCal. Feasibility of machine aggregation of Boulder free events, and complexities inherent in such an effort.
  • An understanding of how slippery the concept of “The Semantic Web” is.
  • An excellent post about handling credit card transactions.
  • To clean up user generated content, and avoid XSS attacks, use UBB or some other markup language. Another option is to validate any user generated content against an XHTML Mobile DTD, which should screen out any nastiness.
  • CA-Cert, a way to generate SSL certificates for free, that is slightly better than self signed certs.
  • CardSpace and OpenID,and the differences and benefits of using each.
  • A post about the Laws of Identity
  • ColourLovers, for all you palette hounds out there.
  • A fascinating discussion of the amount of data running through Digital Globe’s systems.
  • An overview of CMSes worth looking at: Typo3, TextPattern, Radiant
  • A discussion of how open communities work (and don’t), including Wikipedia.

It was a fascinating day. There seemed to be a business track and a technical track, and there ended up being about 30ish folks there. Well worth it, if for no other reason than the intellectual ferment.