PNW Drupal Summit, Day 1

I’m making it a weekend up here, rather than trying to go home and then come back again — staying with Kat, which is always fun — last night we went to a fab Mediterranean restaurant (Petra?) and then stayed up late talking, while her cats sniffed around my backpack, shoes, etc.

Today came up bright & clear; I’m wishing I’d stuck my sunglasses in my bag, rather than rainhat & gloves! Also wishing I had a bike that I could take on the bus, since neither the X nor the Townie will load on the front racks. 🙁 Someday I want to get a folding bike to take on trips, because wow! standing at the bus stop, looking down Dexter, kept thinking, mmmm, that looks like a seriously fun straightaway. But I guess I can manage a couple of days of being a bus commuter again, even if the weather is good. (Tomorrow apparently is supposed to be not so much. We’ll see.)

Alas, C managed to catch a cold right before I left, and I had to leave him laying in bed looking morose & stuffed up. We both just got over colds, too, the first cold I’ve had in years, which laid me flat for the weekend of his birthday a couple of weeks back. I did make sure he wasn’t feverish before I left, so it shouldn’t be flu, just another head cold, or I wouldn’t be here…and I’m feeling pretty decent, just a tiny bit of post-nasal/sinus ick. And I’m being obsessive about drinking lots of water, using hand sanitizer, etc.

Drupal 7, ksensee

presentation is actually channeling webchick. 🙂

most people have no idea what’s in D7.

D7 user experience project, bring in actual usability experts w/no D experience. don’t want to be WP, but want that “ooooh, it’s shiny!” feeling, but with the actual “good code” of drupal.

New IA, gonna hate at first, but get used to it — contexts: what are you working with. Shows 4.x IA, then 5/7 with colors showing what kinds of things are where. Content, Appearance, People, Structure, Config, Reports.
New toolbar & shortcut modules, new ia along top, NOT dropdown, a lot of people will still want Admin Menu, but this is good for content creators. Shortcuts are customized for types of users. Yaaaaaay! And editable, plus add a shortcut button.

New admin theme, have settled the debate: it’s called Seven. Dashboard with admin blocks — but no actual blocks. If you write modules: add admin block. (I don’t think my KB search module needs an admin block.)
Overlays, admin stuff opens in overlay iframe, thickbox kinda thing. “Not in your admin section tempted to do something else” — looks like overlays are for shortcuts. “needs yr help”

Edit in place — needs help w/icons. (doesn’t the Zen theme do that? can’t remember. find it distracting, honestly.)

Univ of Baltimore, usability testing, working with “smart people” “who could’ve been in this room if they’d picked drupal” but who found it WAY too hard to use. “Sort of like COBOL.” (I always compare to swiss-army-chainsaw ala the old perl saying.)

More subtle announcements.

Verticle tabs for all that extra editing stuff.

Descriptions of permissions! Huzzah!

Install profiles. Minimal takes away a bunch of stuff.

New minimum requirements: php5.2, MySQL 5

Timezones and DST — uses PHP built-in handling.

Users can cancel own accounts….took EIGHT YEARS to get in.

Internationalization…nobody here’s done it.

Imagefield/imagecache in core. Looks way nicer.

Security: bunch of stuff on slide

Lots of stuff for #smallcore, removes a bunch of stuff

And then for #largecore, oh hey, admin role! Just tested that last week. In core, as is Poormanscron.

CCK OMG! 🙂 Calling it “Fields” — bunch of basic types, taxonomy is now field vs modules. Fields for users, and comments.

Update manager, altho I’d never use it at work.

Skipping all the themeing/design stuff, thing tomorrow. Taking away all the ugly-ass core themes. Many page elements are now blocks/regions. Content region is a “real region” ? Revamped template files. Stark: core markup “doesn’t suck anymore” JS improvements.

Silly Darth Vader graphic: testing. (I’ve never used automated testing. Someday this will all make sense to me. Looks cool, tho.)

Database: new layer, session this aft. Uses PDO, all kinds of fancy DB stuff. Lots of module-related stuff. (Actually I might need to go tweak my KB Search module.)

Fields: anything can be “fieldable” theoretically could store field info someplace other than SQL. Oh, that would potentially create a solution to the pulling rates from MortgageBot thing, which I had to hack into a theme file, so help me god.

Bundle = node type or user info. Instance of field on each bundle.

Field (storage in DB) -> Widget (add/edit presentation) -> Formatter (display presentation)

Files API stuff going whoosh! right over my head. (Oh, flickr module, as a total aside, shd go track that down)

Performance: it’s still a little slow. Registry is supposed to make it faster, like poor man’s opcodecache (sp?!), but it sucked in practice, hard to use, whitescreen on deleting function! couldn’t move a module, etc. Ow. Now have class registry that actually works. Register all files in .info in module.

Return a bunch of nodes etc in one DB call.

Bunch more stuff that isn’t done yet that needs help. Still slow. Big push in next few months is performance.
New hooks. Yeah, that gets into stuff I don’t do…yet. $page object. That looks as tho it could be useful. Like node? (Is it an object or an array?)

hook_page_alter — can do INSANE stuff “screw you, hippie. the page is what I say it is.” explaining use case with content in iframe, removing toolbars, etc.

Bunch more APIs. “If you don’t know what I’m talking about, it’s all good.”

Node access issues. don’t have to grant administer nodes to allow people to see nodes that others can’t!
Install profiles — in D6 way too much work. Now if you can write a module, you can create an install profile. Can specify dependencies in re: specific versions.

Whew. That was a whirlwind tour.

When will it be available? When D7 is released, D5 gets retired: always only 2 versions live.

Code thaw: fix things that have always annoyed you. Add features. Integrate useful contrib modules. “World domination!”

Code freeze: just fixing bugs. Alpha -> Beta -> RC

Step 5 =GOTO Step 1

I has a sad. waiting for modules to be ported. 🙁

Sept 1 was supposed to be code freeze, but 10 exceptions, actual freeze was 10/15 — inbetween was called “code slush” — polish phase ends 11/15, UI cleanups, accessibility, performance, then “when it’s ready”: bug fixes & stabilization. when # of critical issues is 0. Audience Q: who decides what’s critical? Community. Anyone w/drupal.org account can change status of issues.

Do NOT start building sites on D7. But DO start converting modules! #d7cx – on release date, yr module will be updated.

Core maintainers. webchick’s note: SLACKERS. who writes code? anyone! 500 people have submitted code. you can help!

The work that gets done is the work that people do. (Sounds a lot like ENA.) Big list of how you can help. Critical = breaks your site. If it just sucks, it ain’t critical. (Hm, documentation?)

Q: form api? not a whole lot of changes. Q: anticipation of upgrading – seamless upgrades of sites? “upgrading between major version has always been worst thing about drupal, not anticipating any changes” at the moment, infinite loop if you try to upgrade! Q: is there an upgrade path from CCK to D7? CCK should (will?) be providing module for upgrading. Q: views? Underlying stuff is done for D7, she’s confident it’s going to happen quickly. Audience member adds that there’s more than one person working on it.
Slides are on webchick’s site.

Ubercart, Gregory Heller

With special guest via Skype: Ryan Szrama

“Ubercore” project has just emerged, Ryan is the lead on Ubercart, in Kentucky (?).

Just got stable release for D6. (jesus christ on a crutch. srsly?)

Since this new project JUST got announced. Hasn’t been ideal – end of 2.0 lifecycle, looked at what’s hindering: took 16 months to get port from D5 to D6: feature creep, sluggishness of some (other?) modules, not able to take in patches effectively. Rethink how they implement features in D7. Boiling down Ubercart into Ubercore (non-negotiable) and essential non-core, Ubercart as installation profile with Ubercore and other essentials. Try to get more contributors, clearer standards & roadmap. Got a project manager in SF. (Sounds like they’ve been really flying by the seat of their pants.) Have been ambiguous. d7uc.org has his posts. Has been difficult to use for non-tangible goods, because of the origins of UC. Fields in core of UC, no reason product needs to be a node. (Kinda confused) Root field entity: product. Then add attributes to it. “Hard to explain on Skype in 30 seconds” So all the neato stuff is going to be in D7. ‘kay. Not forking Drupal, just creating low-level install profile.

Qs from Greg: for current users w/pain point experiences, what’s best way to contribute w/out traveling to a physical scrum event? d7uc.org to spec out what they have now, and let people come in and say what works, what doesn’t, etc. Then a bunch of blah blah blah. Sprint planning meetings. #d7uc on IRC. Wants to get ideas for how people want to give feedback. Greg notes that user stories has been helpful in his business, suggests that for guiding UC development.

Q: 1/3 of room already using, another 1/4 planning soon. Jump in the water now or wait for D7? He’s continuing to do D6+UC2. By March 31 have ubercore 1.0 with installation profile. Still talking about whether to straightforward port ubercart to D7. Upgrade path? Painful? Fully intend to have paths. (missed something help plug in an extension cord.) “I hope it’s not going to be a pain, because I’m going to be do it” Backporting patches? Sounds like some stuff, maybe, but maybe not.

Audience Q: ecommerce big & sprawling messy but works; Ubercart seems to planned to work together, and now Ubercore. Have you talked to ecommerce people, either — oh, Amy the project mgr is here — wants to, reached out but haven’t heard back.

Audience Q: handling intangibles — specifics you can talk to? Have no idea WTF project lead is talking about, really? Not a great communicator, IMHO.

This session not really helping me a lot so far. 🙁 (just went to ubercart site: UC2 for D6 was released on 10/21…is that lst Tuesday? and hey, conflict with Date module! Srsly? Then again, ecommerce module is only at an RC for D6.)

Audience Q: if it’s a total rearchitect, can u still backport, etc.? Only what they can, usability is the thing he keeps mentioning.

Audience Q: was about to start on new project: should I tell my client to wait until next spring? 6 months out. (that’s not end of March, according to my calcs; that’s mid/end-April.) he’d say go for it.

Audience Q: what about migrations of UC-related modules that his firm has written? what’s the main goal of new API integration? Consistency, actually adding some API stuff where there isn’t any now.
[I’m really hungry now. How can I be first in line for lunch?!]

Drupal Development Security Essentials

Initial slide image features Sean Connery in Zardoz (awesome awful movie!) in freaky red underwear/suspenders & thigh-high boots

Mentions Cracking Drupal book — I have sample chapters of that in my bag. Primary audience is for people who want to submit contrib modules. “not a guru””if I’d gotten these basics I wouldn’t have gotten in trouble”
Big herking list of Drupal Security team, who review modules.

How many have been hacked? I had a site hacked IIRC ages ago, although I think that was a problem on the server end.

Lost time/money; lawsuits; embarrassing (he just mixed up Connery w/Burt Reynolds? WTF?!) and users are slow to upgrade. (not us!) — applying for CVS account includes getting some of your module’s code scanned.

[wow this wifi is dead frigging slow. am writing in textedit instead.]

setting up a free development environment – webenabled.com, acquia application (no, I think he just doesn’t know how to spell). missed last item.

golden rule of drupal security – one thing: lots of audience suggestions, his rule: Use the APIs. if you find yourself coding directly in PHP, you’re probably missing some drupal security. takes a while to learn, but nearly all security-related functions have awesome side benefits.

quick definition of common attaxss (is that a pun?) – yes, that is a deliberate pun. XSS – malicious input of JS. Basic drupal filters! (If he wanted to be more useful in that definition, a gnarly example would be fun.) SQL injection. little bobby tables! DOS (denial of service) – ways to reduce load to make this harder. CSRF (cross site request forgeries) – his explanation is confusing.

functions: string filtering – links – access control – database – data passing.

t() (of course: Mr T.) protects against XSS. filter malicious leave delicious. 🙂 string overrides module? variable replacement options, for stuff that shouldn’t be translated — like paths…would make a better example than the one he’s using. can also use to format plural strings. can use with jQuery? wrap t() around entire sentences. avoid escaping quotation marks. vague warning about variables & t(). are the <p>’s part of structure or part of the content? pass with t() if part of content.

check_plain() – just converts directly to plain text.

check_markup() – apply filters to content. can also embed blocks, views, images, etc. (is that how insert view/insert block filters work? I love those!) return value is text run thru all the filters.

filter_xss_admin() – can trust user input, lets thru all html except styles & scripts, basic basic filtering. works like check_plain(). also filter_xss() – filters more stuff.

[mmmm, someone brought in their pizza plate.]

content sanitizing when you create links: l() & URL() – filters out html, also insures that URL is pointing to the right place. audience note – can pass node reference and get actual url!

user_access – (1) use hook_perm – return array of permissions; (2) then check with user_access when stuff gets access.

[this reminds me a bit of a JS session I went to at SXSW. smart guy, but a bit too abstract]

granularity in user_access. just because u specify permissions, doesn’t mean they actually get used…unless you use user_access. and be cautious about using permissions from other modules. (I wonder if this is the thing that that makes the permissions screen so ENTIRELY FUCKING INSANE.)

db_query() – this I’ve used! filters out inaccurate/malicious stuff out of queries. allegedly makes queries cross-DB compatible, altho not so much in D6 (yay for D7!) – brackets around table names, to make sure that it works w/prefix. filter data with placeholders %s for string, %d for integers/numbers, %% for LIKE query (wildcards) — there’s usually a drupal equiv (again w/bad spelling!) to most mysql functions.

db_query_range() limits number of items returned, for big DBs can be a huge load on server.

question about whether it’s necessary when not dealing with user input? comment from audience that might be important for upgrade to D7. coder module? for flagging instances which should use db_query. “deadwood” module?

drupal_get_token() – verifies source of request – get v. post. 1) set token. happens with every form that uses Form API. 2) then verify, is token passed the same one that was created. code is really simple! uses MD5, session_id. huh. along with private key for your site. that makes a lot of sense. also works for AJAX stuff: hidden input with token, pass value in AJAX call, then check again server-side.

also to be aware of: forms API (I think he mentioned that before), forms are biggest source of malicious attacks. set permissions properly as an admin (oy, this is a PITA). don’t use User One! “up here as a reminder for me” I’ve set up a whole system for that on the work site. audience comment: if you use drush, don’t even need to use user one. (debate afterwards on correct pronounciation!) SSL certs not a cure-all, esp if not all site is SSL.

Mapping, GIS & Drupal

modules: location, location cck, geo – uses spacial database extensions!, openlayers (sorta, half-implementation)

[lost tweet: #pnwds making a total mess with pink frosted donut. yes, while wearing a black dress. ::sigh:: really can’t take me anywhere.]

for displaying: gmap, nicemap – does points pretty well, openlayers

Openlayers is going to be his focus: uses open layers js library.

[no net connection at all?!]

Geocoding, spacial tables, desktop GIS

jumping to a demo.

location is fading out of use, to replaced by location cck. (I think I had troubles with that latter.)

a view showing two polygon nodes on the same map – union bay & lake union, outlined and overlaid with shading. neat.

editing tool. polygon is a cck field. cck setting determines how many polygons per node. geo is also a cck field.

based on presets, packaged map that you define: what layers are available, beginning lat/lon & zoom. showing preset creation. includes projections, like polar, mercator, etc. whoa. gmap uses meters from 0/0, not lat/lon! can’t match. interesting options of layers, based on which projection selected.  satellite imagery from nasa!

WMS: feeds of maps, published by map creators, incl NASA. 🙂 Q from audience: ESRI feeds? ESRI products can be published as WMS.

Then cck field can draw on top of this preset map. Two options for field types.

Stepping back… join across tables based on key, idea of spacial key: one table is polys, other is points, join where points are inside poly, etc. wkt = open standard for storing spacial data as strings. use geospatial if needing advanced stuff, openlayers wkt is more basic. (but more stable) [my own personal bike map site?!]

geomemes.com/openlayers

under the WYSIWYG map is field with coordinates.

can collect with one projection and then show with a different projection!

showing some view options “well known text” = description aka WKT, not street addresses or anything. – it would be nice to have a meaningful sample here.

Q: translate from lat/lon to WKT? Yes. (At least I think that’s what I heard him say.)

some interesting options for interactivity on maps — defined as hooks. (is this how to FINALLY get the list/popup branch list working?) declutter includes the word “automagically” in its description. has nice zoom/autocenter to features. feature styles “for advanced users only” no kidding. that looks super-mega-complicated.

[seriously, this is way cool, could be exceptionally awesome for members-only section of ENA site. which reminds me, I need to see about a BOF for civicrm – tomorrow maybe?]

Q: what runs the map? the openlayers javascript library. Q: leverage geodatabase in views? buffer, show other nodes, etc? that’s the long-term vision, but not there now. lets you store stuff, and then you have to write your own queries to display. Q: can consume KML? yes, for security, JS can only load from same domain. have to write proxy to get external KML. Q: nearby a certain point? can’t do w/WKT – unless write yr own PHP – eventual geo module & views interation. postgres (postgis) is better implementation, mysql implementation is more common, tho. and there’s yet another module that sorta kinda implements this stuff (mapping kit?), maybe too ambitious.

Q: use case: social networking site, organic groups, many actually location-based, rolled out proximity searching w/location, want to introduce neighborhoods instead of zip-based. any way to use this stuff? he thinks so… follow-up: any connection between location/location cck & geo/openlayers? is it inside this polygon? currently need to do custom coding to make that happen? can use location cck data in openlayers views. point data sources, identify fields. they want to go there, but not there yet. (bummer)

I missed a question — a partner in openlayers module, but have rolled their own.

Q: is openlayers going to go in the same direction as geo re:storage? geo is storage-oriented, openlayers is display-oriented.

Missed something else. (speak up, people!)

Somebody asked my question about list + popup. Nobody can make that happen. 🙁 But JS library is still there and can make use of it. Something he said fired my brain about doing the view and making it link to fire the JS vs an actual link. Ugh. can’t quite get that working in my head.

Showing some code, didn’t quite work – ah, there it goes. PHP snippet loads map. Can also use Devel module for debugging, render array to screen.

OSM Cycling Map?! (is there any mapping service that provides map via SSL?)

seen a couple of Eees, and talked to a woman who absolutely loves hers. so totally going to do that.

Interesting demo of how the stuff is stored in a JS object.

Q: cross-browser? A few bugs in IE, otherwise good. Q: documentation on Shape files? import as nodes or table wizard route. as nodes, have to convert geometry to WTK. geo module can handle shape files directly into the db. (that makes my brain hurt. also makes me wish that city/state used open source for web.) quantum gis? Q: what types of bugs might one see in Geo? don’t know, but it’s still in dev…somethings with views, not complete implementation. open bugs listed.

BOF: Open Atrium/Managing News

wifi still down.

Installation. New look sites looks ENTIRELY DIFFERENT from new drupal site.

Groups…main content of the site. At the moment you have to create the users yourself. (LDAP/Active Directory/whatever integration?)

Features module, packaged up (groups of modules?) “shoutbox” is like internal twitter.
Every group can have different color & logo.

People can belong to multiple groups? [yes]

Entirely different administration screen, uses Admin module design, etc.

Project vs Cases? So this is a footprints-type thing. with notifications: what does it look like when you have 400 users? Only can notify people in the group. Hrm. Reply by email becomes comment. Yes, very much like footprints…only NOT UGLY. [strange digression from Gregory about evolution, comparing ancient primate to “two unrelated modules developing at the same time.” heh]

Calendar: how does it integrate w/content types? (my question: does it integrate at all w/outlook?)

Accept contrib modules? Yes, you can add your own – using Features? Some open atrium-specific things you need to do, but not too hard.

Can use LDAP/AD.

Asked about home page: a custom dashboard, with activity from your public groups. I don’t know if it’s too simple or too complicated.

“strongarm” steals lots of settings.

ease of theming beyond the built-in? wouldn’t do it. can hijack icons, atrium logo, but wouldn’t go beyond that, esp not until it’s a stable release.

turning over in my mind how feasible this would be. it’s prettier, but almost too much simpler?

managing news – feed aggregator with crazy features. oh, hey, I think this is EXACTLY what C has talked about before. what would you feed in? – OlyBlog, Everyday Olympia, NA sites, Olympian, TNT. YET ANOTHER REASON WHY I WANT THE CITY TO PUBLISH RSS. (is there a way to screen-scrape to RSS?) uses openlayers. oh hey there it is again. 🙂 Import locations: identify places as being w/in n’hoods? apparently so. feed with place names! also uses features. install shoutbox from open atrium into managing news? 🙂

Features, Robin

really pretty stuff development seed has been doing – has been wondering is it really as easy as it looked in the videos? if you want to use features, you also want contexts. repeatable & reusable, could put together as a product for clients. fserver is alpha, not yet on drupal.org why context? block configuration, active menu items, don’t have to repeat configuration.

off to the sandbox! Profiles, using Content Profile with file field, image cache.

use Context in lieu of the crazy shit I have going on with OG, Simple Access, Themekey, etc., etc.?! missed a bunch about context getting all excited about new project idea. 🙂 seriously? I want to go find a spot where the wifi WORKS and try to do this project.

“i’m going to say that that is a cache issue.” 🙂

create the bundle online, download, then install to modules folder. what IS the feature file? looks like module files, but doesn’t show up in admin/build/modules. php code with arrays/functions. export of a view, etc.

I think I’m sorta kinda getting it, although at this point I’m not sure I have need for it. Nice to know about context, tho. going to give this session 5-10 more mins, see if there’s anything else that’s going to be useful before I just take off.

create features on sandbox site, and then install onto production site. Aha! there’s a use I can get behind. is that going to be part of deployment session tomorrow?

install via features, not modules.

it’s waaaaaaay too late in the afternoon for all this naming silliness.

Drupal!

[this post is probably a draft. might be adding links and such later.]

As of yesterday, my work site is running on Drupal. It’s been a long process, starting probably about a year and a half ago. Yesterday I was a little insane getting it live, but I’m really happy now.

When I started this job, the site was all static pages, no templates even, with a number of small home-grown PHP apps to post the rates, jobs, and a couple of other little things, plus phpAds to show promotions. Since then, I added templates, upgraded phpAds, reworked the home-grown apps, added a WordPress installation for news, and Kayako’s Support Suite for email and chat. It’s been good, but unwieldy. And honestly? I’m a jack of all trades, not a PHP programmer, so those apps have always been a little…fragile.

I’ve used WordPress for a long time (heck, I’m using it right now), so I did look at it as an option. But the site in its cobbled-together form was just too complex to recreate without a lot of insane hacking, which gets back to me being the programmer.

I’d also used Drupal before, in the 4.x version back at Pierce. My snap judgement was that it was incredibly powerful, and a PITA to set up and manage. Taking a whirl with 5.x improved my opinion of setup and management…vastly, and at the time, in the early days of 6.x, it looked like that was going to be another big step up. So I started futzing, initially with 5.x. The point was, basically, to recreate what was on the site already, but in a unified interface via Drupal.

It was right at that cusp of deciding whether to use D5 or D6: for a while I had a spreadsheet with the modules I thought I’d need, noting where they were on D6 conversion. (I now have a similar one with notes about D7.) Then I had an opportunity to do a small subsite that didn’t need as much functionality, and it was my first go-round with D6. And it was good. 🙂 It went live about this time last year; the site setup — and its maintenance since then — have been quite good, which gave me confidence to go ahead with D6…once the modules were ready.

That’s the thing about Drupal, even more so than WordPress: there’s a module to do damn near anything, but not all of them have the same level of attention or quality. Many depend on the scratching-your-own-itch phenomenon, and if the itch is small enough, and once you’ve taken care of it, there’s not much motivation to keep the thing alive.

So it wasn’t really until maybe this spring that enough of the pieces were in place that I could definitely go ahead. From there on, I was gradually puttering along recreating functionality and figuring out how Drupal works.

I have to give huge kudos to Apress and the Pro Drupal Development book. I ended up with a free PDF copy after SXSW, and that thing really got me going. I spent several afternoons at the nearby Starbucks with printed out chapters, scribbling in the margins and slapping in post-it notes. Chapter 8 on theming was particularly helpful, as was Chapter 12 on search. Eventually I’ve worked my way (mostly) past the cargo-cult-coding stage, those pieces helped me get there.

Getting the theme right was a big deal, and though I still feel like I haven’t done it to my own personal standards, I’m thrilled that I couldn’t tell the difference, visually, between the old site and the new. I used Zen as the base theme, and went nuts from there. There are some particulars that I decided to handle differently, but those were (mostly) conscious choices. I was even able to clean up some of my design work from last summer’s redesign, which is always nice.

The other things that helped tons with theming were the Devel and Contemplate modules, along with Firebug. Devel and Firebug helped me see what was being created…Firebug in particular was great for converting class and ID names in the CSS. Trying out templates with Contemplate helped me understand how to create my own template files for all the different node types, even content fields.

Which brings up CCK, I suppose. Another one of those amazing, powerful, and often crazy-making tools. The thing that took the longest of the whole project was creating our rate tables. People love ’em, but wow are they complicated, especially since the folks who do the entry like to be able to enter rates ahead of time to appear when they become effective. I discovered the (experimental!) multigroup feature…and for that feature, my needs were actually pretty simple. It took me a long time to figure out how to theme a multigroup; the day that happened was the occasion of much rejoicing. I’ll be interested to see how it evolves in CCK 3, for sure. In any case, I had to try many different versions of content types for the rates before settling on my current scheme. Of course, that involves Views as well, which I’m also pretty thrilled with overall, even if there are bits and pieces that remain entirely mysterious to me. (Relationships?! And I never did get multiple arguments working quite how I wanted.)

I kept discovering modules over the project, occasionally that led to tearing up one way of doing something and trying something entirely different, running into dead ends, etc. (Don’t ask about nodepicker for tinymce.) I think I’ve gotten a feel for deciding whether a module is going to be worth my time…a look at the issues queue is often very instructive.

Some highlights: Panels is way cool for some of the multiple-resource type pages, and had I tried it out sooner, I probably would’ve used it for the homepage. Actually, the article I’m writing for our email newsletter, about site enhancements, is going to be entirely about new features made possible by Panels. Clone Module is simple and does exactly what I needed it to. Insert Block and Insert View are incredibly valuable for drawing little chunks of content into other pages. ThemeKey makes me a little crazy (sometimes I swear my selections don’t take) but very useful for handling some particular admin-type, but not actually admin, pages (also helpful: Simple Access), as well as a subsite that has a radically different theme. I still feel like I don’t totally understand Organic Groups, but that subsite couldn’t happen without it. I’m figuring I’m going to learn a whole lot more over the next few months! GMap rocks the branch map, although I still really want a way to make the links on the list of branches open the associated bubbles. I could do that with my hand-built code, but not with the module. 🙁 Getting advanced processing working in Webforms was one of those fist-in-the-air moments, and it took me a reeeeeally long time to get there. I should probably write some more detail about how I made that work.

I even wrote my own module. 🙂 It’s based on one from Pro Drupal Development, and searches the knowledgebase that comes with our contact center site. (Coordinating those two pieces has been a challenge, and I’m still not really done. I’ll be futzing with that for probably several more weeks.) It started out pretty cargo-cult, and then I had one of those epiphanies, and it just all came together.

The whole Drupal experience was a little like that: having a vague idea of what I wanted to happen, searching out a bunch of different ways to do it, being horribly frustrated, then usually pretty suddenly, figuring it out and going gangbusters. There’s a lot of power there, and with great power, etc., etc. Also, try not to cut your hand off with that chainsaw.

Importing data is another piece I should probably write about in more detail. I ended up doing half a dozen different things, but most useful were Node Export,  Taxonomy Import/Export via XML, Node Import, and Backup and Migrate. The first two I used primarily in transferring data from the Drupal subsite into the new site, and the first is really nice for moving individual nodes. Node Import was the happy bulk tool, although I did have to copy/paste a lot of HTML from individual files into a spreadsheet: clunky, but for the basic info pages, it worked just fine. Backup and Migrate helped most in the transition from test to live, and I’m assuming it will continue to serve that function. I even had to revert the live version once during the install because I did something incredibly dumb, and the reversion went wonderfully well. 🙂 There’s also a module specifically for importing WordPress content that got all of our news posts in nice and easy. The name escapes me at the moment. I am frustrated, though, at how long it took me to figure out how to do all that. I found a page, eventually, listing a bunch of options, and that helped…but at the time, it didn’t list Node Export! So there you are.

Which reminds me: I did get helpful information on a number of topics via the Drupal community in Seattle. In particular, Greg Dunlap’s slides on data import and deployment gave me lots of good ideas, and Jennifer Hodgdon’s DrupalCamp presentation about Views helped me get my brain around that stuff. I’ve been able to go to a few Drupal events in Seattle now, and while I haven’t always been able to stay the whole time, they’ve been great opportunities.

Twitter’s been a source of advice, assistance, encouragement and sympathy as well. In addition to Greg (heyrocker): gregoryheller, lauras, joeeastham, mahalie, xtfer, and shelleypowers. (In book acknowledgement tradition, I’m sure I’m missing someone.) I continue to be amazed by the power of the internet for learning and sharing.

I wanted to pour all of this out there while it was still fairly fresh in my mind. A lot of time has passed already, and it helps for me to write about the experience of getting started. I know I’m not done either. There’s still plenty to learn, features and modules I want to try, and new projects for the site.

Oh, and as you might imagine, I’ll be at the Pacific Northwest Drupal Summit next month.

(As for this site? I’m sticking with WordPress. It’s just about perfect for the basic bloggy thing that I’ve been doing here for the last 8+ years, and I still enjoy using it. I’m still into it for basic sites, too: the Eastside Neighborhood Association, Christmas Tree Lane, Friends of the Olympia Library. There’s a jump in complexity from WordPress to Drupal that isn’t always necessary, or even a good idea. In the same way that I’m essentially agnostic in the Windows/Mac religious wars, I’m good with both systems, for their own purposes.)

external validation

This morning I got a Twitter DM from @refresholympia that an anonymous tipper noticed this site wasn’t validating. I guess when you say you’re going to present at an event about web standards, the nitpickers come out of the woodwork. I’ve been that person myself a few times, and I think it takes a few go-arounds with big and/or long-lived sites to get a little humility about how these things happen. So I’m annoyed that anon didn’t say anything directly, but otherwise ::shrug:: it’s all cool by me.

As a note to others and for myself in the future, here’s what was broken:

  • Unescaped ampersands in my flickr badge, which is a lesson about (a) the fussiness of ampersands and (b) the pitfalls of using other people’s code. You can’t guarantee that any widget will be doing the right thing, standards-wise. An easy fix, though.
  • Illegal style element in the body, just above the goodreads badge. See (b) above. Also easy, just copied the CSS rules into my main stylesheet.
  • Unclosed archive list ul. D’oh! That would be all me…and it’s been that way for a damn long time, I imagine. Typo FAIL. And the lesson? Always check your work.

I’m thinking my presentation is going be something about “standards: not from scratch” about getting it right in an environment of CMS apps and widgets. 😉

Ada Lovelace Day

I’ve had this pledge in the back of my head for a while now, and been hopelessly indecisive about how to handle it.

Do I write about an early influence: Mom, who went back to school to learn laser technology or the teacher of my 7th grade “computer” class? (TRS-80 programming FTW!)

Someone famous? Everybody and their cousin is likely to write about Grace Hopper, Ada Lovelace, Heddy Lamar, etc.

One of the blogger women who I admire so? I stand in awe of the fierce voices of Dorothea Salo, Shelley Powers, and Dori Smith in particular…and these three women have also been wonderful internet friends.

But I find myself gravitating towards someone who taught me probably the most important lessons I ever learned about computers — and who I wouldn’t mind finding again, should she ever happen to Google her name: Mona Janson.

My first full-time job was at the Children’s Museum of Tacoma. I started as a work-study, and then stayed on full time for about a year after graduation. It was the first place where I ever worked with computers, and working there taught me two important things: don’t be afraid, and always be learning.

One of my co-workers was a middle-aged woman who’d been at the museum I think since it was founded or shortly thereafter. Mona had a high school education, three teenage sons, and an amazing artistic gift. No, she was not a technologist, but she was always learning, and she was pretty damn fearless about it.

I learned Access one summer, just by sitting and reading the manual, because she wanted to try replacing her paper class reservation booking system. It didn’t quite work out the way either of us wanted, but she was game to try it out, and to tell me what might work better.

We both taught ourselves Publisher at about the same time, to make little fliers and mailers; I ended up working on the museum’s newsletter, which was my first big foray into graphic design. (Why yes, I was that secretary with Publisher who thought she could design. It was the start of a fantastic learning journey.) I think Mona helped teach me Dorothea’s “beat it with rocks” philosophy: just keep trying stuff until something works.

And she was part of one of my early horrific computer disasters, which was its own excellent learning experience.

The museum was moving to a new location: right next door, as it happened. We all worked like crazy, until we were pretty much wiped out. Mona and I were setting up the office computers — we’d gone from one old box with Windows 3.11 to two or three computers, including IIRC one with the OMG new! Windows 95 — and we were getting the last one in at the reception desk in the basement office. The desk had one of those holes for routing the power cables, and it was not quite big enough. So Mona went to get the drill, and I fired it up, and both of us had forgotten that the machine was still hooked up to the power.

Yeah. Smoke, sparks, and the computer didn’t start again. I was mortified. After all, it’s not like the museum had a lot of money or computers. (This also followed the great ampersand disaster, in which I learned my lesson about replace all.) But Mona, along with everybody else, had a great sense of humor about it, and the dead computer went off with the nickname “Sparky.”

(Years later, I learned that C had ended up with the computer, via a friend who worked with me, and it wasn’t as much of a lost case as we’d thought. He said it was a sturdy little 486.)

Mona & I stayed friends for a while after I left the museum; for a few years, she played D&D with me, C, 2 of her kids, and one of their friends. It was great fun, especially the nights when we played in the museum after hours. She left the museum eventually too, and moved to Canada, and I haven’t heard from her in years. But I still feel inspired by her curiosity, energy and perseverance.

therapy 2.0

multiple stressors online, and then technology & mental health.

analogy to rsi. interesting.

wiki with resources.

very quiet when asking the audience why they’re here.

technology ebbing away ability to have solitude.

ok, today was probably not the day for me to try to participate.

“i can quit twitter anytime”

so validated when there’s a new message, but also being overwhelmed by too many.

“will you just put that down” not actually talking at a meetup.

removing from the present moment vs. wanting the support network

a new type of suffering, or just something that looks different?

integrating into social systems.

bigger risk: data mining, esp in re health insurance.

how do we define mental health?

social media offering the sense of understanding, broader context. invokation of megan [???] & myspace story.

mental stability & facebook.

maintaining effective boundaries. richness of media allows continuation of conversations. holding the context of the topic. “that work for the person in question” becomes more acute as the boundaries become more visible.

responsibility we feel for things that are marketed as play, adding more pressure. “ignorance is bliss”?

control over the information pushed towards. someone not on twitter: “i can’t handle one more thing”

“not the end of the world if we don’t” do whatever.

tech allowing him to jump over roadblocks (re: ADD).

exercise!

mental health: if it bothers you, it’s a problem.

“clinically significant distress”

starting consultancy: how to handle roadblocks, getting “wobbly” with bipolar. “consultancy-generated depression.” “is that an official name?” motivational, attentional, procrastinaton.

mental health defined/measured by productivity.

only woman in an office of 50 guys…”we don’t see you as a girl” — dealing with mixed expectations. influencing sense of well-being.

exhausted by mode-switching, sensory overload. you CAN’T keep up with everything. spend time doing stuff that’s NOT work stuff.

“just want to be me for 24 hours” (that’s why I’m here, partially. not gonna write abt it here, but I’m having some personal identity anxiety issues.)

“quien es mas macho” problem. (culture of overwork) how to set boundaries? focusing on the productivity goals rather than the methodology. “while I have you…” difference in personal IM vs business IM. office hours (in academia) creating understandable boundaries, talk to those people about the boundaries you need to set.

recorded affirmations, kindle, music streams. seeing distant family. “so much hating” getting comments and feedback as a writer. realizing that most people are kind.

support groups, task managers, meetups. introverts! exercise reminders.

hyperfocus, being able to handle interruptions on own time scale, and then being able to adopt a caring persona.

any new techniques for new technology?

memescape

I missed the name of the irc node.

awesome cartoon.

benkler, layers of communication: content, code, physical.

dude’s got sniffles.

the daily meme. vs stuff that happens over time.

oh, numa numa. I missed that one entirely until I saw the Canada on Strike episode of South Park. vs Rick Astley, rickrolling “barfing into the real world”

oh heck, dylan just spilled coffee on his netbook. 🙁

hamster dance -> LOLcats. adds community. icanhascheeseburger. ceiling cat vs basement cat, a universe emerging. LOLcat bible. can write executables in lolspeak? LOLbama. “yes we can has”

underlying patterns: daily meme, real world emergence, genres

with the internet 24/7, and more important than it used to be. growth of facebook among 25-54. 11% of people on twitter or similar. tools & communities for building memes.

the future?

flaw in layers model: people!

great news: we’re all trashed. (economy) how does recession become boom for internet culture? both supply and demand. lots of bored unemployed people with nothing to do. (hrm.) youtube traffic peaks right after lunch on the workday.

media companies turn to the internet because it’s cheap? books based on internet memes, because they’re cheap.

(I know he’s really excited about all this, but I’m finding it a little freaky/depressing.)

etsy, source of cheap stuff.

evidence?

comparison of graphs: correlation of DJIA & growth of twitter, vimeo, etsy pageviews. (I wanna see those graphs again more slowly.)

can you hack internet culture? (zombie ninja badgers!) retweeting between similar clusters. “rudimentary language for twitterbots”?! class where you get graded based on how famous you become on the internet. (I find that immensely depressing somehow.) “fame olympics”? gah.

social net neutrality. EPA for the web? (has he connected with zittrain at all?)

q: what about “forwards I get from my grandma?” universe of internet culture that belongs to people above 50. (actually, I’ve gotten a few of those happy love chain letters from folks my age. I think it’s an actual cultural difference, rather than an age difference.)

q (dylan): 3rd model of recursive memes? meme relative reliance on old media. the 4chan paradox: as it gets simpler, culture gets richer. q: age bracket, stuff from the usenet coming back to facebook (25 things), wtf is up with that? internet groundhog day syndrome. (as I think I mentioned, some of that stuff dates back to pen & paper for me.) “before the lol” cats with funny captions from back in the 70s & 80s! web caches everything. rick astley’s on tour again! roflcon is all on archive.org.

q: did you catch sterling? I heard he was angry. boomers & internet culture? internet culture comes from people who have too much time on their hands. so what happens when huge group retires? clusters of internet that are entirely their own cultures.

q: companies trying to create artificial memes, how does that affect organic meme growth? haven’t been able to achieve “that special sauce” — 4chan saying “do it for the lulz” “never going to find a community around [didn’t hear]” (maybe not: seem to remember stuff in Buying In.)

q: would rather be rickrolled rather than what it replaced! (nsfw) she accidentally created a meme, is there a pattern of what works and what doesn’t? hard question, part of what they’re trying to research.

q: trends in how memes spread (facebook vs twitter vs whatever)? back to the 4chan paradox. slimmer tools. simple memes: single-serving sites. (isthesunstillburning.com)

q: missed a bunch of stuff, people misinterpreted “meme” as “Me-Me”

q: are the internet-famous persuing it deliberately, or hitting it accidentally. “aggregate things that used to happen on the edges of the society and bring them into the center” in-jokes exploding back into the larger culture.

q: metrics & tools for studying internet memes? project at berkman called media cloud. generate associations between terms.

youth culture in nigeria not so much about drugs or whatever, but 419 scams.

wasp annual mtg

just catching the tail end. swan talking abt internationalization. “web standards cafe” (although: arg! grammar error on slide!) educate ourselves on what actual issues are in other countries!

featherstone being excited. (ran into him at bikehugger bbq in full on bike gear)

I see molly getting rowdy over in the corner.

back to the specific focused things that wasp did back in the day.

ie8 compatibility mode question, oy subtle differences.

ranty mcrant rant from dylan & molly re: netbook preloaded with ie6. gah. blah blah blah. I’m sorry, but this arguement bores me to pieces. like the sterling rant, I’m not entirely sure why I have that reaction.

kim blessing, whole industry around supporting ie6, us in this room can’t do a whole hell of a lot. (reminds me of tom yesterday talking about the “jerry mcguire moment”)

molly: the fact that ie6 exists means we have to continue to support. one friggin’ web.

bruce sterling rant

is bruce sterling wearing a white suit?!

whoa, journalism. again. throws down big stack of books. “a lot of words in a row” “a parlous state [publishing]” “sorry for the state of editors & publishers”

“web 2.0 concentration camp”?!

thought he might hurl the books at random. I could actually stand to have something to read on the plane ride home. and it would be the 2nd time, since I read one of his books coming home in 2006. kinda weird & condescending?

“god knows they were told about it” “a creature out there with dry ice & a scythe” kindle book = plugin cassette for an atari 400. releasing love letters under creative commons?! wired looks like a “boy scout fanzine” with all the ads having vanished. who is the woman he’s talking about in the wired italia?

he mocks us in the back twittering etc “the people formerly known as the audience” (but doesn’t every audience only ever hear bits & pieces.) I think he’s bringing out some booze, in memory of ye olde parties. I think the year I went first was also the first year w/out a sterling house party. also, throwing food into the audience. eating potato chips at the podium. srsly? cops showed up & shut down the last party. the upshot is a loss. days of avalon not coming back.

“as they casually datamine all your tweets” oy. aaaand now I think he’s opening a bag of milanos. yes, that’s exactly what those are. my most favorite cookies, and also they remind me of somebody….

doing one of his evocations of a harsh dark future. cellphones & dense social networks as signifier of poverty?

the dooces just wandered in, paused, whispered at each other, then wandered back out.

terrible to say, since I loved the ’06 rant, but I’m not feeling this one.

“the argentine-ization of america” is what people should be scared of.

drinking while reading off lots of possible names for the possible freaky future staring us in the face.

misc writing of hp lovecraft: bigger than collected works, “community boosting” “pillar of moral strength” within his own community. “blogger ala letre” (sp?)

busting out….

finance 2.0

woman from gartner who does social media stuff. 3 topics: innovation, competitive advantage, how will the tools change as they go mass-market.

billeo product pitch. 9000 co’s in their system. (if this is going to be mostly pitch, I’m outta here.) sounds like a clever idea.

keeping nickels, finance blog.

mint. biggest in the space.

smarty pig. (Adrienne who I met the other day was totally enthusiastic about it.) touting their high interest rate on savings: 3.25%? making goals public…which I do find fascinating. somebody in the CU space should write a plug-in (or whatever) for the major core processors/online banking systems.

innovation: mocking the bank websites. what draws consumers to these guys?

average american has 10-11 “financial relationships”? rly? know where your money goes. ah, mint guy pimping the credit card comparison aspect: get better interest rate, rewards. (I never had that much luck with that aspect.) smarty pig: when you save for a goal, you feel empowered.

why should anybody go “wow”? make it easier. mint guy is totally hogging the panel. keeping nickels blogger too quiet, billeo guy not involved at all. 🙁 wish wesabe were here. ah, there she (nickels) goes: bank’s online banking takes time, looks intimidating. busy people who travel, expense report organizing is a PITA. billeo: mailing checks vs instant payment. comparing products.

why can’t banks grasp this? why no banker on the panel? (did anybody ask anybody?) mint: no good designer/programmer wants to work for a bank. what a jerk. smarty pig: had to partner with a bank, met with some of the big guys, CMO of maybe #5 bank on seeing storyboards etc., “love the idea, but we would chew your idea up and spit it out and you would hate it.” maybe not even implement in 2 years. (oh, they built something that is (technically) entirely independent of institution. I know they partner with a small bank. in Iowa?) environment doesn’t make it possible.

didn’t quite understand the question. billeo has way for customers to share ‘site is down’ info. “banks would not dare to do” nickels blog: friend sharing story about bank fee f-up. shopping around, diminishment of loyalty. she makes the comparison to social & weight loss.

q: aaron with intel. people are scared. how do you find information about “weathering the storm”? mint guy gives bland “3-6 months savings” answer. (I heart get rich slowly.)

q: the reality is that “america doesn’t do that” (savings), has used everything from mint to excel, nothing gets the budgeting scale that he wants. mint budgeting is monthly because most expenses are monthly. mint is organized around “problem categories”. “your solution is too complicated for most people” billeo comparison: how much do others spend in that category. #3 request at smarty pig: correlate deposits w/paychecks rather than monthly.

q: not paying attention, something about security? “banks are well-trusted but they shouldn’t be” bank employee fraud 3rd leading cause of identity theft in the country. (?! srsly?) they send out suspicious activity alerts. huh. scanned database for tiny charges and emailed members. no bank would do that. (otoh, banks/CUs get breach info directly from visa, don’t have to scan db.) smarty pig gets full fdic & bank auditing. mint guy tripping on “mission impossible” type physical security of servers.

nickel blogger makes the good analogy of mobile alerts to atm receipts.

I don’t know why I’m feeling SO snarky about this panel.

banks banks banks banks. why NO mention of credit unions? or do they just lump it in, the way “online banking” is a generic term?

(missed a big chunk)

could their products work together? mint guy prefers using credit card for bill paying. srsly?!

ack. taking off now.

misc tidbits

just as a placeholder, some things I haven’t written about that I would like to, later:

  • bikehugger bbq
  • meeting Laura Moncur
  • Fray Cafe
  • dinner at Moonshine (?)
  • food, in general
  • crappy flight out
  • the whack weather
  • mefi meetup
  • all paths lead to the death of newspapers
  • yoga
  • NOT having ubiquitous internet
  • refresh meetup/lunch
  • my “business cards”

more later, hopefully.