<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Web Generalist</title>
	<atom:link href="http://thewebgeneralist.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thewebgeneralist.com</link>
	<description>Jack of all trades, master of some?</description>
	<lastBuildDate>Tue, 01 Nov 2011 17:40:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Getting back into the swing</title>
		<link>http://thewebgeneralist.com/2011/getting-back-into-the-swing/</link>
		<comments>http://thewebgeneralist.com/2011/getting-back-into-the-swing/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 17:40:28 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[day-in-the-life]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=94</guid>
		<description><![CDATA[I&#8217;m back at the office after a week of training &#38; conference, a week of being sick, and a week of vacation. I&#8217;m delighted that I cleaned my desk &#38; email before I left; that made it a LOT easier to ease back into my routine. Yesterday was spent cleaning up, filing expense reports, and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m back at the office after a week of training &amp; conference, a week of being sick, and a week of vacation. I&#8217;m delighted that I cleaned my desk &amp; email before I left; that made it a LOT easier to ease back into my routine.</p>
<p>Yesterday was spent cleaning up, filing expense reports, and doing little random things. FWIW, I had 258 emails in my inbox, although I was checking my email some during that first week; a first pass got it down to 101, and I ended the day at about 10, including what I&#8217;d received over the course of the day.</p>
<p>Today&#8230;well, there&#8217;s some more of all that, but I did print up my notes from the Google Analytics training. I&#8217;m hoping for a chance to read through and condense it into a report for my boss and a to-do list. I took all my notes here and have them saved as draft posts; if my notes turn into something shareable (ie, not too much internal info) then I&#8217;ll post it here.</p>
<p>Tomorrow I&#8217;m planning on doing the same with my Drupal Summit notes, which are already available here in live-blogging form.</p>
<p>All of that, hopefully, should provide some redirection on my projects for the rest of the year and for 2011. During the whole week, I kept realizing all the back-to-basics things that I want to be doing. I&#8217;ve spent most of the last five years constantly surging forward into new areas; now it&#8217;s time to review, to assess, to clean up and polish. I&#8217;m looking forward to it.</p>
<p>(Plus I read Rocket Surgery Made Easy while I was sick, and I&#8217;m inspired to do more usability testing!)</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/getting-back-into-the-swing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>open source community management</title>
		<link>http://thewebgeneralist.com/2011/open-source-community-management/</link>
		<comments>http://thewebgeneralist.com/2011/open-source-community-management/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 21:21:29 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=91</guid>
		<description><![CDATA[background in negotiation theory, worked for authors of &#8220;Getting to Yes&#8221; not the first experience you want people to have: &#8220;Bet you its a duplicate&#8221; (bug submission) value of project is social capital: number of people contributing &#8211; harkens back to yesterday&#8217;s keynote, and that organizations evaluate OS projects based on number of developers. community [...]]]></description>
			<content:encoded><![CDATA[<p>background in negotiation theory, worked for authors of &#8220;Getting to Yes&#8221;</p>
<p>not the first experience you want people to have: &#8220;Bet you its a duplicate&#8221; (bug submission)</p>
<p>value of project is social capital: number of people contributing &#8211; harkens back to yesterday&#8217;s keynote, and that organizations evaluate OS projects based on number of developers.</p>
<p>community management = negotiation!</p>
<p>everybody&#8217;s pointing at webchick &amp; jhodgson</p>
<p>hiring on technical skills, promoting on soft skills. and nobody says that. the big lie around the meritocracy.</p>
<p>the tools for treating this as a science already exist</p>
<p>lower transaction costs for engaging in the community: skills, design, data</p>
<p>a tweet: &#8220;the part of open source I dislike the most is [dammit, didn't get to translate, but amounts to I hate it when everyone is wrong and just doesn't use my idea]</p>
<p>from a negotiation perspective this is the worst option</p>
<p>at the core of every conversation: interests (as separate from positions) &#8211; why do you want this? underlying motivations. (it&#8217;s like doing usability testing!)</p>
<p>the smart-alec comment: I just want you to tell me that I&#8217;m smart.</p>
<p>use them to generate options, then what external standards can you use to make decisions. (legitimacy)</p>
<p>often breaks down because relationship and/or community are lacking</p>
<p>in open source communities, relationships are often MUCH weaker. communication also often weak, missing 70% because of lack of visual/audio cues.</p>
<p>&#8220;crazy distorted version of this framework&#8221;</p>
<p>build this stuff into the tools we use &#8211; nudge people to better communication</p>
<p>Inquire &#8211; Paraphrase &#8211; Acknowledge &#8211; Advocate</p>
<p>example of bug report (?) that is ALL advocating</p>
<p>modeling behavior and setting norms</p>
<p>&#8220;what should the software have done?&#8221; vs &#8220;What were you trying to do?/Why did you want to do that?&#8221;</p>
<p>and yet there&#8217;s all these tools out there</p>
<p>fork as a big threat &#8211; but github as a structure allows people to run off and innovate, at an <em>infinite</em> scale</p>
<p>attracting/empowering the lone individual</p>
<p>cooperation vs collaboration challenge</p>
<p>collaboration is very high-touch; open source restrctured process to enable cooperation, going off on your own and then bringing it back into the whole.</p>
<p>example of Firefox add-ons &#8211; which sounds a LOT like Drupal module situation</p>
<p>mapping consumption of memory by add-ons: a real issue of cooperation &#8211; then providing more data can empower the user to make better choices, which provides useful feedback to addon developers.</p>
<p>discussion of bug vs support</p>
<p>developers are incented to be mean, because they don&#8217;t want to waste their time. so talking about changing the culture maybe not the best place to start. look at the incentive structure: what&#8217;s driving the behavior?</p>
<p>open source projects don&#8217;t have open data portals.</p>
<p>if you want to advocate for drupal, you have to recognize that there are things that drupal is not good at. (in context of bug/issue tracking)</p>
<p>how do we create dashboard systems? shows example of seeclickfix</p>
<p>the hardest people to get data about are the people who leave and never come back.</p>
<p>need to bring real accountability to project/module owners &#8211; track wait times, checkins, etc. setting expectations. (would be interesting to combine that with time-limiting responsibilities)</p>
<p>open data city hackathon &#8211; look up more.</p>
<p>fascinating stuff. &#8220;getting health inspector data before you go into the restaurant&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/open-source-community-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>performance and scalability</title>
		<link>http://thewebgeneralist.com/2011/performance-and-scalability/</link>
		<comments>http://thewebgeneralist.com/2011/performance-and-scalability/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 18:57:23 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=89</guid>
		<description><![CDATA[performance: how fast it is. scalability: breadth, a lot of people can do the same thing at once. he&#8217;s more of a server-side guy, but don&#8217;t ignore front-end. (which was all in yesterday&#8217;s talk) diagram of process of getting to the site. browser cache, if it&#8217;s accurate, is best of all possible worlds, speed-wise caching [...]]]></description>
			<content:encoded><![CDATA[<p>performance: how fast it is.</p>
<p>scalability: breadth, a lot of people can do the same thing at once.</p>
<p>he&#8217;s more of a server-side guy, but don&#8217;t ignore front-end. (which was all in yesterday&#8217;s talk)</p>
<p>diagram of process of getting to the site. browser cache, if it&#8217;s accurate, is best of all possible worlds, speed-wise</p>
<p>caching at multiple levels: it&#8217;s caches all the way down.</p>
<p>a lot of f-bombs in this presentation. interesting.</p>
<p>history of drupal: first actually popular drupal site: the website fell down under slashdotting. so, very basic page caching, which is still with us.</p>
<p>PHP caching! dynamically compiled language, when you make a request, reads all of the files and compiles them into executable code on the fly. cool, but slow. &#8220;build an app every time you make a page request&#8221; so then OpCache, APC, speeds site by &#8220;like 10x&#8221; (should probably check on that.)</p>
<p>CSS/JS aggregation, starting with D5. 3 requests rather than 35.</p>
<p>Pressflow? Friendly fork of drupal made for high performance. Can generally install right over existing drupal installation. huh. http://pressflow.org/</p>
<p>Big sites don&#8217;t upgrade until contrib catches up, and until big projects upgrade, don&#8217;t always know where the pain points are&#8230;and then drupal is frozen, feature-wise.</p>
<p>Link back to the xhprof session for finding the spots where things break down. (damn I wish I&#8217;d had that during the themekey debacle.)</p>
<p>not every drupal problem has a drupal solution.</p>
<p>(yesterday I was too warm. today I&#8217;m too cold. dammit.)</p>
<p>Varnish is so much better than page cache for slashdotting-type issues. (anon visitors hitting one page all at once) Still invoking PHP, querying database, etc. https://www.varnish-cache.org/</p>
<p>because it&#8217;s smart, it&#8217;s slow. where Varnish is stupid/simple, but really really fast.</p>
<p>mysql: the end of all optimizations &#8211; if you&#8217;re stuck optimizing that, then you&#8217;re at the last resort.</p>
<p>downside of drupal caching: still hitting the database.</p>
<p>memcache abstracts that layer (oh, hey, didn&#8217;t this come up earlier, in some other session?) &#8211; improvements to scale (vs speed) &#8211; take the busywork away from the smart systems.</p>
<p>search! &#8220;mysql/php possibly the worst option for full-text search&#8221; eep.</p>
<p>apache solr as the right away to do search, because it was built from the group up to do that. built-in porter-stemmer. whoa.</p>
<p>stuff for the future. views with solr?</p>
<p>takes a lot of CPU cycles to process Drupal page requests, esp as you add modules.</p>
<p>no more special snowflakes.</p>
<p>stuff pantheon is doing&#8230;includes a site for the UN.</p>
<p>the one-click dream.</p>
<p>&#8220;offcache&#8221;?</p>
<p>boost module &#8211; big step forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/performance-and-scalability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Media in D7</title>
		<link>http://thewebgeneralist.com/2011/media-in-d7/</link>
		<comments>http://thewebgeneralist.com/2011/media-in-d7/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 18:02:00 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=88</guid>
		<description><![CDATA[the past: embedded media field, imagefield, filefield &#8211; eh, pretty good. (what is the name of that module we&#8217;re using for handling flash, esp audio? SWFTools) PHP stream wrappers? public:// private:// temporary:// &#8211; interesting. I had no idea. dynamic image modification now in core, along with file and image fields. adding fields to files. read-only [...]]]></description>
			<content:encoded><![CDATA[<p>the past: embedded media field, imagefield, filefield &#8211; eh, pretty good. (what is the name of that module we&#8217;re using for handling flash, esp audio? SWFTools)</p>
<p>PHP stream wrappers? public:// private:// temporary:// &#8211; interesting. I had no idea.</p>
<p>dynamic image modification now in core, along with file and image fields.</p>
<p>adding fields to files.</p>
<p>read-only stream wrappers &#8211; ie, youtube. is that the sort of thing I&#8217;m looking for?</p>
<p>Palantir getting involved, notable client American Public Media. (would imagine they have similar use cases?)</p>
<p>philosophy: reuse/reduce/recycle &#8211; rather than writing custom stuff.</p>
<p>two branches: one stable, the other with shiny new stuff</p>
<p>the Future!</p>
<p>I&#8217;m wondering: what does awesome look like?</p>
<p>looking at module page: &#8220;Flexible display filters for image manipulation, audio &amp; video players and more.&#8221; &#8211; that&#8217;s what I&#8217;m looking for. Excellent, now I have the right option for one of my &#8220;try alts&#8221; entries in my spreadsheet.</p>
<p>needs moar screenshots.</p>
<p>making a commitment to maintain this module. &#8220;if I choose this module, what kind of future does it have?&#8221; indeed.</p>
<p>want to make sure, though, that other people can get involved, that it&#8217;s not just this one company&#8217;s project.</p>
<p>media core initiative?</p>
<p>free ticket to drupalcon denver for volunteering on sprint?!</p>
<p>oh yay demo!</p>
<p>select media button &#8211; modal window does look like wordpress. <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8220;view library&#8221; is actually a View. could use View pager infinite scroll (?) plugin.</p>
<p>looks like the process is still getting ironed out, altho apparently there&#8217;s a default view that ships enabled.</p>
<p>guy in the audience is using 2.x &#8211; &#8220;I like spicy foods&#8221; &#8211; and it works really well for him.</p>
<p>wysiwyg integration &#8211; &#8220;kinda needs a lot of work&#8221;</p>
<p>what about other submodules staying in sync with 2.x (ie, youtube, vimeo, etc)? relying on maintainers of those modules. still not stable, so not actually recommending those integrated submodules. &#8220;oembed&#8221;</p>
<p>audio player? not much lives in media right now. ok, so maybe not so much. he recommends &#8220;media element&#8221; module: http://drupal.org/project/mediaelement html5, even!</p>
<p>but I do like how</p>
<p>can you replace the image and keep the fields? media replace module &#8211; works with media 1.x &#8211; something they want to consider putting into the main module.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/media-in-d7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keynote day 2</title>
		<link>http://thewebgeneralist.com/2011/keynote-day-2/</link>
		<comments>http://thewebgeneralist.com/2011/keynote-day-2/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 16:56:04 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=87</guid>
		<description><![CDATA[Randy Fay &#8211; coaxed everybody to move to the front of the room. Community conversation: burnout, what can the community do help people avoid burnout. A well-studied clinical condition, not a fad! Important scholarly work done: exhaustion, cynicism, ineffectiveness. (o hai n&#8217;hood assoc!) causes: feeling overloaded, lacking control over what we do, not being rewarded, [...]]]></description>
			<content:encoded><![CDATA[<p>Randy Fay &#8211; coaxed everybody to move to the front of the room.</p>
<p>Community conversation: burnout, what can the <em>community</em> do help people avoid burnout.</p>
<p>A well-studied clinical condition, not a fad! Important scholarly work done: exhaustion, cynicism, ineffectiveness. (o hai n&#8217;hood assoc!)</p>
<p>causes: feeling overloaded, lacking control over what we do, not being rewarded, breakdown in community, not being treated fairly, dealing with conflicting values.</p>
<p>rewards: giving attribution, pats on the back&#8230;but easy to find people who feel ignored (which is the open source version of reward?)</p>
<p>&#8220;family problems&#8221; &#8211; at tense times, &#8220;it&#8217;s all going to hell&#8221; &#8212; and it didn&#8217;t. making personal statements on twitter, inflamatory comments on drupal.org, etc.</p>
<p>lack of boundaries with professional projects vs hobbyist.</p>
<p>slide of 12 stages of burnout.</p>
<p>individual solutions.</p>
<p>&#8220;real interconnectedness in a local community&#8221; which is hilarious for me, because that&#8217;s where I&#8217;m actually experiencing burnout. I think my 4e (D&amp;D) game is my alternative/outlet for <em>that</em>.</p>
<p>burnout is NOT an individual problem, but an organizational problem.</p>
<p>specific things that Drupal does that make things work</p>
<p>calls out Dave Reid &#8211; has created 87 modules &#8211; module creators automatically become module maintainers. Even Dave has a limit. what do we do about that problem?</p>
<p>no explicit way to step down from a lot of responsibilities: no natural way, just guilt and overwhelmedness. &#8220;abandoned module hopper&#8221; -</p>
<p>&#8220;what&#8217;s wrong with assigning to abandoned&#8221;</p>
<p>&#8220;adopt-a-module&#8221;</p>
<p>not just name change &#8211; realizing that we have to promote people taking over and giving up responsibilities.</p>
<p>&#8220;there&#8217;s a process for adopting humans&#8221; (audience comment)</p>
<p>figuring out how to mentor and helping people to grow</p>
<p>you have to step away for people to feel comfortable stepping in</p>
<p>audience member &#8211; traveling is a universal way to &#8220;break the chain of misery&#8221; &#8211; also, finding a good psychologist. It really was my therapist who helped me work through that I needed to step away from friends of the library and recognize that I felt better after having done it. (because I&#8217;ve been going through whole life burnout, really)</p>
<p>tarpits &#8211; things that are not sustainable and will never work &#8211; not just module maintainership &#8211; docs team, good steps towards sustainability &#8211; project application process. sometimes you just can&#8217;t work harder.</p>
<p>organizational development &#8211; audience member&#8217;s wife does that professionally. no position for a documentation lead, for example, on modules. interesting idea: not having to be a co-maintainer to contribute to a module.</p>
<p>things that we do right!</p>
<p>don&#8217;t forget the risks for not trusting newbies.</p>
<p>time-limited responsibilities &#8211; reminds me of the n&#8217;hood association board &#8211; knowing that I have a term, and that it has an end point, is really helpful.</p>
<p>dude, I think greggles just trolled randy&#8217;s definition of bikeshedding. hilarity.</p>
<p>no way to resolve disagreements, is that what he&#8217;s talking about? to some extent.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/keynote-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on a Drupal project</title>
		<link>http://thewebgeneralist.com/2011/notes-on-a-drupal-project/</link>
		<comments>http://thewebgeneralist.com/2011/notes-on-a-drupal-project/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 08:00:06 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=86</guid>
		<description><![CDATA[I&#8217;ve been involved in doing this review of bicycle parking in Olympia at places that have been built in the last 5 years, to see if the inspectors are catching parking that isn&#8217;t installed to code. (Or at all.) I had an Excel spreadsheet &#8212; or rather, two spreadsheets &#8212; with the names of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been involved in doing this review of bicycle parking in Olympia at places that have been built in the last 5 years, to see if the inspectors are catching parking that isn&#8217;t installed to code. (Or at all.)</p>
<p>I had an Excel spreadsheet &#8212; or rather, two spreadsheets &#8212; with the names of the locations, street addresses, application ID numbers, date of inspection and a few other bits. I imported them with Node Import, which was really easy, and tried a bunch of stuff to get the locations plotted on a map. Finally got it tonight! With this tutorial: http://drupal.org/node/1041632 &#8211; although the critical bit is that you have to set up a geocoding service before anything will work.</p>
<p>It&#8217;s pretty late right now, but I&#8217;ll try to go into a bit more detail about the process later.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/notes-on-a-drupal-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>module development</title>
		<link>http://thewebgeneralist.com/2011/module-development/</link>
		<comments>http://thewebgeneralist.com/2011/module-development/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 00:27:06 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=84</guid>
		<description><![CDATA[typo &#8211; &#8220;signup &#8211; let&#8217;s&#8221; usually don&#8217;t have to start from scratch, even if goal is to do something complex! often adding to or building on existing module. will encourage you not to write a module if you don&#8217;t have to. hooks &#8211; extend existing action. I&#8217;m performing a particular action &#8211; does anyone have [...]]]></description>
			<content:encoded><![CDATA[<p>typo &#8211; &#8220;signup &#8211; let&#8217;s&#8221; <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>usually don&#8217;t have to start from scratch, even if goal is to do something complex! often adding to or building on existing module.</p>
<p>will encourage you not to write a module if you don&#8217;t have to.</p>
<p>hooks &#8211; extend existing action.</p>
<p>I&#8217;m performing a particular action &#8211; does anyone have anything to say about it? I&#8217;m getting up to get napkins, does anybody want anything else? Yes, please get straws. I&#8217;m presenting a form to the user &#8211; please add a checkbox to that form.</p>
<p>hook_form_alter</p>
<p>hook_user</p>
<p>hook_nodeapi</p>
<p>hook_mail</p>
<p>form API &#8211; an array that translates to html. I like arrays. <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  includes some automatic security protection.</p>
<p>sample project American Society for Delicious Foods (ASDF) &#8211; redirect user to appropriate category page after submitting a recipe.</p>
<p>hook_form_alter &amp; dpm (a Devel function) &#8211; easily print any variable to the screen, instead of printr()!</p>
<p>kitty!</p>
<p>.info &#8211; tells Drupal that module exists &#8211; .module &#8211; contains main module code.</p>
<p>[note that I think all this is all in D7, but apparently concepts are the same]</p>
<p>find out about the node that was submitted &#8211; in Devel tab, find the</p>
<p>API site &#8211; looking up hook_form_alter &#8211; copy/paste function name &amp; options</p>
<p>replace &#8220;hook&#8221; with the module&#8217;s name</p>
<p>devel will show a list of all the form IDs on the page, which you can use in the code.</p>
<p>really nice that he paused and asked if anybody was lost&#8230;and a few people were lost, and he&#8217;s being really good about addressing them.</p>
<p>using the dpm() function in the new module to print out information about the form.</p>
<p>find the save button in the form array. node_form_submit &#8211; that&#8217;s the function that gets called. add a second function after that one.</p>
<p>dpm($form['actions']['submit'], etc) &#8211; and then just see the part of the form that you want to understand.</p>
<p>but how to know what to do? &#8211; find example of how to do stuff when submitting a form.</p>
<p>when you create a function that does something, you add it to the array.</p>
<p>group debugging! possibly a typo. <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>shows that another function exists, and then the function runs at that point in the process.</p>
<p>form state -&gt; values -&gt; field_type_recipe, etc., etc.</p>
<p>interesting gotcha re: PHP constant LANGUAGE_NONE (?)</p>
<p>form_state[redirect] and set the path, using the term id that was extracted.</p>
<p>yay, it worked!</p>
<p>that&#8217;s pretty cool, actually.</p>
<p>helpful: variable_get, variable_set, user_access (related to permissions), t() &#8211; for translating interface text, makes it possible for others to translate your module,</p>
<p>common pattern: implement more or one hooks, use drupal API helper function, then do something custom.</p>
<p>func_get_args &#8211; see what arguments are passed to a function; helpful to compare what args get passed to successful operation vs unsuccessful one.</p>
<p>debug_backtrace &#8211; useful for WTF moments.</p>
<p>ezrabg on twitter.</p>
<p>I might be able to rewrite my multisearch module and even know WTF I&#8217;m doing.</p>
<p>example module!</p>
<p>maybe now I have a hope of adopting Ads Views.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/module-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xhprof</title>
		<link>http://thewebgeneralist.com/2011/xhprof/</link>
		<comments>http://thewebgeneralist.com/2011/xhprof/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 21:21:13 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=82</guid>
		<description><![CDATA[running late! (great lunch with folks from B&#8217;ham) particular page that&#8217;s running slow &#8211; exclusive I don&#8217;t understand what&#8217;s going on. 80ms content type info &#8211; why is it being called so many times &#8211; look at time spent vs how many times it was called. this is like the opposite of the last session [...]]]></description>
			<content:encoded><![CDATA[<p>running late! (great lunch with folks from B&#8217;ham)</p>
<p>particular page that&#8217;s running slow &#8211; exclusive</p>
<p>I don&#8217;t understand what&#8217;s going on.</p>
<p>80ms content type info &#8211; why is it being called so many times &#8211; look at time spent vs how many times it was called.</p>
<p>this is like the opposite of the last session &#8211; no pretty slides, lots and lots of examples. equally baffling, tho.</p>
<p>query logger</p>
<p>take a look at memcache.</p>
<p>(it occurs to me that I&#8217;m going to want to take a big chunk of time this fall to really clean up the site.)</p>
<p>likes to see mysql problems float to the top because they&#8217;re easier to deal with than other problems.</p>
<p>can see exactly which queries are the problem.</p>
<p>this is all about how to identify problems, not how to solve them, which is fine. worst thing for me is just being baffled by why there&#8217;s even a problem.</p>
<p>SO FRUSTRATED that I missed how to get this up and running.</p>
<p>Devel query logger?</p>
<p>Google &#8220;[function name] performance&#8221; and look for patches, etc. <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ok, so XHProf is an extension for PHP. what&#8217;s going to be involved in getting that up and running?</p>
<p>am I caching Views correctly?</p>
<p>all about finding low-hanging fruit and/or biggest bottleneck.</p>
<p>workarounds vs</p>
<p>xdebug &#8211; what did he just say was the gui? but xhprof is easier, includes some features</p>
<p>devel query log, views signature &#8211; what else does this give you? module problems.</p>
<p>APC? &#8220;this are the things that you have already done before this can be useful&#8221; &#8211; missed some details in his answer to the question that I didn&#8217;t actually hear very well. (from webchick?)</p>
<p>so maybe I should look at devel query log FIRST, but this is probably useful too.</p>
<p>is he talking about the xhprof module? or xhprof in devel? xhprof module is coming back to life, I guess; makes more sense than devel integration.</p>
<p>I can&#8217;t hear any of the questions, especially since the VACUUM CLEANER IS RUNNING. (so I shut the door.)</p>
<p>q: was originally designed for evaluating a single page &#8211; how is this useful for a whole site? that&#8217;s why he&#8217;s doing work on extending xhprof for drupal. or something. I am genuinely baffled. (once again, sorta wishing I&#8217;d gone to a different session. Omega theme might have been handy.)</p>
<p>CPU time and function calls are key info.</p>
<p>(seen on Twitter: Omega has a subtheme wizard! session info at http://omega.cellardoormediagroup.com/)</p>
<p>slow query logger.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/xhprof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Render</title>
		<link>http://thewebgeneralist.com/2011/render/</link>
		<comments>http://thewebgeneralist.com/2011/render/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 18:47:05 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=80</guid>
		<description><![CDATA[missed the URL for slides, resources, etc. threshhold of a good CMS is how easy you can make variables pretty. template is an abstraction of a static html page. &#8220;felt like I could never get the granularity that I wanted&#8221; D7 gives more control. he maintains Fusion module for top notch themes. 1st impression of [...]]]></description>
			<content:encoded><![CDATA[<p>missed the URL for slides, resources, etc.</p>
<p>threshhold of a good CMS is how easy you can make variables pretty. template is an abstraction of a static html page.</p>
<p>&#8220;felt like I could never get the granularity that I wanted&#8221;</p>
<p>D7 gives more control.</p>
<p>he maintains Fusion module for top notch themes.</p>
<p>1st impression of render api (D7) was negative. feels like stuff output by render is wrappers around wrappers around wrappers &#8211; &#8220;I can&#8217;t scroll that far to the right&#8221;</p>
<p>#theme thing in content array gives bare html? may have missed something.</p>
<p>content array &#8211; each field is templated according to a theming function -</p>
<p>I really want to see some code examples.</p>
<p>render api provides some new hooks &#8211; hook_page_build()</p>
<p>I&#8217;m missing which aspects are for D6 and which are for D7.</p>
<p>He has a great voice, but I&#8217;m having a hard time getting anything actually usable.</p>
<p>Things that sound hard can be really easy (with Views!) and things that sound easy can be really hard (adding a thing to a page).</p>
<p>hook_page_build()</p>
<p>Wow, some of that sounds cool. I WANT TO SEE IT ON THE SCREEN.</p>
<p>&#8220;29 hours of travel&#8221; &#8211; that may be why this presentation feels so disjointed.</p>
<p>having a lot of template files can really slow down site. (eep)</p>
<p>Well, this does make me curious about checking out theming in D7, so that&#8217;s something.</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/render/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>front end performance</title>
		<link>http://thewebgeneralist.com/2011/front-end-performance/</link>
		<comments>http://thewebgeneralist.com/2011/front-end-performance/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 17:58:25 +0000</pubDate>
		<dc:creator>Elaine</dc:creator>
				<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[pnwds2011]]></category>

		<guid isPermaLink="false">http://thewebgeneralist.com/?p=78</guid>
		<description><![CDATA[list of tools on slide - advanced aggreggator &#8211; advagg &#8211; supposed to help with the disappearing CSS! &#8211; http://drupal.org/project/advagg D7 projects: agrcache, core_library &#8220;don&#8217;t know if you&#8217;ve ever been woken up because your site didn&#8217;t look right&#8221; &#8211; eep. At least I&#8217;ve never had that. the air conditioning in this room IS REALLY LOUD. [...]]]></description>
			<content:encoded><![CDATA[<p>list of tools on slide -</p>
<p>advanced aggreggator &#8211; advagg &#8211; supposed to help with the disappearing CSS! &#8211; http://drupal.org/project/advagg</p>
<p>D7 projects: agrcache, core_library</p>
<p>&#8220;don&#8217;t know if you&#8217;ve ever been woken up because your site didn&#8217;t look right&#8221; &#8211; eep. At least I&#8217;ve never had that.</p>
<p>the air conditioning in this room IS REALLY LOUD.</p>
<p>problems with not knowing if cache has cleared or not.</p>
<p>gzip, minification, longer browser cache lifetime (sounds like some weird conflict issues between Drupal cache/CSS filename rewriting and browser cache), use google&#8217;s cdn for jquery (can that work with ssl?), smart bundling &#8211; if you do one change, it&#8217;ll only push out new files related to that change &#8211; 404 css/js protection &#8211; I&#8217;m pretty sure that&#8217;s a big part of the vanishing CSS issue.</p>
<p>(I wonder if this will help with the vanishing <em>menus</em>.)</p>
<p>css embedded images module &#8211; reduces http requests &#8211; up to 24k of images (IE restrictions!), so good for tiny layout bits &amp; pieces</p>
<p>Oh, and a bit of quick Googling turns up that the jquery CDN will work over SSL.</p>
<p>cdn module, cookieless_subdomain &#8211; so not sending cookies when sending images, makes easier to have parallel domains? either/or: NOT BOTH.</p>
<p>(could/would we run our own cdn?)</p>
<p>files proxy module, file conveyor &#8211; not sure if it would be useful in my situation.</p>
<p>changes to .htaccess to extend expiration &#8211; &#8220;access plus 1 year&#8221; &#8211; images, css, js &#8211; some discussion about query strings and cdns, an issue thread in cdn module queue.</p>
<p>gzip &#8211; can be done at php level (inside Drupal) or at apache. sample rules.</p>
<p>if mod_expires, disable etags, if not, enable etags.</p>
<p>putting scripts at the bottom, better to use a module than to do it in the theme: headjs (6 only), labjs (6 and 7?). but some issues with panels, wysiwyg editors. can trim about a second off time. we could probably use it; I&#8217;ve done some editing inside panels, but it&#8217;s really really rare. headjs requires advagg.</p>
<p>optimizing images &#8211; although it sounds like that&#8217;s an issue with images uploaded and processed with imagemagick. but might be worth looking into. patch for imageapi. also imageinfo_cache.</p>
<p>advagg_add_css_inline() &#8211; not sure about use case for that.</p>
<p>split components across domains, with cdn module. yep, that&#8217;s exactly what I thinking that would be. (hilariously, this harks back to an argument C &amp; I got into years and years ago&#8230;in which I was completely wrong. thanks, Shelley! <img src='http://thewebgeneralist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  but it was good to understand better.)</p>
<p>jquery plugin lazyload.</p>
<p>don&#8217;t scale images in html. not generally a problem for me, but might be good for intranet; image resize filter.</p>
<p>favicon in core is 400% bigger than needed. ::facepalm::</p>
<p>webpagetest.org</p>
<p>showslow.com &#8211; every 24 hours, get yslow score, see over time.</p>
<p>google page speed &#8211; which I saw in the analytics training I was at earlier this week!</p>
<p>some sprite recommendations &#8211; I&#8217;m not sure if we have anything that would be good with that.</p>
<p>inline image tags &#8211; so, wait, printing the binary code inside the html? &#8211; particularly for mobile &#8211; although that seems like the opposite of the cdn recommendation.</p>
<p>slides: bit.ly/oRdwbp</p>
]]></content:encoded>
			<wfw:commentRss>http://thewebgeneralist.com/2011/front-end-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.392 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-19 22:02:57 -->

