Tired of all the cool kids and their macbooks?

Seattle’s hip. Every time I go into a cafe, it’s full of hip kids with hip laptops. What laptops are hip? Mac’s of course. Take Reload Bags for example… badass messenger bags, custom made in a little shop here in Seattle. When ordering laptop bags, be sure to specify which Mac you have, or be prepared to provide exact dimensions. I realize you can’t know the dimension of every laptop (with a little work, I bet you could compile a list of a lot of them though), but I’m trying to show a trend here. Cool kids, with cool bags, cool bikes, and cool coffee, have cool macs.

Not that macs are horrible or anything, but when counterculture becomes the culture, you’ve got to stand back and fight it! How? By accessorising your un-hip laptop with one of these stickers.

O’Reilly School of Technology review, seven day risk free trial is not risk free.

Back around y2k, I almost went to college. I had ditched high school a year prior and worked for a bit at the Univeristy of Maine where I expected to go, obviously planning on a EE/CE degree. I had tried to enroll when I dropped out, but you couldn’t enroll without a diploma, and the state wouldn’t let me take the GED until I was 18, unless I was enrolled in college. Despite letters from school officials pleading exceptions, there was a definite lack of a loop hole. By the time I was old enough to take the GED, I finished my diploma with night courses (prior to my previous graduation date no less).

I approached the UMO dean of the EE/CE department and assorted staff looking for guidance on where to begin. I already had five years of Linux experience, not to mention electrical and other computer experience. What I lacked was the college maths and sciences. Where to start? “At the beginning, like everyone else.” I certainly wasn’t going to pay to sit through a course that I already knew the bulk of, or worse could pick up in a fraction of the time with a text book, so it didn’t work out.

That’s been the story ever since. I’ve decided the only way I’m going to get a college education is if I get one in Agriculture or something that’s completely foreign to me. Okay, maybe Political science would be more appropriate, but you get the point.

I’ve gotten into a couple open source projects lately that need some web work (wnmap and pyramid). I ran across the O’Reilly School of Technology somewhere along the way. They have a number of certificate programs and are partnered with University of Illinois for a bit of credibility (and CEUs). That didn’t matter so much, I’m a long time supporter of ORA books, they’re the number one publisher on my bookshelf, first for the heavy technical aspects written in such a way that doesn’t feel 100% reference. Since my web programming hasn’t evolved since php/mysql days, with a bit of CSS because I had to teach it to some students back at Strategy, I figured Javascript would be a great place to pick that back up.

Enter the OST / University of Illinois

So with O’Reillys website claiming “Enroll Now: Try it risk free” for seven days, I figured $400 wouldn’t be a huge waste. I signed up for the Javascript course, part of the Client Side Web Programming Certificate, which is listed as a ‘beginner/intermediate’ course.

I logged in, figured out the built in interface (it’s not vi, lets put it that way up front) for writing code while reading the lessons. I went through ten or so pages and started to wonder when I’d finish the first lesson, as it was getting late. Then I realized I had actually gone through 75% of the course. I went back and did all the quiz’s and objectives (write code and turn it in to an instructor), then finished the rest of the course. All in all I think it was 8-10 hours.

I spent some extra time making code work in Firefox. That was frustrating, as the course never signaled when code was IE only, I think they assumed you used IE up until the very end when they made some menu code and said right out it was IE only. The biggest hurdle was the DOM differences, eventually I just started writing the code in notepad and testing in IE, then pasting it into their interface to save it to the server and upload it to the instructor.

A lot of lessons referenced the w3school and I found that a number of the exercises where exactly the same as the example code on that website. I realize that something like the second lesson was about “recycling javascript from the internet” but it was getting a little absurd.

From my own teaching standpoint, the lesson plan seemed reasonable, but the content was horrid, especially for the price. It’s worth noting that I bought the ORA “Learning Javascript” the same day for $30, and I’ll mention now that this is the correct route to take. Do not take the class, buy the book. That is unless you NEED the certificate, or you’re a noob / non-geek and need the help. In such case, I’d highly recommend a small classroom type environment where you can get face to face tutoring.

Besides the browser incompatibility bit bugging me, the interface worked okay. I’m a poweruser, so it really sucked on one hand being drug out of the command line, but I had some patience. Keeping in mind that I’m not a web programmer, but I am a programmer, it’s not a lot of surprise I picked this up quickly. Object oriented stuff is fairly new to me. I’ve done a lot (standard sysadmin description of a lot) of shell scripting, perl, php and now python. I didn’t notice a lot of inconsistencies, but not knowing javascript, it would be hard to tell. I’d be willing to reckon that the course is pretty old. Whereas the book talks about using CDATA to comment out JS in XHTML, and that HTML commenting JS is a really old technique, the web course didn’t mention CDATA or XHTML, and said that HTML commenting while old was still a good practice. And while there was little discussion of the DOM issues I was working around, there was no discussion of libraries such as prototype or jquery to solve such problems. As well as no discussion about separating the javascript from the html code with src attributes in script elements. I’m sure there’s more that was left out that I’ll realize as I start reading the ORA book.

When is “Risk Free”, not?

Don’t get me wrong, it wasn’t a waste of time, but it was definitely a waste of $400. Now that I’ve looked deeper into getting that 7 day risk free refund, I see that their FAQ says:

You may withdraw from a course online, at any time.
However, the deadline for withdrawing a course with a refund is 7 days from the day of enrollment. If you paid by check/money order, the “day of enrollment” refers to the day that your enrollment account becomes active.

Additionally, if half or more of the assignments within your course have been handed in by you and graded by your Instructor, a full refund is no longer possible, even within the 7 days.

There can be NO EXCEPTIONS to this policy.

Nice. Now that you fully realize this shit was crap, we’re going to keep your $400 because we know you’re not going to ever be coming back. This is a big disappointment in O’Reilly for me. I’ve written anyways asking for a refund. We’ll see what they say. “NO EXCEPTIONS”, sure, but at what point do you admit it’s the same old college scam wrapped up with some e-learning and a popular companies name? Hopefully I can still get a refund, since technically although all of my assignments are handed in, they are NOT graded yet.

Update: 8/23, Javascript 2: AJAX
OST offered me Javascript 2: AJAX for free to make up for the content. I’ll offer additional opinions about this course when I’m done, but I’ll note now that the AJAX as a pizza delivery man analogy totally didn’t work for me. On the upside of this, for $300 the ‘beginner’ level HTML/CSS course I could acquire a certificate, so the whole escapade will end with something for the resume. Although if anyone asks about it in an interview I’ll still be forced to bring the quality to the table.

using dcc under amavis and postfix on ubuntu feisty fawn 7.04

Most the guides out there for setting up spamassassin seem to convey that simply installing dcc and the likes makes them work. I ran tcpdump on port 6277 though and didn’t see any dcc traffic.

1) I found that DCC in commented out by default under /etc/spamassassin/v310.pre
2) I added the following to /etc/spamassassin/local.cf:

use_dcc 1
dcc_path /usr/bin/dccproc
dcc_add_header 1
dcc_dccifd_path /usr/sbin/dccifd

Note thatI think dcc_add_header is legacy and doesn’t work, and that the dcc_ifd path throws an error in the next debug section, so is likely not needed.

Then I found when running a test:

Step4: Test DCC is working via Spamassassin

First you can download a common spam message that will trigger DCC detection at:

# wget ‘http://kb.atmail.com/attach/spam-mail.txt’

Next, test a message via Spamassassin in debug mode for the results

# spamassassin -t -D < spam-mail.txt

I saw DCC traffic, but not when amavis was running. Recalling how I had to add clamav to the amavis user, as everything runs non-root, so:

3) I added the dcc user to the amavis group and restarted amavis for the sake of it, and I’m seeing dcc traffic now on port 6277.

postfix mail gateway, "connect to transport transport: no such file or directory"

I didn’t see this anywhere online, but managed to figure it out. My new mail gateway was throwing the error:

Aug 17 11:49:28 mercury postfix/qmgr[28567]: warning: connect to transport transport: No such file or directory

I realized it was because I was using /etc/postfix/transport to forward mail for my domains into the exchange server, and had a default rule of “* transport:nexthop” which should have been “* smtp:nexthop” but I misread the manual page.

valve + id = pwn

I love steam. I hate cd based copy protection, I hate losing my keys, I hate having to drive to best buy only to find out that they’re out of what I want.

apparently I missed the news announced at quakecon that valve hosting id games now.

Valve has an “ID SuperPak” for $70 right now though that has everything from Commander Keen to Doom 3, including mission packs and expansions. Steam prices are good anyways but this pack leaves you with about $145 in savings on Steam to get them all at once. I already have a couple of these kicking around, but the ability to download hexen or quake + expansions on some rainy day at a whim is too compelling. I already bought mine.

ubuntu live 2007

Adam and I went down to Portland for Ubuntu Live. Eric and Andy made it down from Seattle as well. I don’t go to many of these things because the technical contact is low and the costs are high. They seem generally designed to learn your average joe, not the geeks and hackers. Most of what I was looking forward to wasn’t as interesting as the surprises.

The Keynotes were rad, but there were too many. At least, there got to be too much overlap. Keynote speakers were Mark Shuttleworth, Chris Kenyon and Matt Zimmerman of Canonical; Tim O’Reilly; Doug Fisher of Intel (talking about Mobile & Ubuntu and the Intel/Ubuntu relationships); MÃ¥rten Mickos of MySQL; Jeff Waugh; Mitchell Kapor of Louts 1-2-3 fame and Eben Moglen. There were others as too. The message is clear, Ubuntu has grown up fast and is in a great position to provide a open platform to solve problems for people. I hadn’t really expected the keynotes to be interesting and hadn’t really noticed them until I was in the first set.

From the sessions, I most enjoyed AppArmor with Crispin Cowan, Linux-based firmware testing with Rolla Selbak and hardware compatibility mainly with Kyle McMartin. Props to Kyle for taking a minute to look at my weird bug where sata disks are coming up as /dev/eth2 (lp 127404).

So technically though, meh. I know better. The best part was of course meeting other developers and admins. It was interesting hearing more about Larry Augustine and others at Medsphere and FOSS license/DMCA evilness, see GPL Medicine for a little background.

We got to talk to Canonical devs a bit, as well as Shuttleworth both at the venue and at Kell’s later. Most important was talking to these kinds of people who do rather than just talk.

The Ubuntu developer conferences were recommended, and I might look at attending one but I think I’ll be sticking to cheap hacker cons for a while. I’ve got some Portland souvenirs, and had a good time bar hopping a bit, but I’ll have to make it back down sometime without so many plans and hike about.

generating passwords in md5 or sha1 for an asp.net web.config

Quick note. In the course of updating some passwords I found a web.config file that contained clear text passwords. Passwords can be stored in cleartext, md5 or sha1 hashes as specified here. There’s surprisingly no hash generator kicking around a default system. I’ve used /sbin/grub-md5-crypt in the past but the output is crypt compatible, not a standard hash. craSH pointed out ‘openssl dgst’ which worked great. It’s normally for hashing a file, but will take input on stdin. Keep in mind that echo produces a \n by default, which affects the hash.

echo -n mypassword | openssl dgst -sha1

why juniper networks sells a bunch of shit.

So I have an NS50, and in the process of going through and trying to convert the VIP (pat) on the mail server to a MIP (nat) I’ve found a bug in the web interface that breaks the web interface when I remove a port mapping from this VIP address. Unfortunately I need to remove the port mappings before I can remove the address as a VIP, and I can’t add the address as a MIP until it’s no longer a VIP.

Anyways. I try to find a patch on the vendor site, but I need an account. I find an old account, but the warranty has expired and we don’t have support. So I get a hold of Juniper and I’m told that to get the problem resolved, I’ll need to upgrade, and to upgrade I need support. But not just support, I have to buy support for every year between I bought the thing and now when I didn’t have support, as well as a possible 25% penalty. I’ve emailed my reseller to get a quote on this, but let’s just say I’m not a huge fan of this shit right now.

changing the soekris boot order from linux nvram interface

[This may break your toys and doesn’t work. You have been warned.]

So I wanted to change the Soekris on the side of the house to prefer pxe boot so I could reinstall pyramid without needing to take it down to get to the serial console. Of course, to set this setting, you need to get into the serial console. Unless…

The settings are supposedly stored in the nvram so the box will still boot in cases of the bios battery dieing. So I’m valiantly trying to brick a soekris in an effort to maintain my laziness.

Start by making sure you have the /dev/nvram interface. In Pyramid you need to make it:

cd /dev ; ./MAKEDEV nvram

The nvram module will load when you access the device, provided modules.conf contains:

alias char-major-10-144 nvram

Grab a copy of the nvram:

cp /dev/nvram nvram.bin

I used hexdump to check out the nvram. If you’re running pyramid you’ll need to grab the binary. See the package website and grab bsdmainutils-6.1.2ubuntu1 (pyramid currently runs breezy) provided the mirrors are still up (canonical has started taking down breezy mirrors). You can grab hexdump out the deb:


mkdir hexdump-temp ; cd hexdump-temp
ar p ../bsdmainutils_6.1.2ubuntu1_i386.deb | tar xv
cd usr/bin
scp hexdump root@my.soekris:/usr/bin

Soekris 4526 (Metrix Mark I):


sunrise:~# hd nvram.bin
00000000 00 00 00 51 f0 00 01 80 02 00 fc 0f 2f 00 00 00 |...Q......../...|
00000010 00 00 00 80 81 f0 ff 00 00 00 00 00 00 00 00 00 |................|
00000020 05 ee 00 fc 19 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 05 28 08 06 0d 22 80 09 00 0c 06 2a 40 58 |...(...".....*@X|
00000040 0f 04 84 11 47 40 00 20 00 00 00 05 00 08 42 00 |....G@. ......B.|
00000050 07 00 c5 20 00 00 02 00 08 02 40 42 01 40 00 02 |... ......@B.@..|
00000060 84 4c 00 10 0b 20 00 34 c3 08 50 00 44 42 91 00 |.L... .4..P.DB..|
00000070 00 20 |. |
00000072

Soekris 4501:


sunrise:~# hexdump -C nvram.orig.4501
00000000 00 00 00 51 f0 00 01 80 02 00 fc 0f 2f 00 00 00 |...Q......../...|
00000010 00 00 00 80 81 f0 ff 00 00 00 00 00 00 00 00 00 |................|
00000020 05 ee 00 fc 19 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 4c 32 0a 41 42 11 81 00 09 24 1d 80 |....L2.AB....$..|
00000040 0d 04 18 03 04 24 00 00 50 84 06 72 81 01 53 34 |.....$..P..r..S4|
00000050 c1 08 88 02 08 80 01 22 49 04 00 00 10 02 01 00 |......."I.......|
00000060 10 49 0a 02 22 04 48 06 07 48 08 25 06 61 00 02 |.I..".H..H.%.a..|
00000070 99 26 |.&|
00000072

In both cases I’m assuming 0x13 – 0x16 controls the boot order. 80 Primary IDE (flash), 81 Secondary IDE, f0 network boot and ff I have no clue.

I copied the file to my laptop and used hexer (vim like hex editing tool) to rewrite those bytes (use r for overwrite) then rewrite the nvram using:

cat nvram.new > /dev/nvram

I rebooted and the box came back up. But I didn’t see any network traffic. I booted up a local 4826 and used the cmos monitor to try to figure it out:


> show

ConSpeed = 19200
ConLock = Enabled
ConMute = Disabled
BIOSentry = Enabled
PCIROMS = Enabled
PXEBoot = Enabled
FLASH = Primary
BootDelay = 5
FastBoot = Disabled
BootPartition = Disabled
BootDrive = 99 FF FF FF
ShowPCI = Enabled
Reset = Hard

> cmosread
Addr CMOS Data

00: 06 00 43 00 19 00 07 19 01 80 26 02 50 80 00 00
10: 00 51 FF 00 01 80 02 00 FC 0F 1F 00 00 00 00 00
20: 00 80 81 F0 FF 00 00 00 00 00 00 00 00 00 05 ED
30: 00 FC 19 00 00 00 00 00 00 00 00 00 00 00 00 00
40: D9 BF FB AE 0C 72 2B 84 9B FE 7B 7F 00 8C 10 05
50: DD EB 5E FE 04 50 14 12 E7 DF 2F 73 A0 9E 42 01
60: FB BB AD 77 0C 3B 40 BA 9B 9C F8 15 89 16 02 40
70: 3D 97 A0 7A 4A 92 F8 24 B8 D9

>

I ‘set BootDrive=99’ to make it stand out, rather than the default ‘set BootDrive=80,81,F0’ and you can see the 80,81,F0 around 0x21-0x23 doesn’t change. So I have no idea now where this data is actually stored.

viewing ms project in linux with ganttproject

I’ve searched for linux software a number of times to open microsoft project files and most of the information has been of the “well, I’ve never tried it variety”.

I downloaded a GanttProject 2.0.4 deb from the merlinux site here and installed it in my typical trusting fashion ( it does dump a ton of shit in /opt/ganttproject, but that’s fine as it’s really an alien’d rpm.).

I downloaded the company project file, started GanttProject and important the MPP via File->Import. Everything looks fine, took 30-40 seconds for everything to stabilize such that I could resize the window and it would adjust, but that’s probably because it’s Java and it was searching for resources to waste or whatever. So it works somewhat at least, which is more than I’ve seen anyone else say.

Hopefully someone will package it. Other than me. In true ubuntu fashion. See bug 123275.

‘open all in tabs’ replaces / closes tabs in firefox

I keep sites grouped in the toolbar in FF and occasionally make the mistake of trying to use ‘open all in tabs’. This closes / replaces what I have open. I’m not sure exactly, there’s a lot of discussion about what it does do and what it should do. There’s a ton of discussion in bug 175124 and bug 258224 about what it should do. If you always remember to middle click on the folder, that works well enough for me. To change the action of open all in tabs however, which you can’t middle click on, change browser.tabs.loadFolderAndReplace to false in about:config (there’s no option in preferences afaik).

text not appearing in ocsng login screen when using firefox

A while back I upgraded my inventory server to apache2/php5 and at some point OCSNG stopped showing the text labels on the login screen and buttons. I assumed it was an issue with the upgrade, which it may well have been caused by indirectly.

Recently ocsng announced OCS Packager, a more reasonable windows agent service packaging utility. I want to build this into the desktop deployment system and I’ve got a deadline coming up on some machines so I came back to dealing with this issue. First, I reinstalled OCSNG but still saw the same issue. I poked around a bit in the apache configs thinking there may be some disconnect when it came to translations but wasn’t sure what I was looking for.

Eventually I tried the site from IE on Server 2003 and it worked fine. Assuming theres an issue with the user agent being passed by firefox, I installed tshark and started comparing the http GETs but they’re pretty hefty. Unfortunately there isn’t a lot of comments in the code and if there where, they’d probably be in French or such. I’ve spent enough time trying to figure it out, so I’m giving up and working around it instead.

Pushing the language appears to work, and I believe it gets saved in the session, it definitely gets saved to the cookie. Use: http://server/ocsreports/?lang=english in your browser and links.

I’ve opened bug 1748676 against OCSNG.

complex lvm on an alternative install of ubuntu (debian-installer)

I’ve been meaning to post my notes on this for a while but I wanted to post some code which needs to be stripped of the proprietary work. At my job, we have a need to do multiple installs a day of ubuntu via the network and require a fairly complex lvm configuration. When done on feisty, first you need to deal with the three minutes it takes to create the lvm devices. This is a bug, check out this post about it.

Partman-auto and partman-lvm-auto configuration recipes are pretty complex to begin with. If you’re not simply formatting the whole disk, it can get really confusing, let alone figuring out the difference between partman and partman-lvm. There’s some sample code out there, but it’s hard to tell when era it’s from. Upon learning that partman-auto wasn’t going to support multiple disks, I started looking for alternatives. Thanks to cjwatson and fjp for pointing me in the right directions at times.

Finding the right hooks was the hard part. debian-installer (or d-i) is the alternative and network (pxe based) installer for ubuntu. It’s very modular and uses anna (the lightweight version of apt) specific udeb (anna’s version of debs) configurations to let d-i know in what order a specific module should be run. Basically what I did was force partman not to run, and have a shell script run instead.

Assuming that you’ve already got a pxe install going with a preseed file, use the following:


d-i preseed/early_command string wget http://server.example.com/ubuntu/config/lvm.sh -P /tmp ; chmod 755 /tmp/lvm.sh ; echo /tmp/lvm.sh installer >> /var/lib/dpkg/info/download-installer.postinst

This will download your script and set it to be executed after the base installer is downloaded. This is important because some of the install system is in the initrd, but a lot of it, partman included, is installed from a udeb after the initrd is loaded. So you can’t just hack partman from inside the initrd.

lvm.sh is a two phase script. the first is run when the base installer is setup, by the earlier call in download-installer.postinst. This phase then sets itself to be run instead of partman, allowing you to create and mount your partitions at the correct time.

Note that you should have your disk mounted as /target by the end of phase 2 as well as have your fstab configured. I’d also recommend running swapon against your swap, but keep in mind that the mkswap currently shipping will only prepare 2GB of swapspace, see bug 119900.

Theres some extra stuff in this script you won’t need. It’s also untested with my companies stuff removed. If having a bunch of lvms named ‘stuffN’ seems stupid, it’s because that’s my way of obfuscating the code so I won’t have someone from work complain. As always, YMMV.


#!/bin/sh
# Manually create LVM configuration
# Partman does not currently support multi-disk lvm
# Designed to be run after download-installer but before partman-base
# This allows us to modify partman-base.postinst after it's been dropped in by anna
# Partman appears to be entirely an external program, removing the call to partman from partman-base.postinst prevents it from running.

case "$1" in
installer)
# we should have d-i downloaded by now.
# partman comes in a udeb from the network so we have to hook here
# and replace the partman-base.postinst file
sed -i 's/partman/\/tmp\/lvm.sh partman/' /var/lib/dpkg/info/partman-base.postinst
logger lvm.sh modified partman-base.postinst
;;
partman)
# do filesystem stuff: detect our config, fdisk, lvms, mount /target
logger lvm.sh partition configuration starting
modprobe dm_mod

# FIXME: This is going to be really dirty to handle our configurations. More work will need to be done later.
# case1: sda: 1171842048 hda: 125056
# case2: sda: 976519168 hda: 58605120
# case3: sda: 732389376 hda:

SIZE_SDA=`sed -n 's/.* \([0-9]*\) sda$/\1/p' < /proc/partitions`
SIZE_HDA=`sed -n 's/.* \([0-9]*\) hda$/\1/p' < /proc/partitions`

echo sda: $SIZE_SDA hda: $SIZE_HDA

# pvcreate filters (ignored by filtering) if the there's a partition table
dd if=/dev/zero of=/dev/sda bs=512 count=1

# check for separate physical boot drive
if [ $SIZE_HDA ] ; then
# we have the boot disk create a primary partition
echo ",,83" | sfdisk /dev/hda


pvcreate -ff -y /dev/sda
BOOT=/dev/hda1
LVM=/dev/sda
else
# no separate boot drive
echo -e ",256,83\n,,8e" | sfdisk -uM /dev/sda

pvcreate -ff -y /dev/sda2
BOOT=/dev/sda1
LVM=/dev/sda2
fi

mke2fs -q $BOOT
vgcreate -s 256M system $LVM

if [ $SIZE_SDA -gt 700000000 ] ; then
COMPLEXFS=1
lvcreate -L 20G -n stuff1 system
lvcreate -L 20G -n stuff2 system
lvcreate -L 8G -n swap system
lvcreate -L 20G -n stuff3 system
lvcreate -L 200G -n stuff4 system
lvcreate -L 200G -n stuff5 system
lvcreate -L 200G -n stuff6 system

for fs in stuff1 stuff2 stuff3 stuff4 stuff5 stuff6 ; do mkfs.reiserfs -q /dev/system/$fs 1>/dev/null; done

else
# FIXME: swap too big for vmware
lvcreate -L 8G -n swap system
lvcreate -l `pvdisplay | sed -n 's/Free PE \([0-9]*\)/\1/p'` -n config1 system

mkfs.reiserfs -q /dev/system/stuff1 1>/dev/null
fi

# setup common swap
mkswap /dev/system/swap
swapon /dev/system/swap

# Create directory structure
mkdir /target
mount /dev/system/stuff11 /target -treiserfs
mkdir /target/boot
mount $BOOT /target/boot -text2
if [ $COMPLEXFS ] ; then
mkdir -p /target/stuff2
mkdir -p /target/stuff3
mkdir -p /target/stuff4
mount /dev/system/stuff2 /target/stuff2
fi

# Create fstab
mkdir /target/etc
echo \# /etc/fstab: static file system information. > /target/etc/fstab
echo \# >> /target/etc/fstab
echo "# " >> /target/etc/fstab
echo $BOOT /boot ext2 defaults 1 2 >> /target/etc/fstab
echo /dev/system/stuff1 / reiserfs acl,user_xattr 1 1 >> /target/etc/fstab
if [ $COMPLEXFS ] ; then
echo /dev/system/stuff2 /stuff2 reiserfs acl,user_xattr 1 2 >> /target/etc/fstab
echo /dev/system/stuff3 /stuff3 reiserfs acl,user_xattr 1 2 >> /target/etc/fstab
echo /dev/system/stuff4 /stuff4 reiserfs acl,user_xattr 1 2 >> /target/etc/fstab
fi
echo /dev/system/swap none swap sw 0 0 >> /target/etc/fstab
echo proc /proc proc defaults 0 0 >> /target/etc/fstab

# Secret udev rules hack for network cards
mkdir -p /target/etc/udev/rules.d
echo \# on board e100 > /target/etc/udev/rules.d/50-network.rules
echo KERNELS==\"0000:00:06.0\", NAME=\"eth2\" >> /target/etc/udev/rules.d/50-network.rules
echo \# on board tg3 \(2x1000\) >> /target/etc/udev/rules.d/50-network.rules
echo KERNELS==\"0000:02:09.0\", NAME=\"eth0\" >> /target/etc/udev/rules.d/50-network.rules
echo KERNELS==\"0000:02:09.1\", NAME=\"eth1\" >> /target/etc/udev/rules.d/50-network.rules

;;
*)
echo $0: This script is destructive and should only be run as part of the debian-installer process
;;
esac

Active Seattle Wireless Projects

There’s a lot happening at SWN lately, and lots of room to help out.

Ken and Matt at Metrix obtained some new space on Capitol Hill. They’ve had a temporary node up for a while and switched it over to a Mark II today. There’s a good link to the Westin via a directional fixed to the third floor window that’s rebroadcasting local internet. We had HackNight there last week and will pick it back up in there space in another week as we’re taking Independence day off.

I’ve moved my 4501 at NodeAwfulShark over to Pyramid SVN and moved the CM9 from my 4826 into it. (A 1/2″ drill was required to make an hold for the antenna pigtail). I’ve approached an old roommate that lives a few blocks away about hosting a node there and possibly getting a good southerly view which I can use to hit NodeCentralDistrict or 2608-swn. I’ll be getting a Mark I from Metrix this week which I’ll put on the third floor balcony or the roof of NodeAwfulShark facing east. Be sure to check out the view on the node page.

I’ve been doing some work on Pyramid and we’ve been talking about redoing the web front end. It’ll be two part, ideally with XML in the middle and possibly a command line interface utility down the road. I’m trying to recruit for this as I’m not Web 2.0 experienced, although I have been hacking on it a little trying to get some bugs and features added. Help is definitely appreciated if you want to get into the thick of it.

That’s been put off for a few though as I’ve been working on another project. It looks like fR might be abandoning wnmap, the software that runs the swn nodemap (and others) as he’s working on meshwork again. With nobody else stepping up I’m bringing some old school php back to town and trying to write some code to let users manage their nodes and add links on their own, which currently must be done by hand either in a php/xml file and/or in the database. Additionally, I’d like to see some method of email users and reminding them to update / maintain their nodes, removing them if they’ve moved and keeping SWN fresh in peoples minds.

Ken had issues apt-getting some source packages for Pyramid recently, which is loosely based on Ubuntu Breezy. It appears that Ubuntu has pulled the Breezy repos, so we may be upgrading Pyramid sooner than planned.

In the interim, I’d still like to get some of the portals working again and try to setup access points with portals about to increase SWN awareness.

I’ll likely be working on some of these projects over the 4th. If you’re around, drop by #swn on efnet.

Sharepoint (SPS) 2.0 and Quick Launch

When I started my new job there was much talk about Sharepoint and I figured, “well, a marketable skill”. Actually, working with Sharepoint has been more like being the guy that has to pump the portable bathrooms at outdoor venues.

The main quicklaunch toolbar has needed updating for sometime. If you open a Document Library and choose “Modify settings and columns” on the left theres an option to display the library on the Quick Launch bar. I couldn’t find this setting for the new sites however. There’s a lot of talk on the net about replacing the toolbar. Because, well, it sucks. There’s also a lot of talk about “Look and Feel” which appears to be an SPS 3.0 option.

The shortest path to getting this updated and getting on with my life turned out to be opening Frontpage. Pointing it at the sharepoint site from File->Open. Clicking in an existing row on the quick launch bar and inserting a couple rows, then adding links to the new sites. Then save it and you’re done. I’m assuming this is WebDav and it all worked because I authenticated behind the scenes with my domain credentials. I really don’t want to know, I’m glad it’s working and I can get back to work. Annoyingly, I spent more time looking for the option to add sites to the quick launch bar over the last few months than it took me to actually do the work.