Introduction to WebDAV

30. June 2006 | General, Techie | 1 Comment »

I didn’t get back to the room til about 4am today, so I was a bit scared to discover myself actually present and awake at this talk!

Show of hands - not many people using WebDAV

Distributed Authoring & Versioning

Authoring means lots of things, Versioning is a little misleading

Built on top of http - like network filesystem, can be used anywhere

Manage files on website/network filesystem for LAN

From the beginning, Tim Berners-Lee envisioned a read-write/collaborative web
Initially, marketing etc made it read-only, until the 90s, when wikis appeared

Web documents, calendars

mod_dav was 3rd party module for Apache 1.3, has been standard module since 2.0

Amazingly easy to configure mod_dav to create a DAV repository - one setup
directive, one directive to enable it (DavLockDB, Dav On)
DavLockDB maintains lock status of files accessed via DAV - Windows DAV
implementation doesn’t implement locking, limits what you can do when connecting
via Windows
Dav On must be in directory scope

DAV implements methods on top of GET, HEAD etc
‘Limit’ can be used to require authn before using DAV methods - anyone can use
http methods, permission required to use DAV ones

Remember that DAV is running on your webserver! PHP & friends will be
interpreted as normal when you ‘GET’ them
Don’t permit upload of PHP files

Files need to be writeable by webserver user - goes against usual best practice
Possible solution: run a secondary webserver on a different port, which can
write as necessary, and is as well locked-down as possible (minimum modules/no
PHP/low MaxClients/SSL/Authn etc)

All OSX applications are DAV-aware - can r/w to a DAV repository
(Insert sneaky FeatherCast plug)
Network Places/Web Folders on Windows
Novell - NetDrive (no longer available from Novell’s website, Google for it!)
DAVFS is in most modern linux kernels

DAV on Windows is just full of awkward ‘fun’. NetDrive++

iCal - sneaky plug for the ACEU2006 iCal files :)

http://www2.et.byu.edu/~njones/share/outlook2ical/ lets you manually publish an
Outlook/Exchange calendar as an iCal file

phpicalendar++

Subversion uses DAV as the transfer protocol

DAV can replace NFS and SMB to get away from OS incompatabilities/hassle with
filesystems
More secure replacement for FTP, can be used over https too

Music Nights

29. June 2006 | Flickr | 0 Comments »
Music Nights

Music Nights, originally uploaded by NoirinP.


We had a fantastic night last night, when Colm, Paul Fremantle, Bill Rowe and Lisa Dessault regaled us with several hours of fantastic music.

Rich has put a small sample of what we got online, and I have some photos on Flickr.

The conference has been going really well, and I got the chance to thank some of the Sun guys in person today.

I’ve learnt a lot from the various sessions, collected swag and business cards, extended my web of trust, and now I’m off to study up on IP law as part of the All-Cliff-All-Day tutorials :)

Troubleshooting httpd Configs

29. June 2006 | General, Techie | 0 Comments »

Mads Toftum was up early this morning, with several UserFriendly cartoons to keep us alive and awake, and lots of good tips for troubleshooting httpd config problems.


Getting right error message, getting sufficient information about a problem

You can always try to force it - there are very few personal problems that can’t
be solved by using dynamite! :-)

Backup, backup, backup!!!
Version control
.old, .older, .reallyold, .oldest
cp httpd.conf httpd.conf.`date’+%F_%H%M’`
inline copy/comment out

Browsers lie. [Ed. note - oh so much. All the time.]
Caching - try touching file, GETing again, checking Last-Modified:
Browser errors
IE - “DNS Error” = default “I’m not telling you what’s wrong, so nyeh” error
Serverside - generic errors

httpd -V
Find out where config file is living, where logs will be found, version, when
built,
-V: show compile settings
-t: syntax check on config files - use this BEFORE you stop the old instance!
-l: list compiled-in modules
-L: list available config directives

telnet to port 80
GET / HTTP/1.0
HEAD / HTTP/1.0 -> mostly supported, gives just headers
Host: www.apache.org -> to test if things work, before DNS is set up/working

openssl s_client
Ala telnet, but wrapped in SSL
-showcerts -> dump server certs
-state -> how far it gets in the negotiation etc process
-reconnect -> test that you can reuse an old SSL connection

“I can’t connect” - firewall, no internet access, webserver not running
netstat -an (| grep LISTEN)
netstat -anp -inet (p = process listening, -inet gets rid of local sockets etc)

http://httpd.apache.org/dev/debugging.html

gdb, strace (use to diagnose errors while starting that never get to error log
etc - often opening the log file dir)/trace/truss/dtrace, tcpdump

http://www.research.att.com/~hpk/wsp/ - web scraping proxy
Webdeveloper for Mozilla/FireFox

Always check the error log!
LogLevel: be careful about ‘debug’! Log files get big, fast.
Turn off RewriteLog in production - great for debugging though!

Connection errors - is the server even running/listening? ps, netstat, telnet
Did the request reach the server? tail -f accesslog, tcpdump
Protocol errors - openssl s_client

Startup errors - Always look in the error log
Socket already in use - check for duplicate Listen directives
Common problems: ServerName, non-existent log-file dir

404s - error log, access log
DocumentRoot pointing to the wrong place
Alias maps something to the wrong place
Redirects/ServerName/Rewrite problems
Relative vs Absolute paths!

403s - error log
“client denied by server configuration” - most common
httpd.conf - look for “Deny from”
“user xxx not found” - check password file - probably doesn’t exist!
“does not meet reqs for user/valid-user” - check Require valid-user/group/user

Scripting errors
500 Internal server error
Error log
./myscript - first line must be Content-type: xxx\n [Ed. note - clearly, the
script must also be runnable!]
suexec - is it enabled? Check log.

htaccess errors
Error log :-)
Syntax error in htaccess = internal server error
Check context
AllowOverride (echo “garbage” >> .htaccess should throw an internal server error
- otherwise, htaccess isn’t being used)

Subversion Best Practices

29. June 2006 | General, Techie | 1 Comment »

This was given by Brian W Fitzpatrick - another great talk. Many apologies if these notes are a little less than coherent - there was a lot to get through, and it went fast :)


Always use one repository - except when data types (code vs multi-GB .psd
files), or access policies prevent

Authz policy - none if possible
If you don’t trust someone, don’t give them access

Can’t ever delete things from subversion

New features coming up for syncing repos

Virtual accounts viw apache ssl so you don’t need system accounts

Apache allows you to browse your repository - but is this useful?

Hook scripts - pre-commit can prevent stuff happening, but DO NOT attempt to
modify the transaction, because there’s no way for SVN to notify the client that
something has changed with what the client is trying to modify

Hooks we like - check-case-insensitive.py

Post-commit hooks, simple shell script that calls the hook in background ‘&’
mailer.py / CIA bot

Locking/Reserved Checkouts - SVN works on copy-modify-merge. Some files are
unmergeable (.doc etc)
Don’t lock everything all the time ala VSS
Only lock non-mergeable files
Use svn:needs-lock property for communication - this is subvertable

Autoversioning is great for non-coding projects, horrific for traditional code
No log messages, potentially /huge/ spam and empty revisionss

BACKUP YOUR REPOSITORY!!!
Dump vs hotcopy - all good

History obliteration should be avoided - takes a long time, invalidates working
copies

svndumpfilter has limitations, can cause problems, but can be used to dump
everything up to a certain revision, then importing all revisions after the
revisions to be deleted. Will still invalidate working copies

Filesystem based backend is just as fast as BDB, incredibly reliable, but
problems with BDB should be fixed soon

Encourage Code Review
Commit often
***Small, discrete chunks - no “power plants”
Use consistent log messages
Send commit mails to team

Don’t fear branches
Short-lived - task/bug-fix branches; Medium - feature branches; Long-term - release branches
Do have a release policy

No smart merge tracking - needs to be managed by humans, typically by
descriptions of merges in the log messages
svnmerge.py
Real merge tracking might come in v1.5

Standardise on one locale, or else.
All filenames and log messages stored as UTF-8

Use autoprops - the server can’t transmit them to clients
Useful ones - svn:mime-type svn:eol-style svn:needs-lock

Cool client tricks - switching to a branch in mid flight
In-place “import”

Mix & Match components
svn:externals not all that hot - not protocol independent
’svn switch’ on empty directories

Managing a website in SVN - serve site from a working copy
Disable httpd access to .svn

$Revision$ doesn’t do what you want - use svnversion, designed to work with your
build system

Use pre-commit hook or wrapper to force code-styles before commit - svn won’t
do this

Don’t version ISO images!! Don’t lock everything in your repository. Don’t
forget to back up. Don’t commit gargantuan files. Don’t commit files one-by-one
when a single commit would do. Don’t forget a useful log message.

ApacheCon - Hackathon

28. June 2006 | Flickr, Personal, Techie | 1 Comment »
Lots of Macs

Lots of Macs, originally uploaded by NoirinP.


A more social post on the ApacheCon - it’s been a manic few days getting everything up and running! Now that the actual conference has begun, I can at least sit down for an hour at a time, even if I haven’t gotten to the point of single-focus for an hour yet!

The hackathon was great fun - there were plans to get some work done on mod_rewrite docs with Rich, which didn’t really end up working out… There was the ‘docathon’ organised for the Incubator project which took a while to get off the ground :)

I also got some basic docs on mod_ftp, from Covalent/Bill Rowe, that I’m going to ASFise/XMLify as soon as I get a chance! (Really, I’m just collecting projects, that I’ll have to get working on once all this is done…)

We got fibre laid, connectivity set up, hacking started, and lots of socialising done. Gareth Eason arrived last night, and Colm brought over half a dozen instruments, so we even had some excellent music!

The Members Reception was fantastic for the socialising - and I reckon I’ve collected enough work to look forward to some more socialising tonight without feeling even remotely guilty about it :)

It’s the welcome reception, followed by a keysigning party, and I just can’t wait!

Notes on Shuttleworth’s talk

28. June 2006 | Personal, Techie | 0 Comments »

For now, these are posted exactly as I took them down during the talk. I’ve realised that there’s so much going on at the conference that if I wait until I have time to edit and fix things up before I post them, I’ll never get anything posted.

No, I won’t be taking notes on all the talks I go to. Probably not even most. But I was excited to hear what Shuttleworth had to say, and I hadn’t gotten to talk to him prior to the talk (thereby sussing out his opinions in advance :)). Finally, his talk was simple, and easily note-able… So here goes.


Notes from the Keynote:

Open source has come a long way in 10 years
First time he threw up as a cosmonaut - “There, there, you’ve got that over with, you’re practically a cosmonaut now, just one or two small challenges ahead”
Guerilla war, premature victory declaration dangerous

#13 Pretty is a FEATURE
Look & feel elegant - not just code
10x work for great software that’s easy to use, than just great software
Equally important on the server side

#12 Consistent PACKAGING
Solved problem
Why care about packaging? Interface to end-users
Patches disappear between upstream & distros
Improves ability to deliver code to end-users
Reduces appearance of fragmentation in the OS world

#11 Simplified LICENSING
Creative Commons seems to catch full-spectrum
Certain amount of fragmentation is essential/fundamental - CC reduces unnecessary fragmentation as far as possible

#10 Pervasive PRESENCE
Star City - no hot water, -15C “I think I forgot to turn your hot water on”
Expectations
Dealing with identity, security, “who’s present”?

#9 Pervasive SUPPORT
Support /is/ there, but there’s no sense of pervasive support.
The guy who sold the computer, the guy studying computers, should understand free software
Show non-IT-pro community that support is pervasive, professional, immediate

#8 Govaritye PA RUSSKI
350 languages with >1 million speakers
Translation is vital, vital, vital
Harness energy, communities - create expectation that /everyone/ can use free software

#007 Great GADGETS
Desktop battleground is
RedHat et al creating beachhead
Fragmented - linux is biggest platform on smart phones, but totally fragmented, therefore ineffective to create change
No championship/leadership for driving linux into still-small spaces
Telephones 10x more common in Africa than broadband (1/100 vs 1/1000)
Climb the gadget mountain

#6 Sensory IMMERSION
Tokyo guy who’s made his house into WoW - walks into rooms, hears what’s going on in parts of the world
Pervasive presence/always online + blur lines between real & digital with sensory immersion
VoIP, voice, presence

#5 Getting it TOGETHER
Leap in productivity = new goal
Fundamental change to productivity
Opportunity for OS to leapfrog - show people they can be more productive with OS
Realtime collaboration to desktop, real-life office tools
We live in a world where certain things were presumed true - have bandwidth, collaborative tools (email, revision control)
Invite people in to your desktop, to work with you, in real time
Artificial divide between people in the room, people reading later
Readers are keen - but second class citizens
Use technology to bring readers into the room
High bandwidth of body language in the room - perhaps distribute completely, therefore level playing field
When free software reaches parity with best commercial, you see an explosion of innovation - Firefox with plugins
Innovation on desktop
1st get to parity, 2nd have vision, go beyond that

#4 Plan, Execute, DELIVER
Lazy on delivery - ship when it’s ready?
Don’t make bad decisions just because it’s time to get out the door
Collaboration, collaboration, collaboration
Fragmented communities
Cohesive plan of what we want to get done, and when we want it done by
Communication to community - what’s going on, who’s responsible for what
Mozilla/Firefox RC/build systems allow people to see features/plans that were going to join the mainline at a planned time
Project clear picture of what’s important, what we’re interested in doing

#3 The Extra DIMENSION
Extra 1/2 dimension
Semi-transparent world
XGL/AIGLX
Integrate transparency, increase productivity
People don’t want to map 3D via 2D
Simple change in desktop experience - layering windows, sorting between information, keep people aware of what’s happening while allowing focus on primary tasks
Different layer of the desktop - always conscious even while working, dial-up/dial-down

#2 Granny’s New CAMERA
Power-user - extraordinary experience, absolute control, tuning, security, Linux is a great desktop for you today
Fixed-function user - Linux is still a great desktop for you today. Tele-computers, web kiosks. Don’t want granny to plug new camera into this computer.
Central block - family home PC, can’t predict what’s going to be needed, apps or peripherals. Packaging issues - plug in peripheral should make it easy to install associated software.
Today - shipping free software = monolithic block, has all the drivers it will have
New hardware = new software releases
Challenge to kernel community - evolving peripherals need evolving software

#1 Keeping it FREE
Freedom in both senses
Freedom has lit the flame amongst 1000s of developers around the world, need to keep that flame burning bright
No view on GPLv3 - will look when it’s done :-)
Don’t fragment around issues of freedom
Value of collaboration
Belief in collaboration - happens best at source code
My #1 priority - kid growing up in Jakarta, Indonesia has the same access to technology as his little bro, moving to London from SA.
Don’t compromise on essential freedom and focus on freedom

It’s all about fixing BUG #1

Q: How to deal with so many distros?
Distributed revision control allows people to go and see what they want to do, without completely breaking off
Soft-forks - fork because people have different focuses, still have easy mergability
Freedom to fork needn’t come at the cost of collaboration
Find the best work, fold it back in to others, back upstream
Fragmentation at periphery is good, as long as it doesn’t fragment the core
Airline manufacturers - lots of early fragmentation, some consolidation later
Preserve the right of people to pursue what they’re interested in


Notes from the “Ubuntu” talk:

Ubuntu has an average of 3.5 users per country, in the countries it has users in.

Canonical supports Ubuntu, but wants to be an “anchor tenant” in a building that grows and grows - wants Ubuntu to have a plethora of support providers

Ubuntu is not a democracy. Dictated meritocracy.

Community is not just coders - professional artists are involved, for example.

Working towards certification and standards-compliance

Simplicity, and JUST WORKS philosophy

Won’t release free software, but will allow users to pull in non-free software.

Don’t want work to go to waste, so Launchpad (designed to track bugs, releases etc) is designed to be easy for others to add to and take from, to share - both ways - with upstream code providers.

Currently we have excellent collaboration within projects, but not between projects - need to fix that.

Local community teams - getting people together, supporting each other, bringing the talent out of the woodwork.

Dapper - very user-focused, simplicity/Just Works/prettiness; Eft - developer-driven, let the pendulum swing, let community unleash itself on new technologies

Ubuntu wouldn’t have been possible five years ago - but now there’s enough acceptance of the underlying technology

Financial success can bring stress, but transparency and good governance can make that a very healthy thing

Vincent Jackson, Lord Mayor of Dublin

27. June 2006 | Flickr | 1 Comment »
Vincent Jackson, Lord Mayor of Dublin

Vincent Jackson, Lord Mayor of Dublin, originally uploaded by NoirinP.


Every year, for as long as I’ve known Colm, his dad Gerry has told him to keep the last Monday in June free. This is because, every year, he has been convinced that this would be the year that Vincent Jackson, a friend of Colm’s family and a city councillor, would be elected Lord Mayor of Dublin.

This year, Gerry was as sure as ever that Vincent would be elected. But, in a change of tack, on Friday night, Gerry told us that the deal had fallen through, and it wasn’t going to happen.

So you can imagine my surprise when Colm pointed me to the RTE News website at about half seven last night, and told me that Vincent had been elected Lord Mayor! The vote was 26/26 between Vincent and the other candidate, and his name was pulled from a hat. But he more than deserves the post, and he’ll be an excellent Lord Mayor.

Photos of the party in the Mansion House afterwards are, as usual, at Flickr

Now is the time, and this is the place…

26. June 2006 | Personal, Techie | 1 Comment »

ApacheCon is well underway by now, and it’s been a most exciting twenty-four hours getting up to here. By early yesterday evening, several attendees were in the pub, watching the soccer, and Colm was tearing his hair out over the various connectivity ‘issues’ :)

The available planners adjourned to my house at about seven, and we had a lovely barbeque - thanks for your help Dad! I was elected a member of the Con(ference)Com(mittee), which I’m very excited about - I love organising, and I’ve had great fun helping out with the planning for this conference. The conversation flowed until late in the evening, when we headed back to the hotel.

First order of business then was to try and get some sort of connectivity into the rooms we needed to use today, which was partially successful - Ken has some some photos that tell the story better than I can, and many thanks are due to the night manager, who arranged pots of hot chocolate, and plates of biscuits, just as we were all about to die of tiredness :)

I was too tired to have a bath - I’d just have fallen asleep in it - but I fully intend to use it over the next few days… The joys of living in a hotel!

This morning was a fairly early one, with connectivity still having to be arranged. Unfortunately, despite being on the ConCom, I somehow wasn’t registered, but a spare badge and a felt-tip pen were found, and I got my XL conference t-shirt… Next item on the agenda was to schedule a Women@Apache BoF :)

After a trip through the crawlspace above the ballroom, we decided to run our own cable… I gathered some volunteers, and we set off :) There’s now a nice run of cable through Anabel’s nightclub, up stairs, around doors, and in to the appropriate router in the hackathon room. My hair was duct-taped at one stage, but other than that, everything’s gone well :)

In between, there’s been some documenting and some socialising, and lots of running around after power strips, extension cords, and other sundries. I think it may be time for a nap (although ok, maybe the place needs to be renegotiated)!

[i:] and other noises…

25. June 2006 | Personal, Techie | 0 Comments »

Wow. Less than 24hrs now, and I’ll be at my first real, proper conference - ApacheCon. It’s exciting, and scary. I’m really looking forward to it - there are some fantastic talks lined up, a ‘Docathon’ planned for the general ASF docs, and plenty of very cool people to meet!

It’s a little bit weird - some of my earliest memories are as a six year old, in the conference hotel for some medical conference my dad was at… Attending? Presenting? I don’t know. I remember a beautiful wooden sculpture of a horse - we were only let play on it once, for fear of being thrown out of the hotel! The cute little matching stripy outfits we had, for easy identification :) The Scalextric tracks set up around the penthouse pool, probably by some pharma-company…

Now, fifteen years later, I’m there in my own right, standing on my own two feet, at a conference in a totally different field. I’m not even qualified yet, but it’s nonetheless a conference I was able to help in organising.

I’m really grateful to everyone who’s helped get me here - the ASF conference committee, who waived my registration fee; Colm, who pestered people to sponsor me; and Sun, who very generously agreed :)

Look forward to seeing you all RSN! :)

iCal, iPod, iWonderDoesItWork…

23. June 2006 | Techie | 0 Comments »

With ApacheCon looming, the excitement is building, and I’m already starting to learn new things :)

Yesterday, I discovered that iCal files can be imported to iPods, and viewed in a surprisingly sensible manner… I must admit that when I first heard this, I thought the person telling me must be mistaken! But he’s a smart man, so I checked it out, and it turns out, it really does work. Here’s how to do it:

First, you’ll need an iCal file. I’ve made some available for ApacheCon - for more details, see The iCal Files. Because the overall schedule is so packed, you might want to download only particular tracks, or delete the sessions you’re not interested in.

You can use iSync to add these calendars to your iPod, by simply checking the appropriate boxes under the “Calendars” heading, on the tab for your iPod.

Alternatively, connect your iPod to your computer, open iTunes, and open the Preferences pane (Edit > Preferences, under Windows, or iTunes > Preferences on a Mac). Click the iPod button, and choose “Enable Disk Use”.

If you’re having problems, you can also try putting your iPod into Disk Mode following the instructions on Apple’s website

You’ll need to reset your iPod afterwards, to take it out of Disk Mode. Instructions can be found chez Apple again - and don’t worry, resetting the iPod won’t delete any of your music or files!

Once the iPod is set up to work as a normal disk drive, double-click the iPod icon on your desktop, or open it in a Finder/Explorer window, and simply drag the relevant .ics files to the Calendars folder on your iPod.

Remember to disconnect/eject your iPod in software, before yanking the cable!

To view the calendars on your iPod, look under Extras (in the iPod menu), then Calendars, to choose the calendar you want to view. You can scroll through the calendar to see what days have events associated with them (marked as bullet points), and then select a day to view its events.