Alan Pala[zzolo]
2022-08-17T01:38:02+00:00
https://zzolo.org
Alan Palazzolo
https://zzolo.org/2022/02/07/lumiere-2
Lumiere 2.0
2022-02-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This winter I spent some time re-engineering the Lumiere project — a project that lets anyone change the colors of the holiday lighting on our house through things like text messaging.</p>
<p>I built it from the ground-up. I learned a lot from the first version, and had a number of goals with this new version.</p>
<p><img src="/images/posts/lumiere-2-web.png" alt="Screenshot of Lumiere web client" /></p>
<p>One of the main goals was to use web-sockets. This was driven by the fact that I wanted to be able to easily have multiple “nodes” (strings of lights attached to controllers), such as the inside Xmas tree and outside lighting, change at the same time. And I really wanted a more instant feel to the lights. Previously, I had used polling, which is just an interval to keep checking for updates; this previous decision had been driven a fair amount by the fact that I used an Arduino and there wasn’t really a way to use web-sockets on that platform. This also meant that my “node” platform choices this time around were a bit limited, and I ended up on the Raspberry Pi.</p>
<p>The Raspberry Pi is great on the software side but can be a bit lacking on the hardware side. Specifically the Raspberry Pi is a full computer and you can’t just unplug it willy-nilly like an Arduino, this means it either has to stay on the whole time or you have to figure out how to turn it off and on again, say on a timer. I actually ended up keeping it on all the time as we had kids outside our house waiting for the bus in the morning who enjoyed the lights.</p>
<p>Another need for this new version was that Meteor is no longer a thing, and so the code and architecture of the server for the previous version of Lumiere were defunct. So, it had to be rewritten from the ground up. I went with a simple Node/Express application.</p>
<p>The change in server code gave me an opportunity to create a web client that was not a part of the server application like had been the case with Meteor. I went with Svelte as the framework for the web client, which is always a pleasant experience.</p>
<p>I ran into some issues with the Raspberry Pi clients, specifically utilizing the Node libraries to control the lights on a Raspberry Pi 4 did not work and using it on an old Raspberry Pi ended up damaging my lights. This drove me to use Python on on the Raspberry Pi clients, which is a bit more “native” for Raspberry Pi, but was a bit new for me to do web-sockets in Python. This all turned out well, but notably I am just not as efficient or well-versed in Python so writing the animation code was a bit clunky.</p>
<p>I added or improved a couple fun bits. I added the ability to text an image and have the main colors of the image show up on the lights. I also added a whole of new color names and color combinations.</p>
<p>Plenty more to improve, but I am happy with how this turned out. Links below.</p>
<ul>
<li><a href="https://lumiere.lighting/">Lumiere on the web</a> (may be turned off for the season or slow given the deployment)</li>
<li><a href="https://github.com/lumiere-lighting/lumiere-api">Lumiere API</a>
<ul>
<li><a href="https://github.com/lumiere-lighting/lumiere-api/tree/main/lib/colors">Color sets</a></li>
</ul>
</li>
<li><a href="https://github.com/lumiere-lighting/lumiere-client-python">Lumiere client (Python)</a></li>
<li><a href="https://github.com/lumiere-lighting/lumiere-client-web">Lumiere web (code)</a></li>
</ul>
https://zzolo.org/2019/11/17/zzolo-font
zzolo Font
2019-11-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Unsure if it will come in handy, and may one day be my demise as it only helps to impersonate me, but I couldn’t resist making a <a href="https://github.com/zzolo/zzolo-font">font from my own hand-writing</a>. <a href="https://www.calligraphr.com/en/">Calligraphr</a> made it pretty easy. It would be great to create a bold version, or a mono-spaced version for coding, but that’s probably not in the schedule any time soon.</p>
<p>I’ve added an easter egg that will make any page switch to the handwritten font. Enjoy.</p>
https://zzolo.org/2016/03/07/aurora-shanty
Aurora Shanty
2016-03-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The Art Shanties are an amazing and very Minnesotan event where artists are invited to create unique shanties or experiences on a frozen lake in February in Minnesota. It could loosely be described as a very mini Burning Man except on a frozen lake and without the pretension. This year, myself and some friends were accepted to make the <a href="https://www.kickstarter.com/projects/706726178/the-aurora-shanty">Aurora Shanty</a> — the northern lights inside an ice shanty.</p>
<p>Sam and Caitlin helped out a lot with the Kickstarter video and some other visual materials. Also, we had a successful <a href="https://www.kickstarter.com/projects/706726178/the-aurora-shanty">Kickstarter</a> since the electronics cost a bit more than our stipend would cover.</p>
<p>I learned a lot about building a structure like a shanty, solar power, electricity, Processing, Fadecandy, and of course lots of LEDs. And I continued to experience so much inconsistency with a Raspberry Pi. <a href="https://github.com/zzolo/aurora-shanty">Code</a> is up on Github as usual, though it’s not that well documented since the project took a lot of time and energy.</p>
<p><img src="/images/posts/aurora.jpg" alt="Inside the Aurora Shanty" /></p>
<p>For more photos and video, checkout the <a href="http://aurora-shanty.tumblr.com/">Tumblr</a>, as well as the Kickstart updates <a href="https://www.kickstarter.com/projects/706726178/the-aurora-shanty/posts/1488875">here</a> and <a href="https://www.kickstarter.com/projects/706726178/the-aurora-shanty/posts/1481731">here</a>.</p>
https://zzolo.org/2015/11/14/determined-dill
The Determined Dill
2015-11-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>My good friends at <a href="//squawkproductions.com/">Squawk</a> made a short about a dude who goes crazy trying to open a jar of pickles, and decided the best way to premiere the film would be to create the first <a href="//mnpicklefestival.com/">Minnesota Pickle Festival</a>. This meant that there had to be more than just a film, and all of it had to involve pickles. There was lots of fun pickle-themed activites including pickle-flavored beer (not great, but better than you might think), pickle contests, and a boobbing for pickle sort-of thing.</p>
<p>My contribution was to make a pickle-themed video game. After some deliberation, we decided on a pickle <a href="//en.wikipedia.org/wiki/Doodle_Jump">jumper</a> sort of game. Caitlin and Sam created some amazing artwork, and I did the coding and animation parts. You can <a href="//zzolo.org/determined-dill">play it</a> right now in your browser.</p>
<p><a href="//zzolo.org/determined-dill"><img src="/images/projects/determined-dill.png" alt="Screenshot of Determined Dill" /></a></p>
<p>This was my first browser-based game, and actually the first game I coded since I was in high school. I decided to use <a href="//phaser.io/">Phaser</a> for my framework as it seemed popular, open-source, had some examples of the type of game I wanted to create, and the code made some sense. I liked working with Phaser, and there were lots of good examples and forums that would get me most of the way, but when needing to change specifics, I found the code documentation to be not as helpful. Still, I was able to make a functional game that I am proud of. You can check out my <a href="https://github.com/zzolo/determined-dill">code on Github</a>.</p>
<p>We also wanted people to be able to play it at the festival arcade-ish-style. We didn’t build a large arcade unit, but instead made a stand with a controller on it that connected to a large tv. This was powered by a Raspberry Pi, which meant there were some issues having a lot less resources (CPU/GPU and RAM) even with a Raspberry Pi 2. In the code base there are instructions and scripts to have the game load on start.</p>
<p><img src="/images/posts/pickle-03.JPG" alt="Determined Dill out in the world" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/pickle-01.JPG"><img src="/images/posts/pickle-01.JPG" /></a>
<a target="_blank" href="/images/posts/pickle-02.JPG"><img src="/images/posts/pickle-02.JPG" /></a>
<a target="_blank" href="/images/posts/pickle-me.JPG"><img src="/images/posts/pickle-me.JPG" /></a>
</div>
https://zzolo.org/2014/07/28/style-guides-srccon
Style guides and SRCCON
2014-07-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I just got back from <a href="http://srccon.org/">SRCCON</a>, and it was amazing. SRCCON was the first of it’s kind — bringing together developers, designers, and other technologists who work in (or around) newsrooms. I was able to go because of a generous travel stipend provided by SRCCON via <a href="http://wordpress.org/">Wordpress</a>.</p>
<p>Inspired by the <a href="https://source.opennews.org/">Source</a> community, which is run by Open News, a project of Mozilla and the Knight Foundation, SRCCON was an extremely valuable, well-run, and detailed event. Everything was focused around getting to know each other and community building including discussion-focused sessions, coffee-hacking stations, plenty of mingle time, late starts to allow folks to stay up late, and evening activities such as lightning talks, beer swaps, and <a href="http://en.wikipedia.org/wiki/Magic:_The_Gathering">Magic</a>. All this while having meaningful sessions and discussions about the exciting intersection of journalism and technology.</p>
<h2 id="style-guides">Style guides</h2>
<p>As part of the conference, I led a <a href="http://schedule.srccon.org/#_session-28">short discussion on “Style guides”</a>. This topic came up because we recently made a first draft of a <a href="http://code.minnpost.com/minnpost-styles/">style guide for our interactive team</a> at MinnPost. Full notes and links are <a href="https://github.com/zzolo/srccon-style-guide-discussion">up on Github</a>.</p>
<p>My assumption going in was that “style guide” meant a collection of design and functionality for a web interface; so essentially I was just thinking about HTML/CSS/JS. After doing some research, I realized I had totally forgot about the obvious news style guide, the AP Stylebook — what most people would think of if I said “style guide” in a newsroom. This made me dig a bit deeper and start to broaden what I was thinking about, and I came up with quite a <a href="https://github.com/zzolo/srccon-style-guide-discussion#examples">big list of style guides</a> for all types of things. So, our first step in our discussion was to quickly list out things that could be stylized; here’s what we came up with:</p>
<ul>
<li>Web interfaces</li>
<li>Copy and grammar</li>
<li>Tone</li>
<li>Visualizations</li>
<li>Project management</li>
<li>Devops best practices. Example: TwelveSteps</li>
<li>Code (syntax)</li>
<li>Internal communication
<ul>
<li>Tools to use</li>
<li>Tone</li>
<li>Ensure email has a subject</li>
</ul>
</li>
<li>External communication, tone</li>
<li>General computer use
<ul>
<li>File sharing</li>
<li>Password management</li>
</ul>
</li>
<li>Code of Conduct</li>
<li>Design
<ul>
<li>Typography</li>
<li>Colors</li>
</ul>
</li>
<li>Photography
<ul>
<li>Processing</li>
<li>Resizing</li>
</ul>
</li>
<li>Advertising</li>
<li>Interaction patterns</li>
<li>Web interface</li>
<li>Copy, grammar</li>
</ul>
<h3 id="strength-and-weakness">Strength and weakness</h3>
<p>The next activity was to break up into groups and brainstorm about what were the pros and cons (strengths and weaknesses) of the style guide. I wanted to list these out to help get an idea of why an organization would or wouldn’t make a style guide. Here’s the notes of what we all came up with.</p>
<p><strong>Pros:</strong></p>
<ul>
<li>Helps with onboarding new employees or contributors to project.</li>
<li>Less debate about stylistic things</li>
<li>Generally saves time</li>
<li>Provides an essential, referencable source</li>
<li>Forces decision making</li>
<li>Can require thinking about accessibility or other things that may be often overlooked.</li>
<li>Helps maintain control and scope on projects</li>
<li>Makes things that don’t follow require and show importance. Shining breakthroughs.</li>
<li>Don’t have to start from scratch</li>
<li>Suppresses whims of superiors</li>
<li>Requires specific understanding of why there is a need to break or go outside the style guide.</li>
<li>Offers a good amount flexibility. “guide” not “rules”.</li>
<li>Offers ownership
<ul>
<li>Will be used by team that creates it</li>
</ul>
</li>
<li>Solidifies branding and identity</li>
<li>Saves time building.</li>
<li>Makes communication smoother.</li>
<li>Provides consistency.</li>
<li>Easier to maintain whatever the style guide is for.</li>
<li>Can provide for an early testbed.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Requires time, commitment, and execution</li>
<li>Requires maintenance</li>
<li>Requires buy-in and use</li>
<li>Might have to defend (often) against haters.</li>
<li>Could provide a false send of security
<ul>
<li>Ex. just because an app passes Apple’s guidelines, doesn’t make it useful or important.</li>
</ul>
</li>
<li>Can stifle innovation or creativity</li>
<li>Requires adjustment period to use</li>
<li>Balancing comprehesiveness and flexibility</li>
<li>Can become stale</li>
<li>Not always shared across organization
<ul>
<li>Ex. Print department may have their own style guide, while the web department does too</li>
</ul>
</li>
<li>How to reconcile web and print style guides</li>
<li>Overall investment</li>
<li>Can become too authoritative, or “gospel-like”</li>
<li>Misuse of the style guide</li>
<li>Not having ownership can mean not using
<ul>
<li>If team uses old team’s style guide</li>
</ul>
</li>
<li>Can be a significant barrier to entry, specifically to contributing to a (open source) project.</li>
<li>Can be very negative if style guide goes against larger, universal styles</li>
<li>May limit creativity</li>
<li>Requires expertise</li>
</ul>
<h3 id="is-there-common-ground">Is there common ground?</h3>
<p>For the last few minutes we talked about whether there is any opportunity for the community of technologists and journalists to make community-wide style guides; the AP Stylebook being a good example as it is used across many new organizations. Also, the <a href="https://github.com/propublica/guides/">ProPublica News Nerds guide</a> is an interesting example that is specific journalism but not to one newsroom.</p>
<p>This was a tough one to answer and definitely one we couldn’t get too far in just a few minutes. But here are a few general thoughts we came up with.</p>
<ul>
<li>There are definitely things that don’t have or require a specific journalism context such as coding style guides. Overall, there is no reason to write Javascript in a way that is specific to journalism.</li>
<li>The AP Stylebook is somewhat unique in that AP content is so widely distribution to so many organizations.</li>
<li>Design related guides are usually very tied to an organization and specifically its identity and branding which makes it difficult to allow it to be useful across organizations.</li>
<li>There was also interest expressed about guides on how to do things specifically in a journalism context.
<ul>
<li>(Open source) tools for data processing and other journalism activitis.</li>
<li>How to write a README for other journalists.</li>
<li>How to release open source software.</li>
<li>Best way to evaluate tools.</li>
</ul>
</li>
</ul>
https://zzolo.org/2013/12/27/lumiere
Lumière
2013-12-27T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Inspired by <a href="https://github.com/emilyville/textmas">Textmas</a> I made <a href="http://lumiere.meteor.com/">Lumière</a> this year. It’s a string of addressable LED lights that can be updated through a Meteor-powered website or via SMS (text messaging). See it in action below:</p>
<iframe width="100%" height="510" src="//www.youtube.com/embed/_k-bI2xsQ-s" frameborder="0" allowfullscreen="allowfullscreen">Lumiere</iframe>
<p>I learned a lot about electricity even though there is not much to hooking up the Raspberry Pi and the LED lights. I also made everything <a href="https://github.com/zzolo/lumiere">open source with full instructions up on Github</a>.</p>
<p>For archival purposes, here is the screenshot of the <a href="http://lumiere.meteor.com/">website</a>.</p>
<p><img src="/images/posts/lumiere-screen.png" /></p>
https://zzolo.org/2013/07/17/why-i-code-in-the-newsroom
Why I code in the newsroom
2013-07-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Read this and then go apply for the 2014 <a href="http://www.mozillaopennews.org/fellowships/">Open News Fellowship</a>!</p>
<p><em>For those of us coming from a software background, let’s make a distinction around what is developing in the newsroom. Developing in the newsrooms is not working on the infrastructure behind a news website; it means making the news with code, such as data visualization, analysis, interaction design, and much more. This line gets blurry sometimes, of course, but the idea is important.</em></p>
<h3 id="a-bit-of-history">A bit of history</h3>
<p>I am a bit different than most of my colleagues in this industry, though not unique, in that my background is in programming, and I have only recently come to the news industry. Many of my peers are often reporters who get into coding, which is amazing. And even some folks now are dual majoring in computer science and journalism.</p>
<p>Most of my pre-news life was web development for non-profits with the Drupal content management system. These were good prerequisites for my current life, as being in the non-profit world was driven by my desire to ensure what I worked on was helping the world in some way, and Drupal provided an amazing experience into a large, vibrant open source community.</p>
<p>The last bit of experience that would open my eyes to wonders of coding in the newsroom was my fellowship at <a href="http://codeforamerica.org/fellows/">Code for America</a>. This time offered me experiences into the civic world through technology and government, as well as allowed me to experiment with many other web technologies and just overall spread my wings and open my eyes a bit. It was also a couple of the other fellows/interns that pointed out the amazing things that were happening in the news industry regarding technology.</p>
<p>After the fellowship, I was moving back to Minneapolis, and through some serious serendipity, I landed an awesome job at <a href="http://www.minnpost.com/data">MinnPost</a>, a small, non-profit news organization focused on reporting Minnesota news.</p>
<h3 id="whats-all-the-hype">What’s all the hype?</h3>
<p>So, why did I even try to get a job at a newsroom, and after about a year on the job, why am I still doing it? In short, it is so much fun and so much awesome. Here are some reasons:</p>
<h4 id="it-is-important">It is important</h4>
<p>I have never been a heavy reader of any news journals, but I have always realized that reporters and news organizations (often) play an important role in our culture, socially, economically, and politically. At a non-profit paper that has a focus on politics, the idea of providing a social good is maybe a bit more prominent than other papers.</p>
<h4 id="open-source-output">Open source (output)</h4>
<p>One of the biggest things that drew me to the newsroom was seeing some of the amazing code that folks were producing in newsrooms and putting up on Github. Newsroom share their code (well, the good ones do, and the rest will follow). Some like the New York Times produce libraries that are now used by news and non-news developers around the world. At MinnPost, we put almost <a href="https://github.com/minnpost">all our code on Github</a>, not because it is going to necessarily be reusable for other organizations, but because it allows for us to be transparent and easily manage the code. Open source is very important to me.</p>
<h4 id="open-source-input">Open source (input)</h4>
<p>An important reason as to why folks have started coding in the newsroom more is because open source code and the people producing it is huge and more and more accessible. News organizations don’t have the resources to make a library like jQuery, put given that open source code has become so important, news organizations can now leverage the amazing work of so many other people.</p>
<h4 id="interesting">Interesting</h4>
<p>Reporters, even ones that have a specific beat, usually need to be able to dive into a topic and become an expert quickly. This is so true for the news developers as well. Often this is getting to know some data set in and out. It makes for exciting and interesting projects where you get to learn a lot.</p>
<h4 id="its-new">It’s new</h4>
<p>The journalism field is changing a lot right now, and the idea of having developers in the newsroom is actually fairly new, so its a pretty wide open space where job descriptions and titles are not really well defined.</p>
<h4 id="small-projects">“Small” projects</h4>
<p>Depending on the news organizations, most newsroom coding projects are relatively small in scope, ranging from a few hours to a few months, or rare cases of a year. For those of us that have a short attention span and like to work on different things, this is bliss.</p>
<h4 id="people-use-it">People use it</h4>
<p>I have previously worked on things that don’t really get used, either because they were bad ideas, or just that the audience is very small. In the newsroom, many people will see your work, and you’ll get lots of feedback and recognition.</p>
<h4 id="deadlines">Deadlines</h4>
<p>This may not seem like a good reason on the surface, but it actually is pretty awesome in my opinion. Deadlines offer constraints which foster creativity and force humbleness. The work needs to get out quickly, and it’s alright if it is not perfect (though it needs to be accurate).</p>
<h4 id="experiment">Experiment</h4>
<p>Even with deadlines, there is still a need to impress readers and push the boundaries of the work that developers do in the newsroom. This promotes (and rewards) experimentation, which for a coder like me is beyond fun.</p>
<h4 id="no-support">No support</h4>
<p>Though in the newsroom your audience may be a little more general than in other places, it only really has to work once. Maybe you have to fiddle with some things here and there to ensure it keeps running, but new features and support are not really that necessary (on most projects).</p>
<h3 id="to-reiterate">To reiterate</h3>
<p>It’s a whole lot of fun!!!</p>
<h3 id="im-not-the-only-one-that-feels-this-way">I’m not the only one that feels this way</h3>
<ul>
<li><a href="http://knightlab.northwestern.edu/2013/07/15/newsroom-developer-why-journalism-matters-and-it-is-in-crisis-is-why/">Miranda Mulligan at KnightLab</a></li>
<li><a href="http://thescoop.org/archives/2013/07/16/why-develop-in-the-newsroom/">Derek Willis at New York Times</a></li>
<li><a href="http://blog.chrislkeller.com/why-develop-in-newsroom/">Chris Keller at KPCC</a></li>
<li><a href="http://michelleminkoff.com/2013/07/17/why-i-develop-in-the-newsroom/">Michelle Minkoff at AP</a></li>
<li><a href="http://www.journogeekery.com/post/55707365311/why-develop-in-a-newsroom">Tiff Fehr at NYT</a></li>
<li><a href="http://www.propublica.org/nerds/item/why-develop-in-the-newsroom">ProPublica Nerds</a></li>
</ul>
https://zzolo.org/2013/07/12/new-site-again
New Site (again)
2013-07-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>As a web developer/coder/architect/whatever I can’t help care about and constantly change my “web presence”, even if I don’t make a lot of content. This site (zzolo.org) has, or is currently in the process of being, moved and redeveloped from the ground up.</p>
<p>The new site runs on <a href="http://jekyllrb.com/">Jekyll</a> and is hosted through <a href="http://pages.github.com/">Github Pages</a>. The previous site was run on <a href="http://drupal.org">Drupal</a> and hosted at <a href="http://vps.net/">VPS.net</a>. Here are the main reasons why I have made this shift.</p>
<ul>
<li><em>Cost</em>. Github Pages is a free service provided by Github. I was not spending a lot of money with VPS.net, but that was through some discounts. Running Drupal sites that can handle traffic spikes is not a cheap activity.</li>
<li><em>Complication</em>. Jekyll is a very thin layer on top of plain HTML/CSS/JS; it has very little options and features. Previously I had hoped and sometimes accomplished using my personal site(s) as places for experimentation where having a full server and platform made sense, but now I just want to make a small post and go. Drupal is a complicated, and powerful, platform that I just don’t need and haven’t really used in some time. I also don’t have to worry about server administration.</li>
<li><em>Stability</em>. With significantly less complication, the site is much more stable.</li>
<li><em>Security</em>. The new site is essentially flat files and that means there is little to no security risks. With Drupal I had to stay on top of security updates.</li>
<li><em>Skills</em>. I no longer do much Drupal work and those skills are not as sharp as they once were. On the flip side, I use Github everyday and code primarily with just HTML/CSS/JS.</li>
<li><em>Newness</em>. It was time for a change (visually).</li>
</ul>
<p>I recently dug up content and old sites, so you can some samples of <a href="/2013/07/12/a-look-back/">previous versions of this site</a>.</p>
https://zzolo.org/2013/07/12/a-look-back
A Look Back
2013-07-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have had this website, zzolo.org (previously and redirected from alanpalazzolo.com) for about 10 years, and though I have surprising little content to show for it, it has gone through many different iterations. I recently spent some time importing content and therefore loading up old versions of the site, so figured I would share some screenshots and recourses from previous versions.</p>
<h3 id="2006-ish">2006 (ish)</h3>
<p>I don’t have versions from way back; I think I made my first version back in 2004, but here are some resources from around then.</p>
<p>That’s right, I had a 3D Flash header back in the day. This was right after I changed from an all-Flash website to a CSS one. (You can right-click and hit Play to play it again)</p>
<div>
<object type="application/x-shockwave-flash" data="/images/posts/zzold/aplogo.swf" width="100%" height="300px">
<param name="movie" value="/images/posts/zzold/aplogo.swf" />
<param name="quality" value="high" />
</object>
</div>
<p>I also made a badge for the site. I thought badges were so cool.</p>
<p><img src="/images/posts/zzold/ap_badge_80x15.png" alt="" /></p>
<p>Some of my other headers and materials from this era.</p>
<p><img src="/images/posts/zzold/header_long_v2.jpg" alt="" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/zzold/header_long_v2.jpg"><img src="/images/posts/zzold/header_long_v2.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/header_long.jpg"><img src="/images/posts/zzold/header_long.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/header_sky_v2.jpg"><img src="/images/posts/zzold/header_sky_v2.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/header_sky.jpg"><img src="/images/posts/zzold/header_sky.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/HeaderBack-NoColor.jpg"><img src="/images/posts/zzold/HeaderBack-NoColor.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/splash_personal.jpg"><img src="/images/posts/zzold/splash_personal.jpg" /></a>
<a target="_blank" href="/images/posts/zzold/splash_professional.jpg"><img src="/images/posts/zzold/splash_professional.jpg" /></a>
</div>
<h3 id="2007">2007</h3>
<p>I was still figuring out Drupal and I am sure I made a lot of bad decisions on this site.</p>
<p><img src="/images/posts/zzold/zzolo-org-2007-home.png" alt="" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/zzold/zzolo-org-2007-map.png"><img src="/images/posts/zzold/zzolo-org-2007-map.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2007-about.png"><img src="/images/posts/zzold/zzolo-org-2007-about.png" /></a>
</div>
<h3 id="2008">2008</h3>
<p>I believe this theme was started from someone else’s design. Still simple and green-driven. The map and place functionality became fully realized in this version.</p>
<p><img src="/images/posts/zzold/zzolo-org-2008-old.png" alt="" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/zzold/zzolo-org-2008-map.png"><img src="/images/posts/zzold/zzolo-org-2008-map.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2008-place.png"><img src="/images/posts/zzold/zzolo-org-2008-place.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2008-post.png"><img src="/images/posts/zzold/zzolo-org-2008-post.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2008-projects.png"><img src="/images/posts/zzold/zzolo-org-2008-projects.png" /></a>
</div>
<h3 id="2011">2011</h3>
<p>Purple was the way to go. I did not transfer over the map/location parts.</p>
<p><img src="/images/posts/zzold/zzolo-org-2011-home.png" alt="" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/zzold/zzolo-org-2011-book.png"><img src="/images/posts/zzold/zzolo-org-2011-book.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2011-haiku-just-portraits.png"><img src="/images/posts/zzold/zzolo-org-2011-haiku-just-portraits.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2011-haiku-portraits.png"><img src="/images/posts/zzold/zzolo-org-2011-haiku-portraits.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-2011-projects.png"><img src="/images/posts/zzold/zzolo-org-2011-projects.png" /></a>
</div>
<h3 id="2012">2012</h3>
<p>The most recent version right before this current version. The site had a homepage that was just a huge map, focusing on place.</p>
<p><img src="/images/posts/zzold/zzolo-org-v7-map.png" alt="" /></p>
<div class="thumbnails">
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-map-image.png"><img src="/images/posts/zzold/zzolo-org-v7-map-image.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-image-geo.png"><img src="/images/posts/zzold/zzolo-org-v7-image-geo.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-books.png"><img src="/images/posts/zzold/zzolo-org-v7-books.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-experience.png"><img src="/images/posts/zzold/zzolo-org-v7-experience.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-explore-masonry.png"><img src="/images/posts/zzold/zzolo-org-v7-explore-masonry.png" /></a>
<a target="_blank" href="/images/posts/zzold/zzolo-org-v7-haikus.png"><img src="/images/posts/zzold/zzolo-org-v7-haikus.png" /></a>
</div>
https://zzolo.org/2013/07/11/edit-link-to-prose-io
Edit link to Prose.io from Jekyll site
2013-07-11T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://prose.io/">Prose.io</a> is an excellent Markdown (or any text file) editor aimed at creating a web based interface to maintain content on Github which is more than likely running through <a href="http://jekyllrb.com/">Jekyll</a>.</p>
<p>I wanted a quick way to link to Prose.io to edit page on the site, specifically from my phone and did not want to spend time navigating through the file structure to do it. I also wanted a way to quickly add posts. So, here are some example snippets of code to do that in your Jekyll site (update the repo and user name as appropriate to your site).</p>
<figure class="highlight"><pre><code class="language-erb" data-lang="erb"> <span class="c"><!-- Edit current page --></span>
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"{% if page.path %}//prose.io/#zzolo/zzolo.github.com/edit/master/{{ page.path }}{% else %}//prose.io/#zzolo/zzolo.github.com{% endif %}"</span> <span class="na">target=</span><span class="s">"_blank"</span><span class="nt">></span>Edit this page in Prose.io<span class="nt"></a></span>
<span class="c"><!-- Add post --></span>
<span class="nt"><a</span> <span class="na">href=</span><span class="s">"//prose.io/#zzolo/zzolo.github.com/new/master/_posts"</span> <span class="na">target=</span><span class="s">"_blank"</span><span class="nt">></span>Add a post with Prose.io<span class="nt"></a></span></code></pre></figure>
https://zzolo.org/2013/07/07/ten-toes-in-the-sand
Ten Toes in the Sand
2013-07-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>A while ago, I received a free domain name from Dreamhost, I believe. I did not really have a need for one at the time, so it took me a minute to think of what to do with it. Around the same time, I was having some difficult personal issues and was writing more poetry, mostly the bad, angry, depressed kind. So, I thought I would start a personal, anonymous blog, <strong>TenToesInTheSand.org</strong>.</p>
<p><img src="/images/posts/tent/site-banner.png" alt="" /></p>
<p>By being anonymous, I thought I could share my thoughts and be more honest, which I was. But, I did not really keep up with it and just let the domain lapse. I have imported some of the content into this site, and kept the rest to dig up again in many years. Here are a few of the headers that were used throughout.</p>
<p>(The name comes from this <a href="http://www.youtube.com/watch?v=ASP3aZLPsb4">Aesop Rock song</a>.)</p>
<p><img src="/images/posts/tent/ten_toes_banner_v01.jpg" alt="" /></p>
<p><img src="/images/posts/tent/ten_toes_banner_v02.jpg" alt="" /></p>
<p><img src="/images/posts/tent/ten_toes_banner_v03.jpg" alt="" /></p>
<p><img src="/images/posts/tent/sunrise.jpg" alt="" /></p>
https://zzolo.org/2013/07/06/look-at-previous-works
A Look at Some Previous Work
2013-07-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The following are some sites I worked on a long time ago and the content is carried over from a previous version of this site. Most of the work is no longer online, so there are some screenshots. It’s pretty crazy to see how different my skills are now.</p>
<h3 id="zzoloorg-map">zzolo.org map</h3>
<p>The map on the home page is made on top of <a href="http://drupal.org">Drupal</a>, as this whole site is, specifically with the <a href="http://drupal.org/project/openlayers">OpenLayers contributed module</a>, which is one of my main open source projects. The tile sets are made with <a href="http://mapbox.com/tilemill">TileMill</a> and public data.</p>
<p>The goal of the map is to provide a portal into this site, which is a look into my life, with a location focus. This allows people to have a more instance connection with content, as most people will see themselves relative to the content (at least I hope). On the flip side, there is plenty of content that can’t necessarily be reflected on map in an effective way.</p>
<p><img src="/images/posts/map-explore.png" alt="" /></p>
<h3 id="sumunar">Sumunar</h3>
<p><a href="http://sumunar.org/">Sumunar</a> is an Indonesian Music and Dance organization that puts on performances and teaches classes. They needed a site that could help connect their existing community, as well as attract new people to the organization.</p>
<p>I used Drupal to aggregate their events, classes, and other content together in a meaningful and concise way. I also utilized some access modules to create an access structure for their content and classes.</p>
<p><img src="/images/posts/sumunar.jpg" alt="" /></p>
<h3 id="water-catalyst">Water Catalyst</h3>
<p><em>Water: Catalyst of Life and Strife (A Threat to Security or a Vital Opportunity for Cooperation)</em> was a Symposium on April 04, 2008 put on by Hamline Law students. It was an amazing event that created discussions that had not been looked at before.</p>
<p>Since I feel this area is extremely important and this event was one of the first of it s kind, I decided to offere my services to create a simple Drupal website. The main feature of this site was being able to see the schedule of session and presenters. This site is no longer up.</p>
<p><img src="/images/posts/wc_screenshot_3.jpg" alt="" /></p>
<h3 id="red-hot-art">Red Hot Art</h3>
<p>Red Hot Art is a yearly festival in Minneapolis, MN in the Stevens Square Park. It is a great event that brings together all types of local artists and musicians.</p>
<p>This is my second year doing this site in <a href="http://drupal.org">Drupal</a>. Last year’s site was very basic and the main goal was for the main organizer to be able to control some of the content herself.</p>
<p>This year, I have focused on creating a site that has more specific pieces and more streamlined content flows so that managing content is easier for the staff. The main feature that I added was Artist Vendor Application process. This is actually just the default Drupal user registration process with the Content Profile module to add fields into the registration form. So, basically, Artists Vendors are applying for a site account.</p>
<p><img src="/images/posts/red-hot-art-screenshot.jpg" alt="" /></p>
<h3 id="map-shanty">Map Shanty</h3>
<p>I got involved with the <a href="http://www.artshantyprojects.org/" title="Art Shanties">Art Shanties</a> through <a href="http://www.excotc.org/" title="Experimental College, Twin Cities">ExCo</a>. I had always really enjoyed the Art Shanties, and from the first time I went a few years ago, have wanted to take part in this amazing project.</p>
<p>I helped with a lot of the activities, such as construction, events, organization, and photography. But my main contribution was the <a href="http://mapshanty.com/" title="Map Shanty site">Map Shanty website</a>.</p>
<p>Of course, it is built with <a href="http://drupal.org/" title="Drupal">Drupal</a>.</p>
<h4 id="modules-and-technologies">Modules and Technologies</h4>
<p>The original purpose of the site was to be a collaborative tool for our group to use to help facilitate communication and organization in a transparent manner. Since we had some major themes each weekend, as well as coordinating the building effort, I decided to go with <a href="http://drupal.org/project/og" title="Organic Groups">Organic Groups</a> module, with the help of <a href="http://drupal.org/project/notifications" title="Notifications">Notifications</a> and <a href="http://drupal.org/project/messaging" title="Messaging">Messaging</a>, which were all in development of that time. As the site came together, these modules became stable.</p>
<p>Even though it was meant to be a collaborative tool, I really wanted people to be able to come to the site and learn who we were and what we were doing. This meant utilizing the <a href="http://drupal.org/project/content_profile" title="Content Profile">Content Profile</a> module.</p>
<p>There was obviously a need to have some mapping on the site as well. <a href="http://drupal.org/project/gmap" title="Gmap">Gmap</a> and <a href="http://drupal.org/project/location" title="Location">Location</a> were also in development, but became stable as the site progressed. We actually got coordinates for each shanty and I created icons and created a Gmap of all the shanties. I was also able to flesh out my <a href="http://drupal.org/project/gmapfield" title="Gmap Field">Gmap Field</a> module with this project.</p>
<p>As it the time came to put the shanty on ice, we decided to make the site more focused for the visitors of the Art Shanties. This meant utilizing <a href="http://drupal.org/project/imagecache" title="ImageCache">ImageCache</a> and <a href="http://drupal.org/project/lightbox2" title="Lightbox 2">Lightbox 2</a> to create some more visual excitement for the front page. I also created some panaromics using the great, open-source <a href="http://hugin.sourceforge.net/" title="Hugin">Hugin</a> program.</p>
<p>This project also led me to start using <a href="http://drupal.org/project/drush" title="Drush">Drush</a>, which is simple amazing. It really saves a lot of time on installing and updating modules. I think for my personal projects, its perfect, but have some reservations about using it at a company or organization that has its own code versioning.</p>
<h4 id="recognition">Recognition</h4>
<p>I even got some recognition in the Star Tribune, a local paper, as a <a href="http://www.startribune.com/entertainment/38658707.html?elr=KArksD:aDyaEP:kD:aUt:aDyaEP:kD:aUiacyKUnciaec8O7EyUr" title="Star Tribune, Web Gem, Map Shanty">Web Gem</a>.</p>
<p><img src="/images/posts/mapshanty-screenshot.jpg" alt="" /></p>
<h3 id="drupal-daze">Drupal Daze</h3>
<p><a href="http://drupaldaze.com" title="Drupal Daze">Drupal Daze</a> was a two-day Drupal event I helped coordinate with a couple other people from <a href="http://www.tcopencircuit.org/" title="Twin Cities Open Circuit">Twin Cities Open Circuit</a>. It was an amazing event that brought together lots of Drupal experience and knowledge from the Twin Cities metro area.</p>
<p>This was also my first Drupal 6 site. It was still when Views and CCK were in heavy development. It seemed like a good opportunity to try out things I would not use on some other production site.</p>
<p><img src="/images/posts/drupaldaze.jpg" alt="" /></p>
https://zzolo.org/2013/02/26/open-twin-cities-hackathon-re-cap
Open Twin Cities Hackathon Re-Cap
2013-02-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This past Saturday, <a href="http://www.opentwincities.org/">Open Twin Cities</a> held its first hackathon at the awesome <a href="http://freegeektwincities.org/">Free Geek Twin Cities</a>. This was part of two larger events, <a href="http://opendataday.org/">International Open Data Day</a> and <a href="http://brigade.codeforamerica.org/pages/codeacross">Code Across America</a>. We had an amazing time and got some great things accomplished in 8 hours. And though we had practically no budget, very little time to plan, and a space that I compared to an abandoned warehouse, we had 20+ awesome people show who fully jumped into making our community better through technology.</p>
<h3 id="the-morning">The Morning</h3>
<p>The beginning of the day began with introductions and a few “icebreaking” games to help loosen people up a little. Though these are often pretty cheesy, they can be critical to ensuring people connect and work smoothly together (see my recent post on how <a href="http://zzolo.org/thoughts/what-hackathons-really-are">hackathons are just community building events</a>).</p>
<p>We then spent the rest of the morning brainstorming project ideas and then matching up skills to those ideas. This gave us a nice view of what skills we had as a group and what people were interested in. And even though we did not work on all the great ideas, we did <a href="https://groups.google.com/forum/?fromgroups=#!topic/twin-cities-brigade/K6PpNKuJo-o">capture all the project ideas</a> and skills to be able to reference them later.</p>
<h3 id="build-time">Build Time</h3>
<p>After an excellent lunch provided by <a href="http://forums.e-democracy.org/">E-Democracy</a>, groups were formed and folks started working.</p>
<h4 id="data-source-documentation">Data Source Documentation</h4>
<p><img src="/images/posts/data-sources.png" width="210" height="150" alt="" title="" /></p>
<p>Kristen, Amy, and Jake worked on documenting and linking data source in the Twin Cities and Minnesota, almost a 1,000 datasets! This is an ongoing goal of Open Twin Cities and helps in planning a future hackathon that will be data focused; finding data sources is necessary given that there are not many data catalogs available in our state (the <a href="http://www.state.mn.us/opendata/data.html">Minnesota Data Catalog</a> is alright, but is not really updated or updatable).</p>
<ul>
<li>The <a href="https://docs.google.com/spreadsheet/ccc?key=0AtkFCdxQ11AOdGpWWnpuVzdaNG1SVG40MXlyZ0hSVEE&usp=sharing#gid=13">main list is in a Google spreadsheet</a>.</li>
<li>Data sources include MN Geo, MPCA, MN Legislature, MN DNR, MetroGIS and more.</li>
</ul>
<h4 id="technology-center-data">Technology Center Data</h4>
<p><img src="/images/posts/tlc-ctc-locations_0.png" width="210" height="150" alt="" title="" /></p>
<p>Elise, Mary Anne, Bill, and Alison worked with the <a href="http://tlc-mn.org/">Technology Literacy Collaborative</a> (TLC) to help expose their amazing list of <a href="http://tlc-mn.org/ctc">community technology centers</a> data.</p>
<h4 id="st-paul-crime-data">St. Paul Crime Data</h4>
<p><img src="/images/posts/st-paul-crimes.png" width="210" height="150" alt="" title="" /></p>
<p>Rodrigo and Michael worked on starting to parse out the <a href="http://www.stpaul.gov/DocumentCenter/">crime data in St. Paul</a> which reports individual crimes (with the address slightly redacted) in weekly MS Excel files tucked away in a complicated interface. So, Rodrigo spent a fair amount of time just trying to scrape the list of report files: <a href="https://scraperwiki.com/scrapers/findstpaulpoliceincidentreports/">scraper for list of documents</a> and <a href="https://scraperwiki.com/scrapers/stpaulcrimestat">scraper for getting data from documents</a>. Michael spent time parsing and visualizing a single report; you can see a <a href="http://michaelaltmann.cartodb.com/tables/3978/public#/map">basic St. Paul crime data</a> built with CartoDB.</p>
<h4 id="visualizing-minneapolis-crime-data">Visualizing Minneapolis Crime Data</h4>
<p><img src="/images/posts/mpls-crime-data.png" width="210" height="150" alt="" title="" /></p>
<p>Kristina and Dan worked on visualizing some of the <a href="http://www.minneapolismn.gov/police/statistics/crime-statistics_codefor_statistics">Minneapolis crime data</a> which is released monthly in aggregate in MS Excel files. They built a visualization in D3; you can see a <a href="https://www.evernote.com/shard/s37/sh/d4b5796e-2fc5-4b5d-9ba0-053a1a947c00/2d57d113ff42418f94c5da4ac7e11c13">screenshot</a> here, and <a href="https://github.com/gelicia/mplsCrimeMapODD">the code on Github</a>.</p>
<h3 id="conversation-with-elected-officials-or-candidates">Conversation with elected officials (or candidates)</h3>
<p>Cam Winton, a Minneapolis mayoral candidate came by to see what we were doing. The event, as well as the Open Twin Cities group, is non-partisan, but the topic of open government is extremely important and promoting the conversation between elected officials and our “civic hackers” is critical to making change. Cam came by not really knowing what a hackathon is which I think is pretty brave. He watched as each team presented their work and got a great sense of what this community cares about and needs from the elected officials on all levels of government. I do hope we can get more public servants coming to our events.</p>
<h3 id="in-conclusion">In Conclusion</h3>
<p>We had a really amazing time and strengthened our Open Twin Cities community!</p>
<p>Look for the following events (still in planning):</p>
<ul>
<li><a href="http://visualizingneighborhoods.eventbrite.com/">Visualizing Neighborhoods: A Hackathon for Good</a> on May 25th.</li>
<li><a href="http://hackforchange.org/">National Day of Hacking</a> on June 1st and/or 2nd.</li>
<li>A CityCamp MN happening in the fall.</li>
</ul>
<p>(Images from the event taken by <a href="http://forums.e-democracy.org/groups/projects/messages/post/2Zz5ShpIbvR4jyibuxel32">Steven Clift</a>)</p>
https://zzolo.org/2013/02/21/what-hackathons-really-are
What Hackathons Really Are
2013-02-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Hackathons, Code-a-thons, Code sprints, Hack days, Hackfests, Codefests, call them what you will; they have been going on for quite some time. In recent years, this has moved past the idea of a specific programming language or software to such things as civic hacking, fashion, icons, and more.</p>
<p>As <a href="http://brigade.codeforamerica.org/pages/codeacross">Code Across America</a> and <a href="http://opendataday.org/">International Open Data Day</a> approach and people across the world come together to help release and utilize public data and make technology that helps their communities, I have been thinking critically about what is the real value and purpose of what I will generally call <em>Hackathons</em> (we so need a better word).</p>
<p>My main idea is this: <strong>Hackathons are community building events</strong>. Plain and simple; that is their sole purpose. Dress them in whatever activity you want, its still all about strengthening connections among people. I see many organizers let this idea go wayside in place of activities like building apps or clearing the issue queue. I also often hear the idea of community building talked about as a side benefit of hackathon events, but by defining succes of a hacakthon in terms of community building, I fully believe these events will become much more meaningful and productive to everyone involved. So let me explain in more detail.</p>
<h2 id="lets-describe-a-hackathon-a-bit-first">Let’s describe a hackathon a bit first</h2>
<p>Hackathons are pretty general events where people of a community come together and work on project(s). Often the actual activities of a hackathon resemble something like the following:</p>
<ul>
<li>People meet in person</li>
<li>Idea generation or task delegation</li>
<li>Team or group forming</li>
<li>Building or working (hacking)</li>
<li>Presentation or judging period</li>
</ul>
<p>To better define the space that is a “hackathon”, here are some general examples of what I would lump into the term “hackathon event”; trying to provide enough variety to show that subject and tasks can be quite different.</p>
<ul>
<li>Civic Hackathon. Technologists and civic leaders making applications for their communities.</li>
<li>Iconathon. Designers and artists coming together to make reusable icons for everyone.</li>
<li>Code Sprint. Coders sprinting towards the next release of a software product.</li>
<li>Data Day. Data nerds come together to try to liberate and utilize (public) data.</li>
<li>Internal Hackathons. Like a code sprint, but for a specific organization or company.</li>
</ul>
<h2 id="what-is-community-building">What is community building?</h2>
<p>Just to make sure we are on the same page, let’s define this a bit more. Community building is simple; its the act of bringing people together for a shared cause and creating connections where there were none before and/or strengthening existing connections. That’s it. But keep that in mind as we go through this.</p>
<p>The value of community building is that you grow the size of your community with more participants and also strengthen everyone’s ties to the community as a whole, which translates to your community becoming more sustainable and more capable of accomplishing its mission, whatever that may be.</p>
<p>By building a stronger community, you are building more sustainable solutions.</p>
<ul>
<li>If your community is focused on creating civic technology, better connections produce sustainability and ensures real needs are met.</li>
<li>If your community is designing icons, building relationships means knowledge and inspiration sharing, enhancing the artistic pool.</li>
<li>If your community is all about a specific software, building community means less burnout, more throughput, and more adoption.</li>
</ul>
<h2 id="so-why-a-hackathon">So, why a hackathon?</h2>
<p>If our primary goal is community building, why not just hold an ice cream social and let people mingle and talk to each other? Good point. Holding a happy hour or ice cream social in your community would be a great idea and would probably strengthen your community, given the audience.</p>
<p>And that’s where the answer comes in – given the audience, i.e. the members of these communities, a hackathon is the best activity for community building. The people in these communities want to build and create and learn with and from each other. In fact, these communities are defined by the things they make Their members want to feel productive. Working together and collaborating builds bonds and strengthens personal ties much better than a beer will (beers can pretty great too).</p>
<p><a href="http://sunlightfoundation.com/blog/2010/01/19/how-manage-large-volunteer-hackathons/">Sunlight Foundation’s recent article</a> says that community building is not the focus of a hackathon and that application building is, and the article makes the comparison of a hackathon to a Habitat for Humanity event. But here’s the thing, hackathons are about coming together to find new and innovative ways to tackle problems or otherwise lending one’s specific skills to a problem; a Habitat for Humanity event is focused on getting bodies to help build things that have already been planned out, but the skills of the individuals are not important at all. This would translate to a Habitat for Humanity session where a foundation was set, then the volunteers would try to find the best way to build a house; it would probably be really bad unless you had experienced contractors, carpenters, and electricians. But I am not trying to knock what Habitat does; getting volunteers together to build a house is a great activity, and if your community has a set project and plan and all you need are volunteers, do think about it in this way, but a hackathon should not be run like this.</p>
<p>Hackathons are not for everyone, and depending on your community and goals, you may want to hold other sort of events.</p>
<h2 id="what-about-the-apps-the-issue-queues-the-code-the-icons">What about the apps, the issue queues, the code, the icons?</h2>
<p>The activities of the day are not the same as the reason for holding an event. The activities of a hackathon can be fairly different, stretching from everyone working on an existing project in a code sprint, to building new apps at a hackathon, to data wrangling at a open data day, to drawing icons at an iconathon, and more. These are really important and are the focus of what people are practically doing; telling people to come to a Community Building Marathon would probably not convince many folks to attend. But this is not the reason for holding the event; people could do these things by themselves, but they come together because they value their connection to the community.</p>
<p>You aren’t going to finish these activities at the hackathon. You aren’t gonna come out with anything more than prototypes for applications; even if you close out every issue in the queue, there will still be more tomorrow; you can ship a new release, but there’s always another one; you will draw lots of icons, but probably not make any finished ones; there’s always more work to be done. This does not mean its not worth the time and energy that people are willing to put into the event, but expectations need to be realistic. Again, it’s not about the activities, its about how the activities actually build stronger communities so that this work can continue into the future.</p>
<h3 id="prototyping-and-experimentation">Prototyping and experimentation</h3>
<p>The ideas of experimentation and prototyping are very critical to successful community building. These are the ideals that have led to such a strong community of computer hackers. By providing an event where experimentation and prototyping are promoted, people can feel more comfortable with taking risks, learning new things, and being more open with each other. Focusing on finishing activities will often conflict with this.</p>
<h3 id="promote-the-work">Promote the work</h3>
<p>Given that people are giving their time, energy, and expertise to draw icons, triage issues, scrape data, and more, it is really important that these activities are collected and put on a pedestal after the event. This is not about the actual work, its about promoting the people that did the work.</p>
<h3 id="but-we-want-to-create-sustainable-stable-applications-to-help-your-community-you-say">But we want to create sustainable, stable applications to help your community, you say?</h3>
<p>That’s great! But a hackathon won’t make that happen. Don’t get me wrong, some amazing projects have come out of hackathons that have gone on to be great things. But these are rare cases, and at best the hackathon simply played the role of getting the right people together, not providing an environment to fully foster that project. Holding a hackathon that is solely aimed at making great applications is like playing the lottery; sure, you might get a winning ticket, but most of the time you are gonna be disappointed. This is not even to speak to the mechanics of making good applications in which a day, a weekend, or even a week could not produce a sustainable solution to a problem.</p>
<p>If you really want to foster sustainable applications and projects, hold an event or series of events that brings together real funders and established product teams and build those relationships. A hackathon can be a real good step in getting those product teams together, but it will not provide sustainability to them.</p>
<h3 id="what-about-contests">What about contests?</h3>
<p>First, let’s distinguish between hackathons that are contests, and long-running, remote (not in-person) contests, for instances ones that are on <a href="http://challenge.gov/">Challenge.gov</a>. The latter is actually a productive way to promote innovation and given certain conditions, will actually lead to some significant, long-term projects. The former is a bad idea in my opinion.</p>
<p>Contests at hackathon promote competition, which in a community of people where you want to strengthen relationships with, could have negative results. Also, as discussed above, hackathons do not create long-term projects, and giving significant money to a project that was prototyped over a day or two with a team that may have never met before is not a good investment of money.</p>
<p>On the flip side, contests do provide incentives to people that might not have them in the first place; but it is arguable if this is actually the type of behavior you want to promote. If the prize money is in small, relatively trivial amounts, and almost everyone gets a prize, contests can provide a level of competition that promotes innovation and experimentation that might not be there.</p>
<h2 id="what-is-success">What is success?</h2>
<p>If you accept the premise that a hackathon is a community building event, then what does success look like? It is the number of connections made and the quality of relationships at the end of the event; it is not the number of apps built or issues closed or even the quality of the projects produced. Some specific metrics:</p>
<ul>
<li>Fun was had</li>
<li>New connections were made</li>
<li>People learned new things</li>
<li>People know how to keep in touch with the community</li>
<li>Teams continue to work on their projects</li>
<li>People come to the next event</li>
</ul>
<h2 id="planning-your-hackathon">Planning your hackathon</h2>
<p>When you plan your hackathon, ensure that your primary focus is community building and that your activities lend themselves to that idea; you will have a fun and successful event if you do this. Some ideas to keep in mind:</p>
<ul>
<li>Do no harm. Make sure you are not doing things that sever connections or lessen community.</li>
<li>A charismatic, empathetic, vibrant facilitator is so crucial. The person that leads the event needs to understand the core of community building and what needs to happen to facilitate it.</li>
<li>Ensure everyone feels productive, no matter the skill level, or if they show up late, or even if they dont have a computer. You’ll need extra facilitators for this.</li>
<li>Make sure everyone can speak their ideas if they want to. This needs to be constructive, of course.</li>
<li>Make sure all relevant audiences are there. Go out and get them! Only having coders working on applications will result in incomplete ideas and solutions.</li>
<li>Everyone is equally important. Seriously. Make sure this is activated.</li>
<li>Collect names of participants and promote their work after the event.</li>
</ul>
<h2 id="in-conclusion">In conclusion</h2>
<p>I am not trying to say that people are doing bad jobs when running their hackathons, but by keeping in mind that hackathons are just community building events, you will find a lot more success with your events.</p>
<p><a href="/contact">Let me know what you think</a>.</p>
<h2 id="credits">Credits</h2>
<p>I have had the amazing fortune of being apart of some great communities and knowing fantastic people that have allowed me to participate, lead, and critically think about these sort of events. I have not fully attributed them in this article, but will soon.</p>
<p>Note that the Sunlight Foundation article linked to above is really great; I just think the original premise is a bit off.</p>
https://zzolo.org/2012/11/03/mn-registered-voters-d3
Registered Voters in Minnesota Counties
2012-11-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<h3>A look at relation between registered voters in Minnesota counties (and experimenting with D3)</h3>
<p>By registered voters, the 5 most populous counties, out of 87, makes up just slightly over 50% of all registered voters in the state of Minnesota. This does not work like the Presidential race with the electoral college where one state gives all its votes to a single candidate, voting on state wide elections is done by the populous vote alone. It does point out just how unevenly distributed registered voters are across the counties, and this could influence how state wide races turn out; it also explains how on a map, Minnesota may look red, but still vote blue.</p>
<p>The chart below is interactive; you can click on any county to add it to the selected pile and see how it swings the count.</p>
<p>Do note that this interactive piece is made with <a href="d3js.org">D3</a> and uses SVG which means it will not run in older browsers like Internet Explorer 7 or 8.</p>
<!-- START: Embeddable -->
<div class="node-body fieldlayout node-field-body">
<style type="text/css">
@import url('https://s3.amazonaws.com/data.minnpost/js/qtip2-master-20121022/jquery.qtip.min.css');
@import url('https://s3.amazonaws.com/data.minnpost/js/jquery.ui-autocomplete-1.9.1/jquery.ui-autocomplete-1.9.1-ui-lightness.min.css');
</style>
<style type="text/css">
#minnpost-registered-voters-county-chart {
max-width: 960px;
margin: 0 auto;
}
.clear {
clear: both;
}
.js-dependent,
.hidden {
display: none;
}
.footnote {
font-size: .75em;
font-style: italic;
color: #414141;
margin-top: 3em;
border-top: 1px solid #BCBCBC;
padding-top: 1em;
}
.loading-general {
width: 100%;
text-align: center;
padding: 2em 2em;
color: #ABABAB;
vertical-align: middle;
height: 100%;
line-height: 100%;
}
.loading-general span {
padding: 10px 5px 10px 40px;
background: transparent url('https://s3.amazonaws.com/data.minnpost/projects/2012-mn-election-results/images/ajax-loader.gif') center left no-repeat;
vertical-align: middle;
height: 100%;
line-height: 100%;
}
.tooltip-body-container {
position: absolute;
z-index: 99;
}
.tooltip-container {
background-color: #E2E2E2;
border: 1px solid #777777;
padding: .5em 1em;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
#minnpost-registered-voters-county-chart table {
width: 100%;
font-size: .85em;
font-family: Helvetica,Arial,Geneva,sans-serif;
}
#minnpost-registered-voters-county-chart table tr:nth-child(even) {
background-color: #EBEBEB;
}
#d3-chart-container {
width: 100%;
height: 400px;
font-family: Helvetica,Arial,Geneva,sans-serif;
font-size: .85em;
}
/**
* Responsive screen size styles
*/
@media screen and (max-width: 768px) {
}
</style>
<!--[if lte IE 7]>
<![endif]-->
<!-- Initial HTML for application -->
<div id="minnpost-registered-voters-county-chart">
<noscript>
<p>This application requires Javascript which is used to make your web browser more interactive. If this message does not go away, please consider enabling Javascript. Here are <a href="http://www.enable-javascript.com/" target="_blank">instructions on how to enable JavaScript in your web browser</a>.</p>
</noscript>
<!--[if lte IE 7]>
<div class="ie-upgrade-note">
<h4>Consider upgrading your browser</h4>
<p>Your <strong>Internet Browser</strong> is the application you use to navigate webpages on the internet. You are currently using an older version of Internet Explorer. Unfortunately, with this old browser, you will not be able to experience the full version of this interactive story.</p>
<p><a href="http://browsehappy.com/" target="_blank">Click here to find out about options for newer browsers</a>.</p>
<p>If you cannot install new applications on your computer (because you are at work, for example), consider using <a href="http://www.google.com/chromeframe" target="_blank">Google's Chrome Frame</a> for Internet Explorer.</p>
</div>
<![endif]-->
<div id="chart-container">
</div>
<p class="footnote">Registered voter data provided by the <a href="http://www.sos.state.mn.us/index.aspx?page=531" target="_blank">MN Secretary of State</a><span class="last-updated"></span>. Data processing aided by <a href="https://scraperwiki.com/" target="_blank">ScraperWiki</a>.</p>
</div>
<!-- Templates to be used in client side processing. -->
<script id="template-loading" type="text/template">
<div class="loading-general-container">
<div class="loading-general"><span>Loading...</span></div>
</div>
</script>
<script id="template-service-down" type="text/template">
<h3>We are sorry</h3>
<p>The election data service seems to be down or you no longer have access to the Internet. Try refreshing the page or checking your Internet connection.</p>
</script>
<script id="template-application" type="text/template">
<div class="counter-container"></div>
<div id="d3-chart-container"></div>
</script>
<script id="template-tooltip" type="text/template">
<div class="tooltip-container">
<h5><%= d.county %> County</h5>
Registered voters: <strong><%= d3.format(',d')(d.voters) %></strong>
</div>
</script>
<script id="template-counter" type="text/template">
<div class="counter-container-table">
<table>
<thead>
<tr><th></th><th>Counties</th><th>Registerd voters</th><th>Percent</th></tr>
</thead>
<tbody>
<tr class="selected-container">
<td>Selected</td>
<td><%= selectedCount %></td>
<td><%= d3.format(',d')(selectedVoters) %></td>
<td><%= d3.format('.1%')(selectedVoters / totalVoters) %></td>
</tr>
<tr class="other-container">
<td>Other</td>
<td><%= otherCount %></td>
<td><%= d3.format(',d')(otherVoters) %></td>
<td><%= d3.format('.1%')(otherVoters / totalVoters) %></td>
</tr>
</tbody>
</table>
</div>
</script>
<!-- jQuery that is used on site -->
<script type="text/javascript">
window.jQuery || document.write('<script type="text/javascript" src="https://s3.amazonaws.com/data.minnpost/js/jquery-1.3.2/jquery-1.3.2.min.js"><\/script>')
</script>
<!-- Underscore, a custom jquery, and backbone for app logic -->
<script type="text/javascript" src="https://s3.amazonaws.com/data.minnpost/js/underscore-1.3.3/underscore-min.js"></script>
<script type="text/javascript" src="https://s3.amazonaws.com/data.minnpost/js/jquery-custom-master-20120606/jquery-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="https://s3.amazonaws.com/data.minnpost/js/jquery.jsonp-2.4.0/jquerycustom.jsonp-2.4.0.min.js"></script>
<script type="text/javascript" src="https://s3.amazonaws.com/data.minnpost/js/d3-2.10.3/d3.v2.min.js"></script>
<script type="text/javascript">
// Handle custom jQuery
jQueryCustom = jQueryCustom.noConflict();
(function($, w, undefined) {
var dataURL = ['https://api.scraperwiki.com/api/1.0/datastore/sqlite?',
'format=jsondict&name=mn_registered_voters_by_county&callback=?&query=',
encodeURI('SELECT s.* FROM swdata AS s INNER JOIN (SELECT date FROM swdata ORDER BY date DESC LIMIT 1) AS j ON j.date = s.date')];
// Function for handling data
var processData = function(data) {
var recent = data;
var recentDate = data[0].date;
var templateTooltip = $('#template-tooltip').html();
var templateApplication = $('#template-application').html();
var templateCounter = $('#template-counter').html();
var voterMax = (_.max(recent, function(r) { return r.voters; })).voters;
var selectedDefault = [ 'Hennepin', 'Ramsey', 'Dakota', 'Anoka', 'Washington' ];
// Reset container
$('#chart-container').html(_.template(templateApplication, {}));
// Add last updated
$('.last-updated').html('; last updated on ' + recentDate);
// Select defaults
recent = _.map(recent, function(r) {
r.selected = (_.contains(selectedDefault, r.county)) ? true : false;
return r;
});
// Convert data to use in pack
var recentPack = {
'name': 'Counties',
'children': recent,
'county': 'top-level'
};
// Number formater
var numFormater = d3.format(',d');
// Tooltip placeholder
var $tooltip = $('<div>').addClass('tooltip-body-container').hide().appendTo('body');
// Color range
// '#6DAC15', '#74AA15', '#7CA915', '#84A715', '#8CA615', '#94A415', '#9CA315', '#A4A115', '#ACA015', '#ACA015', '#AC9615', '#AC8D15', '#AC8315', '#AC7A15', '#AC7015', '#AC6715', '#AC5D15', '#AC5415'
//'#5415AC', '#482DB7', '#3D46C2', '#325ECD', '#2777D8', '#1C90E3', '#1A95C6', '#199BA9', '#17A08D', '#16A670', '#15AC54'
//'#26C318', '#33B342', '#40A36C', '#4E9397', '#5B83C1', '#6974EC', '#7861E3', '#874FDB', '#963CD3', '#A52ACB', '#B518C3'
//'#26C318', '#33B342', '#40A36C', '#4E9397', '#5B83C1', '#6974EC', '#5875E3', '#4877DB', '#3878D3', '#287ACB', '#187CC3'
var colorRange = d3.scale.linear()
.domain(d3.range(1, voterMax, 10000))
.range(['#26C318', '#33B342', '#40A36C', '#4E9397', '#5B83C1', '#6974EC', '#5875E3', '#4877DB', '#3878D3', '#287ACB', '#187CC3'].reverse())
.clamp(true);
// Layout
var $container = $('#d3-chart-container');
var w = $container.width();
var h = $container.height();
var pack = d3.layout.pack().size([w - 5, h - 5]).padding(8)
.sort(function(a, b) { return b.voters - a.voters; } )
.value(function(d) { return d.voters; } );
var packedData = pack.nodes(recentPack).filter(function(d) { return !d.children; });
// Create svg canvas
var svg = d3.select('#d3-chart-container').append('svg')
.attr('width', w).attr('height', h).attr('class', 'county-chart');
// Process data table
var processTable = function(data) {
var counts = {
selectedCount: 0,
selectedVoters: 0,
otherCount: 0,
otherVoters: 0,
totalCount: 0,
totalVoters: 0,
}
_.each(data, function(d) {
counts.totalCount += 1;
counts.totalVoters += d.voters;
if (!_.isUndefined(d.selected) && d.selected === true) {
counts.selectedCount += 1;
counts.selectedVoters += d.voters;
}
else {
counts.otherCount += 1;
counts.otherVoters += d.voters;
}
});
$('.counter-container').html(_.template(templateCounter, counts));
};
// Function to handle update of data
var dataHandler = function(data) {
// Create node for groups of items
var nodes = svg.selectAll('g.countyNode').data(data, function(d) { return d.county; });
// Update all
nodes.selectAll('circle')
.style('stroke', function(d) {
return (!_.isUndefined(d.selected) && d.selected === true) ? '#222222' : 'transparent';
});
// Table values
processTable(data);
// Enter, update new elements
var nodesEnter = nodes.enter().append('g');
nodesEnter.attr('class', 'countyNode')
.attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; });
nodesEnter.append('circle')
.attr('r', function(d) { return d.r; })
.style('fill', function(d) { return colorRange(d.voters); })
.style('stroke-width', 3)
.style('stroke', function(d) {
return (!_.isUndefined(d.selected) && d.selected === true) ? '#222222' : 'transparent';
});
nodesEnter.append('text')
.attr('text-anchor', 'middle')
.attr('dy', '.3em')
.style('fill', '#333333')
.text(function(d) {
return d.county.substring(0, (Math.floor(d.r / 5) === 1) ? 0 : Math.floor(d.r / 5));
});
// Rollover
nodesEnter.on('mouseover', function(d, i) {
d3.select(this).style('cursor', 'pointer');
$tooltip
.css('top', (d.y + $container.offset().top - 10) + 'px')
.css('left', (d.x + $container.offset().left + d.r + 10) + 'px')
.html(_.template(templateTooltip, { d: d }))
.show();
var color = d3.rgb(d3.select(this).select('circle').style('fill'));
d3.select(this).select('circle').style('fill', color.brighter().toString());
});
nodesEnter.on('mouseout', function(d, i) {
$tooltip.hide();
var color = d3.rgb(d3.select(this).select('circle').style('fill'));
d3.select(this).select('circle').style('fill', color.darker().toString());
});
nodesEnter.on('click', function(d, i) {
packedData = _.map(packedData, function(p) {
if (p.county === d.county) {
p.selected = (!_.isUndefined(p.selected) && p.selected === true) ? false: true;
}
return p;
});
dataHandler(packedData);
});
}
// Start off with data
dataHandler(packedData);
};
// Kick it off
$('#chart-container').html(_.template($('#template-loading').html(), {}));
$.jsonp({
url: dataURL.join(''),
success: processData,
error: function(e) {
$('#chart-container').html(_.template($('#template-service-down').html(), {}));
}
});
})(jQueryCustom, window);
</script>
</div>
<!-- END: Embeddable -->
https://zzolo.org/2012/07/19/protect-the-internet-with-drupal
Protect the Internet with Drupal
2012-07-19T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Some of you may remember when <a href="http://en.wikipedia.org/wiki/Protests_against_SOPA_and_PIPA">Wikipedia and others went dark in protest of the SOPA and PIPA</a>. This was a huge movement that was (probably) the main reason why those bills did not get passed. It was also the first time that such a number of large websites protested in unison in such a significant way; a very monumental occasion for the Internet. Unfortunately, there are still many freedoms to protect and legislation to speak up against.</p>
<h3>Be a Superhero!</h3>
<p>But, you can help out! Today, the <a href="http://internetdefenseleague.org/">Internet Defense League</a> launches to help make the tactics described above into a real call to action across the world on any website. “Think of it like the internet’s Emergency Broadcast System, or its bat signal!”</p>
<h3>Do you have a Drupal site?</h3>
<p>Well, if you do, all you have to do is install the <a href="https://drupal.org/project/internet_defense_league">new Internet Defense League module</a> and when the League needs you, your site will be called upon to help protect the freedoms we enjoy so much on the Internet.</p>
<h3>I believe in this</h3>
<p>I care about our freedoms, especially on the Internet, and will often throw some Tweets around about how people can help or important topics. But I rarely will write a blog post, even write code, for an internet movement; not because I don’t care, but because its a fast changing place and its hard to tell what will really stick around the Internet. I believe in this effort: a distributed network of websites that can all speak out at once. (The main thing I worry about is how often it gets used; you can’t call on Batman every day)</p>
https://zzolo.org/2012/05/04/drupal-mapping-office-hours
Drupal Mapping Office Hours
2012-05-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The first ever Drupal Mapping office hours will be held <strong>Thursday, May 10th, 2012 at 1PM EST</strong> in the <a href="irc://irc.freenode.net/drupal-geo">#drupal-geo</a> IRC channel (if you don’t know about IRC, check out the <a href="https://drupal.org/irc">Drupal IRC docs</a>). <a href="https://drupal.org/user/77766">Brandonian</a> has spearheaded this effort, and will be joined by <a href="https://drupal.org/user/147331">myself</a>, <a href="https://drupal.org/user/47098">phayes</a>, and other great community members working in the Drupal geospatial sector. Besides offering general help with mapping, handling geospatial data, and related topics in Drupal, we will be discussing the following:</p>
<ul>
<li>Organizing a documentation sprint around an upcoming Drupal event TBD.</li>
<li>Meta discussion about office hours in general/planning for next meeting.</li>
<li>The state of geospatial in Drupal, specifically for a presentation I am giving at the <a href="http://2012.tcdrupal.org/sessions/spatially-drupal-state-drupal-geocms">Twin Cities Drupal Camp</a> and possible at <a href="http://munich2012.drupal.org/program/sessions/spatially-drupal">DrupalCon Munich</a>.</li>
<li><a href="http://groups.drupal.org/node/228708">Event on Groups.Drupal.org</a></li>
</ul>
https://zzolo.org/2012/01/28/point-reyes
Point Reyes
2012-01-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/point-reyes.JPG" alt="" /></p>
<p>Patrick looking out into the great Pacific (Palazzolo) ocean.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.989666667,38.0478333333]}</span>
</div>
https://zzolo.org/2012/01/09/mapping-with-drupal
Mapping with Drupal
2012-01-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>**Alan Palazzolo (<a href="http://drupal.org/user/147331">zzolo</a>) and Thomas Turnbull (<a href="http://drupal.org/user/125573">tom_o_t</a>) are proud to announce the release of <a href="http://shop.oreilly.com/product/0636920021230.do">Mapping with Drupal</a>, published by O’Reilly. **</p>
<p>Build beautiful interactive maps on your Drupal website, and tell engaging visual stories with your data. This concise guide shows you how to create custom geographical maps from top to bottom, using Drupal 7 tools and out-of-the-box modules. You’ll learn how mapping works in Drupal, with examples on how to use intuitive interfaces to map local events, businesses, groups, and other custom data.</p>
<p>Although building maps with Drupal can be tricky, this book helps you navigate the system’s complexities for creating sophisticated maps that match your site design. Get the knowledge and tools you need to build useful maps with Drupal today.</p>
<ul>
<li>Get up to speed on map projections, the ethics of making maps, and the challenges of building them online</li>
<li>Learn how spatial data is stored, input by users, manipulated, and queried</li>
<li>Use the OpenLayers or GMap modules to display maps with lists, tables, and data feeds</li>
<li>Create rich, custom interactions by applying geolocation</li>
<li>Customize your map’s look and feel with personalized markers, map tiles, and map popups</li>
<li>Build modules that add imaginative and engaging interactions</li>
</ul>
<h3 id="audience">Audience</h3>
<p>Mapping with Drupal is aimed at beginner to intermediate Drupal users, though it assumes a basic knowledge of Drupal.</p>
<h3 id="acknowledgements">Acknowledgements</h3>
<p>Thomas and Alan would like to thank the technical reviewers: <a href="http://www.deniswood.net/">Denis Wood</a>, Sara Hodges, <a href="http://drupal.org/user/70474">Robert Holmes</a>, <a href="http://drupal.org/user/113430">Joseph Bachana</a>, <a href="http://www.ronaldturnbull.co.uk/">Ronald Turnbull</a>, <a href="https://drupal.org/user/598310">Theodore Biadala</a>, <a href="http://drupal.org/user/350381">Reuben Turk</a>, <a href="http://drupal.org/user/11703">Ankur Rishi</a>, and <a href="http://drupal.org/user/47098">Patrick Hayes</a>.</p>
<h3 id="get-the-book">Get the Book!</h3>
<p>Available in print ($19.99) and DRM-free ebook ($9.99) from <a href="http://shop.oreilly.com/product/0636920021230.do">O’Reilly.com</a>
Also available in print and digital from <a href="http://www.amazon.com/gp/product/1449308945/">Amazon.com</a> and <a href="http://www.barnesandnoble.com/w/mapping-with-drupal-alan-palazzolo/1104926535">Barnes & Noble</a>.</p>
<p>Drupal Association members get 40% off the print book and 50% off the ebook when purchased from O’Reilly - see the <a href="https://association.drupal.org/membership/benefits">membership benefits</a> page for details.</p>
https://zzolo.org/2011/12/03/lake-superior
Lake Superior
2011-12-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/lake-superior.jpg" alt="" /></p>
<p>Lake Superior as the night descends.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-91.4558333333,47.1416666667]}</span>
</div>
https://zzolo.org/2011/11/11/openlayers-facelift
OpenLayers Facelift
2011-11-11T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>In the current D7 development branch of the Drupal <a href="http://drupal.org/project/openlayers">OpenLayers module</a> there are some really great interface and styling updates that will make maps a lot more exciting and more intuitive to use.</p>
<h3 id="before">Before</h3>
<div><a class="colorbox" href="https://img.skitch.com/20111111-qcusws78qpafsdtqb3a946hadd.jpg"><img style="max-width:615px" src="https://img.skitch.com/20111111-qcusws78qpafsdtqb3a946hadd.jpg" alt="OpenLayers | openlayers-6" /></a></div>
<h3 id="after">After</h3>
<div><a class="colorbox" href="https://skitch-img.s3.amazonaws.com/20111111-ry6wb4mjeqnj5bincc1faxty2c.jpg"><img style="max-width:615px" src="https://skitch-img.s3.amazonaws.com/20111111-ry6wb4mjeqnj5bincc1faxty2c.jpg" alt="Clone map geojson | openlayers7" /></a></div>
<p>The images above are screenshots (click to expand) of the default maps that currently come with the stable version of the <a href="http://drupal.org/project/openlayers">OpenLayers module</a> and library (before) and then new styling for default maps in the <a href="http://drupal.org/node/985658">development branch</a> (after). Let’s go through the changes:</p>
<ol>
<li><strong>New image set</strong> based on <a href="http://mapbox.com">MapBox</a>’s image set and filled in by <a href="http://drupal.org/user/1378442">ndagire</a>. This is huge! The default image set that comes with the OpenLayers module is pretty ugly; <a href="http://openlayers.org">see for yourself</a>.</li>
<li><strong>New default feature styles</strong>. This was a no brainer once we got new images. It is much better than that orange color.</li>
<li><strong>Provided markers</strong> come with the modules, a combination of <a href="http://drupal.org/user/1378442">ndagire</a>’s images and a couple markers I made, the module now comes with some markers out of the box. Besides this being visually exciting, I think it will help people grok the module more easily.</li>
<li><strong>New popup</strong> provided by <a href="http://drupal.org/user/148227">Harris Rashid</a> which goes very well with the new image set.</li>
<li><strong>New map styling</strong> to compliment the image set. A little CSS can go a long way.</li>
<li><strong>New Mapquest tiles</strong> by default. <a href="http://drupal.org/user/58679">mikl</a> helped get this tile set into the module core. And though it was tough to let go of the <a href="http://openstreetmap.org">OpenStreetMap</a> default tileset, the <a href="http://developer.mapquest.com/web/products/open/map">MapQuest</a> tiles are actually based off the OpenStreetMap data, don’t require a third-party library, are free, and look so much better!</li>
<li><strong>Wrap dateline</strong> (not numbered) is when the tiles repeat themselves as they go past the <a href="http://en.wikipedia.org/wiki/International_Date_Line">International Date Line</a> which means as you pan east or west, it keeps going. This is a bit nerdy, but it means that the map fills up the area completely and looks much better.</li>
</ol>
<p>So, all in all, an amazing improvement to what was a mediocre visual experience out of the box. I am really taken back by the contributions of the community to make this happen. And considering that I have talked twice about Making Beautiful Maps in Drupal both <a href="http://chicago2011.drupal.org/sessions/making-beautiful-maps">here</a> and <a href="http://2011.badcamp.net/program/sessions/making-beautiful-maps-drupal">here</a>, it was about time this became more of a reality.</p>
<h3 id="map-previews">Map Previews</h3>
<p>I have also been adding some interface improvements to the <strong>OpenLayers UI</strong> module that comes with the main core module. If you look at the <em>After</em> image above, you’ll notice it says “Preview”. The map building interface now has a preview button so that you can see the map before you even save it (data and all). This is really great, as before you had to save the map, then go to the display page (done with the Views module), just to see if it worked. I can’t believe I hadn’t done this earlier.</p>
<h3 id="style-previews">Style Previews</h3>
<p>When listing styles in the OpenLayers UI, you will now see a marker preview for the styles with icons, and a little map thumbnail for vector based styling. The icon preview was done by <a href="http://drupal.org/user/47194">Pol</a> at the OpenLayers Sprint at <a href="http://london2011.drupal.org/">DrupalCon London</a>. The map thumbnails are actually little OpenLayers maps that show a random place with the style on top.</p>
<p><img src="https://img.skitch.com/20111111-82dbdgaeb3h8cfr6wpuy33wggj.png" /></p>
<p>When editing styles, there is also a larger map to preview the style. This is a larger map, but same principle as the list. This also contains crosshairs so that you can see how the style is centered on the feature it is representing.</p>
<p><img src="https://img.skitch.com/20111111-bbh1ujsa4uw9w3impdus9wbg2q.png" /></p>
<h3 id="layer-previews">Layer Previews</h3>
<p>Coming soon. This is not implemented yet, and a bit harder to accomplish as often layers require maps to be certain ways. But I think we can still have this doable for the majority of layers.</p>
<h3 id="testing">Testing</h3>
<p>All this work and more is currently in the development branch. There are some known bugs. Any help testing out would be greatly appreciated. Please put any bugs into the <a href="http://drupal.org/project/issues/openlayers">issue queue</a>. I am hoping to have some time over Thanksgiving to follow through with this sprint and get out another release (probably the final alpha).</p>
https://zzolo.org/2011/10/26/tile-compare
Tile Compare
2011-10-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/tile-compare.png" alt="" /></p>
<p><a href="http://maps.zzolo.org/tile-compare/">Tile Compare</a> is a simple interface for comparing tile sets. By providing a view into all tile sets at once (instead of a layered approach), it becomes easier to understand the difference.</p>
<p>Currently, it shows tiles from Google, Bing, Yahoo, and OpenStreetMap, with the ability to switch to their Satellite imagery as well. You can get the code on <a href="https://github.com/zzolo/tile-compare">my Github account</a>.</p>
https://zzolo.org/2011/10/16/chronological
Chronological
2011-10-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/Chronological.png" alt="" /></p>
<p>Satellite imagery is pretty easily available these days. For me, these images provide the same sort of nostalgia as photographs can. So, given that I am currently thinking about where I want to be, and I couldn’t stop listening to this one Astronautalis song, I made this <a href="http://maps.zzolo.org/chronological/">simple fly through of my life and where I have lived</a>.</p>
<p>It utilizes <a href="http://polymaps.org/">Polymaps</a>, <a href="http://www.microsoft.com/maps/developers/web.aspx">Bing’s map API</a>, and some <a href="http://www.html5rocks.com/">HTML5</a> audio.</p>
https://zzolo.org/2011/10/08/whoot
Whoot!
2011-10-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/whoot.JPG" alt="" /></p>
<p>Perfect day with great people for a friends’ wedding near Eau Clare, WI.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-91.4706666667,44.582]}</span>
</div>
https://zzolo.org/2011/10/07/perfect-autumn-day
Perfect Autumn Day
2011-10-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/perfect-autumn-day.JPG" alt="" /></p>
<p>Unseasonably warm in Minneapolis on the field in Matthews Park.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-93.2305,44.958]}</span>
</div>
https://zzolo.org/2011/10/05/first-ever-drupal-non-profit-summit
First Ever Drupal Non-Profit Summit
2011-10-05T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This year at the <a href="http://2011.badcamp.net/">Bay Area Drupal Camp</a> on <strong>Friday, October 21, 2011</strong> we will be holding the first ever <a href="http://2011.badcamp.net/drupal-non-profit-summit">Drupal Non-Profit Summit</a>, an event focused on bringing all the great people working with Drupal in the non-profit sector. And there are lots of us; we have around <strong>150 signups</strong> already!</p>
<p>We went and saw the venue where the summit will be held today, the <a href="http://www.themarsh.org/the_marsh_berkeley_arts_center/the_marsh_arts_center.html">Marsh</a> in downtown Berkeley, and it’s going to be perfect for what we want to do. We are trying to push the boundaries of what has been done at Drupal events traditionally. Indeed, it is technically the first of its kind, but, more importantly, we are really focusing on conversation and group activities. We will barely be using projectors, sitting in circles, and gently nudging everyone to participate (you know all that hippie stuff you expect from Berkeley). We hope people learn a lot, but more importantly, we hope that we can build relationships between all the great people using Drupal to make the world a better place.</p>
<p>The hope is that this will become a regular event for this important sector within the Drupal community (hopefully not so close to <a href="http://pnwdrupalsummit.org/">PNWDSummit</a> next time). If you are town, please stop on by, it’ll be all smiles.</p>
https://zzolo.org/2011/09/16/sf-public-art-map
San Francisco Public Art
2011-09-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/sf-art-map.png" alt="" /></p>
<p>See the <a href="http://maps.zzolo.org/sf-art/">San Francisco Public Art</a>.</p>
<p>Using all publicly available data from the city of San Francisco, I put together a elevation map that plots out the public art in the city. There is also the ability to “fly through” the public arts and focus on each one.</p>
<p>This is mostly an experiment in mapping. I was able to build this with all open source technology and all free, public data. All the data was taken from <a href="http://datasf.org/">sfdata.org</a>, and most of the technology was based from <a href="http://mapbox.com">Mapbox</a>. Technologies included <a href="http://mapbox.com/tilemill/">TileMill</a> to create the tile set and basic data interaction, <a href="http://mapbox.com/tilestream/">TileStream</a> to host the tiles, <a href="https://github.com/stamen/modestmaps-js">Modest Maps</a> to create the map interface, <a href="http://mapbox.com/wax/">Wax</a> to tie the mapping together, <a href="http://mapbox.com/easey/">Easey</a> for panning around the map, <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icons</a> for some visual effects, and <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a> for basic HTML mockup. You can download all the code from <a href="http://github.com/zzolo/maps">Github project</a>.</p>
<p><img src="/images/posts/sf-art-map-zoomed-1.png" alt="" /></p>
https://zzolo.org/2011/09/01/lookin-and-039-good-at-the-afghan-kitchen
Lookin' Good at the Afghan Kitchen
2011-09-01T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/lookin-and-039-good-at-the-afghan-kitchen.JPG" alt="" /></p>
<p>Ciaran and Thomas keepin’ it real at the delicious Afghan Kitchen.</p>
<div class="location">
<span class="geojson"></span>
</div>
https://zzolo.org/2011/08/28/king-and-039s-tor-in-dartmoor
King's Tor in Dartmoor
2011-08-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/king-and-039s-tor-in-dartmoor.JPG" alt="" /></p>
<p>Ellie on top of King’s Tor at Dartmoor National Park.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-4.03883333333,50.5468333333]}</span>
</div>
https://zzolo.org/2011/07/19/totto-ramen
Totto Ramen
2011-07-19T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/totto-ramen.JPG" alt="" /></p>
<p>Went here with Thomas for some really tasty vegetarian ramen.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-73.9871666667,40.7648333333]}</span>
</div>
https://zzolo.org/2011/07/06/wine-tour
Wine Tour
2011-07-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/wine-tour.JPG" alt="" /></p>
<p>Ray looks determined as we start on the Nappa Valley wine tour.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.545666667,38.5698333333]}</span>
</div>
https://zzolo.org/2011/07/04/san-francisco-from-twin-peaks
San Francisco from Twin Peaks
2011-07-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/san-francisco-from-twin-peaks.JPG" alt="" /></p>
<p>Taken from Twin Peaks, downtown San Francisco is blurry in the distance.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.4465,37.755]}</span>
</div>
https://zzolo.org/2011/07/02/muir-woods
Muir Woods
2011-07-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/muir-woods.JPG" alt="" /></p>
<p>Muir Woods with Chach, Ray, and Mary.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.579666667,37.9015]}</span>
</div>
https://zzolo.org/2011/06/12/on-top-of-angel-island
On top of Angel Island
2011-06-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/on-top-of-angel-island.JPG" alt="" /></p>
<p>You can see the Golden Gate bridge in the fog on top of Angel Island.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.431,37.8615]}</span>
</div>
https://zzolo.org/2011/05/12/truck-stop-sunset
Truck Stop Sunset
2011-05-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/truck-stop-sunset.JPG" alt="" /></p>
<p>A beautiful sunset on the Columbia River, right at a truck parking stop.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.2755,45.5428333333]}</span>
</div>
https://zzolo.org/2011/04/24/knitting-at-hayes-valley
Knitting at Hayes Valley
2011-04-24T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/knitting-at-hayes-valley.JPG" alt="" /></p>
<p>Patrick and I were shown how to do some hand knitting to help decorate the fence of the Hayes Valley farm.</p>
<div class="location">
<span class="geojson"></span>
</div>
https://zzolo.org/2011/04/17/rusty-rocks
Rusty Rocks
2011-04-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/rusty-rocks.JPG" alt="" /></p>
<p>It’s amazing how the rocks were shaped by the ocean, and their color was great.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.115666667,36.9628333333]}</span>
</div>
https://zzolo.org/2011/04/17/ready-for-the-riot
Ready for the Riot
2011-04-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/ready-for-the-riot.JPG" alt="" /></p>
<p>It was a bit chilly even for such a beautiful day, as Ellie re-did her scarf.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.1115,36.9666666667]}</span>
</div>
https://zzolo.org/2011/04/16/garrapata-state-park
Garrapata State Park
2011-04-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/garrapata-state-park.JPG" alt="" /></p>
<p>So beautiful.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-121.9145,36.4665]}</span>
</div>
https://zzolo.org/2011/03/08/geospatial-bofs-drupalcon-scheduled
Geospatial BoF's DrupalCon scheduled!
2011-03-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Geospatial BoF’s DrupalCon scheduled!</p>
<p><strong>Today (Tuesday), March 08, 2011, at 3:15PM in the Missouri Room</strong> is the <strong>Building the Drupal Geospatial Stack</strong>, where developers will talk about the many geospatial modules in Drupal and how they can and do work together and what collaboration points there may or may not be.</p>
<p><a href="http://chicago2011.drupal.org/conference/bof/building-drupal-geo-stack">http://chicago2011.drupal.org/conference/bof/building-drupal-geo-stack</a></p>
<p>Then tomorrow, <strong>Wednesday March 09, 2011 at 10AM in the Missouri Room</strong>, we will have a user focused support BoF, <strong>Drupal Geospatial Support</strong> to have users of the geospatial modules to have discussions on what is working or not and what questions they have about using these sets of modules in Drupal.</p>
<p><a href="http://chicago2011.drupal.org/conference/bof/drupal-geospatial-support">http://chicago2011.drupal.org/conference/bof/drupal-geospatial-support</a></p>
<p>And finally, the Development Seed team will be discussing their impressive new tool, <strong>TileMill</strong>, tomorrow <strong>Wednesday March 09, 2011, at 11AM also in the Missouri Room</strong> to demo and discuss how this tool integrates with Drupal.</p>
<p><a href="http://chicago2011.drupal.org/conference/bof/tilemill-tilestream-and-drupal">http://chicago2011.drupal.org/conference/bof/tilemill-tilestream-and-drupal</a></p>
<p>Hope to see everyone there.</p>
https://zzolo.org/2011/03/08/drupal-and-mammoths
Drupal and Mammoths
2011-03-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/drupal-and-mammoths.JPG" alt="" /></p>
<p>Though a bit extravagant, it was really cool to have a private party in the Field Museum of Natural History for DrupalCon Chicago.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-87.616,41.8665]}</span>
</div>
https://zzolo.org/2011/03/04/mapping-gis-cartography-at-drupalcon
Mapping, GIS, Cartography at DrupalCon
2011-03-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I can’t believe it’s been just about 6 months since <a href="http://www.flickr.com/photos/nidhug/4923618478/">Drupal Copenhagen</a>. But it’s that time again to come to together in <a href="http://chicago2011.drupal.org/">Chicago</a> to talk on <a href="http://en.wikipedia.org/wiki/Geospatial">geospatial</a> topics in Drupal. There are a number of things going on in this area. Birds of Feathers (BoF) discussions time and place should be determined on Monday.</p>
<p><a href="http://www.thomasturnbull.com/">Thomas Turnbull</a> and I are giving a presentation about <a href="http://chicago2011.drupal.org/sessions/making-beautiful-maps">how to make your maps beautiful in Drupal</a> on March 9th Wednesday at 1PM. This will be focusing on what are the many different levels of customizations you can do to get a look for your maps that best fits in with the design of your site. The audience of this presentation spans across site builders, themers, and developers. We will talk about many different modules like <a href="http://drupal.org/project/openlayers">OpenLayers</a> and <a href="http://drupal.org/project/gmap">GMap</a> and tools like <a href="http://cloudmade.com/">Cloudmade</a> and <a href="http://tilemill.com/">TileMill</a>.</p>
<p>There will be a <a href="http://chicago2011.drupal.org/forum/building-drupal-geo-stack">BoF focused on GIS-related developers</a> in Drupal. This will focus on how we can, as a community, create a more consistent architecture and interoperability of geospatial functions like data storage, geocoding, and mapping.</p>
<p>On the flip side, we’ll have a BoF <a href="http://chicago2011.drupal.org/forum/drupal-geospatial-support">discussion for geospatial modules users</a> to converse about issues that happen, what are positives of modules, and general experiences.</p>
<p>I hope to see you in one of these places! Let me know if there are other things in this area that are happening that I have not listed.</p>
https://zzolo.org/2011/03/04/government-and-drupalcon
Government and DrupalCon
2011-03-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>In just some very short days, <a href="http://chicago2011.drupal.org/">DrupalCon Chicago 2011</a> will start and it will be huge! I have to say I am a bit nervous by 1000’s of Drupalers in one hotel; but I am totally excited as well and can’t wait to see what gets done in a week.</p>
<p>I just wanted to take a moment to highlight some of the activities going on around Drupal and Government at DrupalCon this year.</p>
<p>There’s been very big news recently concerning Drupal and government with the launch of <a href="http://openpublicapp.com/">Open Public</a>, a Drupal distribution aimed at government agencies. Jeff Walpole from Phase2 will be leading a <a href="http://chicago2011.drupal.org/sessions/introducing-openpublic-government-drupal-distribution">session on their new Open Public product</a>. This will be worth seeing.</p>
<p>And, as a new <a href="http://codeforamerica.org/author/alan/">fellow in the Code for America program</a>, I wanted to get the government folks together just to some bonding and seeing where people are, so I have proposed a <a href="http://chicago2011.drupal.org/forum/drupal-and-government">Drupal and Government BoF</a>.</p>
<p>I hope to meet a lot of people working in the government sector or who are interested in it. Also, if you really want to get into Drupal and Government, check out <a href="http://www.drupalgovdays.org/">Drupal Gov Days</a> in Belgium in April this year.</p>
https://zzolo.org/2011/03/03/code-review-sprint-on-friday-at-drupalcon
Code Review Sprint on Friday at DrupalCon
2011-03-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>See the <a href="http://chicago2011.drupal.org/forum/code-review-sprint-friday">forum sprint topic about Code Review for updates and questions</a></p>
<p>Friday, March 11, is the day of Sprints at <a href="http://chicago2011.drupal.org">DrupalCon Chicago 2011</a>. I know writing code is important, but its also really important to make sure we have more people on board to write that code. This involves doing code reviews. So, let’s do this on Friday!</p>
<p>We need people to <strong>do code reviews</strong>. All you have to do is feel like you have a solid grasp of writing modules and you can do this! We want to attack the <a href="http://drupal.org/project/issues/projectapplications?status=All&amp;categories=All">project application queue</a>.</p>
<p>Want to have your <strong>application reviewed in person</strong>? Come and join us and make this process more meaningful and speedy. Make sure you have <a href="http://drupal.org/node/1015224">started your application</a>.</p>
<p>And finally, theres lots of other things that can be done. Documentation always needs some extra love. It would be great to get some visual materials to help get more people to both contribute code and review code. Also, it would be super cool to think critically about how Drupal does outreach to get new code contributors, and how we can specially get a more diverse crowd contributing.</p>
<p><strong>Everyone is welcome!</strong></p>
https://zzolo.org/2011/02/02/seattle-municipal-tower
Seattle Municipal Tower
2011-02-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/seattle-municipal-tower.JPG" alt="" /></p>
<p>An amazing view of Mount Rainier from inside the Seattle Municipal Tower.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-122.329166667,47.5991666667]}</span>
</div>
https://zzolo.org/2011/01/17/drupal-highlights-amanda-luker
Drupal Highlights: Amanda Luker
2011-01-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I was lucky enough to live near Amanda (<a href="http://drupal.org/user/70470">mndonx</a>) for a few years in Minneapolis, where we worked on many projects together and often went to the coffee shop together when working from home got a bit maddening. Her current, main job is theming at <a href="http://www.advomatic.com/about/our-team/Amanda-Luker">Advomatic</a>.</p>
<p>Amanda definitely answered a lot of my Drupal theming questions along the way, but there is so much more as to why she deserves a quick thank you. As much as the technical challenges of Drupal are fun and the community is great, it is still very important to me to keep focus on why I do the work I do and this is why Amanda is so great. Amanda’s been a huge inspiration by being so involved and driven to use her talents for social change in local communities. I have always tried to use my powers for good, but I am very humbled when comparing myself to Amanda. She helped start <a href="http://freegeektwincities.org/">Free Geek Twin Cities</a> and <a href="http://www.boneshakerbooks.com/">Boneshaker Books</a> as well as being involved in countless local organisations and communities including the once was <a href="http://www.arisebookstore.org/">Arise! Books</a> (all Drupal sites by the way). I am not sure how she is able to balance all the awesome things she works on.</p>
<p>So, a big <strong>thank you</strong> goes out to Amanda for being an awesome friend and a huge inspiration both personally and professionally.</p>
<h3>About These Posts</h3>
<p><a href="http://zzolo.org/category/topics/drupal-highlights">Drupal Highlights</a> is a series of short posts saying a small token of appreciation to members in the Drupal community who might not otherwise get as much recognition as the more prominent contributors in the community do (though they totally deserve it as well). I think it is very important and strengthening for a community to showcase all the amazing things that happen in a community no matter how small. Please let me know if you want me to highlight someone you know.</p>
https://zzolo.org/2011/01/12/drupal-highlights-tom-macwright
Drupal Highlights: Tom MacWright
2011-01-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><em>This is the first in, hopefully, a many part series of short posts where I want to help highlight people in the <a href="http://drupal.org/community">Drupal community</a> who I think are awesome, but might not get much spotlight. See below for more explanation.</em></p>
<p>The first person I want to highlight and say thank you to is Tom MacWright (<a href="http://drupal.org/user/12664">tmcw</a>). I have worked with him on the <a href="http://drupal.org/project/openlayers">OpenLayers module</a> for over a year now and he has been crucial in making the project what it is today and teaching me lots of things along the way. He also is very active in the overall <a href="http://en.wikipedia.org/wiki/Web_mapping">web mapping</a> space in Drupal and outside with such technologies as <a href="http://mapnik.org/">Mapnik</a> and <a href="http://mapbox.com/">Mapbox</a>.</p>
<p>Tom has recently lead the upgrade of the OpenLayers module to Drupal 7 (still alpha) and is very active in the issue queue. He has definitely picked up a lot my slack. Tom was also the driving factor behind getting the OpenLayers module on a <a href="http://drupal.org/project/ctools">Ctools</a> architecture, which, though took me a while to see, has shown me the power of Ctools and the plugin goodness. This has lead me to starting a new project to build a common set of Ctools plugins for a <a href="http://drupal.org/project/mapping">general mapping architecture in Drupal</a>.</p>
<p>Tom is also one of the leads at <a href="http://developmentseed.org/team/tom-macwright">Dev Seed</a> behind awesome work like <a href="http://developmentseed.org/blog/2010/oct/13/adding-interactivity-complex-data-heavy-maps-drupal">live complex mapping in Drupal (TileLive)</a>, <a href="http://mapbox.com/tools/maps-stick">Maps on a Stick</a>, <a href="http://mapbox.com/tools/tilemill">TileMill</a>, and so much more. Though a lot of this work is still not all that accessible to the average web developer, Tom and his colleagues have and are making huge strides towards a future where custom, open source web mapping is easy for us all. This is just awe inspiring and deserves a great big <strong>thank you</strong>; keep up the awesome work.</p>
<h3>About These Posts</h3>
<p><a href="http://zzolo.org/category/topics/drupal-highlights">Drupal Highlights</a> is a series of short posts saying a small token of appreciation to members in the Drupal community who might not otherwise get as much recognition as the more prominent contributors in the community do (though they totally deserve it as well). I think it is very important and strengthening for a community to showcase all the amazing things that happen in a community no matter how small. Please let me know if you want me to highlight someone you know.</p>
https://zzolo.org/2010/12/31/new-years-eve-and-the-atlantic-ocean
New Years Eve and the Atlantic Ocean
2010-12-31T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/new-years-eve-and-the-atlantic-ocean.JPG" alt="" /></p>
<p>Ray and I stopped by the ocean on New Years Eve. We saw some dolphins.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-77.9055,33.998]}</span>
</div>
https://zzolo.org/2010/12/25/henry
Henry
2010-12-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/henry.JPG" alt="" /></p>
<p>Henry, the cat, being awesome.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[-84.0718333333,34.5345]}</span>
</div>
https://zzolo.org/2010/12/20/fondue
Fondue
2010-12-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/fondue.JPG" alt="" /></p>
<p>Parting fondue at Bains des Paquis with Thomas and Ellie.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[6.15233333333,46.209]}</span>
</div>
https://zzolo.org/2010/12/20/festival-arbres-and-amp-lumires
Festival Arbres & Lumières
2010-12-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/festival-arbres-and-amp-lumires.JPG" alt="" /></p>
<p>Geneve’s lakeside and riverside look great at night during the month of December because of the Tree and Light Festival.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[6.1465,46.2046666667]}</span>
</div>
https://zzolo.org/2010/12/12/saas-fee
Saas Fee
2010-12-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/saas-fee.JPG" alt="" /></p>
<p>The immense valley that Saas Fee is in.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[7.92266666667,46.1193333333]}</span>
</div>
https://zzolo.org/2010/12/11/near-the-peak
Near the Peak
2010-12-11T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/near-the-peak.JPG" alt="" /></p>
<p>It’s cold, near the top, but really just at the rotating restaurant.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[7.90466666667,46.0578333333]}</span>
</div>
https://zzolo.org/2010/12/03/shelter-centre-at-the-un
Shelter Centre at the UN
2010-12-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/shelter-centre-at-the-un.JPG" alt="" /></p>
<p>The whole Shelter Centre crew at the United Nations Palais.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[6.13866666667,46.2225]}</span>
</div>
https://zzolo.org/2010/11/27/snowy-bikes
Snowy Bikes
2010-11-27T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/snowy-bikes.JPG" alt="" /></p>
<p>Snow and bikes do mix; Ellie looks determined.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[6.14166666667,46.1853333333]}</span>
</div>
https://zzolo.org/2010/11/21/drupal-and-code-for-america
Drupal and Code for America
2010-11-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I recently received a <a href="http://codeforamerica.org/">Code for America fellowship</a> which starts in January of next year (2011). Code for America is a new organization and program aimed at bringing together innovators in technology (specifically web-based) with local governments around the US. It’s that whole <a href="http://en.wikipedia.org/wiki/E-Government">Gov 2.0 thing</a>. You can <a href="http://www.youtube.com/watch?v=qkceyKlYrJo">watch Tim O’Reilly and others describe it</a>.</p>
<h3 id="open-source-and-government">Open Source and Government</h3>
<p>I am really excited about this opportunity! I get to be injected in bringing open source and open data into city governments, which is something that I have been interested in for quite some time.</p>
<p>I remember being at <a href="http://www.aspirationtech.org/events/devsummit08">NPDev</a> (an awesome conference) a couple years back and talking with a woman who worked (or had worked) in the Brazilian government and she described how they had totally embraced open source software and were making policies around it. She also described other countries in South America that were going down the same road. And I am remember thinking how far off this felt from being done in the United States, and how sad and disappointing that was for me. But in 2 short years, through the work of so many awesome people, open source has found its way into our governments so much more than I could have ever imagined, from local to federal.</p>
<p>Drupal specifically is one of the best examples of how open source has found its way into our government. <a href="http://www.whitehouse.gov/">Whitehouse.gov</a> is such a prominent example, and was reinforced by the <a href="http://sf2010.drupal.org/conference/sessions/open-source-government">keynote given by David Cole in SF</a>. Other examples include <a href="http://www.nysenate.gov/">NY Senate</a>, <a href="http://recovery.commerce.gov/">Recovery at Commerce</a>, <a href="http://it.usaspending.gov/">US IT Dashboard</a>, <a href="http://data.gov.uk/">UK Data</a>, and <a href="http://groups.drupal.org/node/19885">the list goes on</a>.</p>
<h3 id="drupal-and-code-for-america">Drupal and Code for America</h3>
<p>Logistically, being a fellow means I will be in San Francisco for the next year working with some <a href="http://codeforamerica.org/2010/11/01/2011-cfa-fellows/">awesome, talented people</a> on some really <a href="http://codeforamerica.org/cities/">exciting projects</a>. Tentatively (and most likely), I will be on the <a href="http://codeforamerica.org/Seattle">Seattle</a> project with Chach and Anna, which means I will be in Seattle for February talking directly with the government there.</p>
<p>So, what does this mean for Drupal, or rather, what do I want to do for Drupal because of this? Well, I can’t be certain yet, but there is a very high probably that we will be using Drupal for our project. <a href="http://drupal.org/user/50674">Chach</a> is a seasoned Drupalista, and I am confident that Anna will love Drupal.</p>
<h4 id="drupal-meetups">Drupal Meetups</h4>
<p>So, first off, I will be in new physical locations where I know there are some great Drupalers in the areas (both the <a href="http://groups.drupal.org/bay-area">Bay Area</a> and <a href="http://groups.drupal.org/seattle">Seattle</a>). I can’t wait to get involved in the local community and come by the monthly meet ups and have some beers and talk Drupal.</p>
<h4 id="drupal-distribution-for-cities">Drupal Distribution for Cities</h4>
<p>One of the goals of the CfA project is create solutions that other cities can easily use to benefit their citizens. In fact, the <a href="http://codeforamerica.org/2010/09/08/announcing-civic-commons/">Washington DC project</a> is focused on building on <a href="http://civiccommons.com/">Civic Commons</a> a platform to distribute these sort of technologies. Given that we do move forward with Drupal, there is a great chance that we will create a <a href="http://drupal.org/project/Installation+profiles">Drupal distribution</a> (aka installation profile) for our solution; this will make it really easy for other cities (or whoever) to have this great application up and running quickly. For those of you not in the know, a <a href="http://drupal.org/project/Installation+profiles">Drupal distribution</a> is a set of preconfigured modules, themes, etc. that is a much more functional site out of the box than Drupal core.</p>
<h4 id="custom-modules">Custom Modules</h4>
<p>Drupal has a vibrant community which produces great <a href="http://drupal.org/project/modules">supplemental modules</a>, many of which we will use for our solution. But there is a really good chance that we will need to create some new, custom modules for the site that will be abstract enough to be contributed back to the community. These could be modules that integrate with data API’s, visualization modules, or maybe site administration enhancements. Of course it’s hard to say without gathering information first, but I am very excited.</p>
<h4 id="lasting-connection">Lasting Connection</h4>
<p>This year at CfA will be really exciting and challenging. It’s also the first year of the program, so there are lots of unknowns, but also more opportunity for myself and the other fellows to shape the program going forward. I am hoping that I can be a positive agent in creating a solid, lasting connection between Code for America and Drupal, much like the amazing involvement that the Drupal community has with <a href="http://groups.drupal.org/google-summer-code-2010">Google’s Summer of Code</a>.</p>
<h3 id="you-can-get-involved">You Can Get Involved</h3>
<p>Code for America is more than just connecting the fellows. There’s <a href="http://codeforamerica.org/how-to-help/">lots of ways you can get involved</a>. Also, you can follow our progress and help out by going to the <a href="https://github.com/cfalabs">CfA GitHub space</a>. Or, feel free to <a href="http://zzolo.org/contact">contact me directly</a> if you have any questions.</p>
<p>I’ll try to keep everyone updated with all these exciting developments in the next year!</p>
https://zzolo.org/2010/10/24/berlin-street-art
Berlin Street Art
2010-10-24T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/berlin-street-art.JPG" alt="" /></p>
<p>Why not.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[13.4026666667,52.5408333333]}</span>
</div>
https://zzolo.org/2010/08/24/help-drupal-grow
Help Drupal Grow
2010-08-24T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><strong><a href="http://cph2010.drupal.org/sessions/help-drupal-grow-reviewing-cvsgit-applications">BoF</a> to learn how to review code contributions on Thursday 26 August 2010 at 16:00 at DrupalCon Copenhagen.</strong></p>
<p>At the <a href="http://cph2010.drupal.org/news/core-developer-summit">Core Developers Summit</a> on Sunday (22 August 2010), <a href="http://drupal.org/user/24967">webchick</a> gave a presentation about the CVS application process and what was wrong with it and what was valuable and needs to remain (there’s a video somewhere of it). One of the impetuses for this talk is the <a href="http://groups.drupal.org/drupal-org-git-migration-team">git migration</a> that is happening for the <a href="http://drupal.org">drupal.org</a> infrastructure, because it offers us an opportunity to rethink our code contribution application process (aka CVS application process).</p>
<p>The agreed upon process is not a complete upheavel of our current mechanism, but does help address a few issues. I am sure there will be some issues created, but the basics are the following:</p>
<ul>
<li>Any user that agrees some basic things, like about licenses and best practices, can actually commit to the Drupal git repository.</li>
<li>Users cannot create releases of their projects without going through a code review process.</li>
</ul>
<p>Basically what this helps resolve is that drupal.org will be able to offer a very basic place for anyone to store versioned code with very little barriers, instead of code being put on something like <a href="http://github.com/">GitHub</a>. This also will mean that code can have most of the drupal.org project features, like queues, and can be reviewed a lot more easily. But we still will need to review code to allow for users to create real releases. And unfortunately this is the biggest bottleneck of the process.</p>
<p><strong>The CVS application queue is only growing</strong>. We (the Drupal community) need the help of experienced (but not necessarily expert) module developers and themers that have a good attitude to help new contributors to Drupal. This is a critical time for people who come into the community and it is important to have it be a positive experience (see <a href="http://drupal.org/node/703116#comment-2928066">my longer comment about this</a>).</p>
<p>There are a number of things that can be done to help make this review process easier for both reviewers and applicants, such as more complete documentation and automatic coder reviews, but ultimately we can’t completely remove the human element of it, at least for a while. As suggest by webchick, I have set up a <a href="http://cph2010.drupal.org/sessions/help-drupal-grow-reviewing-cvsgit-applications">BoF</a> for Thursday at 16:00 to help teach people how to be a reviewer; if you are in Copenhagen, please come by; if not, read <a href="http://groups.drupal.org/node/88599#comment-277964">this</a> and go ahead and start reviewing!. It’s really fun.</p>
<p>References:</p>
<ul>
<li><a href="http://groups.drupal.org/node/88599#comment-277964">Very basic instructions on how to get started</a>.</li>
<li><a href="http://zzolo.org/thoughts/applying-drupal-cvs-account">My other post about what I look for when reviewing</a></li>
<li><a href="http://drupal.org/project/issues/cvsapplications">CVS application queue</a> (you can start right now!)</li>
</ul>
https://zzolo.org/2010/08/19/drupal-geo-goodness-in-copenhagen
Drupal Geo-Goodness in Copenhagen
2010-08-19T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>In just a few short days, <a href="http://cph2010.drupal.org/">DrupalCon Copenhagen 2010</a> will begin. I am super excited, especially since I was really fortunate enough to get a <a href="http://cph2010.drupal.org/news/scholarships">scholarship</a> from the <a href="http://association.drupal.org/">Drupal Association</a>. I am still a bit weary of the possibility of being <a href="http://twitter.com/zzolo/statuses/12245442220">stranded because of a volcano</a> again.</p>
<p>There is a lot happening in the Drupal world around geospatial-related technologies and putting a sense of place to data (I never know the right term to encompass all that). And fortunately, there are a couple of geospatial related events going on at Copenhagen, and hopefully lots of ad hoc discussions in the hallway. No matter your expertise, if you are interested, please come on out, and feel free to stop and ask questions (though I can’t promise I have all the answers).</p>
<h3 id="mapping-in-drupal-with-openlayers">Mapping in Drupal with OpenLayers</h3>
<p>Myself and <a href="https://drupal.org/user/125573">Thomas Turnbull</a> will be giving a presentation on <a href="http://cph2010.drupal.org/sessions/mapping-drupal-openlayers">Mapping in Drupal with OpenLayers</a> which will focus on giving an overview of how the module works, alongside a live demo of the cool functionality that this module offers. It will be focused for mostly people that have not used the module before, but given time will discuss some architecture as well.</p>
<p>You can even get a sneak peak at the <a href="http://github.com/zzolo/openlayers-presentation-dccph2010">presentation on GitHub</a> (not finished yet). You can also put together your own demo site with the <a href="http://github.com/zzolo/ol_dccph2010_demo">module, make, script, feature set extravaganza on GitHub</a>.</p>
<p>The presentation will be <strong>25 August 2010 at 13:30 in the VPS.NET room</strong> (right after Rasmus’ crowd-sourced keynote).</p>
<h3 id="drupal-and-geo-stuff-bof">Drupal and Geo-Stuff BoF</h3>
<p>I have also reserved a BoF space to discuss the <a href="http://cph2010.drupal.org/sessions/drupal-and-geographic-technologies">state of Drupal and geospatial things</a>. It’ll be a very open discussion, but ideally we will focus on the following:</p>
<ul>
<li>The state of the Drupal GeoCMS.</li>
<li>What is missing?</li>
<li>What the future holds?</li>
<li>How do we get there?</li>
</ul>
<p>The BoF will be <strong>25 August 2010 at 16:00 in the BoF Space 4</strong>.</p>
https://zzolo.org/2010/08/08/issue-summaries-on-drupal-org
Issue Summaries on Drupal.org
2010-08-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have the great honor of attending <a href="http://cph2010.drupal.org/">DrupalCon Copenhagen</a> in a couple weeks, via a <a href="http://cph2010.drupal.org/news/scholarships">scholarship</a> again! I am still mad for missing DrupalCon San Francisco a few months ago due to a stupid volcano. Like in SF, there is a <a href="http://cph2010.drupal.org/news/core-developer-summit">Core Developer Summit</a>, and like <a href="http://zzolo.org/thoughts/block-instances">before</a> I have put together a basic set of slides to address a simple, but important topic: <strong>The unwieldy issues with up to 400+ comments</strong>. Embedded presentation below:</p>
<iframe src="https://docs.google.com/present/embed?id=dg8w8xs8_3fnr4rcd6" frameborder="0" width="410" height="342">
</iframe>
https://zzolo.org/2010/07/20/picnic-in-campel
Picnic in Champel
2010-07-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/picnic-in-campel.JPG" alt="" /></p>
<p>A really great afternoon picnic with the Shelter Centre crew.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[6.15816666667,46.1891666667]}</span>
</div>
https://zzolo.org/2010/06/21/swiss-italia-rail
Swiss-Italia Rail
2010-06-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/swiss-italia-rail.JPG" alt="" /></p>
<p>A lucky shot while on the train, traveling through beautiful mountains.</p>
<div class="location">
<span class="geojson"></span>
</div>
https://zzolo.org/2010/06/19/muran-rooster
Muran Rooster
2010-06-19T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/muran-rooster.JPG" alt="" /></p>
<p>A great Murano glass mosaic of a rooster.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[12.35,45.4518333333]}</span>
</div>
https://zzolo.org/2010/06/18/venice-sunset
Venice Sunset
2010-06-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/venice-sunset.JPG" alt="" /></p>
<p>The sun sets in Venice.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[12.339,45.4335]}</span>
</div>
https://zzolo.org/2010/06/16/the-quiet-hills
The Quiet Hills
2010-06-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/the-quiet-hills.JPG" alt="" /></p>
<p>The amazingly quiet and relaxing hills outside Sienna.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[11.3003333333,43.28]}</span>
</div>
https://zzolo.org/2010/06/16/marble-jesus
Marble Jesus
2010-06-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/marble-jesus.JPG" alt="" /></p>
<p>Amazing marble work at the Siena Duomo.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[11.3286666667,43.3173333333]}</span>
</div>
https://zzolo.org/2010/06/14/shade
Shade
2010-06-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/shade.JPG" alt="" /></p>
<p>A split open tree at the botanical gardens in Catania.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[15.084,37.5148333333]}</span>
</div>
https://zzolo.org/2010/06/13/mount-etna
Mount Etna
2010-06-13T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/mount-etna.JPG" alt="" /></p>
<p>The constant, steady heat of Mount Etna and the old lava flows of past eruptions.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[15.0563333333,37.7145]}</span>
</div>
https://zzolo.org/2010/06/02/making-a-drupal-module-fully-translatable
Making a Drupal Module Fully Translatable
2010-06-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><em>Drupal 6. Please note that most of this is sound advice but that some of it is still being debated as far as what is best practice, specifically how to ensure that exportable structures are translatable. I encourage you to leave and read the comments.</em></p>
<h3 id="the-tools">The Tools</h3>
<h4 id="drupals-core-function-t">Drupal’s Core Function: <strong><code>t()</code></strong></h4>
<p>If you have written a module, you should be familiar with <a href="http://api.drupal.org/api/function/t">t()</a>. Almost every interace string you write in your module should be wrapped with <strong><code>t()</code></strong>. This function creates a mechanism so that the core module, locale, can offer translations for non-English languages. Without using the <strong><code>t()</code></strong> function, Drupal would have no idea what strings are translatable and this would be very limiting for sites that were not in English (or not just in English).</p>
<p>The limiting nature of <strong><code>t()</code></strong> is that there is no identification on strings. This means that Drupal is not really keeping track of changes in a string and there is no way to remove old strings that are no longer needed on the site. This is a bad thing for user-defined strings, strings that are entered into the interface, for example the title of a menu item, since it can change often.</p>
<h4 id="the-i18n-module">The i18n Module</h4>
<p>The <a href="http://drupal.org/project/i18n">i18n module</a> (i18n is used based on the number of characters in the word internationalization), offers a set of modules to make Drupal a much better platform for multilingual sites. It offers the ability to translate some of the main structures of Drupal, like menus, taxonomies, blocks, and variables, as well as a more usable interface for translating.</p>
<p>The i18n module also offers a mechanism for translating strings that are based on identifiers for strings. The <strong><code>i18nstrings($name, $string, $langcode = NULL)</code></strong> function allows for better management of user-defined strings.</p>
<h3 id="the-problems">The Problems</h3>
<h4 id="translatable-strings-in-code">Translatable Strings in Code</h4>
<p>Though this problem is solved in core, it is still valid to point out in all of this. Interface strings (and other messages) that are defined in code, need to be translatable.</p>
<h4 id="user-defined-strings">User-Defined Strings</h4>
<p>Interface strings and messages that are inputted by the user need to be able to be translated. These almost always live in the database. The main issue here is that there needs to be a mechanism to identify each inputted string so that changes can be maintained properly.</p>
<h4 id="denoting-translatability">Denoting Translatability</h4>
<p>With modules that utilize a flexible plugin architecture or other dynamic system, one big issue is how to track what fields (or other data points) need to be translatable. This is very important to ensure that making something translatable is not hard-coded.</p>
<h4 id="exported-data">Exported Data</h4>
<p>Recently (well, Views has done this well for a while), there has been a lot of work towards making Drupal structures that have the ability to be imported and exported. The main benefit of this is that it allows for setting-type structures to live in and be maintained in code. In turn, this means that a data structure that may contain interface strings and messages can be stored in either code or in the database.</p>
<h3 id="the-solutions">The Solutions</h3>
<h4 id="the-t-function">The <strong><code>t()</code></strong> Function</h4>
<p>The Drupal core <strong><code>t()</code></strong> function handles the ability to translate static strings within module code. For instance:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"> <span class="s1">'#description'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'This is an example for the t() function.'</span><span class="p">),</span></code></pre></figure>
</div>
<h4 id="i18n-module">i18n Module</h4>
<p>The i18n module provides the <strong><code>i18nstrings()</code></strong> function to allow a module to translate its user-defined strings (see below about Drupal variables). Please see <a href="http://drupal.org/node/789286">Translating user defined strings for module developers</a> for more information and example code. Do keep in mind that you will want to create a wrapper function, unless you want your module to depend on the i18n module. For example:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="k">function</span> <span class="n">yourmodule_translate</span><span class="p">(</span><span class="nv">$name</span><span class="p">,</span> <span class="nv">$string</span><span class="p">,</span> <span class="nv">$langcode</span> <span class="o">=</span> <span class="kc">NULL</span><span class="p">,</span> <span class="nv">$textgroup</span> <span class="o">=</span> <span class="s1">'yourmodule'</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Check for existence of i18nstrings function, then
</span>
<span class="c1">// translate if available.
</span>
<span class="k">return</span> <span class="nb">function_exists</span><span class="p">(</span><span class="s1">'i18nstrings'</span><span class="p">)</span> <span class="o">?</span>
<span class="nf">i18nstrings</span><span class="p">(</span><span class="nv">$textgroup</span> <span class="mf">.</span> <span class="s1">':'</span> <span class="mf">.</span> <span class="nv">$name</span><span class="p">,</span> <span class="nv">$string</span><span class="p">,</span> <span class="nv">$langcode</span><span class="p">)</span> <span class="o">:</span>
<span class="nv">$string</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<p>The i18n module also provides a way to more easily translate variables that your module may store. The mechanism that tells the i18n about your variables is a variable itself, <code>$conf\['i18n_variables'\]</code>, usually set in the settings.php file. Your module can circumvent this, by utilizing <strong><code>hook_init()</code></strong>. For example:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="k">function</span> <span class="n">yourmodule_init</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Get i18n variable array.
</span>
<span class="k">global</span> <span class="nv">$conf</span><span class="p">;</span>
<span class="c1">// Add your module's translatable variables
</span>
<span class="nv">$conf</span><span class="p">[</span><span class="s1">'i18n_variables'</span><span class="p">][]</span> <span class="o">=</span> <span class="s1">'yourmodule_variable_1'</span><span class="p">;</span>
<span class="nv">$conf</span><span class="p">[</span><span class="s1">'i18n_variables'</span><span class="p">][]</span> <span class="o">=</span> <span class="s1">'yourmodule_variable_2'</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<h4 id="schema-or-plugin-notation">Schema or Plugin Notation</h4>
<p>For Views 3, there is a <a href="http://drupal.org/node/357529">discussion</a> on putting in a plugin system for translators. This is pretty awesome, though may be overkill for most modules. But more specifically this issue also deals with how to denote things as translatable so that they can be automatically ran through the given translation system.</p>
<p>The best solution here is hard to define. It is very dependent on architecture. If you are using a database table for specific data structures (like with <a href="http://drupal.org/project/ctools">CTools</a>), it would probably be best to simply provide a <code>'translatable' => TRUE</code> field to the schema that can be referenced when displaying values. For example:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"> <span class="s1">'description'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'type'</span> <span class="o">=></span> <span class="s1">'text'</span><span class="p">,</span>
<span class="s1">'not null'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="s1">'description'</span> <span class="o">=></span> <span class="s1">'Layer description.'</span><span class="p">,</span>
<span class="s1">'translatable'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="p">),</span></code></pre></figure>
</div>
<p>But this still poses some questions like: How to handle serialized data? Handling customized forms?</p>
<h4 id="managing-t-in-exports">Managing <strong><code>t()</code></strong> in Exports</h4>
<p>This is the area that seems to most questionable in my mind. Most of these ideas and the proposed solution is taken from a <a href="http://drupal.org/node/750810">discussion</a> for the OpenLayers module.</p>
<p>The problem with exports is that they are exported as code and can be used either as code or imported back into the system via the interface. At least this is the common use of exportable structures. So, we need a way that ensures that structures in code are translatable and structures in the database are translatable, but without overlapping the two.</p>
<p>My proposed solution is then this:</p>
<ul>
<li>Provide export with the <strong><code>t()</code></strong> embedded into it; this will be determined by the mark of translatability. This ensures that structures that live as code are translatable.</li>
<li>On import, strip out the <strong><code>t()</code></strong>.</li>
<li>Finally, on display, check where the structure lives, and if in database, then translate (taking into account everything above).</li>
</ul>
<p>You might say that: Why not just translate on display? The problem here, as I see it, is that there are probably already structures living code that have not been exported, like default Views or OpenLayers layers, and taking these out of the usual Drupal t() paradigm is dangerous. Also, this means that structures are translatable without a third-party module.</p>
<h3 id="in-conclusion">In Conclusion</h3>
<p>I hope this makes everyone think about ensuring that their modules are fully translatable because the world is full of non-English internet users.</p>
<p>I’ll also be the first to admit that I am not doing this will all my modules. It took me a long time to research most of this information. I think it is important to start to work towards making these methods standardized and more obvious to module developers.</p>
<p>It’s also important to look towards what is happening in Drupal 7 and how this might influence these structures. Honestly, I am in the dark as far as what changes are happening in D7 as far as localization goes.</p>
https://zzolo.org/2010/05/10/munich
Munich
2010-05-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/munich.JPG" alt="" /></p>
<p>A great view from St. Peter’s tower.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[11.5756666667,48.1368333333]}</span>
</div>
https://zzolo.org/2010/04/21/moving-to-mecury
Moving to Mecury
2010-04-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have always dreamed of going into space. I often ask people if they would go out into space if given the chance; I think it gives a small bit of insight into someone’s personality. I doubt I will be able to make it into space in my lifetime, though I think it’ll be close. But, if I can’t go, this site can still move to Mercury.</p>
<p>Pretty cheesy intro, I know. What this actually means is that I just moved this site from being hosted at <a href="http://dreamhost.com/">DreamHost</a> to <a href="http://aws.amazon.com/">Amazon Cloud AWS</a> with <a href="http://www.chapterthree.com/">Chapter Three</a>’s <a href="http://getpantheon.com/">Pantheon Mercury</a>. The main reason to do this was performance, but I will discuss the pros and cons of this switch below.</p>
<h3 id="performance">Performance</h3>
<p>I have done some very basic benchmarking with <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">AB</a> (Apache Benchmarking). By no means is this a rigorous test, but it does add some insight into the performance increase. I ran <code>ab</code> from a third-party server that had more consistent bandwidth and each test is for the homepage; I am running a small (default) instance. A very rough way to read all this is to say I get <strong>50x the performance with Mercury</strong>.</p>
<table>
<thead>
<tr><th>Test and Metric</th><th>DreamHost</th><th>Mercury</th><th>Increase</th></tr>
</thead>
<tbody>
<tr><td><strong>ab -n 100 -c 10</strong></td><td colspan="3"></td></tr>
<tr><td> _Failed requests_</td><td>29</td><td>0</td><td><strong>~2,900%</strong></td></tr>
<tr><td> _Requests per second_</td><td>0.98</td><td>19.81</td><td><strong>2,021%</strong></td></tr>
<tr><td> _Time per request_</td><td>1024.6ms</td><td>50.490ms</td><td><strong>2,029%</strong></td></tr>
<tr><td><strong>ab -n 1000 -c 10</strong></td><td colspan="3"></td></tr>
<tr><td> _Failed requests_</td><td>321</td><td>0</td><td><strong>~32,100%</strong></td></tr>
<tr><td> _Requests per second_</td><td>0.87</td><td>41.09</td><td><strong>4,723%</strong></td></tr>
<tr><td> _Time per request_</td><td>1150.489ms</td><td>24.335ms</td><td><strong>4,728%</strong></td></tr>
<tr><td><strong>ab -n 1000 -c 50</strong></td><td colspan="3"></td></tr>
<tr><td> _Failed requests_</td><td>7</td><td>0</td><td><strong>~700%</strong></td></tr>
<tr><td> _Requests per second_</td><td>44.86</td><td>112.15</td><td><strong>250%</strong></td></tr>
<tr><td> _Time per request_</td><td>22.292ms</td><td>8.916ms</td><td><strong>250%</strong></td></tr>
<tr><td><strong>Average</strong></td><td colspan="3"></td></tr>
<tr><td> _Failed requests_</td><td>119</td><td>0</td><td><strong>~11,900%</strong></td></tr>
<tr><td> _Requests per second_</td><td>15.57</td><td>57.68</td><td><strong>370%</strong></td></tr>
<tr><td> _Time per request_</td><td>732.46ms</td><td>21.91ms</td><td><strong>3,343%</strong></td></tr>
<tr><td><strong>Increase average</strong></td><td></td><td></td><td><strong>5,204%</strong></td></tr>
</tbody>
</table>
<h3 id="what-is-mercury">What is Mercury?</h3>
<p><a href="http://getpantheon.com/mercury/what-is-mercury">Mercury</a> is a set of server configurations, most commonly in the form of an <a href="http://en.wikipedia.org/wiki/Amazon_Machine_Image">AMI</a>, that creates a web host for a Drupal site that focuses on performance and uses other technologies such as <a href="http://pressflow.org/">Pressflow</a>, <a href="http://varnish-cache.org/">Varnish</a>, and <a href="http://lucene.apache.org/solr/">Apache Solr</a>.</p>
<p>In a more basic sense, if you wanted to set up a server to host a Drupal site and you wanted to get the most performance out of it (as if someone didn’t want to); Mercury does all the initial configurations for you.</p>
<h3 id="why-mercury">Why Mercury?</h3>
<p>Well, obviously the performance is a big deal. But in reality, this blog doesn’t see that much traffic, so there are other reasons as well. Overall, its the combination of <acronym title="Amazon Web Services">AWS</acronym> and Mercury.</p>
<p>I wanted control, but I am lazy. I now have complete control over the server that my site lives on, for better or for worse. This is a big change form DreamHost as I was just a small user on a big server there. The control and flexibility is great. But I also don’t want to spend a lot of time doing systems administration for my blog, hence why I had chosen DreamHost in the first place. But Mercury provides a great middle ground: it supports the cloud infrastructure giving me the flexibility of my own server, but it does all the hard parts of configuring the server to host a Drupal website.</p>
<h3 id="why-dreamhost">Why DreamHost?</h3>
<p>I still like DreamHost. I think they are a good company and offer some of the best services for their price range. I have heard a lot of different opinions about DreamHost but I still stand by them.</p>
<p>For your 5 USD a month you get a fancy interface with lots of goodies and lots of features, and practically unlimited space and transfer rates (though it doesn’t work out to be as good as it sounds). They also give you lots of control over your account considering that it is shared hosting.</p>
<h3 id="making-the-switch">Making the Switch</h3>
<p>Overall, this was really easy. As this was my first use of AWS, most of my time was just figuring out the basics of the cloud. Here are the rough steps to migrating a site (see <a href="http://groups.drupal.org/node/33078">this documentation</a>).</p>
<ol>
<li>Backup your site and database.</li>
<li>Create AWS account.</li>
<li>Make Key Pair.</li>
<li>Create an instance with the Mercury AMI.</li>
<li>Log into the instance and read the included <code lang="bash">/root/README.txt</code> file. For those new to AWS, you have to use your key pair file to ssh in, for instance: <code lang="bash">ssh -i /path/to/local/pem/file root@public.dns.for.your.instance</code></li>
<li>The default site is found at <code lang="bash">/var/www/</code>, I would suggest copying this somewhere just in case.</li>
<li>Create a root password for MySQL. Set up a new database and put in your database dump.</li>
<li>Copy your files, modules, and themes over the existing site.</li>
<li>Update settings.php.</li>
<li>Run Druapl update: <code lang="bash">drush updb</code></li>
<li>This should do it. Use your public DNS for your instance to view the site.</li>
<li>Set up an Elastic IP (a.k.a. dedicated IP) and update DNS and other things as needed.</li>
</ol>
<h3 id="final-thought">Final Thought</h3>
<p>Overall, Mercury is awesome and really takes out a huge amount of work in setting up an environment for Drupal with some great services that focuses on performance and I can really tell the difference in making the switch.</p>
<p>Do note, I have switched from an environment where I don’t have to worry about much, to having to know about it all. Don’t try to switch to AWS and Mercury unless you know how to set up a web server from scratch; Pantheon may do a lot of the heavy lifting, but there is no GUI for it. If you are not that technical, go with hosting that takes care of these things. <strong>If you have the knowledge and the resources, definitely use Mercury to get the most performance out of Drupal</strong>.</p>
https://zzolo.org/2010/04/14/block-instances
Block Instances
2010-04-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Here it is: my simple, unexciting, unoriginal <a href="http://docs.google.com/present/embed?id=dtrk49x_1d7hbjkgr">slides</a> on how we need to get <a href="http://drupal.org/node/79571">Block Instances</a> in Drupal core.</p>
https://zzolo.org/2010/03/29/applying-for-a-drupal-cvs-account
Applying for a Drupal CVS Account?
2010-03-29T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have recently discovered the great joy of <a href="http://drupal.org/project/issues/cvsapplications?categories=All">reviewing CVS applications for Drupal</a>. I am serious, I love looking at code and directing Drupal developers early on into using Drupal Coding standards and best practices for Drupal development. I have also noticed a number of similar things, so I would like to write a quick post about some basics as to creating a Drupal module that can get a CVS account.</p>
<p>Please note that, these are not necessarily a part of the <a href="http://drupal.org/cvs-application/requirements">CVS Application Requirements</a>, and I do NOT speak for the Drupal Infrastructure team or other reviewers of applications. This is just things that I notice and suggest when I do my review, and I feel are important when creating and contributing a Drupal module or theme, a lot of which can already be found on the often-overlooked <a href="http://drupal.org/node/539608">things to expect</a> (and I should add to as well). Also, I am quite aware that my code is not perfect, but that does not mean I am not capable of directing people in the right direction.</p>
<p>It may be good for perspective to tell you that, honestly, I don’t even install the module that I am reviewing most of the time; I just look at the code. I make the assumption that if you are sharing it, you have already used it and tested before applying with it. In some people’s eyes, this may seem irresponsible, but I feel it is a safe assumption to make.</p>
<h3 id="requirements-and-other-modules">Requirements and Other Modules</h3>
<p>As the number of contributed modules continually grows on <a href="http://druapl.org">drupal.org</a>, it is more and more important to ensure that new contributors have proved that they have looked at other modules and can describe what their modules do accurately.</p>
<ul>
<li>Make sure you read the <a href="http://drupal.org/cvs-application/requirements">CVS Application Requirements</a>!</li>
<li>A lot of this same information is in the <a href="http://drupal.org/node/539608">what to expect article</a> but is often overlooked.</li>
<li>Describe how you looked for other modules and ANY module that may do similar things. I need to know you at least looked.</li>
<li>Are you leveraging other modules in yours? There are a number of stable API modules in Drupal. If applicable, you should use them, or tell me why you are not.</li>
<li>Is your module a feature that should be a part of another module?</li>
<li>Tell me that you have read these pages and link to them.</li>
<li>This is all volunteer work, if you follow this stuff up front, you will save everyone time and make me much happier.</li>
</ul>
<h3 id="coding-standards">Coding Standards</h3>
<ul>
<li>Follow the <a href="http://drupal.org/coding-standards">Drupal Coding Standards</a>.</li>
<li>Note that the Drupal Coding Standards include <a href="http://drupal.org/node/172169">Javascript</a> and <a href="http://drupal.org/node/302199">CSS</a> files (among others).</li>
<li>Use 2 spaces, not tabs.</li>
<li>See <a href="http://drupal.org/coding-standards#concat">String Concatenations</a>.</li>
<li>Every text file that you put into the Drupal CVS repository should have the following at the top of the file: <strong>$Id$</strong> In code files, this will be within a comment. This automatically gets changed by the CVS packaging system to something like to include, the date, your name, etc.</li>
<li>All code files need to have a <a href="http://drupal.org/node/1354#files">@file docblock</a>.</li>
<li>All functions should have a <a href="http://drupal.org/node/1354#functions">docblock</a>.</li>
<li>Documenting hook implementations only need to reference the hook:</li>
</ul>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implements hook_help().
*/</span>
<span class="k">function</span> <span class="n">blog_help</span><span class="p">(</span><span class="nv">$section</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// ...
</span>
<span class="p">}</span></code></pre></figure>
</div>
<ul>
<li>Run your module through <a href="http://drupal.org/project/coder">Coder</a> to help automate some of this. Note that you can change the options when running your module through Coder.</li>
</ul>
<h3 id="drupal-module-basics">Drupal Module Basics</h3>
<p>Some basic coding patterns in <a href="http://drupal.org/node/231276">creating a Drupal module</a>.</p>
<ul>
<li>Look at Drupal core module files! These are the best examples of well-written code, hence why they are in core.</li>
<li>In the <a href="http://drupal.org/node/231036">.info file</a>, do NOT include the following, as they are added by the CVS packaging system.
<ul>
<li>version</li>
<li>project</li>
</ul>
</li>
<li><a href="http://drupal.org/node/323314">.install files</a> contain the following hook implementations if they are needed (and should not be in your .module file):
<ul>
<li><a href="http://api.drupal.org/api/function/hook_install">hook_install()</a></li>
<li><a href="http://api.drupal.org/api/function/hook_uninstall">hook_uninstall()</a></li>
<li><a href="http://api.drupal.org/api/function/hook_enable">hook_enable()</a></li>
<li><a href="http://api.drupal.org/api/function/hook_disable">hook_disable()</a></li>
<li><a href="http://api.drupal.org/api/function/hook_schema">hook_schema()</a></li>
</ul>
</li>
<li>Any significant HTML output needs to be run through the <a href="http://drupal.org/node/165706">theme layer</a>.</li>
</ul>
<h3 id="using-the-drupal-api">Using the Drupal API</h3>
<p>It is important to leverage the <a href="http://api.drupal.org">Drupal API</a> as much as possible (and to work towards changing it if you don’t like it).</p>
<ul>
<li>Use these functions correctly when needed. You will definitely use t() in your module, and at least one, if not all, of these API functions.
<ul>
<li><a href="http://api.drupal.org/api/function/t">t()</a></li>
<li><a href="http://api.drupal.org/api/function/l">l()</a></li>
<li><a href="http://api.drupal.org/api/function/url">url()</a></li>
<li><a href="http://api.drupal.org/api/function/watchdog">watchdog()</a></li>
<li><a href="http://api.drupal.org/api/function/drupal_set_message">drupal_set_message()</a></li>
</ul>
</li>
<li>The basic design pattern of input in Drupal, is filter output, not input. This means that do not alter input, but make sure that you filter any output to the screen that is user supplied. Know these functions and when to use them:
<ul>
<li><a href="http://api.drupal.org/api/function/check_plain">check_plain()</a></li>
<li><a href="http://api.drupal.org/api/function/check_markup">check_markup()</a></li>
<li><a href="http://api.drupal.org/api/function/filter_xss_admin">filter_xss_admin()</a></li>
</ul>
</li>
<li>Drupal has custom implementation of common PHP string functions to help support Unicode; see the functions in <a href="http://api.drupal.org/api/drupal/includes--unicode.inc/6">unicode.inc</a>.</li>
<li>Read <a href="http://drupal.org/writing-secure-code">writing secure code</a> and all its child pages! Seriously!</li>
</ul>
<h3 id="third-party-resources-and-licensing">Third-Party Resources and Licensing</h3>
<p>The general policy is not to allow third-party resource into the CVS repository, so keep in mind the following:</p>
<ul>
<li>Do not put licensing information in your module anywhere. Anything that is put in the Drupal repository is automatically licensed at <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPLv2</a>. If you are concerned that your code will not be properly licensed while it is in the review process, then ask about it before upload (as I don’t know the best thing to do here).</li>
<li>If you have any images, or code that looks like third-party code, we will ask you about it; it would be easier to describe it up front.</li>
<li>Even if your third-party code is under a license that is compatible with Drupal, the general rule is not to allow it, so expect a discussion or just a plain “no”.</li>
</ul>
https://zzolo.org/2010/03/24/women-in-drupal
Women in Drupal
2010-03-24T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Today is <a href="http://findingada.com/">Ada Lovelace day</a>; the goal of today is to blog about great women in technology. Ada Lovelace is often considered the <a href="http://en.wikipedia.org/wiki/Ada_Lovelace">first computer programmer</a>, and as someone who loves to code, that’s a pretty big deal.</p>
<p>I would never consider myself an activist, but I have always been concerned with gender issues in our societies and specifically with technology. I think it’s very important to ensure that everyone is treated equal and with respect no matter gender or other qualities. I think by encouraging and supporting tech minorities, such as women, our community can only be stronger and more valuable to ourselves and others. So, I am happy to write on this subject, even if my body says go to sleep.</p>
<p>Like a lot of posts I have read today, it is very hard to pick just one woman that has made my life, both personal and technical, better. Being a part of the Drupal community means that I get to interact with some amazing woman (and men), and it would be unfair of me to pick just one. So, I want to briefly tell you about some of the fantastic woman in Drupal and how they have made my life better and this world a better place (in no particular order). Some of these women I know well, some just in passing, and some just because of the awesome work they do. This is just a handful of the woman in the Drupal community that deserve notability and only a fraction of the contributions that they make. Remember to encourage women on our community, as well as everyone else. In my opinion, to have a meaningful community, we need to have freedom from elitism, sexism, racism, prejudice, and just general discouragement.</p>
<ul>
<li><strong>Rebecca White: <a href="http://drupal.org/user/81067">becw</a></strong>
<ul>
<li>Bec is a good friend and former colleague who does some great work with web mapping and non-profits. She gets really excited about really nerdy things and is always eager to learn (and physically hurt me).</li>
</ul>
</li>
<li><strong>Amanda Luker: <a href="http://drupal.org/user/70470">mndonx</a></strong>
<ul>
<li>Amanda is a previous neighbor and friend. She does Drupal theming for <a href="http://www.advomatic.com/">Advomatic</a> and has taught me that there is more to life than Drupal, like cupcakes, dogs, and punk rock. We have spent countless hours in coffeeshops getting work done together and exchanging ideas. Amanda, myself, and a couple others started <a href="http://freegeektwincities.org/">Free Geek Twin Cities</a>.</li>
</ul>
</li>
<li><strong>Chacha Sikes: <a href="http://drupal.org/user/50674">chachasikes</a></strong>
<ul>
<li>Chach is a wonderful friend who works with <a href="http://www.gortonstudios.com/">Gorton Studios</a> and has been invaluable in describing and discussing what it’s like to be a woman in her field. She continually reminds me that Drupal is so much more than code, and I keep telling her that her code doesn’t pass the Coder rules. I try to have a good attitude when she has troubles dealing with some of the traditional attitudes of technology culture. She has recently started the <a href="http://garden.localbiology.org/">Drupal Garden Project</a>.</li>
</ul>
</li>
<li><strong>Allie Micka: <a href="http://drupal.org/user/15091">vauxia</a></strong>
<ul>
<li>Allie runs her own company, <a href="http://www.advantagelabs.com/">Advantage Labs</a>, which does amazing work in supporting non-profit organizations on a personal level, and focuses on teaching instead of building a product. Allie also has strong roots with GIS and the <a href="http://drupal.org/project/geo">geo module</a> and maintains many modules.</li>
</ul>
</li>
<li><strong>Angie Byron: <a href="http://drupal.org/user/24967">webchick</a></strong>
<ul>
<li>Angie is the Drupal 7 co-maintainer and is one of those people that makes you feel like you are totally inadequate (in a good way) because she just does so much. Even through all her amazing technical work and time in the Drupal community, she still manages to be one of the best examples of an inviting and friendly face to all people in the community, like a hot chocolate with marshmallows.</li>
</ul>
</li>
<li><strong>Addison Berry: <a href="http://drupal.org/user/65088">add1sun</a></strong>
<ul>
<li>I have this secret love for documentation that an old boss of mine instilled into me, and though I don’t contribute as much as I would like, when I don’t dream in code, its often of documentation. Addison has been a great leader in making Drupal documentation better and organizing a community around this often over-looked necessity.</li>
</ul>
</li>
<li><strong>Ariane Khachatourians: <a href="http://drupal.org/user/158886">arianek</a></strong>
<ul>
<li>Ariane has worked very hard recently to help get the documentation in Drupal 7 standardized and awesome.</li>
</ul>
</li>
<li><strong>Karen Stevenson: <a href="http://drupal.org/user/45874">KarenS</a></strong>
<ul>
<li>I just don’t even want to think of a world without CCK, let alone Date or Calendar.</li>
</ul>
</li>
<li><strong>Bonnie Bogle</strong>
<ul>
<li>Though Bonnie has not committed any code (that I know of), she was the main point person behind the very successful DCDC last year which brought Drupal events to a new level.</li>
</ul>
</li>
<li><strong>Jennifer Lampton: <a href="http://drupal.org/user/85586">jenlamption</a></strong>
<ul>
<li>Jennifer maintains a number of modules on <a href="http://drupal.org">drupal.org</a> such as the <a href="http://drupal.org/project/total_control">Total Admin module</a>. She is also one of the main coordinators of <a href="http://sf2010.drupal.org/">Drupalcon SF</a>.</li>
</ul>
</li>
<li><strong>Courtney Miller: <a href="http://drupal.org/user/5253">floatleft</a></strong>
<ul>
<li>I think Courtney may have the longest standing Drupal account on this list of community members (at 6.5 years). She is a talented and dedicated Drupal developer that is a partner at <a href="http://www.floatleft.org/">Float Left</a> which focuses on supporting the non-profit sector.</li>
</ul>
</li>
<li><strong>Colleen Carroll: <a href="http://drupal.org/user/171342">caroltron</a></strong>
<ul>
<li>Colleen helps drive large Drupal projects to victory at <a href="http://www.palantir.net/">Palantir</a>. And at a conference where most sessions were about the new, hottest (buggy) thing, Carol and John gave a great presentation on sustainable theming.</li>
</ul>
</li>
<li><strong>Katherine Bailey: <a href="http://drupal.org/user/172987">katbailey</a></strong>
<ul>
<li>Katherine works on the very handy <a href="http://drupal.org/project/quicktabs">QuickTabs</a> module and continually reminds me that I know nothing about Javascript.</li>
</ul>
</li>
<li><strong>Lin Clark: <a href="http://drupal.org/user/396253">linclark</a></strong>
<ul>
<li>Lin has recently made a great serious of <a href="http://lin-clark.com/">videos on Drupal 7</a> that you can see on her blog.</li>
</ul>
</li>
<li><strong>Laura Scott: <a href="http://drupal.org/user/18973">lauras</a></strong>
<ul>
<li>Co-founder of <a href="http://pingv.com/">PINGV</a>, Laura has done everything from providing documentation, helping maintain <a href="http://drupal.org">drupal.org</a>, to being an avid speaker on all things technology, Drupal, and business.</li>
</ul>
</li>
<li><strong>Stella Power: <a href="http://drupal.org/user/66894">stella</a></strong>
<ul>
<li>How would I be able to efficiently fill my need for correct tabs, spaces, and coding standards without the <a href="http://drupal.org/project/coder">Coder module</a>? I wouldn’t. An who doesn’t like a fancy Lightbox effect on their images? Not very many.</li>
</ul>
</li>
<li><strong>Isabell Schulz: <a href="http://drupal.org/user/354781">Isabell</a></strong>
<ul>
<li>Isabell was one of the main coordinators of <a href="http://paris2009.drupalcon.org/">Drupalcon Paris</a> last year and continues to work hard on coordinating Drupal events and ensuring that Drupal events are sustainable.</li>
</ul>
</li>
</ul>
<p>Thank you all for your contributions and support; my apologies for all the great people I have not mentioned. Happy Ada Lovelace Day!</p>
https://zzolo.org/2010/03/06/drupalcamp-spain-and-openlayers-presentation
DrupalCamp Spain and OpenLayers Presentation
2010-03-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Last weekend (26-28 Feb 2010) <a href="http://drupalcamp.es/">DrupalCamp Spain</a> happened in Barcelona at the great <a href="http://www.citilab.eu/visita/index.html">CitiLab</a> (<a href="http://picasaweb.google.com/lh/view?q=drupalcampspain&psc=G&filter=0#5442550697083810082">pic</a>), which is where <a href="http://barcelona2007.drupalcon.org/">DrupalCon Barcelona</a> happened a few years ago. I don’t have the exact numbers in front of me, but there was just about the same number of attendees for the DrupalCon a few years ago as there were for the DrupalCamp just a week ago (<a href="http://buytaert.net/album/drupalcon-barcelona-2007/group-picture">before</a> and <a href="http://picasaweb.google.com/lh/view?q=drupalcampspain&psc=G&filter=0#5443003473127829554">after</a>)! Drupal is getting huge!</p>
<p>The camp was wonderful. The organizers did a great, professional job. Though my Spanish is not very good at all, all the presenters did a great job and had a nice variety of topics. I met lots of wonderful people, both seasoned Drupal professionals and Drupal first-timers. Unfortunately my trip was short, but I did get to experience some of the beauty of Barcelona. And, of course, there was the <a href="http://www.flickr.com/photos/pcambra/4395995582/">poll-dancing Drupal gorilla</a> (pretty standard). Thanks for having me and for all the hard work!</p>
<h3 id="understanding-openlayers-presentation">Understanding OpenLayers Presentation</h3>
<p>I did a presentation on <a href="http://drupalcamp.es/sessions/building-maps-openlayers-drupal">Understanding OpenLayers and Drupal</a>. I think it went pretty well. I am still getting my sea legs (and by sea legs I mean ability to speak in front of people); but the room was packed, and I got to do my first <a href="http://prezi.com">Prezi</a> presentation. I am pretty pleased with Prezi, though it took some time to put it all together and stop thinking about things so linearly.</p>
<p>Below is an embedded version of the <a href="http://prezi.com/yjnjeokkbrtr/openlayers_drupal_v03/">presentation</a>; it actually starts on the second point. This is a presentation based on <a href="http://drupal.org/project/openlayers">OpenLayers 2.x</a> which is still in development but doing good thanks to the hard work of the developers. They took video at the camp, so I am assuming one day there will be a video which might help with understanding the presentation some.</p>
<div class="prezi-player"><style type="text/css" media="screen">.prezi-player { width: 650px; } .prezi-player-links { text-align: center; }</style><object id="prezi_yjnjeokkbrtr" name="prezi_yjnjeokkbrtr" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="650" height="500"><param name="movie" value="http://prezi.com/bin/preziloader.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="prezi_id=yjnjeokkbrtr&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no" /><embed id="preziEmbed_yjnjeokkbrtr" name="preziEmbed_yjnjeokkbrtr" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="650" height="500" bgcolor="#ffffff" flashvars="prezi_id=yjnjeokkbrtr&amp;lock_to_path=1&amp;color=ffffff&amp;autoplay=no" /></embed></object></div>
https://zzolo.org/2010/02/25/drupalchix-sticker-design-contest
DrupalChix Sticker Design Contest!
2010-02-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Spread the word; <a href="http://drupal.org/user/50674">Chach Sikes</a> and <a href="http://drupal.org/user/183570">Erika Stenrick</a> who work with <a href="http://gortonstudios.com/">Gorton Studios</a>, have just announced a <a href="http://groups.drupal.org/node/52728">DrupaChix Sticker Design Contest</a> for <a href="http://sf2010.drupal.org/">DrupalCon San Francisco</a> (sponsored by <a href="http://gortonstudios.com/">Gorton Studios</a>). This is a great opportunity for anyone to show off their design skills, and, more importantly, help support women in our Drupal community.</p>
<p>In case you aren’t in the know, <a href="http://groups.drupal.org/drupalchix">DrupalChix</a> is an awesome group dedicated to supporting existing women in the Drupal community as well as working towards getting more women involved in Drupal. Drupal has such a great community, but we could be so much better by getting more women (and other under-represented people) involved into Drupal.</p>
<p>The stickers will be made in mass quantity and distributed at DrupalCon San Francisco. Designs are due in by <strong>15 March 2009</strong>, so act quick! Post your entries to <a href="http://groups.drupal.org/node/52728">this thread</a>. And for the non-designers, voting begins on <strong>17 March 2010</strong>.</p>
https://zzolo.org/2010/02/17/tip-for-managing-variables-in-a-drupal-module
Tip for Managing Variables in a Drupal Module
2010-02-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><strong>Update via Garrett Albright</strong> (see comments)</p>
<p>Just a quick tip for managing variables in a Drupal module. <strong>Please prefix your variables with your module name</strong>. For example:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">variable_set</span><span class="p">(</span><span class="s1">'examplemodule_variable_name'</span><span class="p">,</span> <span class="mi">1234</span><span class="p">);</span></code></pre></figure>
</div>
<p>This ensures that another module won’t override your variable, or your module won’t do the same thing. Pretty simple. But what is also nice, is that you can clean up after your module a lot easier in the uninstall hook:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_uninstall().
*/</span>
<span class="k">function</span> <span class="n">examplemodule_uninstall</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Get global variable array
</span>
<span class="k">global</span> <span class="nv">$conf</span><span class="p">;</span>
<span class="k">foreach</span> <span class="p">(</span><span class="nb">array_keys</span><span class="p">(</span><span class="nv">$conf</span><span class="p">)</span> <span class="k">as</span> <span class="nv">$key</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Find variables that have the module prefix
</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">strpos</span><span class="p">(</span><span class="nv">$key</span><span class="p">,</span> <span class="s1">'examplemodule_'</span><span class="p">)</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">variable_del</span><span class="p">(</span><span class="nv">$key</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></figure>
</div>
<p>Please note that the above convention could cause problems if your module name is something like <code>content_permissions</code> and then the content module (CCK) defines a variable with a conflicting name. All the more reason to make your module names more unique and without underscores.</p>
<p>Old code that needlessly queries the database:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_uninstall().
*/</span>
<span class="k">function</span> <span class="n">examplemodule_uninstall</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Get module variables
</span>
<span class="nv">$results</span> <span class="o">=</span> <span class="nf">db_query</span><span class="p">(</span><span class="s2">"SELECT v.name FROM </span><span class="si">{</span><span class="nv">variable</span><span class="si">}</span><span class="s2"> AS v WHERE v.name LIKE '%s%%'"</span><span class="p">,</span> <span class="s1">'examplemodule_'</span><span class="p">);</span>
<span class="c1">// Remove variables
</span>
<span class="k">while</span> <span class="p">(</span><span class="nv">$row</span> <span class="o">=</span> <span class="nf">db_fetch_array</span><span class="p">(</span><span class="nv">$results</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">variable_del</span><span class="p">(</span><span class="nv">$row</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></figure>
</div>
https://zzolo.org/2010/02/14/upgrade-love-with-demo-and-drush
Upgrade Love with Demo and Drush
2010-02-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>My Valentines Day consisted of coding the beginnings of the upgrade path from 1.x to 2.x of the <a href="http://drupal.org/project/openlayers">OpenLayers</a> module; that’s some true love for the OpenLayers 1.x users.</p>
<p>The OpenLayers has a fairly unique situation where we have 3 major versions for Drupal 6, but they are not sequential, and going form OpenLayers 1.x to 2.x is a fairly large change. We have just released <a href="http://drupal.org/node/709818">1.0-RC1</a> and <a href="http://drupal.org/node/708270">2.0-alpha1</a>, so it was about time to <a href="http://drupal.org/node/710610">create an upgrade path</a> for those folks on 1.x. Though it still needs some serious work, it’s getting there. But, the point is, I ran into this problem: testing a Drupal update function with major schema changes without help can be tedious.</p>
<h3 id="the-problem">The Problem</h3>
<p>Basically, a Drupal update is a specific function that gets called from update.php (or equivalent Drush command) given that the state of the module’s schema is less than the newest available one. This means I have to do the following to test:</p>
<ol>
<li>Set up site with test data.</li>
<li>Code update.</li>
<li>Run update.php.</li>
<li>Make sure everything went as planned.</li>
<li>Repeat as needed (even if you have a syntax error).</li>
</ol>
<p>Imagine doing this over and over again for a very involved upgrade process! I knew right away that this was not for me.</p>
<h3 id="the-solution">The Solution</h3>
<p>(Note, there may be some much better way to do this with the <a href="http://drupal.org/project/simpletest">Drupal SimpleTest module</a> but I am unaware of it)</p>
<p>It was pretty obvious that a database dumb was going to be the best way to go; I could set up the site and then restore when I needed to test. But exporting, importing, managing changes, and just laziness kept me trying to think of something better. Then the <a href="http://drupal.org/project/demo">Demo</a> module popped into mind! The Demo module basically takes a snapshot of your database and allows you to restore to it, either through the interface or on cron runs. This seemed like a good candidate to getting around installing a new site and setting it up or using database dumps.</p>
<p>So, first step is to setup your Drupal site as you want it before the upgrade process. Then use the Demo module to make a snapshot. Also, it is important to install the Demo Reset module (part of Demo package) and set a default snapshot to use as we will refer to this when resetting. And! if your process changes, Demo makes it really easy to make changes to your site and save another snapshot.</p>
<p>Next, we just need to write a simple little script to do the restore and update (keep in mind we are going for lazy and automated). Luckily <a href="http://drupal.org/project/drush">Drush</a> is wonderful and allows us an easy way to run some simple PHP after Drupal has bootstrapped itself, and then perform the update. Here is my basic script, which is really just two commands.</p>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/bin/bash
</span>
<span class="c"># Since I was using this on my local machine, I needed to set
</span>
<span class="c"># where my Drush was coming from and could ensure I can run
</span>
<span class="c"># from anywhere
</span>
<span class="nv">DRUSH_CMD</span><span class="o">=</span><span class="s1">'/bin/php5/bin/php /home/zzolo/.drush/drush/drush.php -r /path/to/your/site'</span><span class="p">;</span>
<span class="c"># Reset site with some PHP. This command resets the site
</span>
<span class="c"># with the default snapshot.
</span>
<span class="nv">$DRUSH_CMD</span> php-eval <span class="s2">"demo_reset(variable_get('demo_dump_cron', 'demo_site'), FALSE);"</span>
<span class="c"># Run update. This runs the update.php which should now be needed. The -y
</span>
<span class="c"># answers all questions with yes
</span>
<span class="nv">$DRUSH_CMD</span> <span class="nt">-y</span> updb</code></pre></figure>
</div>
<p>So, now the new workflow is the following, and it’s easy to ensure upgrades are working well.</p>
<ol>
<li>Code changes.</li>
<li>Run script</li>
<li>Repeat.</li>
</ol>
https://zzolo.org/2010/01/23/sweet-sweet-switzerland
Sweet, Sweet Switzerland
2010-01-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/sweet-sweet-switzerland.JPG" alt="" /></p>
<p>Looking at the Swiss Alps, snowshoeing near Habkern.</p>
<div class="location">
<span class="geojson">{"type":"Point","coordinates":[7.89683333333,46.7475]}</span>
</div>
https://zzolo.org/2009/11/25/merci-beaucoup-genve-pour-premire-runion-drupal
Merci Beaucoup
2009-11-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Sorry if French is bad. I have been kind of quiet for the past few months. This is because I have just moved from Minneapolis, US to Geneva, Switzerland to start work at <a href="http://sheltercentre.org/">Shelter Centre</a>. It’s a very exciting move for me for many reasons; but that isn’t really the intention of this post.</p>
<p>Anyway, what is really amazing, is that after being here for only two weeks, (with a little bit of help) I was able to get <a href="http://groups.drupal.org/node/35938">almost 25 local people together</a> for drinks and <a href="http://drupal.org/">Drupal</a>! How? About a month or so ago, I couldn’t find any information on a Geneva Drupal meetup; so I started a <a href="http://groups.drupal.org/node/27326">thread</a> to “announce” my migration and to see if anyone was interested in a meetup, and voila! We had a couple dozen wonderful people talking about Drupal tonight. Also, we had very good feedback, and should be able to make this a monthly thing. My sincerest apologies for not knowing French yet, but I am on my way.</p>
<p>I think it’s really great to see how, even in this virtual Drupal community, there is still so much value and desire to get together with local people face to face. We had all types of Drupal people there, from people who have only heard of Drupal, people who just made their first node, to project managers, to developers, and to business owners and freelancers. There is a <a href="http://groups.drupal.org/twin-cities">great community in Minneapolis</a> and I hope I can bring that energy here to Geneva and make this a regular thing. There was even a joking mention of DrupalCon Lausanne (maybe in 2012).</p>
<p>If you are in the Geneva area, or in the greater Romandy (French-speaking Switzerland) region, please join up to the <a href="http://groups.drupal.org/switzerland">Switzerland</a> group. I believe <a href="http://drupal.org/user/54938">patchak</a> asked for a new group for Switzerland-Romandy (hint, hint, nudge, nudge <a href="http://groups.drupal.org/">groups.drupal.org</a> moderators); so look for that. Also, I will be posting a follow-up on the Switzerland group tomorrow to see how we want to proceed.</p>
<p>Thanks again!</p>
https://zzolo.org/2009/11/04/the-drupal-union
The Drupal Union
2009-11-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>As I prepare for my move to Switzerland to start my new job as Web Manager at <a href="http://sheltercentre.org">Shelter Centre</a> (many thanks to Eric at <a href="http://developmentseed.org">Development Seed</a>), I am excited to be back in a position where I get to concentrate on one (or just a handful) of sites. Don’t get me wrong, my time at <a href="http://chicagotech.org">Chicago Tech</a> and <a href="http://trellon.com">Trellon</a> over the past year and a half have been wonderful, and I have learned many things. But I am excited for the focus of a single project job.</p>
<p>My original intention with this post was to compare the difference between working at a Drupal shop, and working for a single Drupal project. But what it really comes down to is personal preference. Instead, I started to think about just the general idea of the quality of our Drupal jobs and how we, as community members, represent that quality. There are plenty of Drupal folks that don’t make Drupal their means of making a living, but there is a large amount (majority even) that call Drupal our day (and night) job and are really happy about that. I sure am.</p>
<p>But I don’t see this conversation out in the open. Maybe it is a cultural thing, or a contractual agreement, or maybe people just don’t care, but there is no open discussion about what it’s like being a Drupal employee. We talk about a lot of things, from code, to architecture, project management, drinking, community, minorities, respect, products, finances, and right back to code. And I think, indirectly, we all kind of put our woes and excitements about our jobs into the community in some form. But we still seem to be quiet about our jobs as Drupalers.</p>
<p>This post may be entitled “The Drupal Union”, but I am not endorsing or condoning a Drupal Union. I simply feel that it would be nice to be able to openly discuss the things we love and hate about our Drupal jobs. Maybe, just given Drupal’s success, it’s safe to say that a Drupal job is heaven, but I think there is more to it and that its important to start these discussions out in the open.</p>
https://zzolo.org/2009/10/02/typekit-drupal-and-web-typography
Typekit, Drupal, and Web Typography
2009-10-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>After reading <a href="http://morten.dk/blog/typekit-awes%C3%B6me">Morten.dk’s article on Typekit</a> and looking a little further into <a href="http://typekit.com/">Typekit</a>, I got pretty excited. I put my email in for an invite, and either by some act of randomness or someone seeing my tweet, I got accepted today.</p>
<h3 id="typekit-drupal-module">Typekit Drupal Module</h3>
<p>Yes, I jumped on the <a href="http://drupal.org/project/typekit">Typekit Drupal module</a> right away. It’s real simple. It basically fills that need for site builders who don’t want to edit their themes. It also allows you set the visibility of it, much like the block system (borrowed code directly). It’s not going to win any awards, but it makes things a tad bit easier.</p>
<h3 id="semi-revolutionary">Semi-Revolutionary?</h3>
<p>Just as a qualifier, I am not a designer and don’t care that much about fonts and know little about the school of Typography. But! <a href="http://en.wikipedia.org/wiki/Web_typography">Typography</a> has always been this chained up monster in the basement. I mean, back when the <a href="http://en.wikipedia.org/wiki/Al_Gore_and_information_technology">Internet started</a>, all web pages were just text. And it’s still true, most of what we put up on these crazy Internets is words. So, why has it been so difficult to get some nice looking words on our web pages, even after so many years?! Why do we have to keep <a href="http://www.urbanfonts.com/fonts/Aladdin.htm">Aladdin</a> down in the basement, or just use his photo?</p>
<p>This is not anything I have a complete answer for, but one of the main reasons is licensing for fonts. There are a lot of fonts out there, but many of them have some sort of copyright or limiting license on them that keeps them from being fully embedded in websites. There may be some direct correlation with how the two main commercial operating systems have their own sets of licensed fonts, so browsers just got stuck in the middle. Either way, owner of fonts just don’t want their fonts flailing in the cyber-wind, which is what some people see embedding fonts into websites might be.</p>
<p>This is where I think Typekit begins to bridge this gap of having no fun fonts on the web and having all fonts free and open-source (or some other solution). Typekit, like <a href="http://wiki.github.com/sorccu/cufon/">Cufon</a> (which is awesome and has its own benefits), allows for easy embedding of fonts via Javascript and selectors, but the problem that Typekit solves is that it has already put together a number of fonts that are available for you to use by already adddressing the licensing issues with the fonts. These fonts are not “free”, mind you, and Typekit’s payment schemes have a little to be desired in my opinion. But you can have anywhere from what looks like 50 - 200 fonts that are provided from many different sources (I am assuming they will be adding more too). Typekit also has this fairly unobtrusive note in the corner of your site that links to information about the specifics fonts you are using (<a href="http://typekit.com/colophons/bnl8dpi">example</a>), which is really awesome and fair for free use of cool fonts.</p>
<p>Typekit is not a good solution to our problem, but it is a good place to be for interim until we can actually address the real problems with licensing of fonts and typography on the web.</p>
https://zzolo.org/2009/09/24/software-more-than-code
Software: More Than Code?
2009-09-24T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have always been a big supporter and advocate of making sure code is done correctly. I did a presentation at Drupal Camp Wisconsin this past summer about <a href="http://drupalcampwi.com/session/building-a-module-best-practices">module building best practice</a> which did not show any lines of code, but instead focused on testing, security, documentation, and community. I also put in a <a href="http://paris2009.drupalcon.org/session/caring-code-building-responsible-modules">session for Paris</a>, which did not get accepted, about similar things.</p>
<p>I recently went to the very informative <a href="http://paris2009.drupalcon.org/session/continuous-integration-and-drupal">Continuous Integration</a> presentation in Paris. At that presentation there were a number of people that asked how long it took to setup the environment and the presenters had a number for it; but when I asked how much time it saved, there was no answer, not even the ability to estimate. And with some <a href="http://drupal.org/node/569178">recent discussions</a> I am having with some very respected people, I am unable to quantify the value of process.</p>
<p>I feel like its really hard to get metrics on how processes and methods really do make for better software. I feel like my heart is in the right place, but it seems so tough to be able to convince people that certain processes hold so much benefit over just having something work. So, how do we put specific value on these sort of things:</p>
<ul>
<li>Documentation</li>
<li>Security</li>
<li>Automated Testing</li>
<li>Methodology (like Agile)</li>
<li>Open Source</li>
<li>Peer Review</li>
<li>Drupal Core Issue Queue</li>
<li>Coding Standards</li>
</ul>
<p>It seems to be if people don’t value these things, they don’t do them. How can I convince people that these things are just as important as elegant code or the fact that it works (for now)?</p>
https://zzolo.org/2009/09/23/what-is-the-value-of-process
What is the Value of Process?
2009-09-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I am currently working on a project and we are having a bit of a dilemma about how to move the project forward. So, I thought I would write an article about it, post it out to this wonderful community, and maybe get some unbiased insight from some outsiders. I feel like myself and the others involved are all a little too invested to necessarily make the best decision; maybe I am being petty, irrational, or even short-sighted (hopefully you can let me know). You can <a href="http://drupal.org/node/569178">read the original thread here</a>, and I suggest you do so to get an accurate vision of this issue.</p>
<p>To me, the question is about the value of process over code and here is my story. And in reality it should not be a decision of one or the other.</p>
<h3 id="the-situation">The Situation</h3>
<p>I am greatly going to simplify this situation in hopes to give a more accurate and unbiased view but there are plenty of details that are relevant to our actual discussion.</p>
<ul>
<li>There is a module at <strong>version 1.0</strong>.</li>
<li>There is a group with a forked version with good code in it; we’ll call it <strong>Cool-Code-X</strong></li>
<li>We have decided to bring these together to create a <strong>version 2.0</strong></li>
</ul>
<h3 id="the-decision">The Decision</h3>
<p>The question is how to bring things together.</p>
<ol>
<li><strong>Option M:</strong> <strong>Start with version 1.0</strong> and <strong>bring in Cool-Code-X</strong> changes to create version 2.0. This requires porting the changes in Cool-Code-2 to be ported into the 1.x.</li>
<li><strong>Option N:</strong> <strong>Start with Cool-Code-X</strong> and <strong>bring in 1.x</strong> changes to create version 2.0. This requires the porting of the changes to Version 1.0 since fork to be brought into Cool-Code-X, and circumvents the CVS committing process of individual changes.</li>
</ol>
<h3 id="process-and-code">Process and Code</h3>
<p>I think <strong>Option M</strong> is the only way to move forward. To me, Option N suffers from the ability to have an open process, which to me is the more valuable part of open source. Yes, all the code is available for you to look at, but to me open source is more than just code; its about being open in all aspects of the process, allowing for discussion along each step, as well as creating the steps for discussion. Option N also means that there is no historical record of each major and minor change that is made to the code base.</p>
<h4 id="the-code">The Code</h4>
<p>Admittedly, the code in Cool-Code-2 is well, pretty cool, hence why we are even here. But, at the risk of offending myself and most people reading this, <strong>code is cheap and easy</strong>! Yeah, I said it. Don’t get me wrong; I love coding, and I know some really intelligent people that can come up with algorithms that I couldn’t even dream of myself doing. But, let’s be realistic here, who really cares about the code? Lots of us need code; there are many example of society-changing coding algorithms. But is a <a href="http://drupal.org/project/ctools">CTools plugin</a> implementation going to be that? Is some abstract idea of <a href="http://en.wikipedia.org/wiki/Object-oriented_programming">object-orientation</a> or <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller">MVC</a> going to change the world? I don’t think so.</p>
<p>Of course code is valuable. And myself and other developers are valuable and unique. And most of use are here because of the code. But ask yourself this: <strong>Why is everyone else (the millions that use software) here?</strong></p>
<h4 id="more-than-code">More Than Code</h4>
<p>In the past few years I have really come to value the idea of process. I did a presentation at <a href="http://drupalcampwi.com/session/building-a-module-best-practices">Drupal Camp Wisconsin about “caring about code”</a> (as well as put a <a href="http://paris2009.drupalcon.org/session/caring-code-building-responsible-modules">session in at Paris</a>) which basically did not talk about code, cool algorithms, libraries, or the orientation of objects. It was all about documentation, testing, coding standards, issue queues, and being a responsible software builder. There is more to software than code!</p>
<p>I think a good example would be test-driven development. Test-driven is the basic principle of creating tests as you create the main application code, so that finding bugs can be a much more quicker process. In an abstracted way, it is about investing up front and gaining much more in the long term, hopefully the goal of any good process. <a href="http://groups.drupal.org/node/9412">Drupal core has recently embraced test-driven development</a> starting with the soon-to-come Drupal 7. <a href="http://docs.jquery.com/QUnit">jQuery also has an integrated test suite known as QUnit</a>.</p>
<h4 id="the-module-and-scale">The Module and Scale</h4>
<p>Let’s bring it out some more. <strong>Is this module going to change the world?</strong> No. Is it cool like the code underneath it? I think so. But really this is just a small, open-source project in the vast seas of the internets, and it is not going to change the world.</p>
<p>To me, this does not change the value of processes that I would like to adhere to. But I will admit at different scales, different processes begin to lose or gain value. For instance, we don’t write tests for every line of code, and there is recent talk of having more than two core comitters for the Drupal core development process because it is starting to break down. And so there is often a trade-off and all projects are somewhat unique.</p>
<h4 id="the-drupal">The Drupal</h4>
<p>Alan, where are you going with this? We’re getting there. So, we’ll take another step back. <strong>Is Drupal going to change the world?</strong> I would say yes. In fact, I would argue that it already has. But if for some reason you disagree, for arguments sake, let’s agree that Drupal is a society-changing piece of software. Now, let’s look at why that is. What are some of the things that you like about Drupal (note that my view is limited here):</p>
<ul>
<li>Everyone is friendly and smart (and good looking)</li>
<li>That hook system is awesome</li>
<li>There are tons of modules for it (and by tons, I mean an unwieldy amount)</li>
<li>There are a couple dozen IRC channels and support methods</li>
<li>There is 1000’s of pages of documentation out there (though sometimes hard to find)</li>
<li>There are dozens of Drupal shops to help us build websites, from individuals to multi-national corporations</li>
<li>It’s a designer’s nightmare (though getting better)</li>
<li>It’s a developer’s dream</li>
</ul>
<p>The list goes on and on. But my point hangs on that last note about it being a developer’s dream. Why is Drupal a developer’s dream? “Don’t hack core” is the slogan for developers of Drupal, meaning that Drupal is extensible in a way that most software is not. Drupal also does some really awesome stuff that we, as developers don’t have to think about, like make forms (which are secure, extensible, and fun).</p>
<h4 id="the-how-and-the-value">The How and the Value</h4>
<p>So, the last and most important question: <strong>How did (and does) Drupal become so awesome?</strong> Specifically how is it such a developer’s dream, and how did that code get so awesome? Is it code fairies that visit the repository every night and put some new, mind-blowing code in? Maybe its just <a href="http://drupal.org/user/24967">webchick</a> who develops the whole thing (or maybe she is a code fairy)? Personally, I would like to think it similar to the <a href="http://en.wikipedia.org/wiki/Infinite_monkey_theorem">monkeys at typewriters</a> approach. In reality it’s the <strong>amazing extensive issue queue</strong> for the Drupal Project (and the fantastic people who spend time at it)! It’s the fact that every change that gets put into Drupal core is reviewed, praised, spat on, torn up, questioned, tested, before it gets even considered to be put in. Then, it happens again. and no where in the instructions of the issue queue does it specify how cool or complex code must be.</p>
<p>Let’s look at some of the interesting statistics of the Drupal core issue queue:</p>
<ul>
<li>There are currently <strong>27,613</strong> issues in the queue</li>
<li>A rough estimate of about <strong>12,770</strong> commits</li>
<li><a href="http://drupal.org/node/225450">Oldest issue</a> dates back to <strong>2001-12-17</strong> (recently fixed for D7) which 181 comments on it</li>
<li>The oldest open issue dates back to <strong>2002-02-28</strong></li>
<li><a href="http://drupal.org/project/issues/statistics/drupal">Overall stats</a></li>
<li>The <a href="http://drupal.org/node/225450">most comments on an issue</a>: <strong>350</strong></li>
</ul>
<p>I am not one to believe in statistics (my high school statistics teacher taught me that a long time ago), but I think it does start to paint a picture. The process of making Drupal core is fucking verbose! And to me, it’s that verbosity that has made Drupal what it is today. And though it may take me many hours to get in a patch on how to fix a one-line bug, I would not trade that process for anything.</p>
<h3 id="finally-my-question">Finally, My Question</h3>
<p>So, here is my question: <strong>How valuable is the process?</strong></p>
<h3 id="caveats">Caveats</h3>
<ul>
<li>All the people involved in my particular issue are people I respect greatly.</li>
<li>I ask for your opinion only if it is helpful and constructive.</li>
<li>This is my view of the situation and should not be taken as the only view.</li>
</ul>
https://zzolo.org/2009/08/20/drupal-and-openlayers
Drupal and OpenLayers
2009-08-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>We have just released the first beta of the <a href="http://drupal.org/project/openlayers">Drupal OpenLayers module</a>. It’s been a pretty crazy adventure as to how we got here, and there are still high hopes for the future. This post is going to be a long one, and should give you the complete introduction to this new mapping module for Drupal, and will also build on and borrow from <a href="http://zzolo.org/thoughts/building-module">my previous post on building this module</a>.</p>
<ul>
<li><a href="http://drupal.org/project/openlayers">Jump to Project Page</a></li>
<li><a href="http://sandbox.zzolo.org/node/5">Check out the Demo</a></li>
<li><a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/openlayers/docs/?pathrev=DRUPAL-6--1">Read Documentation</a></li>
</ul>
<h3 id="what-is-openlayers">What is OpenLayers?</h3>
<p><a href="http://openlayers.org/">OpenLayers</a> is a free, <a href="http://en.wikipedia.org/wiki/Open_source">open-source</a> <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> library that provides an easy interface to bring together any sort of map tiles, markers, features, and other <a href="http://en.wikipedia.org/wiki/Geographic_information_system">GIS</a> goodness. OpenLayers was initially developed by <a href="http://www.metacarta.com/">MetaCarta</a>; it is now a project of the <a href="http://www.osgeo.org/">Open Source Geospatial Foundation</a>. Think <a href="http://maps.google.com/">Google Maps</a> but open-source. The OpenLayers has many <a href="http://openlayers.org/dev/examples/">examples</a> and a <a href="http://gallery.openlayers.org/">gallery of sites</a>.</p>
<h3 id="where-drupal-fits-in">Where Drupal Fits In</h3>
<p><a href="http://drupal.org">Drupal</a> is a great content management system and development framework. OpenLayers fits well into this because it basically is a really great visualization tool for content (the most obvious visualization being maps). Drupal can provide the ability to create and management data/content and OpenLayers can be a fun vehicle to displaying that content and provide a rich interface for your users.</p>
<h3 id="main-features-and-modules">Main Features and Modules</h3>
<p>The Drupal OpenLayers module is actually a full suite of modules that provide many integration points with other contributed modules.</p>
<ul>
<li>At is core, the <strong>OpenLayers API</strong> module provides just enough to take a map array in PHP and render it through hooks, pass it to javascript where it can interact with events, and display a working map to the page. The main API module also manages the basics of map presets.</li>
<li>The <strong>OpenLayers Preset User Interface</strong> module provides a web based interface to manage presets. Presets are basically just named map arrays that are either stored in code or in the database. With presets it becomes easy to provide interfaces to pick maps.</li>
<li><strong>OpenLayers Layers</strong> modules provides a wide range of layers to use outside the simple default, like Yahoo, Google, OpenStreetMap tiles, and more. Layers can be manually put into map arrays, but with hooks, other modules can provided named layers that get put together when the map is rendered.</li>
<li>Much like the layers module, the <strong>OpenLayers Behaviors</strong> module provides a set of behavior add-ons that can easily be added to map arrays. These include things like feature controls, fullscreen controls, popups, and tooltips.</li>
<li>On the input side, there is the <strong>OpenLayers CCK</strong> module which provides integration with OpenLayers and CCK. This module provides a field and widget for basic WKT input, as well as a widget for the Geo module; both of which allow the user to use a map to enter features like points, lines, and polygons. On the formatter side, you can display any preset map for the field.</li>
<li>A simple way to display a map is to use the <strong>OpenLayers Filter</strong> module, which provides an input format filter where a user can input <code>\[openlayers preset_name\]</code> into the body content of a node and it will be rendered as that map.</li>
<li>Finally, there is a Views plugin provided by the <strong>OpenLayers Views</strong> module that allows the user to aggregate all kinds of Drupal data and put it into a map.</li>
</ul>
<h3 id="the-history-and-the-code">The History and the Code</h3>
<p>The OpenLayers module has gone from <a href="http://drupal.org/project/geo_gui">some fancy javascript that goes over the Geo module</a> to a robust suite of modules that provides a complete mapping solution in Drupal all in the span of about five (5) months. <a href="http://drupal.org/user/47098">Phayes</a> released the <a href="http://drupal.org/project/geo_gui">Geo Gui</a>, <a href="http://groups.drupal.org/node/20475">literally the day</a> <a href="http://drupal.org/user/53081">bdragon</a> and I had planned on going in the same direction with OpenLayers. Phayes was eager to combine our effort, and with the combination of his javascript skills and my Drupal skills, we created a much more Drupal-friendly solution involving CCK widgets and PHP map arrays. Then it went form there:</p>
<ol>
<li>The map array was definitely directly influenced by the <a href="http://drupal.org/project/gmap">GMap</a> module.</li>
<li>We then started with a <a href="http://drupal.org/project/views">Views</a> plugin which borrowed from <a href="http://drupal.org/project/gmap">GMap</a> and <a href="http://drupal.org/project/mapstraction">Mapstraction</a>.</li>
<li>At the same time, we started abstracting out layers and layers handlers so that other modules could provide them, and so we could keep the main API module as lean as possible.</li>
<li>Phayes then took out the features stuff we had written and started off on the idea of behaviors.</li>
<li>Then, as I was getting highly frustrated with my silly idea of a reusable form for creating maps, <a href="http://drupal.org/project/imagecache">ImageCache</a> provided me with the idea of a preset interface and a single point to create maps; this meant we could simply use a dropdown to pick maps in other interfaces. It was a big refactoring, but well worth it in the end.</li>
<li>We then abstracted out styles, so that themers could style features easier.</li>
<li>At that point <a href="http://drupal.org/user/12664">tmcw</a>, <a href="http://drupal.org/user/226437">rsoden</a>, and <a href="http://drupal.org/user/537416">brynbellomy</a> provided some patches and we got a couple co-maintainers.</li>
<li>brynbellomy helped make grouping in the views plugin work, among others.</li>
<li>tmcw added the <a href="http://drupal.org/project/features">Features</a> integration.</li>
<li>And many more small and big improvements…</li>
</ol>
<p>Overall, with the help of other Drupal modules, we have been able to create an efficient set of tools that are exportable, sustainable, secure, easy-to-use, efficient, and very hookable, thanks to the hardwork of some great developers.</p>
<h3 id="development">Development</h3>
<p>I have really enjoyed the process of creating this module. Phayes and I have had many discussions about where we see this module going, and bringing in new developers has opened up the discussion. We started early on putting our discussion in <a href="http://drupal.org/node/432642">this really long issue</a>. I have learned a whole lot of new things by coding this module and from the other developers. I really appreciate and value the open development process that we have embraced and encourage it for other module developers where possible.</p>
<h3 id="documentation">Documentation</h3>
<p>The documentation for this module still needs some work, but we have always had a goal of creating a fair amount of inline documentation, thus making it easy to get a good base of documentation in the module itself. The following files are found in the <code>docs</code> folder:</p>
<ul>
<li><a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/openlayers/docs/openlayers.api.php?view=markup&pathrev=DRUPAL-6--1">openlayers.api.php</a> provides doxygen formatted documentation for the hooks that are available for the module.</li>
<li><a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/openlayers/docs/API.txt?view=markup&pathrev=DRUPAL-6--1">API.txt</a> describes the public API for the module.</li>
<li><a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/openlayers/docs/THEMING.txt?view=markup&pathrev=DRUPAL-6--1">THEMING.txt</a> is an easy reference to the theming functions that are available.</li>
<li><a href="http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/openlayers/docs/MAP_ARRAY.txt?view=markup&pathrev=DRUPAL-6--1">MAP_ARRAY.txt</a> is an unfinished description of whats available for the map array. There is a lot to it, so we are still discussing the best, sustainable way to provide this documentation.</li>
</ul>
<h3 id="what-is-left-for-a-stable-release">What is Left for a Stable Release</h3>
<p>Our goal is to get a 1.0 out as soon as possible; I personally, don’t like how many modules sit in beta or alpha for so long (and yes, I am a hypocrite). Still, we have a pretty good road-map laid out to get a good stable release out. The following are the main things that are in the way of a release:</p>
<ul>
<li>Squashing any bugs</li>
<li>Testing
<ul>
<li>We need people to start using the module and see how it works for them</li>
<li>I also want to have at least a few SimpleTests done before a stable release</li>
</ul>
</li>
<li>Documentation
<ul>
<li>Text-based documentation in the module needs to be finished up</li>
<li>It would probably be better to push documentation to <a href="http://drupal.org/project/advanced_help">Advanced Help</a></li>
<li>Any further documentation like handbook pages or screencasts would be wonderful</li>
</ul>
</li>
<li>Stylish Controls
<ul>
<li>My personal goal is to get some stylish controls for the module to have by default. OpenLayers default controls are alright, but they won’t win any hearts, and design goes a long way.</li>
<li>Any designers out there want to help? (I have little to no design skills)</li>
</ul>
</li>
</ul>
<h3 id="try-it-out">Try It Out</h3>
<p>I have set up the OpenLayers module on my <a href="http://sandbox.zzolo.org/">sandbox site</a>. From the <a href="http://sandbox.zzolo.org/node/5">main OpenLayers demo page</a> you can pretty much use the whole module without having to download it.</p>
<ul>
<li><a href="http://sandbox.zzolo.org/admin/settings/openlayers">Check out the main administrative settings</a></li>
<li><a href="http://sandbox.zzolo.org/admin/settings/openlayers/presets">Look at the preset list</a></li>
<li><a href="http://sandbox.zzolo.org/admin/settings/openlayers/presets/add">Add a new preset</a></li>
<li><a href="http://sandbox.zzolo.org/node/add/openlayers-example">Create content that allows for inline maps</a></li>
<li><a href="http://sandbox.zzolo.org/node/add/openlayers-cck-wkt-example">Create data with OpenLayers CCK map</a></li>
<li><a href="http://sandbox.zzolo.org/openlayers-views-example">OpenLayers views example</a> (No access to the views UI)</li>
</ul>
<h3 id="better-than-the-ui">Better Than the UI</h3>
<p>Having talked with people trying to use this module, there is one hint I would like to provide. Once you get into the module and the interface, and also look at the map array, you will notice that the preset interface does not provide all the options that the map array can handle. Ideally we don’t want this to be true, but there are lots of options. Still, there is a fairly easy way to get all the functionality you need into a preset, by using the <code>hook_openlayers_presets()</code> hook. For example:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_openlayers_presets().
*/</span>
<span class="k">function</span> <span class="n">example_openlayers_presets</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// This is an example implementation where we do some stuff
</span>
<span class="c1">// in our map array that the interface does not provide
</span>
<span class="nv">$presets</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
<span class="c1">// Create map array
</span>
<span class="nv">$awesome_map</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'projection'</span> <span class="o">=></span> <span class="s1">'4326'</span><span class="p">,</span>
<span class="s1">'width'</span> <span class="o">=></span> <span class="s1">'auto'</span><span class="p">,</span>
<span class="s1">'default_layer'</span> <span class="o">=></span> <span class="s1">'openlayers_default_wms'</span><span class="p">,</span>
<span class="s1">'height'</span> <span class="o">=></span> <span class="s1">'300px'</span><span class="p">,</span>
<span class="s1">'center'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'lat'</span> <span class="o">=></span> <span class="s1">'0'</span><span class="p">,</span>
<span class="s1">'lon'</span> <span class="o">=></span> <span class="s1">'0'</span><span class="p">,</span>
<span class="s1">'zoom'</span> <span class="o">=></span> <span class="s1">'2'</span><span class="p">,</span>
<span class="p">),</span>
<span class="s1">'options'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'displayProjection'</span> <span class="o">=></span> <span class="s1">'4326'</span><span class="p">,</span>
<span class="p">),</span>
<span class="s1">'controls'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'LayerSwitcher'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="s1">'Navigation'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="s1">'PanZoomBar'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="s1">'MousePosition'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="c1">// Create full preset array
</span>
<span class="nv">$presets</span><span class="p">[</span><span class="s1">'our_awesome_map'</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'preset_name'</span> <span class="o">=></span> <span class="s1">'our_awesome_map'</span><span class="p">,</span>
<span class="s1">'preset_title'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'Our Awesome Map'</span><span class="p">),</span>
<span class="s1">'preset_description'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'This map will be available in the preset interface and can even be cloned.'</span><span class="p">),</span>
<span class="s1">'preset_data'</span> <span class="o">=></span> <span class="nv">$awesome_map</span><span class="p">,</span>
<span class="p">);</span>
<span class="k">return</span> <span class="nv">$presets</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<p>So, now we have this preset available in the preset interface where it can be cloned and edited and used in views and cck formatters!</p>
<p>Another important hook is the <code>hook_openlayers_map_alter(&map)</code> where you can completely change around maps right before it gets rendered. This is helpful if you want to add a new event to all maps or add a manual layer to a map.</p>
<h3 id="into-the-future">Into the Future</h3>
<p>We still have a little ways to go, but this module is ready to be broken in and tested out. We encourage to try to break and push the limits of this module and let us know about new features. We also welcome patches.</p>
<p>We have already started looking at 2.0 or 1.x features. Some of the things being talked about are the following:</p>
<ul>
<li>Abstracting out hook implementation completely with a hook_openlayers_api() like Views does.</li>
<li>Ability to manage layer options easier, which would help with using the WMS reader in Nice Maps</li>
<li>Putting more options in the preset form</li>
<li>Allowing more behaviors in the View plugin</li>
<li>Creating a better and more robust structure for bringing in external data</li>
<li>Whatever you can think of…</li>
</ul>
https://zzolo.org/2009/08/08/friday-night-encryption
Friday Night Encryption
2009-08-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Every once in awhile I will have a task that involves storing a password in the Drupal database, maybe so that a module can connect to a server or service. Unfortunately it is not secure to store sensitive information in the database unless it is encrypted. So tonight I wrote and released the <a href="http://drupal.org/project/encrypt">Encrypt module</a></p>
<h3 id="one-way-encryption">One-Way Encryption</h3>
<p>Drupal core does store passwords in the database: the user passwords. But this is <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function">one-way encryption, or creating a hash</a>, meaning that once encrypted there is no built-in way to retrieve the data that was hashed. You can only compare hashes, hence why Drupal does not allow you to retrieve a lost password, simply it offers the ability to reset it.</p>
<h3 id="two-way-encryption">Two-Way Encryption</h3>
<p><a href="http://en.wikipedia.org/wiki/Cryptography">Two-way encryption, or just encryption</a> is the idea of taking a message, altering it so that it is unrecognizable usually with some sort of key, then sending it someone that also shares that key and can decrypt the code to get the original message. There are many methods of encryption, and it’s hard to know what method is best.</p>
<p>Why do we need encryption? Well, let’s take for instance the example above. I want the user to enter in their password for an FTP site so that I can get some files from it once a day. But, I don’t want the user to have to come to the site and enter in their password every day to do this. Ideally I want to be able to store that password and retrieve it when I need it. This is where encryption comes in. We don’t want to store the password in the database if it is not encrypted because your database may be compromised (and there is no reason to allow the database hacker to have access to the FTP account as well). With encryption, we can create a ciphered text and store that in the database and retrieve when necessary, given that we still have the correct key.</p>
<h3 id="why-a-module">Why a Module?</h3>
<p>There are no native functions in Drupal to handle encryption. I don’t actually know why, but I would speculate because PHP does not have native functions for encryption without the <a href="http://www.php.net/mcrypt">mcrypt extension</a>. Mcrypt is very often already compiled with PHP, but not always. Also, its encryption and is complicated, so there is a lot of weight riding on these functions.</p>
<p>So, I have had this idea for a long time: An encryption module to provide two-way encryption for Drupal. And tonight happen to be the night that I saw it all laid out in front of me.</p>
<h3 id="what-the-encrypt-module-does">What the Encrypt Module Does</h3>
<p>The <a href="http://drupal.org/project/encrypt">Encrypt module</a> basically allows a developer to encrypt and decrypt data with the two easy functions:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">encrypt</span><span class="p">(</span><span class="s1">'some text'</span><span class="p">);</span></code></pre></figure>
</div>
<p>and, then the decrypt function:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">decrypt</span><span class="p">(</span><span class="s1">'some already encrypted text'</span><span class="p">);</span></code></pre></figure>
</div>
<p>There are parameters for options, but no options should be necessary. Also, the encryption method is stored with the encrypted string, meaning that developers need not worry about tracking what methods are used. In fact, it is suggested to simply just use the default method for the site, which can change at any point.</p>
<h3 id="extending">Extending</h3>
<p>Encryption methods are just implementation of hooks. You can look at the project page or documentation in the code to see exactly what the hooks are, but the basic idea is creating a name a callback for the encryption method.</p>
<h3 id="drupal-dependencies">Drupal Dependencies</h3>
<p>I realize that this is an API module, and that the only real people using it will be developers. The unfortunate part is that Drupal’s module management does not really handle dependencies and version compatibility all that well. Granted I am not offering a solution, as it is a tough problem, but I know that this fact will keep this module form being adopted when I know there are many cases where it could be used.</p>
<p>Thanks for listening and hope you enjoy the module.</p>
https://zzolo.org/2009/06/21/the-fourth-annual-rhubarbeque-june-2009
The Fourth Annual RhuBarBeQue June 2009
2009-06-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>A few weeks ago we had the fourth annual RhuBarBeQue. It was cold and rainy like last year, but we still had some great times and some fantastic rhubarb dishes.</p>
<ul>
<li>Apricot ginger rhubarbeque sauce</li>
<li>Three pepper rhubarbeque sauce (hot!)</li>
<li>Sweet and sour tempeh cabbage with pineapple-rhubarb sauce.</li>
<li>Garlic-rhubarb vinaigrette</li>
<li>Asparagus and tofu with rhubarb glaze</li>
<li>Rhubarb cookies</li>
<li>Rhubarb crunch</li>
<li>Rhubarb pilaf</li>
<li>Sweet, sweet rhubarb compote</li>
<li>Rhubarb cake</li>
<li>Rhubarb bars</li>
<li>Rhubarb bread</li>
<li>Rhubarb old-fashioneds</li>
</ul>
https://zzolo.org/2009/05/27/geo-june
Geo June
2009-05-27T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>June 2009 is <a href="http://groups.drupal.org/node/22377">Geo June</a>, which is a campaign to organized by <a href="http://www.advantagelabs.com/">Advantage Labs</a> to make a concentrated effort to stabilize the <a href="http://drupal.org/project/geo">Geo Module</a> and push towards <a href="http://groups.drupal.org/node/6089">Drupal as a GeoCMS</a>.</p>
<h3 id="what-is-geo-and-why-is-it-useful">What is Geo and Why is it Useful?</h3>
<p><a href="http://drupal.org/project/geo">Geo</a> is mainly a storage layer to hold geospatial data. What does that mean? Well, we all know about points such as latitude and longitude, but Geo helps to store other data such as lines and polygons.</p>
<p>Geo standardizes how all this data is stored, which is extremely helpful for modules, such as <a href="http://drupal.org/project/location">Location</a> to store data and have the heavy lifting done for it, and makes it easy for modules such as <a href="http://drupal.org/project/gmap">Gmap</a>, <a href="http://drupal.org/project/nicemap">NIceMap</a>, and <a href="http://drupal.org/project/mapstraction">Mapstraction</a> to easily retrieve and display that data in lots of fun ways. Geo also provides a database abstraction layer to work with both <a href="http://postgis.refractions.net/">PostGIS</a> and <a href="http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html">MySQL Spatial</a>.</p>
<p>Still not convinced of it’s awesomeness, well then think Mashups! Though I am not a fan of the term, Map <a href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">Mashups</a> are all the rage and for good reason (<a href="http://en.wikipedia.org/wiki/Data_visualization">data visualization</a> is a great way to communicate large sets of data). By standardizing Drupal’s GIS storage, it will be exponentially easier to integrate (i.e. mashup) data from your site with all those exciting external sources of data. Don’t think you can collect geospatial data? Think again, more interweb explorers are becoming a lot more spatially aware and want their data represented in the context of our world. And even with lots of new <a href="http://en.wikipedia.org/wiki/Open_data">open data</a>, there are still lots of reasons to store that spatial data directly on your site.</p>
<p>There are many other <a href="http://groups.drupal.org/node/22370">use cases at this wiki page</a> (feel free to add).</p>
<h3 id="events-and-getting-involved">Events and Getting Involved</h3>
<p>If you are interested in <a href="http://www.advantagelabs.com/announcing-geo-june">getting involved, go here</a>. Some of the events going on or ways to participate:</p>
<ul>
<li>Geo June Kickoff Barbecue, June 1: A decidedly offline event in Minneapolis</li>
<li>Join the daily IRC Meetups, June 1-30 : Meet in #drupal-geo from 10AM-11AM CST</li>
<li>Blog in June about Drupal geo projects and Drupal as a GeoCMS</li>
<li>Participate in the community.</li>
<li>Participate in the TC Drupal Documentation Sprint. June 20</li>
<li>Organize other events locally or online, dealing with any type of Mapping or Geospatial activities in Drupal.</li>
<li>Contribute financially</li>
<li>Join us at the release party! June 30</li>
</ul>
<h3 id="openlayers">OpenLayers</h3>
<p>Another goal of Geo June is for the <a href="http://drupal.org/project/openlayers">OpenLayers Drupal Module</a> to release a 1.0 (though I would be happy with a beta, personally). We have been really busy developing this module. It’s fairly stable at the moment, but needs lots of cleaning up. We welcome <a href="http://drupal.org/node/add/project-issue/openlayers">testing and reporting bugs</a>.</p>
<h3 id="the-future">The Future</h3>
<p>Drupal has always been good at being current with new technologies and this is an opportunity to continue that tradition. <a href="http://drupal.org/project/geo">Geo</a> is the building block for realizing Drupal as a GeoCMS, meaning that Drupal can consume, produce, collect, aggregate, display, cuddle, and mash geospatial data in a user-friendly (and developer-friendly) way. I personally don’t know of anything that can currently be compared as a GeoCMS, and even with a stable Geo, we still have a long way to go, but I would love to see Drupal be the first GeoCMS.</p>
https://zzolo.org/2009/05/26/twin-cities-documentation-sprint
Twin Cities Documentation Sprint
2009-05-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>On <strong>Saturday 2009 June 20</strong>, the <a href="http://groups.drupal.org/node/21946">Twin Cities Documentation Sprint</a> (that’s the twin cities of Minneapolis and Saint Paul in Minnesota, USA) will happen from 10AM through 5PM CST being held at <a href="http://www.advantagelabs.com/">Advantage Labs</a> with sponsorships from <a href="http://www.fivefivefour.com/">fivefivefour</a> and <a href="http://www.gortonstudios.com/">Gorton Studios</a>. This event was <a href="http://zzolo.org/thoughts/drupal-and-drinking">crowd-sourced</a> at one of our meeting.</p>
<p>We are still figuring out what areas we can focus on, but we don’t actually need a specific agenda. If you have some documentation requests, please <a href="http://groups.drupal.org/node/21946#comment-form">leave a comment</a>. There will also be some members in the #drupal-docs IRC channel as well.</p>
https://zzolo.org/2009/05/23/drupal-drush-and-dreamhost
Drupal, Drush, and Dreamhost
2009-05-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I use <a href="http://dreamhost.com/">Dreamhost</a> for some of my personal sites and for some friends. Dreamhost’s basic package is nothing too powerful, but I like them; they are <a href="https://signup.dreamhost.com/">cheap</a>, responsive, <a href="http://www.dreamhoststatus.com/">responsible</a>, <a href="http://dreamhost.com/aboutus-green.html">green</a>, and <a href="http://blog.dreamhost.com/">funny</a>. I also love some <a href="http://drupal.org/project/drush">Drush</a>. But for the life of me, the newer versions of Drush were throwing weird errors, mostly involving syntax. But when I went into the code, I could not find any syntax errors. Some of the errors suggested I was using PHP4, but I was like “No, I am definitely using PHP5 with Dreamhost.”</p>
<p>Apparently, I was wrong! Looking through the issue queue of Drush today, I came across <a href="http://drupal.org/node/436968#comment-1565796">this comment</a> which explains how to manually use PHP5 for the Drush alias, and it occured to me that my host could be doing that. Searching the interwebs a little, this was the best <a href="http://forum.dreamhosters.com/programming/90033-php-on-command-line.htm">documentation on Dreamhost’s setup</a> that I could find. Apparently, <strong>Dreamhost uses PHP4 for the command line by default</strong>.</p>
<p>So, I changed by alias definition in my .bash_profile file to:</p>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Drush
</span>
<span class="c">#-----------------------------------------------#
</span>
<span class="nb">alias </span><span class="nv">drush</span><span class="o">=</span><span class="s1">'/usr/local/php5/bin/php /home/alanpalazzolo/.drush/drush/drush.php'</span></code></pre></figure>
</div>
<p>And voila! Drush is working!!! Thanks to <a href="http://drupal.org/user/226785">ericrdb</a> and the <a href="http://drupal.org/node/97249/committers">wonderful developers of Drush</a>.</p>
https://zzolo.org/2009/04/21/module-demos
Module Demos
2009-04-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>In the <a href="http://drupal.org/project">Drupal project</a> page form there is a <strong>Project Resources</strong> section which includes the ability to add links to, you guessed it, project resources, things like <em>Homepage</em>, <em>Documentation</em>, <em>Screenshots</em>, and a <strong>Demo Site</strong>.</p>
<p>I only have a few modules that I have contributed to Drupal, and even the ones that I have contributed do not get much foot traffic. Still, I strive to be a good module contributor and maintainer, by doing things like writing good documenting in and outside the code. I also like to have links for all the <strong>Project Resources</strong>. This is not always possible. Often people (myself included) just link the <em>Documentation</em> to the current README.txt file in the <acronym title="Concurrent Versions System">CVS</acronym> repository. I have started just linking the <em>Changelog</em> category to the <acronym title="Concurrent Versions System">CVS</acronym> messages for the module.</p>
<p>I have always wanted to be able to have an actual place to demo my modules without linking to this specific site. But I never wanted to spend the time both initially and ongoing to create a demo site for each module. It’s a fair amount of work, and there is always the issue of security, and concerns of users creating offensive content. So, I never did… until now!</p>
<h3 id="the-value-of-demonstration">The Value of Demonstration</h3>
<p>So, why should I even bother creating a demo site when someone can just download the module and try it out? Well, here a few of the many reasons why a demo site is a great idea for modules:</p>
<ul>
<li>Some beginners don’t know how to easily setup a Drupal site, let along install modules.</li>
<li>Some people just want to see if Drupal is for them, and their needs might include this module.</li>
<li>Even having installed many instances of Drupal, it’s still annoying to have to do this just to test out a module.</li>
<li>There are so many modules out there, and probably a similar module, and this module’s great documentation might not accurately describe the differences.</li>
<li>Documentation is great, but demonstration will provide a lot more understanding for most users.</li>
</ul>
<h3 id="the-demo-module">The Demo Module</h3>
<p>The <a href="http://drupal.org/project/demo">Demo Module</a> has been around for quite some time. It’s a fairly straightforward module that allows you to taken a snapshot of your site and reset it back to that point. A snapshot is basically a database dump. So, a site can reset itself as often as you want.</p>
<h3 id="my-new-sandbox">My New Sandbox</h3>
<p>So, I put it all together in a few hours and created the <a href="http://sandbox.zzolo.org">Zzolo Sandbox</a>. It resets every hour. It’s main goal is demo my modules (I still have some more to add).</p>
<p>It’s simple:</p>
<ul>
<li>Install Drupal as usual.</li>
<li>Install the Demo module.</li>
<li>Setup site like you like it. I created a content type that describes each “demo”, which are my modules.</li>
<li>Set permissions as you like. I made it so that the anonymous account can do everything in the demo.</li>
<li>Set your snapshot, an interval to reset, and cron.</li>
</ul>
<h3 id="things-to-consider-and-ways-to-learn">Things to Consider and Ways to Learn</h3>
<p>My modules are pretty simple. Once you get into more levels of depth, you may have to consider how you want visitors to interact with your demo, but since it resets itself, there is not too much to worry about.</p>
<p>In this process, I had to think about how my modules would react in this environment. Most importantly, I had to consider my module’s permissions and cron. But there are many things to learn from this environment for a module, including the following:</p>
<ul>
<li>Permissions</li>
<li>Cron</li>
<li>Security</li>
</ul>
<h3 id="a-little-extra">A Little Extra</h3>
<p>One thing that was bugging me when I was setting this up was that the user had little idea to when the site was going to reset (or that it was a demo site), meaning that they could be in the middle of something and have the site change drastically. So I made a simple block with a timer on it.</p>
<p>This is using the <a href="http://plugins.jquery.com/project/jCountr">jCountr</a> plugin to create a countdown to the next reset. I had set up the demo to reset every hour and cron to run every 43 minutes on the hour and this is hard-coded here. <strong>This is not necessarily well-written Drupal code</strong>, but it is secure and does the job. Here is the Drupal block hook:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_block().
*/</span>
<span class="k">function</span> <span class="n">demo_timer_block</span><span class="p">(</span><span class="nv">$op</span> <span class="o">=</span> <span class="s1">'list'</span><span class="p">,</span> <span class="nv">$delta</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nv">$edit</span> <span class="o">=</span> <span class="k">array</span><span class="p">())</span> <span class="p">{</span>
<span class="k">switch</span> <span class="p">(</span><span class="nv">$op</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="s1">'list'</span><span class="o">:</span>
<span class="nv">$blocks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'info'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'Demo timer'</span><span class="p">),</span>
<span class="s1">'cache'</span> <span class="o">=></span> <span class="no">BLOCK_NO_CACHE</span><span class="p">,</span>
<span class="p">);</span>
<span class="k">return</span> <span class="nv">$blocks</span><span class="p">;</span>
<span class="k">case</span> <span class="s1">'view'</span><span class="o">:</span>
<span class="nv">$minute</span> <span class="o">=</span> <span class="p">(</span><span class="n">int</span><span class="p">)</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'i'</span><span class="p">);</span>
<span class="nv">$seconds</span> <span class="o">=</span> <span class="p">(</span><span class="n">int</span><span class="p">)</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'s'</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$minute</span> <span class="o">>=</span> <span class="mi">43</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$minutes_left</span> <span class="o">=</span> <span class="p">(</span><span class="mi">60</span> <span class="o">-</span> <span class="nv">$minute</span><span class="p">)</span> <span class="o">+</span> <span class="mi">43</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span> <span class="p">{</span>
<span class="nv">$minutes_left</span> <span class="o">=</span> <span class="mi">43</span> <span class="o">-</span> <span class="nv">$minute</span><span class="p">;</span>
<span class="p">}</span>
<span class="nv">$data</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'demo_timer'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'minutes_left'</span> <span class="o">=></span> <span class="nv">$minutes_left</span><span class="p">,</span>
<span class="s1">'seconds_left'</span> <span class="o">=></span> <span class="p">(</span><span class="mi">60</span> <span class="o">-</span> <span class="nv">$seconds</span><span class="p">),</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="nf">drupal_add_js</span><span class="p">(</span><span class="nf">drupal_get_path</span><span class="p">(</span><span class="s1">'module'</span><span class="p">,</span> <span class="s1">'demo_timer'</span><span class="p">)</span> <span class="mf">.</span><span class="s1">'/jquery.jCountr.1.1.js'</span><span class="p">);</span>
<span class="nf">drupal_add_js</span><span class="p">(</span><span class="nf">drupal_get_path</span><span class="p">(</span><span class="s1">'module'</span><span class="p">,</span> <span class="s1">'demo_timer'</span><span class="p">)</span> <span class="mf">.</span><span class="s1">'/demo_timer.js'</span><span class="p">);</span>
<span class="nf">drupal_add_css</span><span class="p">(</span><span class="nf">drupal_get_path</span><span class="p">(</span><span class="s1">'module'</span><span class="p">,</span> <span class="s1">'demo_timer'</span><span class="p">)</span> <span class="mf">.</span><span class="s1">'/demo_timer.css'</span><span class="p">);</span>
<span class="nf">drupal_add_js</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="s1">'setting'</span><span class="p">);</span>
<span class="nv">$block</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'subject'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'Demo Timer'</span><span class="p">),</span>
<span class="s1">'content'</span> <span class="o">=></span> <span class="s1">'
'</span><span class="mf">.</span> <span class="nf">t</span><span class="p">(</span><span class="s1">'This site is a demo and will reset itself 43 minutes on the hour.'</span><span class="p">)</span> <span class="mf">.</span><span class="s1">'
<div id="demo-timer"></div>
'</span><span class="p">,</span>
<span class="p">);</span>
<span class="k">return</span> <span class="nv">$block</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></figure>
</div>
<p>Here is the Javascript:</p>
<div>
<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$</span><span class="p">(</span><span class="dl">"</span><span class="s2">#demo-timer</span><span class="dl">"</span><span class="p">).</span><span class="nx">counter</span><span class="p">({</span>
<span class="na">min</span><span class="p">:</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">settings</span><span class="p">.</span><span class="nx">demo_timer</span><span class="p">.</span><span class="nx">minutes_left</span><span class="p">,</span>
<span class="na">sec</span><span class="p">:</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">settings</span><span class="p">.</span><span class="nx">demo_timer</span><span class="p">.</span><span class="nx">seconds_left</span><span class="p">,</span>
<span class="na">message</span><span class="p">:</span> <span class="dl">'</span><span class="s1">RESETTING</span><span class="dl">'</span>
<span class="p">});</span>
<span class="p">});</span></code></pre></figure>
</div>
https://zzolo.org/2009/04/20/building-a-module
Building a Module
2009-04-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I was asked to do a <a href="http://groups.drupal.org/node/20563">presentation on coding in Drupal</a> for our <a href="http://groups.drupal.org/twin-cities">local Drupal user group</a>. “Coding” is a pretty general topic, and the audience at our user group is pretty varied. So, I was not sure what specifically I should present that would encompass “coding”. As the time came along and I had to make a decision, I looked to the module that I currently spend most of my free time developing: <a href="http://drupal.org/project/openlayers">OpenLayers</a>.</p>
<h3 id="what-is-openlayers">What is OpenLayers?</h3>
<p><a href="http://openlayers.org/">OpenLayers</a> is a free, <a href="http://en.wikipedia.org/wiki/Open_source">open-source</a> <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> library that provides an easy interface to bring together any sort of map tiles, markers, features, and other <a href="http://en.wikipedia.org/wiki/Geographic_information_system">GIS</a> goodness. OpenLayers was initially developed by <a href="http://www.metacarta.com/">MetaCarta</a>, now a project of the <a href="http://www.osgeo.org/">Open Source Geospatial Foundation</a>. Think <a href="http://maps.google.com/">Google Maps</a> but open-source and more accepting of other worldly GID data. The OpenLayers has many <a href="http://openlayers.org/dev/examples/">examples</a> and <a href="http://gallery.openlayers.org/">gallery of sites</a>.</p>
<h3 id="where-drupal-fits-in">Where Drupal Fits In</h3>
<p><a href="http://drupal.org">Drupal</a> is a great content management system and development framework. OpenLayers fits well into this because it basically is a really great visualization tool for content (the most obvious visualization being maps). Drupal can basically provide the ability to create and management data/content and OpenLayers can be a fun vehicle to displaying that content.</p>
<h3 id="the-history">The History</h3>
<p>The <a href="http://drupal.org/project/openlayers">Drupal OpenLayers Module</a> has actually been around for almost 2 years. Started by <a href="http://drupal.org/user/53081">bdragon</a>, he saw early on its strength of offering a nice interface for creating <a href="http://en.wikipedia.org/wiki/GIS#Vector">features</a>. His work was later merged with <a href="http://drupal.org/user/25730">crischan</a>. All that was pretty much scrapped and the module was restarted once again in <a href="http://drupal.org/cvs?commit=187152">late March of 2009</a>.</p>
<p>Having worked with Brandon before, I approached him to see what he was planning with the module and if I could help out at all. We discussed plans to create a simple <a href="http://en.wikipedia.org/wiki/API">API</a> and a <a href="http://drupal.org/project/cck">CCK</a> widget for the <a href="http://drupal.org/project/geo">Geo</a> field.</p>
<p>Pretty much the day after Brandon and I talked about what we wanted to do with the module, <a href="http://drupal.org/user/47098">phayes</a> <a href="http://groups.drupal.org/node/20468">released</a> the <a href="http://drupal.org/project/geo_gui">geo_gui</a>. I <a href="http://groups.drupal.org/node/20475">wrote a post</a> about how it would be nice to have Drupal’s GIS efforts a little more in sync, and Patrick was quick to respond.</p>
<p>Brandon, Patrick, and I sat down in IRC and figured out quickly that we had the same goals, and that the OpenLayers module would be the more appropriate place for our efforts. We also discovered that our skills complimented each other well, Patrick knowing GIS and Javascript well, I knowing Drupal and PHP, and Brandon being a master of all things.</p>
<h3 id="about-this-discussion">About this Discussion</h3>
<p>This article is mostly about how we have developed this module, and what kind of practices, standards, techniques we used along the way. Please keep in mind, at the time of this writing, we are still actively developing, and with all programming, there is always another way to do the same thing.</p>
<p>Some assumptions I want to make up front as we start getting into the code:</p>
<ul>
<li>You have built a <a href="http://drupal.org">Drupal</a> site from start to finish, and understand the basic concepts of Drupal.</li>
<li>You have a good understanding of important contributed modules like <a href="http://drupal.org/project/views">Views</a> and <a href="http://drupal.org/project/cck">CCK</a>.</li>
<li>You are familiar with mapping on the web, meaning you have used <a href="http://maps.google.com">Google Maps</a> before.</li>
<li>You know <a href="http://php.net">PHP</a>, meaning you know the syntax and can read it on a simple level.</li>
<li>You know <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> and <a href="http://jquery.com/">jQuery</a>, again, to a basic degree (being able to read).</li>
<li>You know <a href="http://en.wikipedia.org/wiki/HTML">HTML</a> and <a href="http://www.w3.org/Style/CSS/">CSS</a>. You should be able to write both of these as these are the building blocks of any modern website.</li>
</ul>
<p>You can learn a lot of these technologies and more at the <a href="http://www.w3schools.com/">W3 Schools</a> site.</p>
<h3 id="drupal-coding-references">Drupal Coding References</h3>
<p>The following are good references for <a href="http://drupal.org/contributors-guide">writing Drupal code</a> (assuming Drupal 6):</p>
<ul>
<li>Coding Guidelines
<ul>
<li><a href="http://drupal.org/coding-standards">Drupal PHP Coding Standards</a></li>
<li><a href="http://drupal.org/node/1354">Drupal Code Commenting Standards</a></li>
<li><a href="http://groups.drupal.org/node/6355">Drupal HTML Coding Standards</a></li>
<li><a href="http://drupal.org/node/302199">Drupal CSS Coding Standards</a></li>
<li><a href="http://drupal.org/node/172169">Drupal Javascript Coding Standards</a></li>
</ul>
</li>
<li>Module Building
<ul>
<li><a href="http://drupal.org/node/206753">Writing a Drupal Module</a> (and sub-pages)</li>
<li><a href="http://drupal.org/node/231036">Writing .info Files</a></li>
<li><a href="http://drupal.org/node/323314">Writing .install Files</a></li>
<li><a href="http://drupal.org/node/161085">Module Documentation</a></li>
</ul>
</li>
<li>Writing Good Code
<ul>
<li><a href="http://drupal.org/writing-secure-code">Writing Secure Code</a> (and sub-pages)</li>
<li><a href="http://drupal.org/node/121997">Using Javascript in Drupal</a> (and sub-pages)</li>
<li>Know the <a href="http://api.drupal.org">Drupal API</a> and <a href="http://drupal.org/node/326">Working with the API</a></li>
<li>Know the <a href="http://api.drupal.org/api/file/developer/topics/forms_api.html">From API</a></li>
<li>Know the <a href="http://api.drupal.org/api/group/hooks">Drupal Hooks</a></li>
<li>Know the <a href="http://drupal.org/node/165706">Theme Layer</a></li>
<li>Know <a href="http://api.drupal.org/api/function/t">t()</a> and <a href="http://api.drupal.org/api/function/l">l()</a></li>
<li>Use the <a href="http://drupal.org/project/coder">Coder Module</a></li>
</ul>
</li>
<li>Contributing to Drupal
<ul>
<li><a href="http://drupal.org/handbook/cvs">Drupal and CVS</a></li>
<li><a href="http://drupal.org/handbook/cvs/quickstart">CVS Quickstart</a></li>
</ul>
</li>
</ul>
<h3 id="the-development">The Development</h3>
<p>I was given the responsibility of creating the first prototype. I was lucky to have Patrick’s module to help with the Javascript and OpenLayers side of things, but there was still a need to do things the Drupal way. The two basic functions of the core OpenLayers module that would provide an interface for further functionality are the following:</p>
<ul>
<li>An associative array to hold all the data that is needed to render a map.</li>
<li>A set of Javascript functions to handle the data that is passed to it.</li>
</ul>
<p>Please note that the following code is from a version that is still in development, and at a point that we have not taken the time to fully audit our code and release the module.</p>
<h4 id="a-basic-map-array-and-sensible-defaults">A Basic Map Array and Sensible Defaults</h4>
<p>A very basic map array is below. Note the different depths as these usually mean separate processing.</p>
<p>This function also points out an important topic: <strong>Sensible Defaults</strong>. Sensible defaults basically mean that given no user input or customization, how will the system react. This is important from a usability standpoint, as it means that the module works without any configuration. Specifically for this module, it means that a map can be rendered without having to set any values.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Get Map Defaults
*
* @return
* map array
*/</span>
<span class="k">function</span> <span class="n">_openlayers_get_map_defaults</span><span class="p">()</span> <span class="p">{</span>
<span class="nv">$map_default</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'id'</span> <span class="o">=></span> <span class="nf">_openlayers_create_map_id</span><span class="p">(),</span>
<span class="s1">'width'</span> <span class="o">=></span> <span class="s1">'auto'</span><span class="p">,</span>
<span class="s1">'height'</span> <span class="o">=></span> <span class="s1">'300px'</span><span class="p">,</span>
<span class="s1">'center'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'lat'</span> <span class="o">=></span> <span class="s1">'0'</span><span class="p">,</span>
<span class="s1">'lon'</span> <span class="o">=></span> <span class="s1">'0'</span><span class="p">,</span>
<span class="s1">'zoom'</span> <span class="o">=></span> <span class="mi">2</span><span class="p">,</span>
<span class="p">),</span>
<span class="s1">'options'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'projection'</span> <span class="o">=></span> <span class="mi">4326</span><span class="p">,</span>
<span class="s1">'displayProjection'</span> <span class="o">=></span> <span class="mi">4326</span><span class="p">,</span>
<span class="p">),</span>
<span class="s1">'controls'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'LayerSwitcher'</span> <span class="o">=></span> <span class="kc">TRUE</span><span class="p">,</span>
<span class="p">),</span>
<span class="s1">'layers'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'openlayers_default_wms'</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="k">return</span> <span class="nv">$map_default</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<h4 id="rendering-the-map">Rendering the Map</h4>
<p>The following if the rendering function for a map. The input is the associative array talked about above.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Render Map
*
* Given perimeters, render an OpenLayers map
*
* @ingroup API
* @param $map
* Associative array of map paramters
*
* @return
* Boolean if successful
*/</span>
<span class="k">function</span> <span class="n">openlayers_render_map</span><span class="p">(</span><span class="nv">$map</span> <span class="o">=</span> <span class="k">array</span><span class="p">())</span> <span class="p">{</span>
<span class="c1">// Check array
</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_array</span><span class="p">(</span><span class="nv">$map</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">FALSE</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Intialize
</span>
<span class="k">if</span> <span class="p">(</span><span class="nf">openlayers_intialize</span><span class="p">()</span> <span class="o">==</span> <span class="kc">FALSE</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">FALSE</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Check ID
</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$map</span><span class="p">[</span><span class="s1">'id'</span><span class="p">])</span> <span class="p">{</span>
<span class="nv">$map</span><span class="p">[</span><span class="s1">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="nf">_openlayers_create_map_id</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// Merge with site defaults (saved values)
</span>
<span class="nv">$saved_defaults</span> <span class="o">=</span> <span class="nf">variable_get</span><span class="p">(</span><span class="s1">'openlayers_defaults'</span><span class="p">,</span> <span class="k">array</span><span class="p">());</span>
<span class="nv">$map</span> <span class="o">=</span> <span class="nf">openlayers_merge_maps</span><span class="p">(</span><span class="nv">$saved_defaults</span><span class="p">,</span> <span class="nv">$map</span><span class="p">);</span>
<span class="c1">// Merge with module/system defaults
</span>
<span class="nv">$system_defaults</span> <span class="o">=</span> <span class="nf">_openlayers_get_map_defaults</span><span class="p">();</span>
<span class="nv">$map</span> <span class="o">=</span> <span class="nf">openlayers_merge_maps</span><span class="p">(</span><span class="nv">$system_defaults</span><span class="p">,</span> <span class="nv">$map</span><span class="p">);</span>
<span class="c1">// Process layers
</span>
<span class="nv">$map</span><span class="p">[</span><span class="s1">'layers'</span><span class="p">]</span> <span class="o">=</span> <span class="nf">_openlayers_layers_process</span><span class="p">(</span><span class="nv">$map</span><span class="p">[</span><span class="s1">'layers'</span><span class="p">],</span> <span class="nv">$map</span><span class="p">);</span>
<span class="c1">// Hook for one last alter
</span>
<span class="c1">// hook_openlayers_map_alter(&amp;$map = array())
</span>
<span class="nf">drupal_alter</span><span class="p">(</span><span class="s1">'openlayers_map'</span><span class="p">,</span> <span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="nv">$map</span><span class="p">);</span>
<span class="c1">// Check our map for errors
</span>
<span class="nf">_openlayers_error_check_map</span><span class="p">(</span><span class="nv">$map</span><span class="p">);</span>
<span class="c1">// Add map container to drupal JS settings
</span>
<span class="nv">$openlayers</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'openlayers'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'maps'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="nv">$map</span><span class="p">[</span><span class="s1">'id'</span><span class="p">]</span> <span class="o">=></span> <span class="nv">$map</span><span class="p">,</span>
<span class="p">),</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="nf">drupal_add_js</span><span class="p">(</span><span class="nv">$openlayers</span><span class="p">,</span> <span class="s1">'setting'</span><span class="p">);</span>
<span class="c1">// Add themed HTML (no need for it to go to JS)
</span>
<span class="nv">$map</span><span class="p">[</span><span class="s1">'themed'</span><span class="p">]</span> <span class="o">=</span> <span class="nf">theme</span><span class="p">(</span><span class="s1">'openlayers_map'</span><span class="p">,</span> <span class="nv">$map</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$map</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<h4 id="hooks">Hooks</h4>
<p>The rendering process actually involves 3 different hooks (though some are within sub-functions):</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">hook_openlayers_layers_info</span><span class="p">()</span></code></pre></figure>
</div>
<p>This hook gathers information on layers that are available to a map. The main goal of this hook is to get data on how to get more detailed data. This is important so that we are not unnecessarily processing a lot of data until the right time.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">hook_openlayers_layers_handler_info</span><span class="p">(</span><span class="nv">$map</span> <span class="o">=</span> <span class="k">array</span><span class="p">())</span></code></pre></figure>
</div>
<p>This hook gathers information on how to handle layers, specifically which Javascript function to call in order to process the layer.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="nf">hook_openlayers_map_alter</span><span class="p">(</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="nv">$map</span> <span class="o">=</span> <span class="k">array</span><span class="p">())</span></code></pre></figure>
</div>
<p>This is an alter hook, which is a little more specific that a regular hook. It’s most prominent use is with Drupal forms. This basically passes around the map array to any module that wants it to see if there is any final processing to do.</p>
<p>The OpenLayers Layers module, at the moment, is just implementation of the first two hooks. In the future it will become an actual interface for managing layers, but will still remain implementations of these hooks.</p>
<h4 id="javascript-processing">Javascript Processing</h4>
<p>The following is the very top level of the map array processing. We are sending the map array with <a href="http://api.drupal.org/api/function/drupal_add_js">drupal_add_js($array, ‘setting)</a>, which can be accessed with something like: <code>Drupal.settings.array.key</code>.</p>
<div>
<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="cm">/**
* When document is ready for JS
*/</span>
<span class="nx">jQuery</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Store rendered maps and other OpenLayer objects in Drupal.openlayers.activeObjects
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">mapDefs</span> <span class="o">=</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">settings</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">maps</span><span class="p">;</span>
<span class="c1">// Go through array and make maps
</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">mapDefs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">mapDefs</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="c1">// Check to see if there is a div on the page ready for the map. If there is then proceed.
</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">).</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Make div the right dimensions and add custom controls
</span>
<span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="dl">'</span><span class="s1">width</span><span class="dl">'</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">width</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="dl">'</span><span class="s1">height</span><span class="dl">'</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>
<span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">).</span><span class="nx">after</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="openlayers-controls" id="openlayers-controls-</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">"></div></span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#openlayers-controls-</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="dl">"</span><span class="s2">position</span><span class="dl">"</span><span class="p">,</span><span class="dl">"</span><span class="s2">relative</span><span class="dl">"</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="dl">"</span><span class="s2">bottom</span><span class="dl">"</span><span class="p">,</span><span class="nx">map</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>
<span class="c1">// Set-up our registry of active OpenLayers javascript objects for this particular map.
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{};</span>
<span class="c1">// Set up places for us to store layers, controls, etc.
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">controls</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">layers</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">active</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="c1">// Render Map
</span>
<span class="nx">openlayersRenderMap</span><span class="p">(</span><span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">mapDefs</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="cm">/**
* Render OpenLayers Map
*/</span>
<span class="kd">function</span> <span class="nx">openlayersRenderMap</span><span class="p">(</span><span class="nx">map</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Create Projection objects
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">projection</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">OpenLayers</span><span class="p">.</span><span class="nx">Projection</span><span class="p">(</span><span class="dl">"</span><span class="s2">EPSG:</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">projection</span><span class="p">);</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">externalProjection</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">OpenLayers</span><span class="p">.</span><span class="nx">Projection</span><span class="p">(</span><span class="dl">"</span><span class="s2">EPSG:</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">displayProjection</span><span class="p">);</span>
<span class="c1">// Create base map options
</span>
<span class="kd">var</span> <span class="nx">options</span> <span class="o">=</span> <span class="nx">openlayersCreateMapOptions</span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">options</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">controls</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="c1">// Store map in our registry of active OpenLayers objects
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">map</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">OpenLayers</span><span class="p">.</span><span class="nb">Map</span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
<span class="c1">// Add ID to map.
</span>
<span class="c1">// @@TODO: Properly namespace this.
</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">map</span><span class="p">.</span><span class="nx">mapid</span> <span class="o">=</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span>
<span class="c1">// Add events to the map
</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">evtype</span> <span class="k">in</span> <span class="nx">map</span><span class="p">.</span><span class="nx">events</span><span class="p">){</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">ev</span> <span class="k">in</span> <span class="nx">map</span><span class="p">.</span><span class="nx">events</span><span class="p">[</span><span class="nx">evtype</span><span class="p">]){</span>
<span class="c1">//@@TODO: Do this without eval. See http://drupal.org/node/172169 on why we should not use eval.
</span>
<span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">Drupal.openlayers.activeObjects[map.id].map.events.register(evtype,Drupal.openlayers.activeObjects[map.id].map,</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">events</span><span class="p">[</span><span class="nx">evtype</span><span class="p">][</span><span class="nx">ev</span><span class="p">]</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">);</span><span class="dl">"</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">//On MouseOver mark the map as "active".
</span>
<span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">).</span><span class="nx">mouseover</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">)].</span><span class="nx">active</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}).</span><span class="nx">mouseout</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">)].</span><span class="nx">active</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">});</span>
<span class="c1">// We set up all our layers
</span>
<span class="nx">openlayersProcessLayers</span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">layers</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="c1">// Make some layers editable and set-up the editing interface.
</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">draw_features</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">openlayersProcessDrawFeatures</span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">draw_features</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Add layers to map
</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">l</span> <span class="k">in</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">layers</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">layer</span> <span class="o">=</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">layers</span><span class="p">[</span><span class="nx">l</span><span class="p">];</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">map</span><span class="p">.</span><span class="nx">addLayer</span><span class="p">(</span><span class="nx">layer</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Add controls to map
</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">c</span> <span class="k">in</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">controls</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">control</span> <span class="o">=</span> <span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">controls</span><span class="p">[</span><span class="nx">c</span><span class="p">];</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">map</span><span class="p">.</span><span class="nx">addControl</span><span class="p">(</span><span class="nx">control</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">control</span><span class="p">.</span><span class="nx">activeByDefault</span><span class="p">)</span> <span class="nx">control</span><span class="p">.</span><span class="nx">activate</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// Zoom to Center
</span>
<span class="kd">var</span> <span class="nx">center</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">OpenLayers</span><span class="p">.</span><span class="nx">LonLat</span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">center</span><span class="p">.</span><span class="nx">lon</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">center</span><span class="p">.</span><span class="nx">lon</span><span class="p">);</span>
<span class="nx">Drupal</span><span class="p">.</span><span class="nx">openlayers</span><span class="p">.</span><span class="nx">activeObjects</span><span class="p">[</span><span class="nx">map</span><span class="p">.</span><span class="nx">id</span><span class="p">].</span><span class="nx">map</span><span class="p">.</span><span class="nx">setCenter</span><span class="p">(</span><span class="nx">center</span><span class="p">,</span> <span class="nx">map</span><span class="p">.</span><span class="nx">center</span><span class="p">.</span><span class="nx">zoom</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>
</div>
<h4 id="open-discussion-and-collaboration">Open Discussion and Collaboration</h4>
<p>After too many emails, we decided to take out <a href="http://drupal.org/node/432642">discussion out in the open</a> about how to develop this module. This allows for us to have a more focused conversation and for other people to join in on the conversation.</p>
<p>One of the best parts of this project is collaborating with other developers around the world. One of the major strengths of open-source is having code reviewed by many people, and this project has been a small example of that. We are able to make the project much better by working together and discussing openly how and why we do things. Though we may not always agree on the best way to do things, we are able to discuss openly and come to a compromise and learn from each other.</p>
https://zzolo.org/2009/04/03/drupal-and-drinking
Drupal and Drinking
2009-04-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Last night the <a href="http://groups.drupal.org/twin-cities">Twin Cities Drupal User Group</a> had its first, of hopefully many, <a href="http://groups.drupal.org/node/20600">Drupal Happy Hours</a>. I think it was a big success, and I personally had lots of fun. We thought about what kind of projects we could do as a Drupal group, <a href="http://www.advantagelabs.com/">Advantage Labs</a> raffled off training, drank lots of good <a href="http://www.surlybrewing.com/">Surly</a> beer, had heated discussions about the feasibility of contributing back to Drupal within the non-profit sector, and for some of us, went into the late hours of the night drinking and talking of Drupal. It was like <a href="http://dc2009.drupalcon.org/">DCDC</a> all over again!</p>
<h3 id="so-why-a-happy-hour">So, Why a Happy Hour?</h3>
<p>Is there really a need to answer this question? Not really. But, in wanting to talk about our Drupal community and the larger Drupal community, I would like to explain why I organized this. We already do have a regular meeting (it’s the fourth Wednesday of every month at 7PM at <a href="http://www.advantagelabs.com/">Advantage Labs</a>, if you’re in the neighborhood). I had two main reasons for organizing this event.</p>
<p>The first being that our regular meetings are more formal. We usually do a presentation style approach where there is one main presenter and then maybe some smaller presentations or talks. It’s great and has lots of value, but the meetings are not always that interactive, and are the “presenter and audience” sort of thing. I learn lots of great things, but having just been at <a href="http://dc2009.drupalcon.org/">DCDC</a> and seeing how much I learned outside the regular conference hours (i.e. drinking), I thought it would be a good idea to bring that informal approach to our fair cities.</p>
<p>Secondly, there are many great Drupalers here in the Twin Cities, that don’t make it to the regular meetings. Hell, I don’t always make it. But, I think changing the context, time, and place, opens up the local Drupal discussion, and allows for people that otherwise can’t make it (for whatever reason) to participate more.</p>
<h3 id="a-tcdug-project-my-second-objective">A TCDUG Project, My Second Objective</h3>
<p>My first objective was just to get people together and talk (and optionally drink) without any kind of schedule or guidelines (no laptops were opened). But, my second objective was to have a short conversation about ideas for a <a href="http://groups.drupal.org/twin-cities">TCDUG</a> Drupal community project. Meaning that as a group, we decide on a discreet project that we can do in a reasonable amount of time, that helps out the Drupal community as a whole.</p>
<p>We came up with some awesome ideas. The <a href="http://groups.drupal.org/node/20904">full dynamic list is here</a>, but I will put the initial list below. From the initial discussions, it looks like a <strong>documentation sprint</strong> is in the lead (I’m sure <a href="http://drupal.org/user/65088">add1sun</a> will be happy about that).</p>
<ul>
<li>Build a module.</li>
<li>Solve a specific patch. (1)</li>
<li>Code sprint. (2)</li>
<li>Usability testing for D7. (3)</li>
<li>Funny Drupal cartoon or comic. (1)</li>
<li>Documentation sprint. (5)</li>
<li>Drupal sticker campaign.</li>
<li>Group bug hunt. (1)</li>
<li>Work through a module queue. (1)</li>
<li>TC Drupal Camp. (3)</li>
<li>Review books.</li>
<li>Screencasts for documentation.</li>
<li>Drupal kvetch (complaining) sessions.</li>
<li>Build a site for someone (and maintain it). (1)</li>
<li>A how-to and webcast on AJAX.</li>
<li>Drinking beer. (1)</li>
</ul>
<h3 id="things-learned-and-highlights">Things Learned and Highlights</h3>
<p>Here’s some things learned, or reinforced:</p>
<ul>
<li>Celebrate. Drinking and Drupal go well together.</li>
<li>Careful. Drinking and Drupal go well together.</li>
<li>Drupalers like to just talk about Drupal. Most of us spend so much time working in Drupal, it’s important to step away and talk face-to-face with other people doing similar things.</li>
<li>An agenda is not needed.</li>
</ul>
<p>Some highlights of last night:</p>
<ul>
<li><a href="http://www.pinkslipmedia.org/">Amanda</a> won the free training from <a href="http://www.advantagelabs.com/">Advantage Labs</a>, but is way too smart for any sort of training, and will be giving it to our <a href="http://www.f1webchallenge.com/">F1 Challenge</a> <a href="http://www.f1webchallenge.com/nonprofits/90-Hopkins-Minnetonka-Family-Resource-Center">non-profit</a>.</li>
<li><a href="http://www.advantagelabs.com/">Advantage Labs</a> raffled off <a href="http://www.advantagelabs.com/drupal-jumpstart-training">training</a>!</li>
<li><a href="http://www.mysteryexperience.com/">Bryan</a> played devil’s advocate in discussing how to give back to Drupal when serving or working for non-profits.</li>
<li><a href="http://www.vegguide.org/entry/36">Hard Times</a> was delicious! Well, <a href="http://www.triangleparkcreative.com/about/staff/christian-haberstroh">Christian</a> did not have the same sentiment.</li>
<li>We realized there are lots of Twin Cities technology groups, but no place to keep track of them all (hence no link).</li>
<li>There was some amazing music at <a href="http://www.thriftyhipster.com/minneapolis/university/palmers_bar/">Palmer’s</a>.</li>
<li>Someone locked my brake cord to their bike. I am not sure why that happens to me so often.
<ul>
<li>Also, unrelated to Drupal or this event, earlier in the day, my front wheel became unattached to my bike while I was riding it, which ended with me on the ground, face down, and the bike on top of me. Oddly enough, just some minor bruises. But all I can say is one word: <em>Sabotage</em>.</li>
</ul>
</li>
</ul>
https://zzolo.org/2009/03/30/cyclopath
Cyclopath
2009-03-30T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Last week, I ended up at the <a href="http://wiki.osgeo.org/wiki/Twin_Cities">Twin Cities (Minneapolis and Saint Paul, Minnesota, USA twin cities) MapServer User Group and Twin Cities Open Source Geo Chapter</a>. After Googling for a little bit, I did not find any good examples, but from what I understand GIS and Minnesota have a rich history. Anyway, the meeting was great. <a href="http://reidster.net/">Reid Priedhorsky</a>, a computer science graduate student at the University of Minnesota, came by to give a presentation on <a href="http://cyclopath.org/">Cyclopath</a>, for which he is a project manager.</p>
<h3 id="what-is-a-geo-wiki">What is a Geo-Wiki?</h3>
<p>Well, a <a href="http://en.wikipedia.org/wiki/Wiki">wiki</a>, in the computer world is usually a web application that can be easily edited by a large audience. It usually means that the users of the site, have control over what content is on the site. <a href="http://wikipedia.org/">Wikipedia</a> is the largest and most successful example.</p>
<p>The term <strong>geowiki</strong> is a fairly new concept; in fact it was new to me, just until last week. But the idea is pretty straightforward; it brings together the idea of a wiki and applies it to a map (or other GIS). This means that a map, more specifically, it’s features becomes easily editable to a large audience. For instance, you can add a new street, or note a really nice view.</p>
<p>The most widely known and used geowiki may be <a href="http://www.openstreetmap.org/">Open Street Map</a>,</p>
<h3 id="what-is-cyclopath">What is Cyclopath?</h3>
<p><a href="http://cyclopath.org/">Cyclopath</a> is a geowiki geared towards bicycling in the Twin Cities area, and is being built by <a href="http://grouplens.org/">GroupLens Research</a>, a research group at the University of Minnesota. It allows anyone to edit the features on a map of the Twin Cities. Yes, anyone! The main goal of the free editing is to put the power of determining the best bike routes and features in to the hands of the bikers in the Twin Cities.</p>
<p>You can <a href="http://cyclopath.org/index.php?title=Special:UserLogin&returnto=Main_Page">create an account</a>, though there is no need to, and the <a href="http://magic.cyclopath.org/">main map is here</a>.</p>
<h4 id="routes">Routes</h4>
<p>So, maybe you don’t really care about editing map. Still, one of the main awesome features is figuring out biking routes around the cities. On the left of the <a href="http://magic.cyclopath.org/">map</a>, there is a section called <strong>routes</strong>. Choose <em>Find New Route</em> and follow the instructions. It should find you a bike-friendly route.</p>
<h4 id="editing">Editing</h4>
<p>Routes are cool. But I think the editing is even cooler. There is too much to go over in this article. But play around.</p>
<ul>
<li>The main actions are the big buttons in the top right.</li>
<li>The term <em>blocks</em> refers to any feature, such as line or point, and there are block details on the left.</li>
<li>You can also define <em>Watch Regions</em> which are sections of the map, where you can get emails of any changes.</li>
<li>There is also a revision system, so you can revert all types of things.</li>
</ul>
<h3 id="share">Share</h3>
<p>There’s been some great edits to this map, and there are some dedicated users, but there is still room for improvement. Do you know some cool, secret bike routes? Is something wrong on the map? Share the biking love!</p>
https://zzolo.org/2009/03/29/api-module
API Module
2009-03-29T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This past week, <a href="http://drupal.org">drupal.org</a> experienced some down time; which is normal. The infrastructure team does an amazing job keeping things going as smoothly as possible, given the immensely growing community of Drupal.</p>
<h3 id="api-module">API Module</h3>
<p>But, of course, I needed to reference some functions and hooks at <a href="http://api.drupal.org">api.drupal.org</a>, the community’s resource for code documentation. Fortunately, there are a few places to go that have implemented the fantastic <a href="http://drupal.org/project/api">API module</a> to help supplement <a href="http://api.drupal.org">api.drupal.org</a> or help document their own modules.</p>
<ul>
<li><a href="http://api.freestylesystems.co.uk/">api.freestylesystems.co.uk</a></li>
<li><a href="http://api-drupal.pajunas.com/">api-drupal.pajunas.com</a></li>
<li><a href="http://drupalecommerce.org/api">drupalecommerce.org/api</a></li>
</ul>
<p>This API module basically scans a directory recursively and reads the <a href="http://drupal.org/node/1354">Drupal Doxygen</a> documentation that is available and creates an easy-to-use interface to browse it all.</p>
<h3 id="inline-documentation">Inline Documentation</h3>
<p>The API module would not be possible without in-depth, inline documentation in the Drupal code base. (We won’t get into the importance of non-inline documentation.) As a programmer, I love some documentation, but I also understand how much of an after thought it usually is for most of. So, even if you think no one will read your code, think again; there’s a good chance it will make it’s way onto someone else’s screen. And if you contribute modules, a good module has good documentation within the code.</p>
<h3 id="what-can-i-do">What Can I Do?</h3>
<p>Well, you should always <a href="http://drupal.org/node/1354">document your code correctly</a>. But, you can also set up an API site locally and for those other folks on the interwebs.</p>
<p>The first step was to install the <a href="http://drupal.org/project/api">API module</a> locally so that if the Internet was not even a possibility, then I could still have an easy interface to reference the Drupal code base.</p>
<p>The second step was to create a public site, in my case <a href="http://api.zzolo.org">api.zzolo.org</a>, to help others have this information when needed. I also put a copy of HEAD up there, started to make a section for contributed modules for Drupal 6, and installed the almost-perfect-for-api-sites-theme, <a href="http://drupal.org/project/pixture">Pixture</a>. <a href="http://api.freestylesystems.co.uk/">Freestyle Systems</a> did a nice job of setting up an API site with contributed module references, and is a good example. I attempted to mimic their ability to browse contributed modules; but mine is not as great as theirs.</p>
<h3 id="how-you-can-do-the-same">How You Can do the Same</h3>
<div class="messages success">
I have added even better documentation here: http://drupal.org/node/425940
</div>
<p>There is currently <a href="http://drupal.org/node/26669">documentation here</a> that provides instructions on how to set up the API module, but it is a little out of date. Still, its a good point in the right direction. The following instructions are for the 6.x-1.1 release of the API module, and the example is for getting Drupal 6 documentation runnning.</p>
<ol>
<li><strong>Install</strong> the <a href="http://drupal.org/project/api">API module</a> and <a href="http://drupal.org/project/job_queue">Job Queue module</a></li>
<li>Get the <strong>developers documentation</strong> via CVS. Use the CVS command (see below) at the root of your Drupal install to get the Drupal 6 docs.</li>
<li>Go to API module settings page at <strong><em>admin/settings/api/branches/new</em></strong> to create a new Branch</li>
<li>Then fill in the following:
<ul>
<li><em>URL Label</em>: <strong>drupal-6</strong>
<ul>
<li>this is the string that will denote the branch in the URL path</li>
</ul>
</li>
<li><em>Page Label</em>: <strong>Drupal 6</strong>
<ul>
<li>this is the string that will be the title of the branch</li>
</ul>
</li>
<li><em>Directories</em>: <strong>/path/to/drupal-6</strong>
<ul>
<li>this is a list of paths to read documentation from</li>
</ul>
</li>
</ul>
</li>
<li>Go to the Refresh Index page at <strong>admin/settings/api/refresh</strong> and hit <em>Reindex</em>.</li>
<li>Indexing will take place through cron, and specifically through the job queue. This could take some time. It may be beneficial to set up cron to run frequently.
<ul>
<li>Run cron: <strong>admin/reports/status/run-cron</strong></li>
<li>Job queues: <strong>admin/reports/job_queue</strong></li>
</ul>
</li>
<li>Further options:
<ul>
<li>The API page will show up at <strong>api</strong>.</li>
<li>There are also blocks to enable at <strong>admin/build/blocks</strong></li>
<li>Index PHP functions at <strong>admin/settings/api/php</strong></li>
<li>Create other Branches with other Drupal Versions</li>
</ul>
</li>
</ol>
<h4 id="code">Code</h4>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">cvs <span class="nt">-z6</span> <span class="nt">-d</span>:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout <span class="nt">-r</span> DRUPAL-6--1 contributions/docs/developer</code></pre></figure>
</div>
https://zzolo.org/2009/03/23/drupal-actions-and-triggers
Drupal Actions and Triggers
2009-03-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://drupal.org/node/199254">Actions and Triggers</a> are awesome, and they made it into core with Drupal 6. The combination of the modules creates an event and responder system for Drupal. On a basic level, Triggers are like events in (for instance, creating a comment). Actions are then the responding procedure that Drupal takes based on that Trigger.</p>
<h3 id="actions">Actions</h3>
<p>Creating actions is explained well in this article, <a href="http://www.sysarchitects.com/node/47">Writing an Action for Drupal 6</a>, and if you have the <a href="http://www.drupalbook.com/">Pro Drupal Development: 2nd Edition</a> book, there is a good chapter about creating actions.</p>
<h3 id="triggers">Triggers</h3>
<p>Triggers, on the other hand, have little documentation on how to create new ones. There are many built in triggers that provide a lot of events to attach actions to. But, when creating any critical modules, it is important to be able to set events so that logging and notifying can happen at the right points.</p>
<p>So, here is some example code for creating your own trigger.</p>
<h4 id="example">Example</h4>
<h5 id="permissions">Permissions</h5>
<p>This hook is not necessary to implement. But as I think it is good practice to implement specific permissions, I am including it. There is also a bug/problem with the trigger module, which restricts <a href="http://drupal.org/node/324183]">access control to triggers based on module name</a>. Which I volunteered to patch and have not followed through with; my apologies. Nonetheless, we can work around this with hook_menu_alter().</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_perm().
*/</span>
<span class="k">function</span> <span class="n">example_perm</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">array</span><span class="p">(</span><span class="s1">'administer our modules triggers'</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>
</div>
<h5 id="menu-alter">Menu Alter</h5>
<p>We want the permissions for administering our trigger to be unique, so we implement this hook.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_menu_alter
*/</span>
<span class="k">function</span> <span class="n">example_menu_alter</span><span class="p">(</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="nv">$items</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// By default, the trigger system uses the module name
</span>
<span class="c1">// (i.e. example) as the access for the trigger
</span>
<span class="c1">// configuration menu item. we want to change that.
</span>
<span class="nv">$items</span><span class="p">[</span><span class="s1">'admin/build/trigger/example'</span><span class="p">][</span><span class="s1">'access arguments'</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'administer our modules triggers'</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>
</div>
<h5 id="hook-info">Hook Info</h5>
<p>This hook tells the trigger module about our triggers.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_hook_info
*/</span>
<span class="k">function</span> <span class="n">example_hook_info</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Define triggers
</span>
<span class="nv">$items</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'example'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'example'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'our_new_trigger'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'runs when'</span> <span class="o">=></span> <span class="nf">t</span><span class="p">(</span><span class="s1">'When we put in our trigger, thats when it will run.'</span><span class="p">),</span>
<span class="p">),</span>
<span class="p">),</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="k">return</span> <span class="nv">$items</span><span class="p">;</span>
<span class="p">}</span> </code></pre></figure>
</div>
<h5 id="attaching-actions">Attaching Actions</h5>
<p>The next step is to define which actions will be able to be run with our triggers. We will add two actions that are already provided: the Message and Email actions. We don’t want to step on any other trigger toes. If we are not careful, we will make it so that actions will only be allowed on our trigger. So, we implement some basic conditional logic.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Implementation of hook_action_info_alter
*/</span>
<span class="k">function</span> <span class="n">example_action_info_alter</span><span class="p">(</span><span class="o">&</span><span class="n">amp</span><span class="p">;</span><span class="nv">$info</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// We want to add this modules's triggers to the email action
</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$info</span><span class="p">[</span><span class="s1">'system_send_email_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">]))</span> <span class="p">{</span>
<span class="nb">array_merge</span><span class="p">(</span><span class="nv">$info</span><span class="p">[</span><span class="s1">'system_send_email_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">],</span> <span class="k">array</span><span class="p">(</span><span class="s1">'our_new_trigger'</span><span class="p">));</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nv">$info</span><span class="p">[</span><span class="s1">'system_send_email_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'our_new_trigger'</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// We want to add this modules's triggers to the message action
</span>
<span class="k">if</span> <span class="p">(</span><span class="k">isset</span><span class="p">(</span><span class="nv">$info</span><span class="p">[</span><span class="s1">'system_message_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">]))</span> <span class="p">{</span>
<span class="nb">array_merge</span><span class="p">(</span><span class="nv">$info</span><span class="p">[</span><span class="s1">'system_message_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">],</span> <span class="k">array</span><span class="p">(</span><span class="s1">'our_new_trigger'</span><span class="p">));</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nv">$info</span><span class="p">[</span><span class="s1">'system_message_action'</span><span class="p">][</span><span class="s1">'hooks'</span><span class="p">][</span><span class="s1">'example'</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'our_new_trigger'</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span></code></pre></figure>
</div>
<h5 id="invoke-wrapper">Invoke Wrapper</h5>
<p>This is unnecessary, but helps a lot. We want to make sure that all modules know whats going on when we call our trigger, so we create this wrapper function.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Invoke trigger
*
* This function is a wrapper/helper for triggers/hooks
*
* @param $hook
* string describing hook
* @param $op
* string describing operation
* @return
* boolean, true or false if successful
*/</span>
<span class="k">function</span> <span class="n">example_invoke_hook</span><span class="p">(</span><span class="nv">$hook</span> <span class="o">=</span> <span class="s1">'example'</span><span class="p">,</span> <span class="nv">$op</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span> <span class="nv">$object</span> <span class="o">=</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Perform hook invoke
</span>
<span class="c1">// Given the complexity of your module, you might already have hooks and might need to change this
</span>
<span class="nf">module_invoke_all</span><span class="p">(</span><span class="nv">$hook</span><span class="p">,</span> <span class="nv">$op</span><span class="p">);</span>
<span class="c1">// Call trigger/actions
</span>
<span class="nv">$aids</span> <span class="o">=</span> <span class="nf">_trigger_get_hook_aids</span><span class="p">(</span><span class="nv">$hook</span><span class="p">,</span> <span class="nv">$op</span><span class="p">);</span>
<span class="nv">$context</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'hook'</span> <span class="o">=></span> <span class="nv">$hook</span><span class="p">,</span> <span class="s1">'op'</span> <span class="o">=></span> <span class="nv">$op</span><span class="p">);</span>
<span class="nf">actions_do</span><span class="p">(</span><span class="nb">array_keys</span><span class="p">(</span><span class="nv">$aids</span><span class="p">),</span> <span class="nv">$object</span><span class="p">,</span> <span class="nv">$context</span><span class="p">);</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
<h5 id="calling-our-trigger">Calling Our Trigger</h5>
<p>This is just a sample function where we call our new trigger.</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cd">/**
* Some function
*/</span>
<span class="k">function</span> <span class="n">example_function</span><span class="p">(</span><span class="nv">$params</span> <span class="o">=</span> <span class="k">array</span><span class="p">())</span> <span class="p">{</span>
<span class="c1">// ...
</span>
<span class="c1">// We are doing stuff, and then BAM! trigger
</span>
<span class="nf">example_invoke_hook</span><span class="p">(</span><span class="s1">'example'</span><span class="p">,</span> <span class="s1">'our_new_trigger'</span><span class="p">);</span>
<span class="p">}</span> </code></pre></figure>
</div>
https://zzolo.org/2009/03/22/html-subitles
HTML Subitles
2009-03-22T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>So, I realized recently that I should have subtitles in my content types. It adds better context to content, especially when viewing only titles. Then, I started to think about how I would implement this. The Drupal side is easy, but the really questions is: <strong>What markup is appropriate for subtitles?</strong></p>
<h3 id="the-options">The Options</h3>
<p>Well, the first thing that came up when searching the ol’ inter-tubes, was <a href="http://www.quirksmode.org/blog/archives/2007/10/toughquiz_vii_t.html">The Semantics of Subtitles Quiz</a>, which was exactly what I was looking for. Unfortunately there is no definite answer, but lots of different opinions. Among them are the following:</p>
<h4 id="same-header-tag-as-the-subtitle">Same Header Tag as the Subtitle.</h4>
<div>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><h1></span>Title<span class="nt"></h1></span>
<span class="nt"><h1></span>Sub-Title<span class="nt"></h1></span></code></pre></figure>
</div>
<h4 id="next-header-tag-as-the-subtitle">Next Header Tag as the Subtitle.</h4>
<div>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><h1></span>Title<span class="nt"></h1></span>
<span class="nt"><h2></span>Sub-Title<span class="nt"></h2></span></code></pre></figure>
</div>
<h4 id="arbitrary-tag-and-class-as-subtitle">Arbitrary Tag and Class as Subtitle</h4>
<div>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><h1></span>Title<span class="nt"></h1></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"subtitle"</span><span class="nt">></span>Sub-Title<span class="nt"></div></span></code></pre></figure>
</div>
<h4 id="span-in-header-subtitle">Span in Header Subtitle</h4>
<div>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><h1></span>Title <span class="nt"><span</span> <span class="na">class=</span><span class="s">"subtitle"</span><span class="nt">></span>Sub-Title<span class="nt"></span></h1></span></code></pre></figure>
</div>
<h3 id="my-solution">My Solution</h3>
<p>So, first thing I will point out is that there is not semantic tag for subtitles in <acronym title="Hypertext Markup Language">HTML</acronym>. Meaning there is no specified way to do this. So, then there are different directions to go from there. The two main questions to ask are the following, both of which are relative questions:</p>
<ul>
<li>What’s most semantic?</li>
<li>What’s most <acronym title="Search Engine Optimization">SEO</acronym> friendly?</li>
</ul>
<p>I decided to focus on what I thought was most semantic, but what happens most index friendly as well. It is important to point out that, though there are some best practices to ensure top ranking in search results, it is still a <a href="http://www.beanstalk-inc.com/articles/seo/dark-arts.html">dark art</a>. I chose to embed my subtitle within the header tag that contained the actual title. Here are my main reasons against the other options:</p>
<ul>
<li>Using the same or different headers messes with the outline of the page which is defined by the headers. A subtitle is not a header and does not define a section of the content.</li>
<li>The subtitle is actually just a part of the title, in my opinion. If it cannot actually have its own tag, a subtitle defaults to the title itself.</li>
<li>My dark art (SEO) gut-feeling thinks that having more descriptive headers is only a good thing. This is only a premonition.</li>
</ul>
<p>At long last, we have a solution. But, as I was reading through the many comments on the quiz, someone did point out that, with this method, we must account for <acronym title="Cascading Style Sheets">CSS</acronym> being turned off. So, with that in mind, we want to put in a separator between the title and subtitle then make it disappear with CSS.</p>
<h4 id="html">HTML</h4>
<div>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><h1></span> Main Title
<span class="nt"><span</span> <span class="na">class=</span><span class="s">"subtitle-separator"</span><span class="nt">></span>
:
<span class="nt"></span></span>
<span class="nt"><span</span> <span class="na">class=</span><span class="s">"subtitle"</span><span class="nt">></span>
Subtitle Text Here
<span class="nt"></span></span>
<span class="nt"></h1></span></code></pre></figure>
</div>
<h4 id="css">CSS</h4>
<div>
<figure class="highlight"><pre><code class="language-css" data-lang="css"><span class="nc">.subtitle-separator</span> <span class="p">{</span> <span class="nl">display</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span> <span class="p">}</span>
<span class="nc">.subtitle</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="nb">block</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">.5em</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#999999</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
</div>
https://zzolo.org/2009/03/20/living-arrangements
Living Arrangements
2009-03-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Last night, I went to the <a href="http://www.landmarktheatres.com/Market/Minneapolis/UptownTheatre.htm">Uptown Theater</a> to see the world premiere of <a href="http://livingarrangementsmovie.com/">Living Arrangements</a>, a horror-centric comedy about a vegan couple that has to deal with a werewolf in their attic, directed by my friend Sam Thompson. It is hilarious!</p>
<p>If you missed the world premiere, I am really sorry. It was quite the experience. Even if it gets played in a theater again (and it hopefully will and should), it will not have the energy of the local community that helped create it and the people that care about them. The movie was fantastic, but the movie premiere experience was even better. My favorite part was the secret raffle prize, a DVD player that only played <a href="http://www.imdb.com/title/tt0211443/">Jason X</a> (I did not win, but a great flick if you get the chance).</p>
<object type="application/x-shockwave-flash" style="width:480px; height:295px;" data="http://www.youtube.com/v/FiOz3BAGC3Q">
<param name="movie" value="http://www.youtube.com/v/FiOz3BAGC3Q" />
</object>
https://zzolo.org/2009/03/17/drupal-sites-and-security
Drupal Sites and Security
2009-03-17T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I write this article in the spirit of open source, and with the goal of being critical of myself and the Drupal community and improving security on this great internet. I also have the highest respect for the companies and people that have worked on these sites.</p>
<p>So, along the way of my many Drupal related readings, I often find myself going to the <a href="http://cvs.drupal.org/viewvc.py/drupal/drupal/CHANGELOG.txt?view=co" title="Recent version of CHANGELOG.txt">CHANGELOG.txt</a> of sites to see if they are made with Drupal and which version they are at. CHANGELOG.txt is the standard way of Drupal communicating what has changed in each release, and is a pretty good indicator of whether a site is running Drupal and what version it is on. There are a few ways to determine <a href="http://www.lullabot.com/articles/is-site-running-drupal">if a site is Drupal</a>.</p>
<h3 id="up-to-date">Up to Date</h3>
<p>I have noticed along the way that there are a number of Drupal shops and sites that are not up to date. And I will be the first to admit that I do not keep up with all my sites. I even had to upgrade this site while writing this article to not feel like a total ass. Also, there are plenty of site that seem up to date as well.</p>
<p>So, at first I just wanted to play devils advocate and start pointing it out for fun, but started to think critically about why this happens. And well, there are many reasons as to why sites are not up to date on their Drupal core version (let alone contributed modules).</p>
<h3 id="what-does-this-mean">What Does This Mean?</h3>
<p>So, that’s the thing: there are many reasons why we don’t upgrade our sites. Sometimes it’s laziness. Sometimes it’s being too busy. Sometimes it’s the client’s job. Sometimes it’s just ignorance.</p>
<p>But we have a problem. We have all these amazing Drupal sites, but so many of them are not up to date. We even have some great tools, like:</p>
<ul>
<li><a href="http://acquia.com/products-services/acquia-network">Acquia</a></li>
<li><a href="http://drupal.org/project/drush">Drush</a></li>
<li><a href="http://drupal.org/project/update_status">Status Update</a></li>
</ul>
<p>Even with some amazing tools, short of having Drupal update itself, we still have some cultural barriers. It just seems that these things are not valued like they should be. We love security, but in practice, security often gets overlooked. I’ll be the first to admit, that sometimes I take the easier way out. I also think, that this cultural issue is more than just the Drupal community. We all know the value of testing, documentation, commenting, security, planning, etc, but as programmers that don’t work at IBM or Microsoft, we often slide by these things and hope people don’t notice. I may be getting a little over my head here, but my point is that we can do better (on top of the amazing things we have achieved).</p>
<h3 id="solutions">Solutions</h3>
<p>I don’t have that many possible good solutions, but I get angry with people that just criticize. So here, is a short list:</p>
<ul>
<li>Some sort of automatic way to update Drupal (I have not actually used Acquia services which may include this).</li>
<li>Better notifications. Update status has some emailing option, but why not make it default to email the administrator.</li>
<li>Easier to upgrade Drupal. I am not sure the best way to do this.</li>
<li>Pointing fingers. The list below is to point things out. If actions are taken from it, I hope sites are updated, not the mass hiding of CHANGELOG.txt.</li>
<li>Support. I am not a huge fan of supporting my clients after a project, but we all know that few clients are going to upgrade their own Drupal site.</li>
</ul>
<h3 id="changelog-reader">Changelog Reader</h3>
<p>I felt kind of lazy (and yet not lazy at the same time), so instead of visiting a bunch of sites, I created a module to collect URL’s for me and find out what version they are at. It is called <a href="http://drupal.org/project/changelogreader">Changelog Reader</a>. It is a really pointless module, and has little application besides this article, but I figured I would share. The table below is generated from the module. And don’t worry, it is not scraping a bunch of sites each time this page is loaded.</p>
<h3 id="versions-of-drupal-shops-and-big-drupal-sites">Versions of Drupal Shops and Big Drupal Sites</h3>
<p>I have collected a list of Drupal shops and larger Drupal sites from the following links:</p>
<ul>
<li>http://www.tmgstudio.com/notable-drupal-powered-websites</li>
<li>http://dc2009.drupalcon.org/sponsors</li>
</ul>
<p>There are a number of reasons why a version does not show. All the sites have been attempted to be read. The table should be in the right sidebar. Also note that this list is updated daily, hopefully revealing one day that this article is irrelevant.</p>
https://zzolo.org/2009/03/16/drush-a-king-among-men
Drush, a King Among Men
2009-03-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://drupal.org/project/drush" title="The Drupal Shell">Drush</a> is wonderful. I discovered it about six to nine months ago and can’t even fathom the amount of time it has saved me. Thank you, Drush, more specifically <a href="http://drupal.org/project/developers/97249">the wonderful developers</a> on the project.</p>
<h3 id="drush-basics">Drush Basics</h3>
<p>If you are not in the know, and it’s okay if you are not, Drush is a command line application for Drupal. Drush by itself is more of a framework, and becomes much more powerful and useful in conjunction with <a href="http://drupal.org/project/drush_extras">Drush Extras</a>. Once you have set things up, you can do something like:</p>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">drush pm <span class="nb">install </span>cck views imagecache</code></pre></figure>
</div>
<p>This would install (cvs checkout to sites/all/modules) the CCK, Views, and ImageCache modules. You would still have to go to the web administration to enable the modules. But, how easy is that! I am starting to put put together Drush install profiles, instead of using Drupal’s install profiles. (I understand that these are two very different utilities) For instance, I have put together this single command that will checkout all the latest versions of my usual modules for site:</p>
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="n">drush</span> <span class="o">-</span><span class="n">l</span> <span class="n">http</span><span class="o">://</span><span class="n">example</span><span class="mf">.</span><span class="n">org</span> <span class="n">pm</span> <span class="n">install</span> <span class="n">admin_menu</span> <span class="n">advanced_help</span> <span class="n">better_formats</span> <span class="n">calendar</span> <span class="n">cck</span> <span class="n">date</span> <span class="n">devel</span> <span class="n">favicon</span> <span class="n">filefield</span> <span class="n">globalredirect</span> <span class="n">gmap</span> <span class="n">google_analytics</span> <span class="n">imageapi</span> <span class="n">imagecache</span> <span class="n">imagecache_actions</span> <span class="n">imagefield</span> <span class="n">jquery_update</span> <span class="n">lightbox2</span> <span class="n">link</span> <span class="n">location</span> <span class="n">logintoboggan</span> <span class="n">markdown</span> <span class="n">mollom</span> <span class="n">pathauto</span> <span class="n">token</span> <span class="n">views</span> <span class="n">seo_checklist</span> <span class="n">context</span> <span class="n">spaces</span> <span class="n">cvs_deploy</span> <span class="n">coder</span> <span class="n">nodequeue</span> <span class="n">wysiwyg</span> <span class="n">webform</span> <span class="n">xmlsitemap</span> <span class="n">emfield</span> <span class="n">jq</span> <span class="n">jquery_media</span> <span class="n">content_profile</span> <span class="n">twitter</span> <span class="n">flickr</span> <span class="n">job_queue</span></code></pre></figure>
</div>
<p>And then, I can review and update them all via the following command.</p>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">drush <span class="nt">-l</span> http://example.org pm update</code></pre></figure>
</div>
<p>You still have to visit update.php and, with any contributed module, make sure it doesn’t break your site.</p>
<h3 id="recent-drush-presentation">Recent Drush Presentation</h3>
<p>At <a href="http://dc2009.drupalcon.org/">DrupalCon DC</a> just a couple weeks back, <a href="http://drupal.org/user/23">Moshe Weitzman</a> and <a href="http://drupal.org/user/19668">Owen Barton</a> did the presentation: <a href="http://dc2009.drupalcon.org/session/drush-command-line-drupal-productivity">Drush, Command Line Drupal Productivity</a>. <a href="http://www.archive.org/details/DrupalconDc2009-DrushCommandLineDrupalProductivity">Watch the video</a></p>
<h3 id="simple-script-to-help-setup-drush">Simple Script to Help Setup Drush</h3>
<p>Since the only slight problem with Drush is setting up, which has gotten much easier in the the new 2.x branch, I have created a simple shell script to help automate it. I am not that experienced with <a href="http://tldp.org/LDP/abs/html/" title="Advanced Shell Scripting">shell scripting</a>, but this works in my environment and is a good place to start otherwise.</p>
<div>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#BEGIN drush-install.sh
</span>
<span class="c">#!/bin/sh
</span>
<span class="c">###############################
</span>
<span class="c"># General variables
</span>
<span class="nv">DRUSHPATH</span><span class="o">=</span><span class="s1">'/home/alanpalazzolo/.drush'</span><span class="p">;</span>
<span class="nv">DRUSHDOWNLOAD</span><span class="o">=</span><span class="s1">'http://ftp.drupal.org/files/projects/drush-6.x-2.x-dev.tar.gz'</span><span class="p">;</span>
<span class="nv">DRUSHEXTRASDOWNLOAD</span><span class="o">=</span><span class="s1">'http://ftp.drupal.org/files/projects/drush_extras-6.x-2.0-alpha1.tar.gz'</span><span class="p">;</span>
<span class="nv">ALIASFILE</span><span class="o">=</span><span class="s1">'/home/alanpalazzolo/.bash_profile'</span><span class="p">;</span>
<span class="nv">DRUSHALIAS</span><span class="o">=</span><span class="s1">'drush'</span><span class="p">;</span>
<span class="c"># Check directory
</span>
<span class="k">if</span> <span class="se">\[</span> <span class="nt">-d</span> <span class="nv">$DRUSHPATH</span> <span class="se">\]</span><span class="p">;</span> <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"Drush directory exists."</span><span class="p">;</span>
<span class="k">else
</span><span class="nb">echo</span> <span class="s2">"Creating drush directory."</span><span class="p">;</span>
<span class="nb">mkdir</span> <span class="nv">$DRUSHPATH</span><span class="p">;</span>
<span class="k">fi</span>
<span class="c"># Go to drush dir
</span>
<span class="nb">echo</span> <span class="s2">"Going to drush directory."</span><span class="p">;</span>
<span class="nb">cd</span> <span class="nv">$DRUSHPATH</span><span class="p">;</span>
<span class="c"># Get drush
</span>
<span class="nb">echo</span> <span class="s2">"Download and untar drush."</span><span class="p">;</span>
wget <span class="nv">$DRUSHDOWNLOAD</span><span class="p">;</span>
<span class="nb">tar</span> <span class="nt">-zxvf</span> drush-<span class="k">*</span><span class="p">;</span>
<span class="c"># Get drush_extras
</span>
<span class="nb">echo</span> <span class="s2">"Download and untar drush_extras."</span><span class="p">;</span>
wget <span class="nv">$DRUSHEXTRASDOWNLOAD</span><span class="p">;</span>
<span class="nb">tar</span> <span class="nt">-zxvf</span> drush_extras-<span class="k">*</span><span class="p">;</span>
<span class="c"># Make a handy alias
</span>
<span class="nb">echo</span> <span class="s2">"Make alias in: </span><span class="nv">$ALIASFILE</span><span class="s2">"</span><span class="p">;</span>
<span class="nb">echo</span> <span class="s2">"# Drush alias auto added"</span> <span class="o">>></span> <span class="nv">$ALIASFILE</span><span class="p">;</span>
<span class="nb">echo</span> <span class="s2">"alias </span><span class="nv">$DRUSHALIAS</span><span class="s2">='php </span><span class="nv">$DRUSHPATH</span><span class="s2">/drush/drush.php'"</span> <span class="o">>></span> <span class="nv">$ALIASFILE</span><span class="p">;</span>
<span class="nb">echo</span> <span class="s2">"You may have to restart your shell session for the alias to take effect."</span><span class="p">;</span></code></pre></figure>
</div>
https://zzolo.org/2009/03/14/drupal-basics-and-best-practices
Drupal Basics and Best Practices
2009-03-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I recently compiled a simple document for a client that outlines best practices for Drupal that are not obvious at first. This is aimed at someone who has already installed Drupal, installed modules, added content, and has a basic understanding of where things are.</p>
<p>I’d also like to point out that finding pages on the internet to describe some basic things in Drupal seem to be lacking. There plenty of bits and pieces, but I had some trouble finding explanations that I thought would be really easy to find. I guess I need to write more.</p>
<h3 id="drupal--best-practices">Drupal Best Practices</h3>
<h4 id="modules">Modules</h4>
<ul>
<li>Choosing Modules
<ul>
<li>There are 1000’s of <a href="http://drupal.org/project/Modules" title="Drupal module">module</a> out there for Drupal. It’s hard to know which one is right for you, so be deliberate about which ones you install.</li>
<li>You do not want too many modules installed. It will slow down your site. (see Module Maintenance below)</li>
<li>Look at the releases. The more often and more recent, the better. If you choose something that is not or will not be maintained, you will run into trouble down the line.</li>
<li>Check the Issue Queue for that module. Do the maintainer(s) answer questions in a timely manner?</li>
<li>There is a new statistics section with each module which describes how often things are downloaded. It is not the most perfect metric, but will help.</li>
</ul>
</li>
<li>Module Downloading and Upgrading
<ul>
<li>This is a common problem with Drupal. It is kind of difficult and time-consuming to install and upgrade modules. The usual way is to download the tarball (.tar.gz) file. Un-archive it on your computer, then FTP it up to the server.</li>
<li>There is no good way to do this through the web interface. This is an inherent security flaw because your web server should not have access to write to your modules directory. (though this is not usually the practice)</li>
<li>If you are comfortable with command line, I would suggest <a href="http://drupal.org/node/321" title="Checking out from the contribution repository">checking modules out through CVS</a>. Just as recently as last week, the <a href="http://fourkitchens.com/blog/2009/03/12/cvs-instructions-tab-now-available-all-drupalorg-projects">CVS Instructions tab</a> was added to each module page, making this a lot easier. This is done on the server. Install the <a href="http://drupal.org/project/cvs_deploy">CVS Deploy module</a> as well, so that you can easily see the version of modules you are using.</li>
<li>If you want to get a little fancy, but want to save a lot of time in the long run, you can look into the <a href="http://drupal.org/project/drush" title="Drush!">Drush module</a>. It requires some initial setup, but creates a really easy way to manage modules via the command line.</li>
<li>Otherwise, you are kind of stuck downloading the tarballs.</li>
<li><strong>Always run update.php</strong> after upgrading any module and Drupal itself.</li>
<li>A side note, <a href="http://drupal.org/node/320">checking Drupal itself out via CVS</a> is a good idea as it makes upgrading easier.</li>
</ul>
</li>
<li>Module Installing and Uninstalling
<ul>
<li>Always read the README file that should come with each module.</li>
<li>Enabling and Disabling modules simply means that Drupal will not load the file when running.</li>
<li>Install and Uninstalling means that Drupal will set up data structures and destroy data respectively.</li>
<li>Disable any modules you are not using.</li>
<li>Be sure to uninstall modules you once installed and are not using (and do not want the data from). You can uninstall modules at <em>admin/build/modules/uninstall</em>.</li>
</ul>
</li>
<li>Module Directory Structure
<ul>
<li>All modules should be in either of the following directories (unless you are running a <a href="http://drupal.org/node/43816" title="Drupal multi-site instructions">multi-site</a>):
<ul>
<li><em>sites/all/modules</em></li>
<li><em>sites/default/modules</em></li>
</ul>
</li>
<li>Same with themes, except in themes folder
<ul>
<li><em>sites/all/themes</em></li>
<li><em>sites/default/themes</em></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="security">Security</h4>
<ul>
<li>Files
<ul>
<li>Only your files directory should be writable by the webserver. Either of the two folders should be your files directory:
<ul>
<li><em>sites/default/files</em></li>
<li><em>files</em></li>
</ul>
</li>
</ul>
</li>
<li>Install the <a href="http://drupal.org/project/logintoboggan">LoginToboggan module</a>. It adds some simple features, one important one is enforcing password length.</li>
<li>Drupal One User
<ul>
<li>The first user created in Drupal has all access to the site.</li>
<li>You should only use this user to run update.php.</li>
<li>You should set up a “developer” role and give it full access explicitly. Then create an account that is in this role. This adds a layer of security because you are not using the Drupal One account often.</li>
</ul>
</li>
<li>Drupal Users
<ul>
<li>Only use a single login page, not the block. Passwords are not encrypted unless you are using a SSL certificate (this has nothing to do with Drupal specifically). By only having one entry point, you limit the ability for your passwords to be read. If you are really concerned about passwords, you should get an SSL certificate.</li>
</ul>
</li>
<li>Drupal Permissions
<ul>
<li>Log in as different users to ensure that only have access to the parts of the site that you expect them to.</li>
<li>Be careful about who you give full access to. Take the time to create new users for people and new roles if necessary.</li>
<li><a href="http://drupal.org/project/cck">CCK</a> has field level permissions which can be very helpful, but a lot to maintain.</li>
</ul>
</li>
<li>Join the Security Announcements on Drupal.org. Sign up for an account, then edit your account and you will find it. http://drupal.org/user/USERID-HERE/edit/newsletter
<ul>
<li>There has been some recent trouble with the subscriptions, but you can always go to http://drupal.org/security to find out these things.</li>
</ul>
</li>
<li><a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA</a>. There are two suggestions if you are going to have anonymous users enter data (including registering for an account):
<ul>
<li><a href="http://drupal.org/project/mollom">Mollom module</a>. This is a service. It is nice because it does not display the CAPTCHA form unless the submitted data is suspected to be bad.</li>
<li><a href="http://drupal.org/project/captcha">CAPTCHA</a> and <a href="http://drupal.org/project/recaptcha">reCAPTCHA</a>. You can just install the CAPTCHA modules and have simple blocks for spam, but reCAPTCHA is a well done service to help block spam.</li>
</ul>
</li>
</ul>
<h4 id="performance">Performance</h4>
<ul>
<li>When you are not developing or doing heavy configuration in Drupal, turn off (disable) modules that are not needed. The <a href="http://drupal.org/project/admin_menu">Admin Menu</a> module has a button to help with this, as well as being a great tool for administrators.
<ul>
<li><a href="http://drupal.org/project/views">Views UI</a></li>
<li><a href="http://drupal.org/project/imagecache">Imagecache UI</a></li>
<li><a href="http://drupal.org/project/devel">Devel</a></li>
<li><a href="http://drupal.org/project/seo_checklist">SEO Checklist</a></li>
</ul>
</li>
<li>Also when you are not developing or doing heavy configuration in Drupal, go to the performance page (admin/settings/performance):
<ul>
<li>Turn simple caching on</li>
<li>Turn Block caching on</li>
<li>Optimize CSS</li>
<li>Optimize JS (I have known this to be buggy, but it is worth trying)</li>
</ul>
</li>
<li>Make sure that <a href="http://drupal.org/cron">cron</a> is running!</li>
</ul>
<h3 id="specific-modules">Specific Modules</h3>
<h4 id="cck-and-views">CCK and Views</h4>
<p>These are almost always necessary. They are very important.</p>
<ul>
<li><a href="http://drupal.org/project/cck">CCK</a> adds the ability add arbitrary fields to nodes, making content much more robust.</li>
<li><a href="http://drupal.org/project/views">Views</a> allows you to create all different kinds of ways to see the data of your site.</li>
</ul>
<h4 id="events">Events</h4>
<p>You should not use the Events module. It is suggested to use the <a href="http://drupal.org/project/date">Date module</a>, then use different <a href="http://drupal.org/project/views">Views</a> and Views-related modules, like <a href="http://drupal.org/project/calendar">Calendar</a>, to display that data. Events are really just nodes with date information, and Date module handles this better, and you can do more with it because it is a <a href="http://drupal.org/project/cck">CCK</a> field.</p>
<h4 id="development">Development</h4>
<p>Even if you are not doing development, the <a href="http://drupal.org/project/devel">Devel module</a> has some nice features. Make sure to turn it off when you are not using it.</p>
<h4 id="wysiwyg">WYSIWYG</h4>
<p>This topic is still in conversation around Drupal. But the way of the future is using the <a href="http://drupal.org/project/wysiwyg">WYSIWYG API module</a>, then using a third party editor on top of that. This helps standardize how editing works.</p>
<p>If you can get away without a WYSIWYG editor, you should do that. Without a fair amount of work, WYSIWYG editors almost always create invalid HTML markup or just create bad looking HTML.</p>
<h4 id="images">Images</h4>
<p>This is a tough one and really depends on your needs.</p>
<ul>
<li>For Images that are not within the main textarea (body), you want to create a <a href="http://drupal.org/project/cck">CCK</a> solution. A CCK solution is usually preferred. It is more user friendly and standardizes how things look on your site. This involves all of these modules and their dependencies:
<ul>
<li><a href="http://drupal.org/project/filefield">Filefield</a></li>
<li><a href="http://drupal.org/project/imagefield">Imagefield</a></li>
<li><a href="http://drupal.org/project/imagecache">ImageCache</a> (and <a href="http://drupal.org/project/imagecache_actions">ImageCache Actions</a> if you want some fancy stuff)</li>
<li><a href="http://drupal.org/project/lightbox2">Lightbox 2</a> (for some fancy effects)</li>
</ul>
</li>
<li>If you need to be able for users to put in images directly into textareas, try the <a href="http://drupal.org/project/imce">IMCE module</a>. You will need to check with what WYSIWYG editor you chose to ensure that it works.</li>
</ul>
<h4 id="mapping">Mapping</h4>
<p>For mapping of points, specifically addresses, you should use <a href="http://drupal.org/project/location">Location</a> and <a href="http://drupal.org/project/gmap">Gmap</a> modules.</p>
<h4 id="seo">SEO</h4>
<ul>
<li><a href="http://drupal.org/project/globalredirect">Global Redirect module</a></li>
<li><a href="http://drupal.org/project/favicon">Favicon module</a></li>
<li><a href="http://drupal.org/project/seo_checklist">SEO Checklist module</a>. This module does not change how your site work, but simple lists the numerous things you can do to help SEO on your site. Do not take as final word, but as more of a suggestion (you do not need to get 100%). Also, if you are done with it, disable this module.</li>
<li><a href="http://drupal.org/project/pathauto">Pathauto module</a></li>
</ul>
<h4 id="input-formats">Input Formats</h4>
<p>Input formats are how user input gets filtered. If you are using a WYSIWYG, things change a little and you will have to be a little more forgiving on what you allow through.</p>
<ul>
<li><a href="http://drupal.org/project/better_formats">Better Formats</a> module allows you to specify meaningful input format defaults per roles.</li>
<li><a href="http://drupal.org/project/htmLawed">HTMLawed</a> will clean up the HTML which is good because valid HTML is important for many things.</li>
</ul>
<h3 id="general-drupal-help">General Drupal Help</h3>
<p>There are <a href="http://drupal.org/support">many avenues of support and help with Drupal</a>. Drupal has a huge and thriving community that is usually very willing to help. http://drupal.org/support</p>
<ul>
<li><a href="http://drupal.org/irc">IRC</a>: #drupal-support channel on irc.freenode.net</li>
<li><a href="http://drupal.org/forum">Forums</a></li>
<li><a href="http://drupal.org/handbooks">Documentation</a>
<ul>
<li>This is going through some major restructuring, as it is often to find what you need. But there is still some good information in there.</li>
</ul>
</li>
<li><a href="http://drupal.org/books">Books</a>
<ul>
<li>I think the best book for the audience of this article is <a href="http://www.usingdrupal.com/">Using Drupal</a></li>
</ul>
</li>
<li>Drupal Dojo: http://drupaldojo.com/
<ul>
<li>Lots of good videos on lots of topics from beginners to advanced.</li>
</ul>
</li>
</ul>
<h3 id="what-do-you-think">What Do You Think</h3>
<p>I’d love to have feedback and be able to make this document grow.</p>
https://zzolo.org/2009/03/10/site-update
Site Update
2009-03-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This site got a new face-lift. The basic color scheme is the same, but I decided to use the <a href="http://drupal.org/project/blueprint" title=" Blueprint Drupal Theme">Blueprint theme</a> as a base. I will be the first to say that I am not very good at design, but I am always open to <a href="/contact" title="Tell me what you think">criticism</a>. I am also am never satisfied with the sate of my site, so it always end up in a state of flux. It’s good experience for me, but ends up being inconsistent to the user (which is you), so I am sorry.</p>
<h3 id="haikus-and-portraits">Haikus and Portraits</h3>
<p>I have failed! It’s true. But I am not out of the game yet. I have pretty much kept up with my pictures, but the haikus have fallen behind. Also, finding the time to post them seems to be limited. I know you are disappointed, but I will get them up as soon as possible.</p>
<h3 id="images">Images</h3>
<p>Most of the site images are broken. I will fix them real soon.</p>
https://zzolo.org/2009/03/09/drupalcon-dc-2009
DrupalCon DC 2009
2009-03-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I just got back from <a href="http://dc2009.drupalcon.org/" title="DrupalCon DC">DrupalCon DC</a>. It was amazing! I was really impressed with the quality of organization mostly done by <a href="http://www.developmentseed.org/" title="Development Seed">Development Seed</a>, and all the really great and informative sessions that I got to attend.</p>
<h3 id="sessions-and-presentations">Sessions and Presentations</h3>
<p>I’ll highlight some of the better sessions, keynotes, and <acronym title="Birds of a Feather">BoF</acronym> I went to and link to the videos where possible. Of course all of the presentations were amazing, and I still love to hear things that reinforce what I have already learned. To see a full list of sessions and links to videos, <a href="http://drupal.org/node/385952" title="DrupalCon DC 2009 Sessions and Videos">go here</a>.</p>
<h4 id="building-apis-that-rock"><a href="http://dc2009.drupalcon.org/session/building-apis-rock" title="Building APIs that Rock by Jeff Eaton">Building APIs that Rock</a></h4>
<p>A really great session on how to write modules for not just the User Interface for but for the code of other modules. <a href="http://www.archive.org/details/DrupalconDc2009-BuildingApisThatRock" title="Building APIs that Rock by Jeff Eaton">Check out the video.</a></p>
<h3 id="code-sprint">Code Sprint</h3>
<p>There was a huge turn out for the last day which included code, documentation, and design sprints. I helped with the Code Sprint. I had some trouble getting there on time, due to the highly social nature of the conference (see below). I worked on the <a href="http://drupal.org/project/term_message" title="Term Message">Term Message module</a> which is used primarily on <a href="http://drupal.org" title="Drupal.org">Drupal.org</a> to help designate when articles that are for older versions are deprecated. This module is mostly helpful for the documentation team, so I’d like to think I was bridging the gap, as I would have liked to help with the documentation.</p>
<h3 id="drupal-social">Drupal Social</h3>
<p>I met some really great people while I was there. DrupalCon was non-stop, from dawn until dawn. The day started with lots of Drupal and run through until the sun was going down. Then just as my brain was full and the night was showing her face, we all found ourselves drinking until the late night (and some cases morning). It was exhausting, but I miss it.</p>
https://zzolo.org/2009/01/01/zzolo-org
zzolo.org
2009-01-01T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://zzolo.org" title="New site: Zzolo.org">zzolo.org</a> is now in beta and should be ready to launch soon. I imagine this weekend will see the switch over. This means that anything at alanpalazzolo.com will be redirected to zzolo.org. I will do my best to redirect the more relevant content.</p>
<p>Let me know what you think. My design skills are not that good; I’ll be the first to admit</p>
https://zzolo.org/2008/11/09/where-have-i-been
Where have I been?
2008-11-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>It’s been a long time since I have put content up on this site (not to say that I have ever been consistent). But, in my defense, I have been busy. I got a wonderful job at the Chicago Technology Cooperative and since work at home which requires adjustment. I am also looking at moving back to Portland, OR.</p>
<p>But, more importantly, I have been re-developing this site. I am going to focus it more towards a location-based blog. I had a good prototype done in Drupal 5, but then realized that I am a Drupal Developer and should be ridiculed if I did not build the site in Drupal 6. I also made the the decision to build the site the correct way, which means I had to build some new modules. I just released the <a href="http://drupal.org/project/gmapfield">GMap Field</a> module. It is still in development, but I hope it will benefit the community as it will my site. I also have a Views Plugin that I am writing. Once these things are done, I should be able to put together my new site with relative (and only stylistic) ease.</p>
<p>I’d give you a time-line, but there never seems to be enough time. Let’s aim for soon.</p>
https://zzolo.org/2008/07/04/bpomd
bpomd
2008-07-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The buttery papaya orchestrated morsels, so delicious,<br />
like the brilliant pink orchid meandering through the daylight<br />
when buzzards peruse the open marshlands diving<br />
for bioluminescent probiotic organic matter decaying,</p>
<p>But, probably operating on most divulgences,<br />
the best part of my day is you.</p>
https://zzolo.org/2008/05/20/rbbqiii
RBBQIII
2008-05-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The Third Annual RhuBarBeQue went off splendidly on May 10, 2008 at Fort Awesome (that’s where I live).</p>
<p>The BhuBarBeQue is a celebration of the wonderful vegetable known as <a href="http://en.wikipedia.org/wiki/Rhubarb" title="Wikipedia: Rhubarb">Rhubarb</a>. Rhubarb is a perennial that survives in the tundra known as Minnesota, and is one of the first edible things to come up in the spring. So, the RhuBarBeQue celebrates the thawing of this Midwest place after such a long hibernation.</p>
<p>It was raining and cold, but we still had a great time. Some of the dishes that were contributed to a full belly are the following (please keep in mind that all of these were delicious):</p>
<ul>
<li>The usual RhuBarBeQue Sauce</li>
<li>Rhubarb Cream Cheese Wontons</li>
<li>Rhubarb Curried Cauliflower</li>
<li>Rhubarb Cobbler</li>
<li>Rhubarb Salsa</li>
<li>RhuJitos (Rhubarb Mojitos)</li>
<li>Rhubarb Marinated Tofu</li>
<li>Rhubarb Pilaf</li>
<li>Rhubarb and Tempeh Bread Bowl with Chevre</li>
<li>Rhubarb Wine</li>
<li>Rhubarb Dream Bars</li>
<li>Rhubarb Compote on Vanilla Ice Cream</li>
<li>Rhubarb Bread</li>
<li>Rhubarb Sticky Rice</li>
</ul>
https://zzolo.org/2008/05/16/sauvie-island
sauvie island
2008-05-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.lyricsmania.com/lyrics/kickball_lyrics_40368/other_lyrics_72037/sauvie_island_lyrics_709972.html" title="Lyrics Mania: Kickball - Sauvie Island">Sauvie Island</a> by <a href="http://www.houseopolisrecords.com/" title="Houseopolis Records - Kickball">Kickball</a> from the album <a href="http://www.houseopolisrecords.com/music.html" title="Kickball Albums">Huckleberry Eater</a> <a href="http://feelslikedecember.blogspot.com/2005/07/kickball-huckleberry-eater-review.html" title="Huckleberry Eater Review">[1]</a>.</p>
<p>This song seems to fit the sudden greenness that has descended onto this tundra and it keeps getting played over and over again.</p>
<p>Kickball is the cutest band I have ever heard. It’s like every part of my day, every part of my life, strummed onto guitars, jazzed out on drums, picked through on a bass, then smiling and yelling out through a microphone. I don’t go to too many shows by myself, but last year, I stood there with the biggest smile on my face and watched them rock out.</p>
<p>It’s really hard to find one song that would be worth representing Kickball. All their songs and albums are wonderful. So, take this, and go buy all their other albums; if you are disappointed, maybe you shouldn’t come back to this site.</p>
<p><a href="http://en.wikipedia.org/wiki/Sauvie_Island" title="Wikipedia: Sauvie Island">Sauvie Island</a> is a big island on the Columbia River, near Portland, OR. I miss Portland.</p>
https://zzolo.org/2008/05/06/it-goes-up-up-down-down
it goes up, up, down, down
2008-05-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <strong>My Love for You</strong> by <a href="http://en.wikipedia.org/wiki/ESG_%28band%29" title="Wikipedia: ESG (Band)">ESG</a> from the album <a href="http://www.souljazzrecords.co.uk/releases/?id=184" title="Soul Jazz Records release: A South Bronx Story">A South Bronx Story</a>.</p>
<p>Caitlin had this song stuck in her head the whole time we were in Belize, and thus I had it stuck in my head the whole time we were in Belize.</p>
https://zzolo.org/2008/05/05/tender-is-the-day-the-demons-go-away
tender is the day the demons go away
2008-05-05T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://lyricwiki.org/Blur:Tender" title="Lyric Wiki: Blur - Tender">Tender</a> by <a href="http://www.blur.co.uk/" title="Blur (Official Site)">Blur</a>.</p>
<p>This is the song I was listening to when I totaled my car a couple years. It was still playing after the actual accident.</p>
<p>I feel really bad for what I did, but a lot of good came out of it as well.</p>
https://zzolo.org/2008/04/27/our-bodies-like-spoons
our bodies, like spoons
2008-04-27T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The low hum of the computer fills the room,<br />
but in a way that seeps in between the air.<br />
The room is dark like the sky, not completely<br />
without light. The cats purr in their sleep,<br />
contented comfort snuggled in each paw.<br />
Our bodies fit together like sporks, raised<br />
on their sides. The radiator murmurs;<br />
the room is far from still, and yet sleeps<br />
in a bed of moments, each one beginning<br />
and ending. Her skin so close to my skin,<br />
our heat has no catalyst or end, one big spoon<br />
fitted, attached at the heart. Her dreams<br />
sail her through her day, all at once,<br />
nothing to stop or start, just an emotion.</p>
<p>There is no line that separates<br />
where I begin and she ends<br />
but we’ll find it within our love,<br />
in our bed, in this moment.</p>
https://zzolo.org/2008/04/21/the-reckoning
the reckoning
2008-04-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.songmeanings.net/lyric.php?lid=3530822107858688565" title="Lyrics at Song Meaning: People II: The Reckoning">People II: The Reckoning</a> by <a href="http://andrewjacksonjihad.com/" title="Andrew Jackson Jihad">Andrew Jackson Jihad</a> on the album <a href="http://www.absolutepunk.net/showthread.php?t=270018" title="Absolute Punk review: People That Can Eat People Are the Luckiest People in the World">People That Can Eat People Are the Luckiest People in the World</a>.</p>
<p>There are many bands and artists that strive to say the things that no one will. AJJ does that very well, but they do it with love, embracing the beauty in us all.</p>
<p>We are rainbows. We are beautiful and have something to offer to others. We are amazing and happy and make this world a great place. I have so much love for everyone.</p>
<p>We are not rainbows. We all lie, cheat, steal; we hurt the ones we love; we all have thoughts of suicide and murder; we all want to fuck the people we shouldn’t; we all just want to watch television sometimes; we all hate; we all have deep, dark secrets.</p>
<p>These things don’t make us bad. It’s a crazy world, and it would be impossible to not have these thoughts and feelings. What makes us bad, is that we are so afraid of these thoughts. We hide them and don’t ever talk about them. We fester our insecurities and lie to ourselves and others, to the point where all we can say is “Good” when someone asks how we are.</p>
<p>I think we push that darkness down, hoping to just deal with it later or not at all. Embrace it! Get it out! Scream! Personally, I don’t want to die with any secrets or regrets or darkness. (Unfortunately I would if I left today, but I’m working on it.) I don’t want to die thinking that I pulled any punches. There’s that saying, something like:</p>
<blockquote>
<p>Live everyday likes it’s your last.
It’s cliche and so usual, but we don’t even come close to it. It’s about time to let go and practice that a little more. Our deaths will not be televised, and even if they were, would you really care if a bunch of people you didn’t know watched and cried. Embrace the ones you love, and love everyone. Tell your friends you love them, and tell them they piss you off, and tell them you’re really fucking sad and want to kill someone. And listen to them.</p>
</blockquote>
<p>Anyway, that’s where I am with this song and myself. Explore yourself.</p>
https://zzolo.org/2008/04/21/short-term-memory-loss
short term memory loss
2008-04-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.lyricsandsongs.com/song/926503.html" title="Lyrics and Sonds: Short Term Memory Loss">Short Term Memory Loss</a> by <a href="http://modelcitizens.org/" title="Model Citizens: Astronautalis">Astronautalis</a> from <a href="http://www.fightingrecords.com/index.php?thispage=releases&release=38" title="Fighting Records Release: The Mighty Ocean and Nine Dark Theaters">The Mighty Ocean and Nine Dark Theaters</a> <a href="http://www.fightingrecords.com/ecards/astro/" title="Fight Records Promotion: The Mighty Ocean and Nine Dark Theaters">[1]</a>.</p>
<p>These days, there are few albums I hear that get me on the first song, and then keep me throughout the whole album. This song is perfect, followed by twelve more perfect songs.</p>
https://zzolo.org/2008/04/18/open-source-living
Open Source Living
2008-04-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I was pointed to <a href="http://osliving.com/" title="Open Source Living: Power for an Open Generation">Open Source Living</a> by my friend <a href="/friends/thomas-saunders" title="Friend: Thomas Saunders">Thomas</a> the other day, and am really excited to see this site.</p>
<p>There are a number of software collection sites out there. For people that use Windows, I would usually suggest <a href="http://www.filehippo.com/" title="File Hippo">FileHippo</a>. They have an easy-to-use interface, they actually look through the software they offer/relay, and they even offer a “Freeware Filter”. Though, this filer only narrows down to software that is free like free beer, not free as in the First Amendment.</p>
<p>Then there is <a href="http://sourceforge.net/" title="Source Forge">SourceForge</a> which is an amazing resource of open-source projects. Unfortunately, there are many thousands of projects here that range from Java date libraries to full-scale web applications. It has little focus on the type of software that is offered. Still, SourceForge is an important and critical resource for independent developers worldwide.</p>
<p>OSLiving puts these two things together. OSLiving is a great resource to find <a href="http://en.wikipedia.org/wiki/Open_source" title="Wikipedia: Open Source">open-source</a> software for any <a href="http://en.wikipedia.org/wiki/Platform_%28computing%29" title="Wikipedia: Platform (Computing)">platform</a>. What makes it stand out from the millions of other software collection sites, is that OSLiving has only open-source resources, focuses on production-level applications, and has a simple, intuitive interface.</p>
<p>OSLiving also realizes that choosing software is much more than whether it costs money or not. They realize when you are choosing software, like when you are choosing your food, you are supporting a much bigger system, be it open or closed source, organic or non-organic, local or global, non-profit or corporate. Open source is more than just software, and it is important to make decisions that are sustainable for society, not just our wallets.</p>
<p>On a similar note, there is much debate between <a href="http://www.gnu.org/philosophy/free-sw.html" title="What is Free Software (GNU Project)">Free Software</a> and <a href="http://www.opensource.org/docs/definition.php" title="Open Source Initiative">Open Source Software</a>. Though I lean towards the ideals behind the free software movement, I think that the term “open source” is more powerful.</p>
https://zzolo.org/2008/04/18/like-a-prayer
like a prayer
2008-04-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is a cover of <a href="http://en.wikipedia.org/wiki/Madonna_%28entertainer%29" title="Wikipedia: Madonna">Madonna’s</a> <a href="http://lyricwiki.org/Madonna:Like_A_Prayer" title="Lyric Wiki: Like a Prayer">Like a Prayer</a> by <a href="http://lavenderdiamond.com/" title="Lavendar Diamond">Lavender Diamond</a> from the <a href="http://en.wikipedia.org/wiki/Through_the_Wilderness" title="Wikipedia: Through the Wilderness: A Tribute to Madonna">Through the Wilderness: A Tribute to Madonna</a> compilation.</p>
<p>This is probably my favorite Madonna song. And I will not say that this version is better than the original. But Lavendar Diamond does excellent work recreating this amazing and powerful song. They make it simpler while still holding to the spiritual nature of the song.</p>
https://zzolo.org/2008/04/14/deserted
deserted
2008-04-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <strong>Deserted</strong> by <a href="http://en.wikipedia.org/wiki/Milemarker_%28band%29" title="Wikipedia: Milemarker">Milemarker</a> from <a href="http://www.milemarker.org/" title="Milemarker Official Site, which is mostly an promotion for Ominosity">Ominosity</a>.</p>
<p>I love this song; the end really gets in my soul. And by no means, is it the best of Milemarker. Milemarker has been such an underrated band in my opinion. They are aggressive, in every aspects of the word. They have a wide range of sound, and really want to push norms in their lyrics, music, and performances. One show I saw of them, Roby set her arms on fire. They like fire.</p>
<p>So, in doing research about MileMarker, in hope that what I write is accurate, I found that they are still together and about to tour Europe. That’s really exciting. Unfortunately, it seems the most up to date information is on their <a href="http://www.myspace.com/ominosity" title="Milemarker MySpace Page">MySpace Page</a>.</p>
<p><a href="http://roychristopher.com/" title="Roy Christopher">Roy Christopher</a> did a really great <a href="http://roychristopher.com/milemarker-the-only-band-that-matters" title="Interview with Milemarker by Roy Chrisopher">interview with Milemarker</a> from 2001.</p>
https://zzolo.org/2008/04/09/living-small
living small
2008-04-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&q=onelinedrawing+livin+small+lyrics&btnG=Search" title="Google Search: Lyrics for Livin Small">Livin Small</a> by <a href="http://en.wikipedia.org/wiki/Onelinedrawing" title="Wikipedia: OneLineDrawing">OneLineDrawing</a> on the album <a href="http://www.thevolunteers.net/" title="The Volunteers">The Volunteers</a>.</p>
<p>OneLineDrawing is <a href="http://en.wikipedia.org/wiki/Jonah_Matranga" title="Jonah Matranga">Jonah Matranga</a>, a beautiful, brilliant man. His songs are so pure. This song pretty much encompasses his view on making music and living life. You should check out this <a href="http://www.youtube.com/watch?v=DRCLxDaCMec" title="YouTube Video of Jonah doing Livin' Small in a Living Room">YouTube Video of Jonah doing Livin’ Small in a Living Room</a> which will give you even a better sense of how honest and cute he really is.</p>
<p>I think it’s weird: <em>our youth</em>. Not in the sense of “the children”, but in the sense of our own personal youth. I am older now and I feel pretty removed from high school and those emotions. And still, I think I am closer to it than most people my age. It’s not a time I need to go back to; I am firmly rooted in the present. But there’s so much honesty in youth that seems to disappear. There’s so much freedom in being young. Sometimes I feel it slipping away. Sometimes I can’t find it at all in certain people and thats scary. Sometimes I get lost in it.</p>
<p>There are lots of musicians that sing to a younger crowd, but most of them are either stuck being kids and immature or just trying to make money. Jonah, he knows young love and the young heart and the freedom in youth. And he knows it’s not about age. He doesn’t need anyone to sing it to. He knows we are free.</p>
<p>This is why I love OneLineDrawing. He sings to himself and other people happen to listen. He is intimate with each person that comes to his shows and listens to his music. You should listen to all his music. This is only a taste. All of it is beautiful and true. This is just what I happen to be listening to tonight.</p>
https://zzolo.org/2008/04/09/drupal-drupal-drupal
Drupal, Drupal, Drupal
2008-04-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Lots of Drupal related news for me. I have come across <a href="http://drupalmodules.com/" title="Drupal Modules">Drupal Modules</a> and <a href="http://drupalcodesearch.com/" title="Drupal Code Search">Drupal Code Search</a>, wrote <a href="http://drupal.org/project/ext_link_page" title="External Link Page - Drupal Module">my first Drupal module</a>, and contributed it after getting approved for a <a href="http://drupal.org/cvs-application" title="Drupal CVS Account">Drupal CVS Account</a>.</p>
<h3 id="drupal-modules">Drupal Modules</h3>
<p>It is pretty well known that finding a <a href="http://drupal.org/project/Modules" title="Drupal Modules">Drupal Module</a> can be a daunting task. There can be many modules that have very similar functions. And even if you can narrow it down, it is often difficult to compare the modules without installing them and playing around with them. Let alone the fact that documentation can almost always be better.</p>
<p>This is where <a href="http://drupalmodules.com/" title="Drupal Modules">Drupal Modules</a> comes in and fills these voids. It offers a really well-done interface to search modules. There are affective comments and ratings. This is a much needed service.</p>
<p>What is also amazing is that this site was built by one person that saw the need and is providing it to the Drupal community for free. Sweet, sweet Drupal and the amazing people involved.</p>
<p>I hope that <a href="http://drupal.org/" title="Drupal">Drupal.org</a> and <a href="http://drupalmodules.com/" title="Drupal Modules">Drupal Modules</a> will come together to provide a good integrated solution. Or at the least, not try to recreate the same thing in two places.</p>
<h3 id="drupal-code-search">Drupal Code Search</h3>
<p><a href="http://drupalcodesearch.com/" title="Drupal Code Search">Drupal Code Search</a> is a similar service created by the same person as <a href="http://drupalmodules.com/" title="Drupal Modules">Drupal Modules</a>. This is an extremely helpful service as well.</p>
<h3 id="my-first-module">My First Module</h3>
<p>I created my first Drupal module last night. It is called <a href="http://drupal.org/project/ext_link_page" title="External Link Page">External Link Page</a> and is a simple content filter that redirects any external link to a customized page to notify the user they are leaving the site. This seems like a popular function of government sites.</p>
<p>It is nothing wild, and I don’t actually even need to use it in any of my projects. My goal was more to write a module that could be contributed to the Drupal community than to write something amazing. I was looking for something that was simple and was not already a module. There are some other modules that mark external links, but they do not notify the user like this.</p>
<p>I learned a lot about writing modules and coding conventions. My focus in writing this module was to make sure that it was coded to specific standards and that the module had all the necessary and suggested parts. The actual programming logic behind this module is nothing special, but all the hooks and comments are there correctly. I used the <a href="http://drupal.org/project/coder" title="Drupal Coder Module">Coder</a> module to make sure it adhered to the <a href="http://drupal.org/coding-standards" title="Drupal coding standards">Drupal coding standards</a>. I also used the <a href="http://drupal.org/project/potx" title="Translation Template Extractor">Translation Template Extractor</a> module to create a template for translators.</p>
<h3 id="drupal-cvs-account">Drupal CVS Account</h3>
<p>Once the module was created, I had to apply for a <a href="http://drupal.org/cvs-application" title="Drupal CVS Application">Drupal CVS Account</a> so that I could contribute the code. I got a pretty speedy response and it was “Yes”!</p>
<p>Again, most of today was spent learning the ins and outs of maintaining a Drupal module. There is lots of <a href="http://drupal.org/handbook/cvs" title="Drupal CVS Handbook">CVS documentation</a>. I will definitely understand it better as I do it more.</p>
https://zzolo.org/2008/04/09/a-simple-thought
a simple thought
2008-04-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>You are the sky;<br />
you are my heart;<br />
you are my freedom.</p>
https://zzolo.org/2008/04/05/8-hours-of-sleep
8 hours of sleep
2008-04-05T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.againstme.net/am.php/lyrics/details/8_full_hours_of_sleep/" title="Lyrics for 8 Hours of Sleep">8 Hours of Sleep</a> by <a href="http://en.wikipedia.org/wiki/Against_Me!" title="Wikipedia: Against Me!">Against Me!</a> on the album <a href="http://www.noidearecords.com/bands/releases/againstme_axl.php" title="Reinventing Axl Rose on No Idea Records">Reinventing Axl Rose</a>.</p>
<p>Against Me! is a band that inspired my love for punk rock again. Specifically with this album a few years ago. There is so much honesty in it.</p>
<p>This song, though depressing, helps put things in perspective. I am very lucky for what I have, for the fact that I have a bed to sleep in, for the fact that I have friends and love in my life, for the fact that I am still breathing and do not have to fear death so pervasively. Still all these thoughts make me wonder why I don’t have the comfort of certain love, that there is a splitting of such special, simple love. It makes me wonder why I have to experience loss and dishonesty at all. I wonder why my heart breaks.</p>
https://zzolo.org/2008/04/03/mollom
Mollom
2008-04-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://mollom.com/" title="Mollom">Mollom</a> is a spam deterrent and overall content moderation system by <a href="http://buytaert.net/" title="Dries Buytaert">Dries Buytaert</a>, the creator of <a href="http://drupal.org" title="Drupal">Drupal</a>, and <a href="http://www.linkedin.com/profile?viewProfile=&key=4532553" title="Benjamin Schrauwen">Benjamin Schrauwen</a>. It is similar to <a href="http://akismet.com/" title="Akismet">Akismet</a>. There is a good <a href="http://drupal.org/node/241211" title="Mollom, my content monitoring startup">post about Mollom</a> by Dries on <a href="http://drupal.org" title="Drupal">Drupal.org</a>.</p>
<p>I am trying out the Public Beta. Unfortunately I don’t get many or any comments (hint hint) in order to do some good testing. I have good faith in the mind of Dries and think it will become a good option for content moderation (spam killing). I will keep this updated as I learn more.</p>
<p>Of course there is a <a href="http://drupal.org/project/mollom" title="Mollom Drupal Module at Drupal.org">Drupal Module</a> for it. There is also a <a href="http://mollom.com/files/mollom-java.zip" title="Mollom Java Library">Java Library</a> to interface with the <a href="http://mollom.com/api" title="Mollom API">API</a>.</p>
https://zzolo.org/2008/04/02/the-sky-opened-wide
the sky opened wide
2008-04-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This is <a href="http://www.songmeanings.net/lyric.php?lid=3530822107858543852" title="(Lyrics at Song Meaning) The Sky Opened Wide Like The Tide (Lucky Dragons Newage Powermix)">The Sky Opened Wide Like The Tide (Lucky Dragons Newage Powermix)</a> by <a href="http://en.wikipedia.org/wiki/The_Blow" title="Wikipedia: The Blow">The Blow</a> on the album <a href="http://www.dustedmagazine.com/reviews/1827" title="Poor Aim: Love Songs (a Dusted Review)">Poor Aim: Love Songs</a>.</p>
<p>I have had this song in my head for a couple days. It is probably because I have been listening to it for a couple days straight. I keep hitting the back button after its done. It’s like the song just is never finished. I also am putting this up for Sharon, since I talked with her for the first time in a while tonight. I think she’ll like it. I think you will too.</p>
https://zzolo.org/2008/04/01/aprils-fool
april's fool
2008-04-01T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>So brave, she stopped me in my everyday<br />
to the tune of a common place; difficult,<br />
it is to see the courage on this side.</p>
<p>One step does not force the next; each step<br />
equals the part of the sum of the moment<br />
we keep crossing paths, walking in circles.</p>
<p>My gratitude for her bravery. My apologies<br />
for not taking the next step, at least<br />
not yet. The future is everywhere we look.</p>
https://zzolo.org/2008/03/30/i-would-bike-500-miles
i would bike 500 miles
2008-03-30T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I would bike for days/weeks/months just to show up at your door and see your wonderful smiling face. I don’t think there is anything better.</p>
<ul>
<li>This includes a song by <a href="http://www.moldypeaches.com/" title="Moldy Peaches">Moldy Peaches</a>, entitled <em>Anyone Else But You</em>.</li>
<li>You will need <a href="http://www.adobe.com/products/flashplayer/" title="Adobe Flash">Flash</a> to view this.</li>
</ul>
https://zzolo.org/2008/03/30/bruce-schneier-security-theater-presentation
Bruce Schneier: Security Theater Presentation
2008-03-30T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>On Thursday, I went to the <a href="http://www.weisman.umn.edu/" title="Weisman Art Museum">Weisman Art Museum</a> at the <a href="http://umn.edu" title="University of Minnesota">University of Minnesota</a> to see <a href="http://www.schneier.com/" title="Bruce Schneier">Bruce Schneier</a> entitled <em>Security Theater</em> as part of the <a href="http://www.weisman.umn.edu/exhibits/Shambroom/" title="Paul Shambroom: Picturing Power">Paul Shambroom: Picturing Power</a> exhibit that is at the Weisman until April 20, 2008.</p>
<blockquote>
<p>In this program, Bruce Schneier helps separate “security theater”, or a fictive performance of safety and prevention, from its actual and effective workings.</p>
</blockquote>
<p>My context of Bruce is mostly computer or technology related security. The topics he addressed were not focused on computer, national, or even personal security. This lecture focused more on the psychology of security and his <em>Feeling-Model-Reality</em> view of security in society.</p>
<h3 id="security-theater-presentation">Security Theater Presentation</h3>
<p>The presentation started with a distinction between the <em>Feeling</em> of security as being separate from the <em>Reality</em> of security. The goal of this model is to bring both these things together. As a <a href="http://en.wikipedia.org/wiki/Venn_diagram" title="Wikipedia: Venn Diagram">Venn Diagram</a>, these two areas would overlap as much as possible.</p>
<p>Bruce also explained that the risks we take, what amount of security we will give up, is a trade-off, in the economical sense. There are many factors in this trade-off. But we usually will take the <em>Feeling</em> of security over the <em>Reality</em> of security.</p>
<p>Relating the feeling versus the <em>Reality</em>, Bruce stated, “if it’s news, it’s probably now worth worrying about.” This refers to the fact that news is sensational and is meant to be the extraordinary. So, if someone is murdered, no matter how often it happens, and it’s on the news, its still an exceptional event. We need to be concerned for the things that are not on the news, the things that have become everyday and desensitized. I really liked this idea.</p>
<p>Security Theater then refers to the idea that an agency is attempting to create the <em>Feeling</em> of security regardless of the <em>Reality</em> of security. His example was after September 11, 2002, there were military personnel in airports with big guns, but these guns were not loaded. The government created a <em>Feeling</em> of security and not necessarily a <em>Reality</em> of security. This is not an inherently bad thing. A <em>Feeling</em> of security is important.</p>
<p>Talking about airport security led to the idea that people making decisions, specifically politicians are obligated to <em>do something</em> especially in the case of security. <em>Doing something</em>, whether helpful or not ensures that certain kinds of blame cannot be put onto that person or agency. For instance, with airport security, each threat that has occurred has reacted a new security measure. Specifically, we have to take off our shoes at security points. We are not actually any safer because of it; but if for some reason, another person hides explosives in their shoes, the TSA cannot be blamed because they “did something”. People are not necessarily forgiving for these sort of situations, so <em>doing something</em> is often more important that solving an issue intelligently and deliberately.</p>
<p>So, how do the <em>Feeling</em> and <em>Reality</em> relate? This is where Bruce brought in another entity in the diagram: the <em>Model</em>. The <em>Model</em> is our personal view of how security works; it is our perception. Our <em>Model_s are very often not the _Reality</em>. Still, the <em>Model</em> is very much influenced by both <em>Feeling</em> and <em>Reality</em>. Again, the goal is to have the three areas to overlap.</p>
<p>A security issue like airport security has many interested parties. Unfortunately most of these parties have specific agendas. These agenda push to create a <em>Model</em> that is best fitting for that party. Usually, the forces that drive these agendas are market or economical forces.</p>
<p>The <em>Model</em> should converge with <em>Reality</em>. The idea of expertise is extremely important for this to happen. Our society is much too complex to not have experts. Experts are detrimental for creating a <em>Model</em> that is closest to <em>Reality</em>.</p>
<p>There was a time at the end for questions. I am very interested in voting, and Bruce has done a number of <a href="http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=8ff&q=bruce+schneier+voting&btnG=Search" title="Google Search: Bruce Schneier Voting">writing and research on Voting Systems</a>, so I asked him if he would apply his presentation to <a href="http://en.wikipedia.org/wiki/Voting_system" title=" Wikipedia: Voting Systems">voting systems</a>. His main point in answering the question, and one I can agree with, was that no matter the technology, a society or constituency cannot feel like it’s voting system is flawed. The <em>Feeling</em> of security is extremely important in this system.</p>
<h3 id="conclusion">Conclusion</h3>
<p>I was really impressed with this presentation. Granted, I already had a lot of respect for Bruce. Also, my co-workers got him to sign a couple hubs. There are pictures at the top of this post.</p>
<h3 id="further-resources">Further Resources</h3>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Security_theater" title="Wikipedia: Security Theater">Security Theater article at Wikipedia</a></li>
<li><a href="http://www.schneier.com/essay-155.html" title="Psychology of Security by Bruce Schneier">Psychology of Security by Bruce</a> - essay that articulates these ideas much better than I can.</li>
</ul>
https://zzolo.org/2008/03/25/drupal-5-custom-gmap-node
Drupal 5 Custom GMap Node
2008-03-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
I really enjoy <a href="http://maps.google.com/" title="Google Maps">Google Maps</a>. And though they keep a little for themselves, the <a href="http://code.google.com/apis/maps/" title="Google Maps API">Google Maps API</a> offers a really easy way to embed these maps into your own personal site. Fortunately for us <a href="http://drupal.org/" title="Drupal">Drupal</a> users, the swell folks at the <a href="http://chicagotech.org/" title="Chicago Technology Cooperative">Chicago Technology Cooperative</a> and the other <a href="http://drupal.org/project/developers/33591" title="Drupal GMap Module Developers">wonderful open-source developers</a> have put together an amazing module called <a href="http://drupal.org/project/gmap" title="Drupal GMap Module">GMap</a> that integrates well with <a href="http://drupal.org/project/location" title="Drupal Location Module">Location</a>, <a href="http://drupal.org/project/views" title="Drupal Views Module">Views</a>, and even <a href="http://drupal.org/project/cck" title="Drupal CCK Module">CCK</a> (sort of).
I have recently set up this <a href="/map" title="Places Alan Palazzolo has been">site to use the GMAP module</a>. And since this module is still not had a stable release yet, I figured I would explain what I have done with this site to get some custom maps on each node. I will go through setting up CCK fields, custom theming, and some extras.
<h3>In Action</h3>
First, have a gander at what this will look like once we are done.
<ul><li><a href="/map" title="Places Alan Palazzolo has been">This is the overall View of each node.</a></li>
<li><a href="/map/bell-museum-natural-history" title="Alan Palazzolo Place: Bell Museum of Natural History">This is an example of the specific of a node.</a></li>
</ul>
<h3>Goals</h3>
Given that I already have a bunch of nodes to create a Map View with, I want to also display a map on each of the nodes for that location or place. I also want the node maps to be customize for each node.
The main reason I would like this functionality is because I think in the context of a node that is a location, it should have a map with the node itself. Also, I think its a really nice feature to have control how that map looks. There are certain locations that I would like to be zoomed in real close, or that I want a map view, or a satellite view. This will give us that control.
<h3>Assumptions</h3>
The following is a list of assumptions in this process. If the following are not true, then this tutorial may not work for you.
<ul><li>Drupal Version: <a href="http://drupal.org/drupal-5.7" title="Drupal 5.7">5.7</a></li>
<li>GMap Version: <a href="http://drupal.org/node/204538" title="Drupal GMap Module 5.x-1.0-alpha1">5.x-1.0-alpha1</a></li>
<li>CCK Version: <a href="http://drupal.org/node/167947" title="Drupal CCK Module 5.x-1.6-1">5.x-1.6-1</a></li>
<li>Views Version: <a href="http://drupal.org/node/159390" title="Drupal CCK Views 5.x-1.6">5.x-1.6</a></li>
<li>Location Version: <a href="http://drupal.org/node/118314" title="Drupal GMap Location 5.x-1.x-dev">5.x-1.x-dev (2007-10-31)</a>. Please note that this module could be circumvented with Latitude and Longitude CCK fields.</li>
<li>You know some <a href="http://drupal.org/node/11774" title="Drupal Theming">basic theming methods</a>.</li>
</ul>
<h3>GMap Bugs</h3>
There a couple things to note about this version of the GMap Module:
<ul><li>You will need to hack the GMap Module so that it uses the most recent stable version of the Google Maps API. See <a href="http://drupal.org/node/231473" title="GMap Google Maps API">http://drupal.org/node/231473</a>.</li>
<li>There are some inconsistencies between the API.txt file and the actual way to use the GMap API. See <a href="http://drupal.org/node/236352" title="GMap API bug">http://drupal.org/node/236352</a> for more information. For our purposes, the following needs to be noted for the associateive array that will be used to create each map:
<ul><li>Use <strong>controltype</strong> instead of <em>control</em>.</li>
<li>Use <strong>maptype</strong> instead of <em>type</em>.</li>
</ul></li>
</ul>
<h3>Map Content Type</h3>
The first thing we need to do is set up a custom Content Type. This is where CCK and Location are going to come in.
<h4>Locative Information</h4>
First ensure, that Locative Information is added. When creating the Content Type, it will be at the top of the form. It's kind of hard to notice. Make sure that <strong>Maximum number of locations allowed for this type.</strong> is at least <strong>1</strong> and <strong>Default number of location forms</strong> is also at least <strong>1</strong>. <em>Plaese note that this tutorial is assuming one location per node. This could easily be changed so that it handled more that one location.</em> Enabling this Location information, will ensure that Latitude and Longitude are collected. Again this could be changed to CCK fields instead.
[img_assist|nid=16|title=Screen: Locative Information on Content Type Creation|desc=Screenshot to point out where the Locative Information section is when creating a new Content Type.|link=none|align=left|width=570|height=379]
<h4>CCK Map Parameters</h4>
Now you will want to create a set of fields to represent your map parameters. You can add or remove the ones you want. You will want to look at the <strong>GMap Macro Creator</strong> page that comes with GMap. Here is a brief description of my fields:
<table summary="CCK Map Macro Parameters">
<caption>CCK Map Macro Parameters</caption>
<thead>
<tr><th>Name</th><th>Machine Name</th><th>Type</th><th>Widget Type</th></tr>
</thead>
<tbody>
<tr><td>Map Width</td><td>field_cck_txt_map_width</td><td>Text</td><td>Text Field</td></tr>
<tr><td>Map Height</td><td>field_cck_txt_map_height</td><td>Text</td><td>Text Field</td></tr>
<tr><td>Marker</td><td>field_cck_select_marker</td><td>Text</td><td>Select List</td></tr>
<tr><td>Magnification</td><td>field_cck_select_magnification</td><td>Text</td><td>Select List</td></tr>
<tr><td>Control Type</td><td>field_cck_select_map_control</td><td>Text</td><td>Select List</td></tr>
<tr><td>Map Type</td><td>field_cck_select_map_type</td><td>Text</td><td>Select List</td></tr>
</tbody>
</table>
[img_assist|nid=15|title=Screen: Macro Parameters as GMap Node Fields|desc=Screenshot of the CCK fields that are used to create a custom GMap per node.|link=none|align=left|width=570|height=395]
The Select Lists should be filled appropriately from the <strong>GMap Macro Creator</strong> page. <em>Hint: changes some values and note the macro at the bottom.</em> Please note that these values are <strong>Case Sensitive</strong>.
<h3>Theming</h3>
Now that we have our content type set up, now we just have to determine how it is going to render all this information. Feel free to make a couple nodes with this new content type, as it will help you see what is happening.
<h4>Display Function</h4>
We will create a function in our <strong>template.php</strong> file, in our theme directory, so that calling the map in the theme will be simple.
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="c1">#function to make Gmap macro data into a map
</span>
<span class="k">function</span> <span class="n">your_theme_node_map_maker</span><span class="p">(</span><span class="nv">$id</span><span class="p">,</span> <span class="nv">$mark</span><span class="p">,</span> <span class="nv">$lat</span><span class="p">,</span> <span class="nv">$long</span><span class="p">,</span> <span class="nv">$zoom</span><span class="p">,</span> <span class="nv">$width</span><span class="p">,</span> <span class="nv">$height</span><span class="p">,</span> <span class="nv">$control</span><span class="p">,</span> <span class="nv">$map_type</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">#intialize output
</span>
<span class="nv">$output</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span>
<span class="c1">#put together array
</span>
<span class="nv">$arr_map</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'id'</span> <span class="o">=></span> <span class="nv">$id</span>
<span class="p">,</span><span class="s1">'zoom'</span> <span class="o">=></span> <span class="nv">$zoom</span>
<span class="p">,</span><span class="s1">'width'</span> <span class="o">=></span> <span class="nv">$width</span>
<span class="p">,</span><span class="s1">'height'</span> <span class="o">=></span> <span class="nv">$height</span>
<span class="p">,</span><span class="s1">'latitude'</span> <span class="o">=></span> <span class="nv">$lat</span>
<span class="p">,</span><span class="s1">'longitude'</span><span class="o">=></span> <span class="nv">$long</span>
<span class="p">,</span><span class="s1">'maptype'</span> <span class="o">=></span> <span class="nv">$map_type</span>
<span class="p">,</span><span class="s1">'controltype'</span> <span class="o">=></span> <span class="nv">$control</span>
<span class="p">,</span><span class="s1">'markers'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="k">array</span><span class="p">(</span>
<span class="s1">'markername'</span> <span class="o">=></span> <span class="nv">$mark</span>
<span class="p">,</span><span class="s1">'latitude'</span> <span class="o">=></span> <span class="nv">$lat</span>
<span class="p">,</span><span class="s1">'longitude'</span> <span class="o">=></span> <span class="nv">$long</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="p">);</span>
<span class="c1">#display map through GMap theme function
</span>
<span class="nv">$output</span> <span class="o">=</span> <span class="nf">theme</span><span class="p">(</span><span class="s1">'gmap'</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span><span class="s1">'#settings'</span> <span class="o">=></span> <span class="nv">$arr_map</span><span class="p">));</span>
<span class="c1">#return output
</span>
<span class="k">return</span> <span class="nv">$output</span><span class="p">;</span>
<span class="p">}</span> <span class="c1">#end function</span></code></pre></figure>
</div>
This should be pretty straightforward. It would not be too difficult to actually put this in the theme itself, but this way we could do some processing if necessary.
<h4>Calling the Function in the Theme</h4>
There is a couple ways to do this depending on how you like to make or edit themes. You can use the <a href="http://drupal.org/project/contemplate" title="Drupal Content Template Module">Content Template Module</a>. But I like to stick with the traditional file method.
Here is my sample <strong>node-ct-map.tpl.php</strong> file:
<div>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$page</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?></span><span class="nt"><h2</span> <span class="na">class=</span><span class="s">"title"</span><span class="nt">><a</span> <span class="na">href=</span><span class="s">"</span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$node_url</span><span class="cp">?></span><span class="s">"</span><span class="nt">></span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$title</span><span class="cp">?></span><span class="nt"></a></h2></span><span class="cp"><?php</span> <span class="p">};</span> <span class="cp">?></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"entry</span><span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$sticky</span><span class="p">)</span> <span class="p">{</span> <span class="k">print</span> <span class="s2">" sticky"</span><span class="p">;</span> <span class="p">}</span> <span class="cp">?></span><span class="s">"</span><span class="nt">></span>
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$picture</span><span class="p">)</span> <span class="p">{</span> <span class="k">print</span> <span class="nv">$picture</span><span class="p">;</span> <span class="p">}</span><span class="cp">?></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"ct-map-content"</span><span class="nt">></span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$node</span><span class="o">-></span><span class="n">content</span><span class="p">[</span><span class="s1">'body'</span><span class="p">][</span><span class="s1">'#value'</span><span class="p">]</span> <span class="cp">?></span><span class="nt"></div></span>
<span class="nt"><fieldset</span> <span class="na">class=</span><span class="s">"fieldgroup group-visits"</span><span class="nt">></span>
<span class="nt"><legend></span>Visits<span class="nt"></legend></span>
<span class="cp"><?php</span> <span class="k">print</span> <span class="nf">alanpalazzolo_custom_visits</span><span class="p">(</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_date_location_start</span><span class="p">,</span> <span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_txt_visited_descripti</span><span class="p">)</span> <span class="cp">?></span>
<span class="nt"></fieldset></span>
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$node</span><span class="o">-></span><span class="n">content</span><span class="p">[</span><span class="s1">'field_cck_img_map_images'</span><span class="p">][</span><span class="s1">'#value'</span><span class="p">])</span> <span class="p">{</span> <span class="cp">?></span>
<span class="nt"><fieldset</span> <span class="na">class=</span><span class="s">"fieldgroup group-map-pictures"</span><span class="nt">></span>
<span class="nt"><legend></span>Pictures<span class="nt"></legend></span>
<span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$node</span><span class="o">-></span><span class="n">content</span><span class="p">[</span><span class="s1">'field_cck_img_map_images'</span><span class="p">][</span><span class="s1">'#value'</span><span class="p">]</span> <span class="cp">?></span>
<span class="nt"></fieldset></span>
<span class="cp"><?php</span> <span class="p">}</span> <span class="cp">?></span>
<span class="cp"><?php</span>
<span class="c1"># Call Map Function
</span>
<span class="c1"># I have separated the parameters so that it easier to see
</span>
<span class="k">print</span> <span class="nf">alanpalazzolo_custom_node_map_maker</span><span class="p">(</span>
<span class="nv">$node</span><span class="o">-></span><span class="n">nid</span><span class="p">,</span> <span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_select_marker</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">locations</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'latitude'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">locations</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'longitude'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_select_magnification</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_txt_map_width</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_txt_map_height</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_select_map_control</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">,</span><span class="nv">$node</span><span class="o">-></span><span class="n">field_cck_select_map_type</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'view'</span><span class="p">]</span>
<span class="p">)</span> <span class="cp">?></span>
<span class="cp"><?php</span> <span class="k">print</span> <span class="nf">alanpalazzolo_custom_location</span><span class="p">(</span><span class="nv">$node</span><span class="o">-></span><span class="n">location</span><span class="p">)</span> <span class="cp">?></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"meta"</span><span class="nt">></span>
<span class="nt"><p</span> <span class="na">class=</span><span class="s">"byline"</span><span class="nt">></span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$submitted</span><span class="cp">?></span><span class="nt"></p></span>
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$terms</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?></span><span class="nt"><p><span</span> <span class="na">class=</span><span class="s">"taxonomy"</span><span class="nt">></span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$terms</span><span class="cp">?></span><span class="nt"></span></p></span><span class="cp"><?php</span> <span class="p">};</span> <span class="cp">?></span>
<span class="cp"><?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$links</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?></span><span class="nt"><p</span> <span class="na">class=</span><span class="s">"links"</span><span class="nt">></span><span class="cp"><?php</span> <span class="k">print</span> <span class="nv">$links</span><span class="cp">?></span><span class="nt"></p></span><span class="cp"><?php</span> <span class="p">};</span> <span class="cp">?></span>
<span class="nt"></div></span></code></pre></figure>
</div>
<h3>Check Our Work</h3>
Now, when going to the nodes that we have created, there should be a map with the parameteres we have set on them. For instance:
<h3>Views</h3>
This should be a fairly easy process. Create a new view.
<ul><li>Page Section
<ul><li> click <strong>Provide Page View</strong></li>
<li>choose a <em>URL</em></li>
<li>this is where the magic happens; under <em>View Type</em> choose <strong>GMap View</strong></li>
</ul></li>
<li>Fields Section
<ul><li><strong>Location: Latitude</strong></li>
<li><strong>Location: Longitude</strong> (<em>This is where the CCK fields could be substituted.</em>)</li>
<li>I would also suggest choosing the <strong>Node: Title</strong> field so that there is link in each info bubble</li>
</ul></li>
<li>Filter Section
<ul><li><strong>Node: Published</strong> is <strong>Yes</strong></li>
<li><strong>Node: Type</strong> is One Of <strong>Map Type</strong> (<em>This is the type that we defined above</em>)</li>
</ul></li>
</ul>
<h3>Questions</h3>
Please feel free to <a href="/story/comment/reply/13" title="Add a Comment">add a comment</a> or <a href="/contact" title="Contact Me">contact me</a> about this post. This is just a brief look into what can be done with these powerful technologies.
https://zzolo.org/2008/03/25/biking-awareness
Biking Awareness
2008-03-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I don’t usually like to just stick videos up on my website. But since my only form of transportation is the bicycle, I am well aware of the danger of biking down any street. So, here is a short video that should help make you more aware of people on their bikes.</p>
<div>
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Ahg6qcgoay4&hl=en" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.youtube.com/v/Ahg6qcgoay4&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355" /></embed></object>
</div>
https://zzolo.org/2008/03/23/this-thing-in-between-us
this thing in between us
2008-03-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Sometimes I wonder what love is. <br />
Most of the time its hard to find.<br />
It’s not in us, it’s in between us.</p>
https://zzolo.org/2008/03/20/the-future-of-this-site-and-myself
The Future of this Site and Myself
2008-03-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I had updated this site to <a href="http://drupal.org/download">Drupal 6</a>, but did not realize that some fundamental modules, like <a href="http://drupal.org/project/cck">CCK</a> and <a href="http://drupal.org/project/views">Views</a>, were not quite where they needed to be. This is not to say that there is any sort of lacking on the developer’s side.</p>
<p>The <a href="http://drupal.org/">Drupal</a> project is really amazing, and I have come to love it and its community. So, even though I got a little too excited, I also have in turn found the motivation to start to give back to such a wonderful community. The desire was already there, but I guess I needed a push. Yes, I am saying it here first; I am giving back. There are many ways to <a href="http://drupal.org/contribute">contribute</a> to Drupal. I am not sure which path I will go down first, but I have got a couple ideas for some modules.</p>
<p>Also, I am rebuilding this site from the bottom up (again):</p>
<ul>
<li>I am abandoning <a href="http://gallery.menalto.com/">Gallery 2</a>, another wonderful open-source project. This is not because of any fault of its own, but because I would like something a little more streamlined. I don’t need all the functionality that Gallery 2 comes with. The space my images were taking up was getting a little ridiculous as well. So, I apologize for anyone that had links to any of those gallery images. I imagine any of the good ones will be back up in due time.</li>
<li>I need to make a new Drupal theme, this one, <a href="http://drupal.org/project/barron">Barron</a> is pretty awesome for now.</li>
<li>I will be importing my old content as well. I would like to rethink how I was making my map points</li>
<li>I am allowing comments and using <a href="http://recaptcha.net/">reCAPTCHA</a> to avoid spam. So, please leave me some comments so I can make myself and this site better and more enjoyable for all.</li>
</ul>
https://zzolo.org/2007/07/07/drupal-theming-presentation
Drupal Theming Presentation
2007-07-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I started attending the <a href="http://groups.drupal.org/twin-cities" title="Twin Cities Drupal User Group">Twin Cities Drupal User Group</a> about 3 months ago. A friend mentioned it to me, and I thought I would check it out. It definitely helped that it is at the <a href="http://www.iatp.org/" title="IATP - Institute for Agriculture and Trade Policy">IATP Compound</a> which is two blocks from where I work and where some of my good friends have worked. It is at IATP because the only for-profit company there, <a href="http://www.advantagelabs.com/" title="Advantage Labs">Advantage Labs</a>, is a Drupal Development and Hosting firm.</p>
<p>We have a wide variety of users at these groups. This is great because we can get a good range of perspective on using and developing <a href="http://drupal.org/" title="Drupal">Drupal</a>. But, it also makes it difficult to find topics that everyone can take part in. The first session I went to, the main topic was Show and Tell, where members showed off some Drupal sites. That’s when I realized that most, if not all, of these folks were taking an existing Drupal theme and hacking it. The whole idea behind Drupal is that you should not hack it. The next meeting, when we were discussing topics for the subsequent meeting, I asked if members of Advantage Labs could demo building a module. They sort of seemed interested, so I upped the ante and said that I would do a demo on Building a Drupal Theme from Scratch. Everyone got very excited about it, so I couldn’t back out.</p>
<p>No one committed to doing a Drupal Module Building Demo. But since then I have read <a href="http://www.drupalbook.com/" title="Pro Drupal Development">Pro Drupal Development</a>, an amazing book for anyone that wants to contribute to Drupal or for anyone that wants to understand the code behind the application. I read this book in a week. I think it’s the first programming or technical book I have read from cover to cover. Anyway, my need for a Drupal Module Building Demo has diminished.</p>
<p>My experience in Drupal is fairly new (since March 2007), but I have done web development for about 3 years now. My first Drupal site was for my kickball team, the <a href="http://www.kicklemonsters.com/" title="http://www.kicklemonsters.com/">Kickle Monsters</a>. I knew instantly that I would have to learn how to create themes in Drupal. Having worked with other open source, content management system, theming is always an integral part. So, with a little research through the Drupal documentation and an open source theme from the great resource, <a href="http://www.oswd.org/" title="Open Source Web Design">Open Source Web Design</a>, I went at it.</p>
<p>I thought this process was a solid process to go through when theming - create/find a good XHTML/CSS template, then put in the variables necessary for Drupal. But I didn’t want to create a Powerpoint and bore everyone to death. It’s always a lot more fun to learn by example. Unfortunately, live technology demos always have a way of going wrong. There’s so many points of failure.</p>
<p>So, I laid out a simple, two-step plan:</p>
<ol>
<li>With the group, pick out a theme from Open Source Web Design. This will show off a great resource and impress everyone by using something that is dynamic.</li>
<li>Having already set up a live Drupal site, make the theme from Step 1 into a Drupal theme, piece by piece.</li>
</ol>
<p>I had some restrictions in mind. I did not want to go in depth to explain XHTML or CSS. I also did not want to have to go into any difficult PHP programming. Since the level of skills varied so much, I wanted it to be a lesson in theory and practice not programming</p>
<p>I’d say the hardest part was finding a laptop. I was hoping to have one by the time of the demo, but Dell is not very speedy. I ended up borrowing a MacBook from work. Unfortunately I do not have much experience with Mac OS X. But really all I needed was a browser, text-editor, and an FTP client.</p>
<p>On Wednesday 27 July 2007, and after an hour of demo, <a href="http://demo.alanpalazzolo.com/" title="Twin Cities Drupal User Group Theming Demo by Alan Palazzolo">this is what we ended up with</a>. It went smoothly, even with a high chance of things going wrong, and I think everyone got something out of it.</p>
<p>If you are interested in building your own themes in Drupal, there are some <a href="http://demo.alanpalazzolo.com/?q=node/1" title="Drupal Theming Resources">resources</a> on the demo.</p>
https://zzolo.org/2007/06/06/local-shows-from-google-calendar
Local Shows from Google Calendar
2007-06-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have put together a Google Calendar with Musical Events in the Twin Cities area that I would like to go to.</p>
https://zzolo.org/2007/06/04/rbbqii
RhuBarBeQue 2
2007-06-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The RhuBarBeQue 2 poster from 2007:</p>
<p><img src="/images/posts/second_annual_rhubarbeque_l.jpg" alt="RBBQ" /></p>
https://zzolo.org/2007/06/03/second-annual-rhubarbeque
Second Annual RhuBarBeQue
2007-06-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Tonight was the <a href="http://alanpalazzolo.com/gallery2/d/5020-2/second_annual_rhubarbeque_l.jpg?g2_GALLERYSID=cfbb0c35bdb81c6c8e7051889539ca9f" title="Second Annual RhuBarBeQue Flyer">Second Annual RhuBarBeQue</a>. It was a little rainy and a bit cool, but nothing stops the <a href="http://en.wikipedia.org/wiki/Rhubarb" title="Wikipedia - Rhubarb">Rhubarb</a>. Thank you everyone that came. Everything was delicious. Here are some of the highlights:</p>
<ul>
<li>I made about a gallon of RhuBarBeQue Sauce. It went on such things as tempeh, tofu, steak, chicken, vegie burgers, etc. This was the first time I made it and I sort of winged it. In fact, this was my first BBQ sauce ever. Not to toot my own horn, but it came out pretty well. Next time, I will give it a little more spice.</li>
<li>Cole made Rhubarb Cornbread. Her signature cornbread was only enhanced with the power of Rhubarb.</li>
<li>Cole also made Baked Rhubarb.</li>
<li>Rebecca made a Rhubarb Crisp that ended up all gooey and sweet. MMMMMMMM.</li>
<li>Rebecca also made a Pizza with Rhubarb on it, as well as caramelized onions and goat cheese.</li>
<li>Jess made RhuGarita mix (Rhubarb and Margarita) for our drinking pleasure.</li>
<li>Jessi made Strawberry and Rhubarb Crisp. A popular item done well.</li>
<li>Ben made Rhubarb Cheesecake. Wow.</li>
<li>Andy made Rhubarb Relish to compliment the chicken.</li>
<li>Andy also made Rhubarb Baked Beans. A perfect combination.</li>
<li>Matt made Rhubarb Salsa.</li>
<li>Beth and Becky came with yet another delicious Rhubarb Crisp, but with Strawberries and Peaches!</li>
<li>Rebecca even made a <a href="http://vimeo.com/clip:203125" title="Vimeo - Rhubarb and Metro Movie">Rhubarb Movie</a> with her great dog Metro (who couldn’t make it).</li>
<li>There were other non-Rhubarb items that were wonderful as well.</li>
</ul>
https://zzolo.org/2007/06/03/local-wind-powered-web-hosting
Local, Wind-Powered Web-Hosting
2007-06-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<table>
<tbody>
<tr>
<td>There are a lot of [web-hosting companies](http://en.wikipedia.org/wiki/Web_hosting “Wikipedia</td>
<td>Web Hosting Service”) out there. Right now I go through <a href="http://spinink.com/" title="SpinInk Web Hosting">SpinInk</a> who is backed by <a href="http://www.dreamhost.com/" title="Dreamhost">Dreamhost</a>. They are great and I am really happy with my service.</td>
</tr>
</tbody>
</table>
<p>But I stumbled upon a <a href="http://www.sundaysenergy.com/web/hosting" title="Sundays Energy Web Hosting">local (Minneapolis, MN), wind-powered web host</a>. Granted, I do not know anything about their service, and I think their prices are a bit high, but the idea is great. If I was not going for cheap with my hosting, I would consider them for sure.</p>
https://zzolo.org/2007/05/31/google-map-street-view
Google Map Street View
2007-05-31T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Google just recently added its <a href="http://maps.google.com/help/maps/streetview/index.html" title="Google Map Street View">Street View</a> to its <a href="http://maps.google.com/" title="Google Maps">Google Maps</a>, an already amazing web application.</p>
<p>It seems to be only for select cities at the moment. But you can view a virtual tour of the streets. Staying along the road, you can pan around and see the world at incremental points.</p>
<p>Here is a <a href="http://maps.google.com/help/maps/streetview/index.html" title="Google Map Street View">Street View Demo</a>.</p>
<p>To get to it from the <a href="http://maps.google.com/" title="Google Maps">Google Maps</a> default view, you will select the “Street View” in the top right of the map (similar to Map, Satellite, Traffic, or Hybrid). You will mostly likely need to be focused on a city that has this option, such as San Fransisco, New York, Denver, etc. A Camera Icon will appear of each city.</p>
<p>When will Google install tiny chips into our brains, or let us know they already have. Great work, Google.</p>
https://zzolo.org/2007/05/09/danger-and-medusae
Danger and Medusae
2007-05-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>My main desktop computer is cased in <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16811148012" title="xPCGear Arylic Case">acrylic</a>. I had never owned an acrylic case or even seen one in person before, so I figured I would try it out. I even went as far as buying a <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16817170011" title="Logisys Acrylic Power Supply">power supply</a> cased in acrylic. I mean, if I can see the power supply, I might as well be able to see through it.</p>
<h3 id="danger">Danger</h3>
<p>Well, the problem that plagued the acrylic power supply and case was that the <a href="http://en.wikipedia.org/wiki/Computer_fan" title="Wikipedia | Computer Fan">fans</a> on the <a href="http://en.wikipedia.org/wiki/Computer_power_supply" title="Wikipedia | Computer Power Supply">power supply</a> contained <a href="http://en.wikipedia.org/wiki/Led" title="Wikipedia: Light Emitting Diode">LEDs</a> that only turned off with the computer. So, after looking into the power supply (because I could), I determined that the fans were just regular computer fans with three-pin connectors. These would be easy to replace.</p>
<table>
<tbody>
<tr>
<td>The first thing to remember is that the power supply contains huge, dangerous [capacitors](http://en.wikipedia.org/wiki/Capacitors “Wikipedia</td>
<td>Capacitors”). These capacitors, if touched, can be quite painful or lethal. I left the computer unplugged for over 12 hours and kept the power button down for over ten seconds while it was off. Without any kind of measuring device, I did the best I could. Removing the fans was straight-forward and took about twenty minutes with cleaning.</td>
</tr>
</tbody>
</table>
<p><img src="http://alanpalazzolo.com/gallery2/d/4997-2/2007_medusae+_21_.JPG" alt="Power Supply 1" /> <img src="http://alanpalazzolo.com/gallery2/d/5006-2/2007_medusae+_24_.JPG" alt="Power Supply 2" /> <img src="http://alanpalazzolo.com/gallery2/d/5009-2/2007_medusae+_25_.JPG" alt="Power Supply 3" /> <img src="http://alanpalazzolo.com/gallery2/d/5012-2/2007_medusae+_26_.JPG" alt="Power Supply 4" /> <img src="http://alanpalazzolo.com/gallery2/d/4894-2/2007_medusae+_27_.JPG" alt="Power Supply 5" /> <img src="http://alanpalazzolo.com/gallery2/d/4898-2/2007_medusae+_28_.JPG" alt="Power Supply 6" /> <img src="http://alanpalazzolo.com/gallery2/d/4904-2/2007_medusae+_30_.JPG" alt="Power Supply 7" /> <img src="http://alanpalazzolo.com/gallery2/d/4913-2/2007_medusae+_33_.JPG" alt="Power Supply 8" /></p>
<h3 id="medusae">Medusae</h3>
<p>I named this computer Medusae, because it resembles <a href="http://en.wikipedia.org/wiki/Medusa_%28biology%29" title="Wikipedia | Medusa (Biology)">this form of cnidarian (jellyfish)</a>.</p>
<p>After finishing up with the improvements to the power supply, I decided to cleanup Medusae a bit. I had gotten a couple <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16800888039" title="Logisys 4inch UV Cold Cathode Kit">UV cold cathode lights</a>. One of the major downsides of the acrylic case is that dirt, dust, and scratches show up a lot easier. So, I got in there deep and got it spotless. I also got the cables managed well.</p>
<p>This took me about three hours, making the project a much longer one than expected. When I had first put together Medusae, I tried to get some good pictures of the process and the end product, but to no avail. I was determined to get some good ones this time, now that she looked her best. I used my <a href="http://www.panasonic.com/consumer_electronics/digital_cameras/lumix.asp" title="Panasonic Lumix">Panasonic Lumix</a> and some makeshift solid stands, as I do not own a tripod, and shot away. I am quite pleased with how the pictures turned out. Here are some highlights:</p>
<p><img src="http://alanpalazzolo.com/gallery2/d/4928-2/2007_medusae+_38_.JPG" alt="Medusae 1" /> <img src="http://alanpalazzolo.com/gallery2/d/4937-2/2007_medusae+_1_.JPG" alt="Medusae 2" /> <img src="http://alanpalazzolo.com/gallery2/d/4940-2/2007_medusae+_2_.JPG" alt="Medusae 3" /> <img src="http://alanpalazzolo.com/gallery2/d/4958-2/2007_medusae+_8_.JPG" alt="Medusae 4" /> <img src="http://alanpalazzolo.com/gallery2/d/4964-2/2007_medusae+_10_.JPG" alt="Medusae 5" /> <img src="http://alanpalazzolo.com/gallery2/d/4991-2/2007_medusae+_19_.JPG" alt="Medusae 6" /></p>
<p>You can find the full album of pictures with high-quality images <a href="http://alanpalazzolo.com/v/2007/medusae/" title="Medusae Project 2007">here</a>.</p>
https://zzolo.org/2007/05/08/mc-math
MC Math
2007-05-08T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Sometimes, as teachers of American youth, you might have to get up on stage and entertain the future lawmakers, fire-people, or cooks of the world. So I hear. Matt lives above me; he is a fourth grade teacher. I always thought that he made way too many bad jokes and used an over abundance of lame puns, but apparently his children love him. Here is a little diddy he put together to help the little ones about math.</p>
<p>And if you were wondering how you were going to solve that math problem, you now have your answer. Five steps does seem like a lot though.</p>
https://zzolo.org/2007/04/25/take-away-shows
Take Away Shows
2007-04-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I am not really sure how I made it to <a href="http://www.takeawayshows.com/" title="Take Away Shows">Take Away Shows</a>, but the <a href="http://xkcd.com/c195.html" title="XKCD's Map of the Internet">internet</a> is a strange place that leads to many doors. Well, this door proved to have all types of shiny <a href="http://www.qwantz.com/index.pl?comic=411" title="Dinosaur Comics and Booty">booty</a> behind it.</p>
<p>“You meet a band. You take them outside, in the streets, and ask them to play there, shoot the movie in one unique shot, whatever happens. Those are the Take-Away Shows, the weekly Video podcast from french weblog La Blogothèque.” - <a href="http://www.blogotheque.net/cae_about_en.php3" title="About Cast Away Shows">About</a></p>
<p>Take Away Shows is actually the English version of the French site, <a href="http://www.concertaemporter.com/" title="Les Concerts a Emporter">Les Concerts a Emporter</a>, which are both part of the <a href="http://www.xkcd.com/c124.html" title="XKCD's Blogofractal">weblog</a>, <a href="http://www.blogotheque.net/" title=" La Blogotheque">La Blogotheque</a>. They film a lot of great bands in a unique environment without editing, and from the ones I have watched so far, it turns out beautiful.</p>
<p>Their video seems to be stored on <a href="http://www.dailymotion.com/" title="DailyMotion">DailyMotion</a>, a video and social networking site. Here is their <a href="http://www.dailymotion.com/lablogotheque" title="Blogotheque Dailymotion Profile">La Blogotheque DailyMotion Profile</a>. <a href="http://www.vincentmoon.com/" title="Vincent Moon">Vincent Moon</a> directs the videos. They offer an HD version of their videos when they first get posted, then just regular videocast after that.</p>
<p>Here is a list of <a href="http://www.blogotheque.net/cae_tous_les_concerts_en.php3" title="All Take Away Shows">All Take Away Concerts</a>. <a href="http://www.blogotheque.net/article.php3?id_article=2976" title="Andrew Bird on Take Away Shows">This new one</a> is <a href="http://andrewbird.net/" title="Andrew Bird">Andrew Bird</a> performing as he walks through the streets of Paris.</p>
<p><a href="http://www.daytrotter.com/" title="Daytrotter">Daytrotter</a> is a partner of Take Away Shows that offers free audio downloads of great musicians. Another great site.</p>
<p>“These fine people – as they’re traveling through America’s heartland – take two hours out of their travels between shows to stop in for a Daytrotter Session at Futureappletree Studio One in downtown Rock Island, IL” - <a href="http://www.daytrotter.com/about" title="About Day Trotter">About</a></p>
<p>Amazing!</p>
https://zzolo.org/2007/04/16/thickbox
Thickbox
2007-04-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I just installed the <a href="http://drupal.org/project/thickbox" title="Thickbox Module for Drupal">Thickbox Module</a> for <a href="http://drupal.org/" title="Drupal">Drupal</a>. <a href="http://jquery.com/demo/thickbox/" title="Thickbox">Thickbox</a> uses the amazing <a href="http://jquery.com/" title="jQuery">jQuery</a> libraries to make content inline with a page. Click on the image below to see an example.</p>
<p><img src="http://alanpalazzolo.com/gallery2/d/3013-3/2006-10-09_tilly_and_the_wall_11+_Large_.JPG" alt="Tilly And The Wall at Triple Rock" /></p>
https://zzolo.org/2007/04/10/definitive-swim
Definitive Swim
2007-04-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Kate hit me up with this sweet deal, <a href="http://www.adultswim.com/williams/music/defswim/" title="Definitive Swim">Definitive Swim</a> (careful the loud music will get ya). It is a compilation of great hip hop artists brought together by <a href="http://www.adultswim.com/" title="Adult Swim">Adult Swim</a> and <a href="http://www.definitivejux.net/" title="Definitive Jux">Definitive Jux</a>. Unfortunately Old Spice has a blatant hand in it as well. Check it out cause it’s free; there’s a link to get the whole thing zipped up at the bottom. The compilation includes such great acts as: <a href="http://wwww.aesoprock.net/" title="Aesop Rock">Aesop Rock</a>, <a href="http://www.mrlif.com/" title="Mr Lif">Mr Lif</a>, <a href="http://www.cagekennylz.com/" title="Cage">Cage</a>, <a href="http://www.definitivejux.net/jukies/el-p/" title="El-P">El-P</a>, <a href="http://www.definitivejux.net/jukies/camutao/" title="Camu Tao">Camu Tao</a>, and more.</p>
https://zzolo.org/2007/04/07/the-meatrix
The Meatrix
2007-04-07T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>My friend Diana, pointed me to <a href="http://www.themeatrix.com/" title="The Meatrix">The Meatrix</a>. It’s fun and will hopefully make you want to learn more about modern food production. Though it is kind of childish and simple, it is very accessible for everyone which is crucial for change. I also like how it uses <a href="http://www.adobe.com/products/flash/" title="Adobe Flash">Flash</a> correctly, as a movie and not as a whole site or navigation. Though, they lose points for not having a volume control on their movie which is so uncool.</p>
<h3 id="my-views">My Views</h3>
<p>I will try not to tell you how to live your life, but I will take this opportunity to share my personal views on the subject. I have recently become a <a href="http://en.wikipedia.org/wiki/Vegetarianism" title="Wikipedia | Vegetarianism">vegetarian</a> again. Before, I was vegetarian for a few years and about six months of that I was <a href="http://en.wikipedia.org/wiki/Veganism" title="Wikipedia | Veganism">Vegan</a>. I would like to embrace veganism in my life again because I think vegetarianism is half-assed, but I have also realized through the years that I cannot always change overnight.</p>
<p>I personally do not think that the consumption of animals for food or clothing is necessarily wrong. It can be argued whether humans are “naturally” herbivores, carnivores, or omnivores, but it seems to be that our bodies are adapted to eat meat. On the other hand, I do not believe that the consumption of diary is “natural”.</p>
<p>The problem, I believe is with the current production of animals. Besides the fact that it is absurdly cruel to animals, it is so destructive to the environment as a whole. The numerous facts and statistics that support these claims can be found in the resources below. Personally, just driving through the <a href="http://www.environmentaldefense.org/article.cfm?contentID=5078" title="Hog Farming Region of North Carolina">hog farming region of North Carolina</a> you can smell the evidence. And it is not just animal waste that destroys our planet, it’s the amount of resources that go into the production.</p>
<table>
<tbody>
<tr>
<td>So, even if we could make changes so that all animals for consumption were treated well and that the production was more sustainable for the Earth, in the “ [Global North](http://en.wikipedia.org/wiki/Global_North “Wikipedia</td>
<td>Global North”)”, we still devour maore meat than is sustainable. It is similar to the energy crisis, even if we only use sustainable energy sources, we still use too much electricity.</td>
</tr>
</tbody>
</table>
<p>I understand that this is a very limited view on this subject, but please watch <a href="http://www.themeatrix.com/" title="The Meatrix">The Meatrix</a> and read through some of the resources below. At least with knowledge you can make better decisions in your life.</p>
<h3 id="resources">Resources</h3>
<p><a href="http://www.sustainabletable.org/" title="Sustainable Table">Sustainable Table</a><br />
“Sustainable Table celebrates the sustainable food movement, educates consumers on food-related issues, and works to build community through food.”<br />
<a href="http://www.peta.org/" title="People for the Ethical Treatment of Animals">PETA</a><br />
Though there is often a lot of controversy about PETA, they have a lot resources at their hands.<br />
<a href="http://www.vegan.org/" title="Vegan Action">Vegan Action</a><br />
“A non-profit organization dedicated to helping the animals, environment, and human health by educating the public about the benefits of a vegan lifestyle…”<br />
<a href="http://www.veganoutreach.org/" title="Vegan Outreach">Vegan Outreach</a><br />
“Ultimately, living with compassion means striving to maximize the good we accomplish, not following a set of rules or trying to fit a certain label. From eating less meat to being vegan, our actions are only a means to an end: decreasing suffering.”<br />
<a href="http://www.foodfirst.org/" title="Food First">Food First</a><br />
“The Institute for Food and Development Policy/Food First shapes how people think by analyzing the root causes of global hunger, poverty, and ecological degradation and developing solutions in partnership with movements working for social change.”<br />
<a href="http://www.vegguide.org/" title="Veg Guide">Veg Guide</a><br />
“The ultimate restaurant and shopping guide for vegetarians and vegans.”</p>
<h3 id="local-organizations">Local Organizations</h3>
<ul>
<li><a href="http://www.wedge.coop/" title="The Wedge">The Wedge Coop</a></li>
<li><a href="http://www.seward.coop/" title="The Seward Coop">The Seward Coop</a></li>
<li><a href="http://www.sewardcafe.com/" title="Seward Cafe">Seward Cafe</a></li>
<li><a href="http://www.birchwoodcafe.com/" title="Birchwood Cafe">Birchwood Cafe</a></li>
<li>
<table>
<tbody>
<tr>
<td>[The Veg Guide</td>
<td>Twin Cities](http://www.vegguide.org/location/view.html?location_id=13&new_query=1 “The Veg Guide</td>
<td>Twin Cities”)</td>
</tr>
</tbody>
</table>
</li>
</ul>
https://zzolo.org/2007/03/25/our-daily-bread
Our Daily Bread
2007-03-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Cole, Andy, Devon, and I saw <a href="http://www.ourdailybread.at/" title="Our Daily Bread by Nikolaus Geyrhalter and Wolfgang Widerhofer">Our Daily Bread</a> at the <a href="http://www.walkerart.org/" title="Walker Art Center">Walker</a> today. It’s a compelling film by Nikolaus Geyrhalter and Wolfgang Widerhofer that gives a brilliant picture of modern food production. Watch some trailers of Our Daily Bread by Nikolaus Geyrhalter and Wolfgang Widerhofer.</p>
<p>Our Daily Bread is a documentary with no narration or interviews, just the sounds and sights of the factories, fields, and mines where our food is produced. The film is beautiful.</p>
<p>Nikolaus Geyrhalter and Wolfgang Widerhofer aim to give an unbiased look at these places. Even being so objective, the imagery is very affective and is not for the weak-stomached. I love this. I think it is imperative for our society to learn where all of our products originate from. We are so detached from our consumption, even in the food we eat. Only with knowledge, can there be change.</p>
https://zzolo.org/2007/03/21/spring-has-finally-arrived
Spring Has Finally Arrived
2007-03-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<table>
<tbody>
<tr>
<td><a href="http://dictionary.reference.com/browse/rejoice" title="Rejoice!">Rejoice!</a> Today at 12:07 AM marks the first day of Spring in 2007! The Earth revolves around the sun at an angle causing this wonderful world we live in to have seasons. Check out this very interesting and rich [ article](http://en.wikipedia.org/wiki/Equinox “Wikipedia</td>
<td>a very interesting and rich article about the Equinox and Solstice events each year”) about the Equinox and Solstice events each year (provided by <a href="http://wikipedia.org/" title="Wikipedia">Wikipedia</a>).</td>
</tr>
</tbody>
</table>
https://zzolo.org/2007/03/20/mash
MASH
2007-03-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Tonight I played MASH for the first time in at least ten years with my good friend Beth. MASH is a childhood fortune-telling game where the goal is to determine where and how the player will live when they grow up. You can learn more <a href="http://en.wikipedia.org/wiki/MASH_%28game%29" title="Wikipedia: MASH">here</a>. You can also play at <a href="http://www.playmash.com/" title="PlayMash.com">PlayMash.com</a> or <a href="http://www.mashgame.com/" title="MashGame.com">MashGame.com</a>.</p>
<p>We kind of made up our own categories, but here is my future summed up in a few words:</p>
<ul>
<li>I will live in <strong>Portland, OR</strong></li>
<li>in a <strong>castle</strong></li>
<li>living with <strong><a href="http://raycamacho.com/" title="The Agent is Ray">The Agent</a></strong></li>
<li>taking care of <strong>9 really cool cats</strong></li>
<li>while always listening to <strong>Jump in the Line</strong> by Harry Belafonte</li>
<li>drinking lots of <strong>PBR</strong></li>
<li>transporting myself via <strong>bus</strong></li>
<li>and supporting myself quite easily because I am an <strong>independently wealthy stamp collector</strong></li>
</ul>
https://zzolo.org/2007/03/20/google-personal-home-themes
Google Personal Home Themes
2007-03-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/google_theme_tea_house_night_crop.png" alt="" /></p>
<p>If you are unaware, <a href="http://www.google.com" title="Google Home">Google</a> has a <a href="http://www.google.com/ig?hl=en" title="Google Personalized Home">Personal Homepage</a>. You can add all types of <a href="http://www.google.com/ig/directory" title="Google Content Widgets">content widgets</a>. I like the weather one and <a href="http://earthobservatory.nasa.gov/Newsroom/NewImages/" title="Nasa News Images">Nasa Images</a> among others.</p>
<p>I do not know how long Google has offered this, but I just noticed today that you can add themes to your personalized home. There seems to be only about half-dozen to choose from at the moment, but I am sure that will change. I personally have chosen the “Tea House” theme. I tried a most of them, and the all the ones I have tried track what time it is, given your zipcode, and update the header image accordingly. I took this screenshot in the evening, but earlier today, it was bright and sunny and the fox was rowing in his boat! I know it’s not the most amazing thing on the web, but I find it pretty cool. Also, the image does just fine on the widescreen resolution.</p>
<p><img src="/system/files/google_theme_tea_house_night_crop.png" alt="Google Home Tea House Theme" title="Google Home Tea House Theme" /></p>
https://zzolo.org/2007/03/11/a-great-man-has-fallen
A Great Man Has Fallen
2007-03-11T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I went to school at <a href="http://www.appstate.edu/" title="Appalachian State University">ASU</a>, and in those four years, I worked at the <a href="http://www.mellowmushroom.com/" title="Mellow Mushroom">Mellow Mushroom</a> the whole time. Mellow Mushroom was my home. I moved each year and lived with many wonderful people, but I could always go to Mellow Mushroom and feel at ease. I worked with a lot of great people there and though there was turnaround, it was always like a family.</p>
<p>Bill Mink was the manager when I first started but became owner not too long after that. He was my friend, my employer, my mentor, and a father figure to me and many other. Thank you, Bill, for making my life better. You will be missed.</p>
<p>There is not much to say when someone passes. It’s such a definite thing. Though our emotions are difficult and complicated, death is simple. I think the key is to put perspective back into your life and cherish the relationships we are lucky to still have.</p>
<p><a href="http://www.meaningfulfunerals.net/fh/obituaries/obituary.cfm?o_id=99462&fh_id=10201" title="Bill Mink Obituary">Bill Mink Obituary</a></p>
https://zzolo.org/2007/01/06/the-perfect-song
The Perfect Song
2007-01-06T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<table>
<tbody>
<tr>
<td>There is this amazing musical act called <a href="http://www.polyvinylrecords.com/" title="Owen">Owen</a>. It is pretty much the solo work of <a href="http://en.wikipedia.org/wiki/Mike_Kinsella" title="Mike Kinsella">Mike Kinsella</a>. The music is soothing like a massage, and the lyrics are honest like a good break up. I find myself listening to it a lot these days. It seems to be exactly what I need. I am currently listening to [In The Morning, Before Work](/music/Owen_-_In_The_Morning,_Before_Work.mp3 “Owen</td>
<td>In The Morning, Before Work”).</td>
</tr>
</tbody>
</table>
<p>I find that there are certain events I cannot put away properly. I wonder if I do not possess the proper resources for such activity, or maybe my person is just not simply capable to move on.</p>
<p>I hoped to be singing a different tune by now. Mostly, I do not hear that tune in my day, but it’s there and sings loudly tonight. I wonder if I could obtain the things I need, or maybe I cannot have that comfort.</p>
<p>In the long run, what is the worst is that there will come a day, not much different than yesterday, when my memory will not allow me the wonderful music that keeps me up tonight.</p>
<p>So, we will walk away from each other, knowing there are things in our hearts bearing down on us. We will ignore them until one day we are freed from remembering, or we will take them to the grave even as they seethe through us on our death beds.</p>
https://zzolo.org/2006/12/18/difference-is-definition
Difference Is Definition
2006-12-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>brave jasmine breeze<br />
summer-stained eyes focus toward<br />
vague yellow-haired woman</p>
<p>blue and brown exchanged<br />
mac and cheese tumbled down the stairs<br />
passing, swapping smiles</p>
<p>shy boy makes gallant stir<br />
brazen beauty reciprocates<br />
budding steps</p>
<p>fourth dimension freeze frame<br />
hands without plat and compass<br />
smiles, talk teeming</p>
<p>touch, sleeping<br />
like babies; your small mouth<br />
gigantic, allowing meaning</p>
<p>when the computer<br />
stares me down, i smile and see<br />
you come down those stairs</p>
<p>there is anger<br />
in brilliant eyes<br />
only difference allows meaning</p>
https://zzolo.org/2006/11/01/i-am-gald-you-were-born-today
I Am Gald You Were Born Today
2006-11-01T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>There are times when the repeat button becomes a friend<br />
that I devote myself to. Some moments, I can<br />
not change the station fast enough, searching…<br />
searching for movement in satellite images<br />
of the block where my boat floats.</p>
<p>Your hair waves of grains, a portrait<br />
of a field and a wind that conflates<br />
to hide that focused ocean of lenses<br />
staring right to me. But more I am quenched<br />
by your every-move anecdotes.</p>
<p>I am glad today is your birthday.<br />
You were born and I am grateful<br />
for that. Each day you are the same<br />
sun-flaring, midnight marauding station.<br />
May your day be your image grown.</p>
https://zzolo.org/2006/10/25/what-narcissism-means-to-me
What Narcissism Means to Me
2006-10-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I am almost done with <a href="http://www.graywolfpress.org/component/page,shop.flypage/product_id,154/category_id,0485aa93fa0558fb1f755721e776984d/option,com_phpshop/" title="Graywolf Press: What Narcissism Means To Me">What Narcissism Means To Me</a> by <a href="http://en.wikipedia.org/wiki/Tony_Hoagland" title="Wikipedia: Tony Hoagland">Tony Hoagland</a> that <a href="http://www.alanpalazzolo.com/gallery/d/3003-2/2006-10-09_lindsay+_Large_.JPG" title="Lindsay @ Tilly and The Wall">Lindsay</a> let me borrow. It is a wonderful book of <a href="http://en.wikipedia.org/wiki/Poetry" title="Wikipedia: Poetry">poetry</a>. I know, it goes against my vow of <a href="http://en.wikipedia.org/wiki/Non-fiction" title="Wikipedia: Non-Fiction">non-fiction</a>, but its short and I needed a break. And sweet lord, its damn good.</p>
<p>This collection of poems is an amazing representation on what American culture is to those luckily thoughtful people and what thoughtful people might know about America deep in their hearts. Its not the news, its what you feel when you read the news but can’t find the words for. His imagery is so simple but he says all the right things. He uses a <a href="http://en.wikipedia.org/wiki/Free_verse" title="Wikipedia: Free Verse">free verse</a> with little to no meter or rhyme (I am no expert), but those lines breaks are right where they need to be. He makes you pause when you need to and speeds you up when its gettin’ hot. These poems read so well, poetically and contextually. He’s so subtly funny, you don’t even notice the beautiful images he puts in your head.</p>
<h3 id="some-of-my-favorite-parts">Some of my favorite parts</h3>
<p><strong>“Reasons to Survive November”</strong>: This whole poem is great, expecially as November creeps up. He describes how he must survive, if just to piss off the people that hate him.</p>
<blockquote>
<p>and my happiness would kill them<br />
so I shove joy like a knife<br />
into my own heart over and over</p>
</blockquote>
<p>and I force myself toward pleasure,<br />
and I love this November life<br />
where I run like a train<br />
deeper and deeper<br />
into the land of my enemies
<strong>“Two Trains”</strong>: A simple thought about a song on the radio turns into so much more.</p>
<blockquote>
<p>What grief it is to love some people like your own<br />
blood, and then to see them simply disappear;<br />
to feel time bearing us away<br />
one boxcar at a time.
<strong>“Fortune”</strong>: This is a hilarious poem about a fortune cookie.</p>
</blockquote>
<blockquote>
<p>Maybe you will marry a red-haired woman.<br />
Maybe you are going to take a long journey.<br />
Maybe a red-haired woman will steal you car and take a long journey.
<strong>“Man Carrying Sofa”</strong>:</p>
</blockquote>
<blockquote>
<p>And this particular complex pain inside your chest;<br />
this damaged longing<br />
like a heavy piece of furniture inside you;<br />
you carry it, it burdens you, it drags you down –<br />
then you stop, and rest on top of it.</p>
</blockquote>
<h3 id="other-resources">Other Resources</h3>
<ul>
<li><a href="http://www.poemhunter.com/i/ebooks/pdf/tony_hoagland_2004_9.pdf" title="[pdf] A Few Poems from Poemhunter.com">A PDF of a few Poems from Poemhunter.com</a></li>
<li>A <a href="http://www.poets.org/poet.php/prmPID/112" title="A short biography of Tony Hoagland from Poets.org">short biography</a> from <a href="http://www.poets.org/" title="Poets.org">Poets.org</a></li>
<li>Poems from <a href="http://www.poets.org/" title="Poets.org">Poets.org</a>
<ul>
<li><a href="http://www.poets.org/viewmedia.php/prmMID/15514" title="Jet by Tony Hoagland">Jet</a></li>
<li><a href="http://www.poets.org/viewmedia.php/prmMID/15515" title="Lucky by Tony Hoagland">Lucky</a> (with optional audio)</li>
<li><a href="http://www.poets.org/viewmedia.php/prmMID/15516" title="Reading Moby-Dick at 30,000 Feet by Tony Hoagland">Reading Moby-Dick at 30,000 Feet</a></li>
</ul>
</li>
<li>A review of <a href="http://www.graywolfpress.org/component/page,shop.flypage/product_id,154/category_id,0485aa93fa0558fb1f755721e776984d/option,com_phpshop/" title="Graywolf Press: What Narcissism Means To Me">What Narcissism Means To Me</a> entitled <a href="http://www.psc.edu/~schneide/hoagland.html" title="A Mean Zen Master Equipped with Pop Lyrics">A Mean Zen Master Equipped with Pop Lyrics</a> by Mike Schneider.</li>
</ul>
https://zzolo.org/2006/10/10/what-survives
What Survives
2006-10-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>What Survives</p>
<p>Written by Rainer Maria Rilke (1875-1926)<br />
Translated by A. Poulin</p>
<p>Who says that all must vanish?<br />
Who knows, perhaps the flight<br />
of the bird you wound remains,<br />
and perhaps flowers survive<br />
caresses in us, in their ground.</p>
<p>It isn’t the gesture that lasts,<br />
but it dresses you again in gold<br />
armor -from breast to knees-<br />
and the battle was so pure<br />
an Angel wears it after you.</p>
https://zzolo.org/2006/10/10/fall
Fall
2006-10-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Days seamlessly shrink and hasten bedtime<br />
as notorious night ripens the autumn moon.<br />
The sun becomes Southern, a sprightly<br />
belle spoken in a draw. With dashing moves,<br />
the winter approaches a reluctant summer.</p>
<p>Light compiled no longer, the green subsides<br />
into an ocean of transition. The trees tomb<br />
facilitates its own hibernation and like<br />
fireworks, the leaves explode, a moment<br />
of fire before the furnace-embracing winter.</p>
<p>Production ceases, the factory decays, a blight<br />
annually announced by each step. The leaf stumbles<br />
to the ground, a passing of weightlessness glides<br />
through the air. The freedom of change roams<br />
before the first frost bites this photographer.</p>
<p>I like the way you walk fast as if there might<br />
be warmth in that brisk morning – a wakeful-<br />
ness prepared to pounce. So, we gather a pile<br />
of organic thoughts one at a time. If we should<br />
jump into that accumulation, we should fall together.</p>
https://zzolo.org/2006/07/30/the-bestest-google-failure
The Bestest Google Failure
2006-07-30T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>If you <a href="http://www.google.com/" title="Google">Google</a> the word <a href="http://www.google.com/search?hl=en&lr=&q=failure&btnG=Search" title="Google: failure">“failure”</a>, the first match is very interesting. I will let you do it yourself. This is very interesting and presents the great question of how this happened.</p>
<p>Being a web developer, I immediately searched for the word “failure” in the document but to no avail. Then why and how would this happen? I thought <a href="http://www.google.com/" title="Google">Google</a> may have “hard-wired” this into its internet search functionality. I also thought briefly that there was just an enormous amounts of <a href="http://en.wikipedia.org/wiki/Back_Links" title="Wikipedia: Back Links">back links</a> to this page in the context of “failure”. I wanted to believe <a href="http://www.google.com/" title="Google">Google</a> purposefully had done this.</p>
<p>If you go farther into the search results you will find this <a href="http://googleblog.blogspot.com/2005/09/googlebombing-failure.html" title="Google Blog Google Bombing">article</a> on how it happened. It involves the “back links”. What happened is a process known as <a href="http://en.wikipedia.org/wiki/Google_bomb" title="Wikipedia: Google Bombing">Google Bombing</a>.</p>
<p>Overall you should respect <a href="http://www.google.com/" title="Google">Google</a> for stickin’ to their guns. Also, you should be proud of the great people that have made this happen and how much it says as a statement.</p>
<p>I have to do my part as well, so I will make a link to the <a href="http://www.whitehouse.gov/president/gwbbio.html" title="This man is a complete, miserable failure and puts our country to shame.">number one failure page</a>.</p>
https://zzolo.org/2006/07/28/sys-admin-day-2006
Sys Admin Day 2006!!!
2006-07-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Today is <a href="http://www.sysadminday.com/" title="Sys Admin Day">Systems Administrator Day</a>. What have you done for your SysAdmin today? I bought mine two semi-fresh donuts and said “Thanks, SysAdmin”. Some suggestions would be a hug and a kiss, cause I doubt they get too many. Any sort of pastry or cake would probably be very appreciated. Maybe just a good ole pat on the back. They do so much for us. It’s time to give back, if just for day.</p>
https://zzolo.org/2006/07/26/body-worlds
Body Worlds
2006-07-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/BodyWorlds2_Camel.jpg" alt="" /></p>
<p>The <a href="http://www.bodyworlds.com/" title="Body Worlds by Gunther von Hagens">Body Worlds</a> exhibit by <a href="http://www.bodyworlds.com/en/gunther_von_hagens.html" title="About Gunther von Hagens">Gunther von Hagens</a> is at the <a href="http://www.smm.org/" title="Science Museum of Minnesota">Science Museum of Minnesota</a> until Labor Day. Body Worlds is an amazing view of the human (and animal) anatomy. Von Hagens uses a process called <a href="http://www.bodyworlds.com/en/plastination.html" title="Plastination">Plastination</a> to turn human body parts from donated specimens into plastic. It is really quite amazing. If Body Worlds is <a href="http://www.bodyworlds.com/en/exhibitions/current_exhibitions.html" title="Body World Schedule">coming to your town</a>, go see it.</p>
<p>The exhibit I saw is very extensive. It took a dozen of us a range from 1.5 and 3 hours to go through. Some people may not be comfortable with how graphic it is. But those people should brave their wussy storm. I think it is a great perspective for everyone to see our anatomy so vivid. A lot of times, we get caught up in our minds and society and forget that we are just flesh and bone (very compicated flesh and bones).</p>
<p>Here are some informative and stimulating resources concerning Body Worlds:</p>
<ul>
<li>A <a href="http://www.smm.org/bodyworlds/gallery/" title="Body Worlds Gallery">Gallery</a> from the <a href="http://www.smm.org/" title="Science Museum of Minnesota">Science Museum of Minnesota</a>.</li>
<li><a href="http://www.smm.org/bodyworlds/educators/" title="Information for Educators">Information for Educators</a> from the <a href="http://www.smm.org/" title="Science Museum of Minnesota">Science Museum of Minnesota</a>.</li>
<li><a href="http://en.wikipedia.org/wiki/Body_World" title="Wikipedia: Body Worlds">Wikipedia Entry</a>.</li>
<li>A <a href="http://www.guardian.co.uk/gall/0,,669680,00.html" title="Guardian Unlimited gallery of Body Worlds">Gallery</a> from <a href="http://www.guardian.co.uk/" title="Guardian Unlimited">Guardian Unlimited</a>.</li>
</ul>
<p><img src="/system/files/BodyWorlds2_Camel_0.jpg" alt="Camel from Body Worlds © ldonovan.com" title="Camel from Body Worlds © ldonovan.com" /></p>
https://zzolo.org/2006/07/03/synergy
Synergy
2006-07-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>When you see or hear this word, some might think of it as a really bad, corporate buzz word. Well, you wouldn’t be wrong. Fortunately, it is also a wonderful open-source, cross-platform product that lets you share a keyboard and mouse across multiple computers. Like in my case, I have a laptop that I use right next to my desktop. Well instead of switching keyboards and mice, all you have to do is move the mouse off the screen. It works much like having multiple monitors on the same computer, but they’re different computers! I heard a lot about it from friends and co-workers and I kind of just blew it off. But really, <a href="http://synergy2.sourceforge.net/" title="Synergy">Synergy</a> is such an amazing product.</p>
<p>Did I mention <a href="http://synergy2.sourceforge.net/" title="Synergy">Synergy</a> is <a href="http://en.wikipedia.org/wiki/Free_software" title="Wikipedia: Free Software">free</a>, <a href="http://en.wikipedia.org/wiki/Open_source" title="Wikipedia: Open Source">open source</a>, <a href="http://en.wikipedia.org/wiki/Cross_platform" title="Wikipedia: Cross-Platform">Cross-Platform</a>, and it allows for <a href="http://en.wikipedia.org/wiki/Copy_paste" title="Wikipedia: copy paste">copy and paste</a>!</p>
https://zzolo.org/2006/07/03/elephants-dream
Elephants Dream
2006-07-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/Elephants_Dream.jpg" alt="" /></p>
<p><a href="http://www.elephantsdream.org" title="Elephants Dream">Elephants Dream</a> is a computer-generated, short film which was almost completely produced from <a href="http://en.wikipedia.org/wiki/Open_source" title="Wikipedia: Open Source">open-source software</a>. It is an amazing piece of work in multiple ways. The screenplay and content of the film relates directly with Computer Technology and in my opinion, open-source technology as well. These themes may be abstract and surreal, but the film is still very visually stunning and worth the watch.</p>
<p>You can download the movie <a href="http://orange.blender.org/download" title="Download Elephants Dream">here</a>. You’ll get better speeds using the <a href="http://en.wikipedia.org/wiki/Bittorrent" title="Wikipedia: BitTorrent">BitTorrent</a> version. Also, avoid the <a href="http://en.wikipedia.org/wiki/High-definition_video" title="Wikipedia: HD">HD</a> version unless you know what you are doing.</p>
<p>The best part of this movie is that it is the first Open Movie, “made entirely with open-source graphics software such as <a href="http://www.blender.org/" title="Blender">Blender</a>, and with all production files freely available to use however you please, under a <a href="http://www.creativecommons.org/" title="Creative Commons">Creative Commons</a> license”. This project is a huge milestone for open-source software everywhere. It marks a huge turning point in an industry that is almost completely dominated by extremely high-end software products. It also shows the world that open-source technology can be and is just as powerful as closed-source and expensive software.</p>
<p>Here is a list of some of the great products used in this production:</p>
<ul>
<li><a href="http://www.blender.org/" title="Blender">Blender</a> - “the open source software for 3D modeling, animation, rendering, post-production, interactive creation and playback. Available for all major operating systems under the GNU General Public License.”</li>
<li><a href="http://twistedmatrix.com/" title="Twisted">Twisted</a> - “is an event-driven networking framework written in Python and licensed under the <a href="http://www.opensource.org/licenses/mit-license.php" title="MIT license">MIT license</a>.”</li>
<li><a href="http://www.openexr.com/" title="OpenEXR">OpenEXR</a> - “is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications. OpenEXR is used by ILM on all motion pictures currently in production. The first movies to employ OpenEXR were Harry Potter and the Sorcerers Stone, Men in Black II, Gangs of New York, and Signs. Since then, OpenEXR has become ILM’s main image file format.”</li>
<li><a href="http://uni-verse.org/" title="Verse">Verse</a> - “Our goal is to create an open source Internet platform for multi-user, interactive, distributed, high-quality 3D graphics and audio for home, public and personal use.”</li>
<li><a href="http://www.cinepaint.org/" title="CinePaint">CinePaint</a> - “is a collection of free open source software tools for deep paint manipulation and image processing. CinePaint is used for motion picture frame-by-frame retouching, dirt removal, wire rig removal, render repair, background plates, and 3d model textures.”</li>
<li><a href="http://www.inkscape.org/" title="InkScape">InkScape</a> - “an Open Source vector graphics editor, with capabilities similar to Illustrator, Freehand, CorelDraw, or Xara X using the <a href="http://www.w3.org/" title="W3C">W3C</a> standard <a href="http://w3.org/Graphics/SVG/" title="Scalable Vector Graphics (SVG)">Scalable Vector Graphics (SVG)</a> file format.”</li>
<li><a href="http://www.drqueue.org/" title="DrQueue">DrQueue</a> - “an Open Source render farm managing software. It distributes shell based tasks such as rendering images on a per frame basis. DrQueue works under Linux, FreeBSD, Irix, Mac OS X and Windows. It is distributed under GPL and is composed by three main tools: master, slave and drqman.”</li>
<li><a href="http://www.gimp.org/" title="Gimp">Gimp</a> - “GIMP is the GNU Image Manipulation Program. It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.”</li>
</ul>
<p><img src="/system/files/Elephants_Dream.jpg" alt="Elephants Dream" title="Elephants Dream" /></p>
https://zzolo.org/2006/07/03/alan-the-carpenter
Alan, the Carpenter
2006-07-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I spent this past sunday building a desk for myself. My room is kind of small and space is very limited. I had a makeshift work-area that involved using a bunch of smaller pieces of furniture, but it was not very efficient on space and the height was not consistent. I looked around to find a desk I could purchase, or even just a big table, but nothing was good enough. So, I decided to make my own. This would not usually be a big deal, but in this particular case, it was my first time building anything so massive on my own. So, it was also my first chance to use a <a href="http://en.wikipedia.org/wiki/Circular_saw" title="Wikipedia: circular saw">circular saw</a> and a <a href="http://en.wikipedia.org/wiki/Random_orbital_sander" title="Wikipedia: random orbital sander">random orbital sander</a>. Both are a lot of fun, but the saw was a little dangerous, especially with my lack of safety equipment.</p>
<p>Now, along with my reorganization of my room, I have lots of space and a wonderful work-area. I was thinking about documenting my work, but I understand that my carpentry skills are very primitive so I just took some picture of the finished product that you can find <a href="http://alanpalazzolo.com/gallery/v/2006/desk/" title="Desk Pictures">here</a>.</p>
https://zzolo.org/2006/06/25/hip-hop-and-harmony-2006
Hip Hop and Harmony 2006
2006-06-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/hiphop_harmony.jpg" alt="" /></p>
<p>Yesterday, <a href="http://alanpalazzolo.com/gallery/d/2199-2/cole_and_i.jpg" title="Cole!!!!">Cole</a> and I went down to <a href="http://alanpalazzolo.com/gallery/d/2218-2/geneva.jpg" title="Geneva, MN">Geneva, MN</a> to the <a href="http://www.harmonyhiphop.com/" title="First Annual Hip and Harmony Festival">First Annual Hip and Harmony Festival</a> at <a href="http://www.harmonypark.com/" title="Harmony Park">Harmony Park</a>. Most of the artists are from around these parts (Minnesota). Almost all the acts were exceptionally wonderful. I was really excited in the first place, but my expectations were blown away.</p>
<p><a href="http://alanpalazzolo.com/gallery/d/2193-2/black_blondie_2.jpg" title="Black Blondie">Black Blondie</a> was the first band we got to see and we came in half-way through their set. As if having a female cello-player (or upright bass, is there a difference) was not enough, those women singing were on point.</p>
<p><a href="http://alanpalazzolo.com/gallery/d/2184-2/unknown_prophets_4.jpg" title="Unknown Prohpets">Unknown Prohpets</a>: I knew very little about these guys before coming in, but they were solid. They had a good attitude and they were the ones playing when the tornado-ish <a href="http://alanpalazzolo.com/gallery/d/2283-2/the_storm.jpg" title="The Storm">storm</a> came along. Also, their DJ wore a <a href="http://en.wikipedia.org/wiki/Beverly_Hills_90210" title="Beverly Hills">90210</a> shirt and mixed <a href="http://www.whitestripes.com/" title="White Stripes">White Stripes</a> and <a href="http://www.livingcolour.com/" title="Living Colour">Living Colour</a> really well. <a href="http://www.unknownprophets.com/" title="Unknown Prophets">www.unknownprophets.com</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2230-2/kanser_2.jpg" title="Kanser">Kanser</a> was well-formed. They had a great message and a great time. <a href="http://www.interlock.cc/" title="Interlock Records">Interlock Records</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2245-2/omar_bliss_yoni_2.jpg" title="Omaur Bliss and Yoni">Omaur Bliss and Yoni</a>: I do not appreciate the use of someone’s name to be the title of a band, no matter how prevelant he or she is to creating the music. It is selfish and boring, especially when you have a band that tears it up. They had smiles and fly girls and Yoni. Another great performance. <a href="http://www.yonimusic.com">yonimusic.com</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2287-2/toki_wright.jpg" title="Toki Wright">Toki Wright</a> was solid but nothing to write home about. He was a good host for sure. <a href="http://www.tokiwright.com/" title="Toki Wright">www.tokiwright.com</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2215-2/doomtree_4.jpg" title="Doometree">Doomtree</a> was amazing! Its more of a collective than an actual band. Its more of an energy than a sound. Everything that is said about this group positively is true, without a doubt. They were a huge highlight of the day. <a href="http://www.doomtree.net">Doomtree</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2224-2/heiruspecs_2.jpg" title="Heiruspecs">Heiruspecs</a>: I have to admit at the festival I was not wholly impressed, but seeing them tonight at the <a href="http://www.guthrietheater.org/" title="New Gutherie">New Gutherie</a>, these are some good cats. They got a full band and two amazing vocalists. <a href="http://www.heiruspecs.com/" title="Heiruspecs">www.heiruspecs.com</a></p>
<p><a href="http://alanpalazzolo.com/gallery/d/2258-2/sage_francis.jpg" title="Sage Francis">Sage Francis</a>: Wow!! I thought highly of him before but his live performance was unbelievable. He opened with <a href="/music/sage_francis-jah_didnt_kill_johnny.mp3" title="Jah Didnt Kill Johnny: for listening, not downloading">Jah Didnt Kill Johnny</a>, which is one of my favorite songs. I have seen some performers just use a CD and a microphone and it can be done, but Sage just ripped it up as if he had twenty people behind him. The CD player actually helped because it made his performance simple. He spent a lot of time just spitting out rhymes with no music behind it at all. And he had the fire in his eyes the whole time. <a href="http://www.sagefrancis.net/" title="Sage Francis">www.sagefrancis.net</a></p>
<p>Lyrics Born kind of sucked and was disappointing. He had a lot of energy and was probably a good choice for a headliner but I just wasn’t feeling it. Maybe it was the casual-Friday, collared shirt. <a href="http://www.lyricsborn.com" title="Lyrics Born">www.lyricsborn.com</a></p>
<p>Please note, I am not a music critic but I’ll let you know my opinion. Also, Some of these artists only have websites in the form of a myspace page. I do not appreciate this. I understand the monetary benefits, but damn. You can find all the pictures I took, right <a href="http://alanpalazzolo.com/gallery/v/2006/hiphop_harmony/" title="Hip Hop and Harmony Pictures">here</a>. The First Annual Hip and Harmony Festival was fucking awesome. Just go next year and until then, think about why you missed it this year.</p>
<p><img src="/images/posts/zzold/hiphop_harmony.jpg" alt="Hip and Harmony Festival © Unknown" title="Hip and Harmony Festival © Unknown" /></p>
https://zzolo.org/2006/06/22/kickball
Kickball?
2006-06-22T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://en.wikipedia.org/wiki/Kickball" title="Wikipedia | Kickball">KickBall</a> season is upon us. Some friends have started a team and I got picked (not last)! It should be a great time. I think we can drink while we play and that only spells debaucherous fun. So, we are still deciding on a name. <a href="http://www.musakickball.com/MUSA%20Minnesota/Division%20Schedules-Minnesota.htm#Monday" title="Other Teams Names">Here</a> are the other names for the teams in the league (a lot of Balls references, who would have thought). In most cases, coming up with possible Team Names can be a huge mess. But not this team. Check out the list below of possible names. Hilarious!
The Flutterbums<br />
Fats Domino<br />
Nap Time All The Time<br />
Jim Everett C. Koop<br />
The Forceful Gentlemen<br />
Balls Deep<br />
Excuse My Reach <br />
Wistful Apocolypse<br />
The Sherzeys<br />
The Oh Mys<br />
Bob Herme’s Big Idea<br />
Nine Ways To Skin A Cat, Nine Ways To Regret It<br />
The Mystic Tic Tocs<br />
Whole Foods Dudes<br />
Nerps<br />
Ritz Bitz and Triscut Mits<br />
Coagulated Love Songs<br />
We Like Ribs<br />
Grim Fandango<br />
Stop Acting Like a Baby<br />
Sweet Nothings<br />
Behold, My Leg<br />
Your Wish Is My Command<br />
The Butter Kings<br />
The Photo Finnish<br />
Apple/Control/Reset<br />
The Anti-Youth Movement<br />
The Buckle Ups <br />
The Crankcasters<br />
The Physical Challenge<br />
Ed Will Be Ted<br />
Tony Blair Is Listening<br />
Gnads With A G<br />
You Gotta Be Into Betsey<br />
Dairy Bones<br />
Don’t Hate The Player<br />
Hate The Game<br />
The Kicktastics<br />
Kickles and Bits<br />
Flat Tony<br />
The Foot Fetishists<br />
Horse Taste<br />
We’ll Spot You Four<br />
Czesc Kickball!<br />
The Three Game Winning Streak<br />
You’re Crazy Man, I Like You But You’re Crazy<br />
The Palazzolos <br />
The Fourth Baseman<br />
The Most Attractive Team You Know It<br />
How to Learn French<br />
Cheshire Rats<br />
The No One Says ‘Spouse’<br />
Oh My God That Man Is Dead<br />
How to Forget French<br />
The Freebasers<br />
Kickle Monsters <br />
The Political Insiders Drink Tab<br />
Runaway Spidermonkeys<br />
The Diduknowz</p>
<p>Remember Altavista?<br />
The Core Values<br />
Kicks Are For Kids<br />
Renal Failure<br />
Big Base<br />
Bouncing Baby Jesuses<br />
Laserpeople<br />
The Royal Federation of Masonic Kickballers Pro Tem<br />
The My Baby’s Dead <br />
The Feets<br />
You Will End In DeFeet<br />
The Defeetists<br />
The Death Rock Babies<br />
The Evenflows<br />
Swollen Tony<br />
Hate Makes Waste<br />
Combat Bear 2000<br />
Apple Eats Girl<br />
The Sure-Fire Surefires<br />
Man eats 47 cheese sandwiches in 10 min<br />
The Alternative Mothers<br />
MUSA Gun Done<br />
Vacation to Winsterdam<br />
The Inserts<br />
The Audiomagazines<br />
Let’s Play One <br />
Seize the Play<br />
The Snugglers<br />
The Fancy Rays<br />
The Hellions<br />
Tush Must Rust<br />
Quarter for the Bus<br />
Five Run Rally<br />
Laugh Last Inning<br />
The Ballistics<br />
The Cutest<br />
Tightrope Wider<br />
Innovative<br />
George Will Ferrell<br />
Al Gore Vidals<br />
Puerto Rican Not Mexican Bitch<br />
Sponsored by Wal-Mart<br />
Soccer and Baseball<br />
We’ll Kick a Ball But Still We Won’t Play Soccer<br />
The Believers <br />
The Roth IRAs<br />
The GOP Machine<br />
The Ballotstuffers<br />
The Radio Cures<br />
The Primers<br />
The For Three Weeks in July We Will Fall In Love<br />
The Play Divorcees<br />
The Mercy Rule<br />
The Racial Stereotypes<br />
The Milk, Potatoes, Bread, Some Fruits<br />
The My Grocery List Tonights<br />
Let’s Go Home<br />
The I Know It’s Been a Long Time But I’m Still In Love With You<br />
The Don’t Do Me Like Thats<br />
The Kick Ball Players</p>
<p>The Kick Ball Team<br />
The Team For Kickball<br />
O’Doyle Rules<br />
Knuckle Sandwich<br />
Delusions of Grandeur<br />
Oh Yeah? Well You’re Ugly.<br />
Greasy Spoons<br />
Sore Losers<br />
Tes Tickles<br />
Ugly Ducklings<br />
Pants on Fire<br />
Mud Muffins<br />
Sugar Dumplings<br />
Grease Lightnin’<br />
The Forgettables<br />
Not-Afraid-to-Cheat-ers<br />
Group of People Having Fun<br />
The Poets Don’t You Know Its<br />
The Fanny Mae Foundation<br />
The Boastonians<br />
The Unmarked Helicopters<br />
The I’m Skipping Dodgeball For This<br />
The Beauty Without<br />
Always Captains<br />
Seriously, That Nelly Furtado Has Got Some Fresh Beats<br />
The Good News Bears (re: Jesus)<br />
The Tendencies<br />
The Dominatiacs<br />
The WINdustries<br />
We Guarantee Victory in Game Two<br />
Pro-Semites<br />
I Just Threw Up In My Mouth A Little<br />
Funny and Rude<br />
Ketchup With A Kick<br />
Remember What It’s Like To Touch Someone New For The First Time? And Then To<br />
Touch Them Again? Wow, Now That’s Life.<br />
Kickbase<br />
Fatz Dominoz<br />
The Narms<br />
Chores d’¦uvre<br />
The athletic beagles<br />
3 cheers for Randall<br />
Olives and rust <br />
My nalgene bottle is actually full of beer<br />
the Kickers <br />
The Devil vs Richard Nixon<br />
Killbot death army <br />
The Sanitation Commissioners<br />
Run Ronnie Run!<br />
Doogie Houser, MD<br />
The Hall Monitors<br />
Mark Kennedy is a big fat jerk<br />
The Harry Potters<br />
The Jackolopes<br />
Peter Brady<br />
Death from above<br />
612-kickass</p>
https://zzolo.org/2006/06/21/summer-solstice
Summer Solstice!
2006-06-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/sun.jpg" alt="" /></p>
<table>
<tbody>
<tr>
<td>Today is June 21, 2006, the <a href="http://en.wikipedia.org/wiki/Summer_Solstice" title="Summer Solstice">Summer Solstice</a>. This is the <a href="http://scienceworld.wolfram.com/astronomy/SummerSolstice.html" title="Wolfram Science Summer Solstice">longest day of the year</a>. See how it all works [here](http://www.physicalgeography.net/fundamentals/6h.html “EarthScience.net</td>
<td>Earth-Sun Geometry”).</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td>Unfortunately I have that freelance [Web Development](http://en.wikipedia.org/wiki/Web_development “Wikipedia</td>
<td>Web Development”) work to do. It keeps getting in the way of my <a href="http://www.agsfb.com/" title="All Girl Summer Fun Band">summer fun</a>. The sky is so invigorating, but I am stuck in front of this computer by my <a href="http://dictionary.reference.com/search?q=leave%20to%20someone's%20own%20devices" title="My Own Devices">own devices</a>. The day is so long, but the computer is the only company I will keep. I’ll have to celebrate <a href="http://www.williamgibsonbooks.com/books/parties.asp" title="All Tomorrow's Parties">tomorrow!</a> You want to come along?</td>
</tr>
</tbody>
</table>
<p><img src="/images/posts/zzold/sun.jpg" alt="Old Bazey © Unknown" title="Old Bazey © Unknown" /></p>
https://zzolo.org/2006/06/18/can-dreamhost-be-any-more-dreamier
Can Dreamhost be any more dreamier?
2006-06-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This site is <a href="http://en.wikipedia.org/wiki/Web_hosting" title="What is Web Hosting?">hosted</a> by <a href="http://www.spinink.com/" title="Spin Ink">SpinInk</a> in cahoots with <a href="http://www.dreamhost.com/" title="Dreamhost Web Hosting">Dreamhost</a>. Well, they both do a stellar job and have my applause. And though SpinInk has a <a href="http://www.spinink.net/" title="SpinInk Blog-o-matic">blog-o-sphere-a-thingy</a> with great <a href="http://en.opensuse.org/" title="SuSE">SuSE</a> articles and <a href="http://spinink.net/gallery/main.php" title="Spin Ink Photography">superb photography</a>, Dreamhost makes me fall on the floor laughing with their <a href="http://blog.dreamhost.com/" title="Dreamhost Blog">weB LOG</a>. I first have to wonder how these dedicated people find the time to write such things. Looking past that onto the laughter behind the hosting, you will find such gems as <a href="http://blog.dreamhost.com/2006/05/31/why-web-hosting-is-here-to-stay/" title="Why Webhosting Is Here To Stay">Why Webhosting Is Here To Stay</a> and <a href="http://blog.dreamhost.com/2006/05/25/the-expert-speaks/" title="The Expert Speaks">The Expert Speaks</a>. Lots of visuals!</p>
<p>So here are my conclusions: 1) They have someone whose sole position is to maintain the blog. Kind of like an HR guy or gal, who has personally been trained by all the great comedians in our day. It is the only way to explain these things. 2) My job is so boring, I am not sure why I wake up in the morning. Dreamhost looks like summer camp, but with computers and fun. No, but seriously folks, my job is great, and it may not always be sunshine in the morning but its worth it… just to read new Dreamhost Blog posts!</p>
https://zzolo.org/2006/06/05/hold-on-to-youth
Hold On To Youth
2006-06-05T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/tilly-tonybonacci-3.jpg" alt="" /></p>
<p>I just went to my first show solo-style, running silent, sans friends. May would be very proud indeed. Shes been doing it for a while. My friends, as amazing as they are, have sleep schedules that cannot be sacrificed. I suppose they do not share the desire to indulge their ears into the spectrum of sound that is <a href="http://www.tillyandthewall.com/" title="Tilly and the Wall">Tilly and the Wall</a> as much as I do. I cannot hold it against them. Apparently, it was there loss.</p>
<p>Along with all the young folk who were there and my great, lame friends, I am reminded of my former years where going to a show was a social event and an all night adventure that usually ended up waking up half-drunk on the floor of some strangers living room along with a dozen friends. Sometimes, the dawn would catch up with us before we could find a decent place to sleep. I don’t think I really slept around in those days, but affection was passed out freely, heavy petting was frequent, and reservations were thrown to the wind. It was a free time that I have a difficult time locating these days, apart from my memories.</p>
<p>I wonder what happens to youth, to the idea that tomrrow does not really matter until it comes. I hear it subtly on the album, but saw it live and in person on stage known as <a href="http://www.tillyandthewall.com/" title="Tilly and the Wall">Tilly and the Wall</a> tonight. They sing songs of <a href="http://divorcesupport.about.com/cs/avoidingdivorce/a/aa032598.htm" title="is it real">young love</a> and teenage inhibition. They perform with huge smiles and carefree candor. They are wild like children, emancipated like seventies, surfer rock, and sort of creepy pop like the Partridge Family.</p>
<p>Since I am mentioning youth, I have to admit I found a schoolboy crush for Jamie. Imagine, if you will, this <a href="http://alanpalazzolo.com/gallery/d/2093-2/tilly.jpg" title="Jamie from Tilly and the Wall">gorgeous woman</a> with a checkered short, short skirt, with checkered tights, a black, so-tight t-shirt with a scary wolf face on it, and glittery bracers to boot. Now imagine her with a huge smile on her face as she tapped her magnificent feet to make the sound of thunder and cannons; still she is so graceful and gentle like the wind. Then, once you have that, think of the incredible fun she has when she is dancing while she performs, flailing her arms like an albatross.</p>
<p>So, I wonder where my youth has gone. Has it been lost in my motion, my lack of a home? Has it been stolen from me, slowly, from the beautiful, <a href="http://alanpalazzolo.com/gallery/d/191-1/Picture+39.jpg" title="a past with so little present">amazing souls</a> I have loved so deeply, but have turned their backs for a new place? Is it hidden in my growing reservations, my new found finiteness? Does it disappear with my precious friends that will not suffer a day lacking alertness? Is it tucked away from the times and the people that cannot sleep outside their own bed?</p>
<p>It is in me, somewhere. It is in my new <a href="http://www.alanpalazzolo.com/gallery/d/1946-2/DSCN1587.JPG" title="My New Shiney Bike!">bike</a> and on the smiles of those wonderful people that love me. I love you too. I find it in the books I read and my thirst for learning and my lack of wisdom. I feel it in my shakey heart and after <a href="http://en.wikipedia.org/wiki/Scrabble" title="Scrabble from Wikipedia">scrabble</a> games. I hear it in the chords and with each beat. And, oh god, how I pulse with it when I see that <a href="http://alanpalazzolo.com/gallery/d/2099-2/Pacific_sky.jpg" title="The Ocean and the Sky">sky</a>.</p>
<p>It is an amazing life that is granted to each of us. It is difficult and comes with little instruction. When percieved as a span, life is just really a collection of memories. But if you can look at it as the present, as this moment, it becomes something that language is not adequate for. We just have to <a href="http://sg1.allmusic.com/cg/smp.dll?link=uxi9wvdmhleq4izae67skgw&z=MP3&r=20.asx" title="Burn Rubber by Bright Eyes">get behind the wheel and stay in front of the storm</a>.</p>
<p>I also had another special treat tonight. I was unaware that <a href="http://www.daviddondero.net/" title="David Dondero">David Dondero</a> was playing with <a href="http://www.tillyandthewall.com/" title="Tilly and the Wall">Tilly and the Wall</a> and was so pleasantly surprised to see him perform. A man and a guitar has been done in so many ways and rarely becomes new. He’s not rewriting history books but he’s solid and fun, heartbroken and angry, and simple and delicate.</p>
<p>Here’s some good resources:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Tilly_and_the_Wall">Tilly and the Wall</a> - <a href="http://en.wikipedia.org/" title="Wikipedia">Wikipedia</a> entry</li>
<li><a href="http://www.lasvegasmercury.com/2004/MERC-Aug-05-Thu-2004/24457265.html" title="Tilly and the Wall">Tilly and the Wall</a> - review by <a href="http://www.lasvegasmercury.com/" title="The Las Vegas Mercury">The Las Vegas Mercury</a></li>
<li><a href="http://www.auralminority.com/tillyandthewallt.html" title="Tilly and the Wall">Tilly and the Wall</a> - review by the <a href="http://www.auralminority.com/" title="Aural Minority">Aural Minority</a></li>
<li><a href="http://www.npr.org/templates/story/story.php?storyId=4808779" title="Tilly and the Wall">Tilly and the Wall</a> - webcast from <a href="http://www.npr.org/" title="NPR">NPR</a></li>
<li><a href="http://www.sctas.com/pics/OMTillypics.html" title="Tilly and the Wall">Tilly and the Wall</a> - live pictures from <a href="http://www.sctas.com/" title="SCTAS">SCTAS</a> (with Of Montreal) (as I did not have a camera with me)</li>
<li><a href="http://www.popmatters.com/music/reviews/d/donderodavid-transient.shtml" title="David Dondero">David Dondero</a> - a review by <a href="http://www.popmatters.com/" title="Pop Matters">Pop Matters</a></li>
<li><a href="http://www.erasingclouds.com/wk3805dondero.html" title="David Dondero">David Dondero</a> - a review by <a href="http://www.erasingclouds.com/" title="Erasing Clouds">Erasing Clouds</a></li>
</ul>
<p><img src="/images/posts/zzold/tilly-tonybonacci-3.jpg" alt="Tilly and the Wall © Tony Bonacci" title="Tilly and the Wall © Tony Bonacci" /></p>
https://zzolo.org/2006/05/28/two-gallants-still-live
Two Gallants Still Live
2006-05-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>There are few things in this world that make me feel spirtual–that make me believe that there could be more to us that just skin and bones. The first being the love I have been blessed to recieve from the many beautiful people that have shared their life with me, be them family, friends, and even strangers. The second being this organization of noise we call music. Vibrations from all kinds of objects, in certain pitches, with possible patterns, and truely enjoyed by the player, this is where I find my soul. Giving or recieving, music to me represents all that only humans are capable of (maybe…).</p>
<p>That said. On Thursday, I walked into the Church of <a href="http://www.twogallants.com/" title="Two Gallants">Two Gallants</a> where angels whispered hymns of truth and beauty into my ears. I saw them at the <a href="http://www.triplerocksocialclub.com/" title="Triple Rock Social Club">Triple Rock Social Club</a> with <a href="http://drakkarsauna.com/" title="Drakkar Sauna">Drakkar Sauna</a> and <a href="http://www.thegleamusa.com/" title="The Gleam">The Gleam</a>. They were two boys with few words other than lyrics. They came on stage and played so gloriously. It may have not been one of their best performances, but even at their lowest their hearts shined on their sleeves. Adam Stephens’ (singer,guitarist) fingers where a whirlwind of fury as if he had sold his soul to the devil to play guitar. And the arms of Tyson Vogel flailed like an octopus on the drums with such precision and gunpowder, perfection is not a suitable word. These guys, though only two in number, sound like a thousand-angel choir with a hundred-demon step-team and every guitar-hero in our age playing like the night they first fell in love. Here’s a better <a href="http://www.nme.com/reviews/two-gallants/7854" title="Two Gallants Review">review</a>. There are also a few more pictures I took… right <a href="http://www.alanpalazzolo.com/gallery/v/2006/twogallants/" title="Two Gallants Pictures">here</a>.</p>
<p>The other two bands were stellar as well, but I do not have the motivation to write more due to my illness. Just take my word for it. Have I ever steered you wrong before?</p>
https://zzolo.org/2006/05/22/rbbq
Original RhuBarBeQue
2006-05-22T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The original RhuBarBeQue poster from 2006:</p>
<p><img src="/images/posts/rhubarbeque_full.jpg" alt="RBBQ" /></p>
https://zzolo.org/2006/05/18/the-door-is-always-open
The Door is Always Open
2006-05-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Walked in on a sea of buckets and charades<br />
that swept us out to a sailing sea, spiders<br />
with two hands, and sun-spewing, pizza-baking<br />
eyes. The whispering wind posed brighter,<br />
breathing walls, but the swirly centipede swarm<br />
scurries in the night–our hands toil.<br />
We have been witnessed, you have been warned<br />
that if all this ferocious fear, bug-black soil,<br />
exploding dogs, emancipating drives, cascading<br />
lives, and bottomless-tea aggregates, writhes<br />
into a single brilliant point, it is your radiating<br />
smile. It is no other–it reflects in my arduous eyes<br />
that the karoke is only the start of, and the end<br />
is a horizon we will find together, my dearest friend.</p>
https://zzolo.org/2006/05/16/my-new-shiney-bike
My New Shiney Bike!
2006-05-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I got a new bike a few days ago! It is a <a href="http://www.bianchiusa.com/" title="Bianchi">Bianchi</a> <a href="http://www.bianchiusa.com/05_boardwalk.html" title="Bianchi Boardwalk">Boardwalk</a>. Its a hybrid. Its great! Now i can feel righteous over those suckers driving cars. I just wish it would stop raining.</p>
<p>I got a good amount of riding in today. It runs so smooth and its so light. It’s a whole new world. And I do not have to waste all that time on the bus. Now I just have to get used to this city via bike.</p>
https://zzolo.org/2006/05/10/pizza-farm
Pizza Farm
2006-05-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I went to Stockholm, Wisconsin with Miss Andi McDaniel. We went to the Pizza Farm. What?! You didn’t know pizza grew on trees? They have prefected it here for sure. I know too much about pizza and it was quite the tasty pie.</p>
<p>Andi stayed with these wonderful people Todd and Evi and their great sons, Stanley and Chester. They live near there and live and a fram andd do farn things. It was Stanley’s birthday. He turned the big 8. Kids, pizzas, cake, farms, stray cats, goats, and anvil clouds, and of course Andi. I don’t think it could have been a better day.</p>
<p>It was so amazing to get out of the city. We drove along the river the whole way. The windows down and a mix of our (mostly my) favorite songs. We almost got lost because I spaced on the navigation. We actually used a real map to get there, the whole way. I got the train to blow its whistle because we seemed to have followed it the whole way along the river. Then, when we came to Pepin lake, which is just a wide part of the river, the sun shone down on the lake as if heaven was spewing down. It wa quite the spectacle. The ray’s of light were so clearly visible and the lake was blinding with the light, but the clouds were thick. I suppose I should have taken a picture.</p>
<p>After cake, the sky turned black. Certain death had arrived so we had to leave. There was anvil cloud, as Wes had pointed out. Which apparently is bad. But we made it through the dismal skies and listened to cheesy 80s music the whole way back.</p>
<p>Simply wonderful.</p>
https://zzolo.org/2006/05/01/against-me
Against Me!
2006-05-01T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/against_me.jpg" alt="" /></p>
<p>Saturday I had the great pleasure of finally seeing <a href="http://www.againstme.net/" title="Against Me!">Against Me!</a> when they opened up for <a href="http://www.alkalinetrio.com/" title="Alkaline Trio">Alkaline Trio</a> at the Quest. It was sold out and crowded and full of people who made me think I was too old, but I had a blast nonetheless.</p>
<p>Against Me! is simply marvelous. A few years ago when I first heard them, I was instantly in love. Only a few bands will come along and reinvent music as I have come to know it. Against Me! has done that a few times over. I still can’t put them down. They are honest and energetic. They also hail from Gainesville, FL which has produced some great, great music, though Gainesville is nothing worth talking about. And the whole state of Florida can be avoided.</p>
<p>Check out these great <a href="http://www.minno9.com/BANDS/againstme.html" title="Images of Against Me!">Pics</a> of Against Me! by <a href="http://www.minno9.com/" title="Nathan Baker">Nathan Baker</a>.</p>
<p>Alkaline Trio pleasantly surprised me. They must have played for almost two hours. Considering the length of most of their songs, they probably played every song they have ever written. I was surprised because it had been a long time since i had visited the town of Alkaline Trio and thought I would be lost in their new face of albums. But they began with playing the whole Goddamnit album, an oldy and goody. Then they played a fairly long acoustic set. Then they just went through various songs from all types of places. They did some covers. They rocked our faces off and without passing out.</p>
<p>It had been awhile since I had been to such an energetic show. I was hot and sweaty and somewhat uncomfortable by the end of it, but not without a great big smile.</p>
<p>Later that night, I headed over to the <a href="http://www.turfclub.net/" title="Turf Club">Turf Club</a> and saw <a href="http://www.essexgreen.com/" title="Essex Green">Essex Green</a>. And they just played with lots of heart and soul and I even did a little dancing. A great night that ended up with myself passing out on Mary’s couch because the Gin and Tonics went down too smooth.</p>
<p><img src="/images/posts/zzold/against_me.jpg" alt="Against Me! Photo © Nathan Baker" title="Against Me! Photo © Nathan Baker" /></p>
https://zzolo.org/2006/04/26/blocked-writer
Blocked Writer
2006-04-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have written so many things in so many ways and I have gone back and erased them and written more and this is what I came up with.</p>
https://zzolo.org/2006/04/23/warm-beer-cold-women
Warm Beer Cold Women
2006-04-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/warmbeercoldwomen.jpg" alt="" /></p>
<p>I got the opportunity to see <a href="http://www.warmbeercoldwomen.com" title="Warm Beer Cold Women">Warm Beer Cold Women</a>, a celebration of <a href="http://www.tomwaits.com/" title="Tom Waits">Tom Waits</a>. Tom Waits is an amazing artist and has been producing unique and powerful music for about 30 years, I believe. Warm Beer and Cold Women was a perfomrance of his songs chronologically done by a full band a three differnt singers (two male, one female). It goes through 30 songs, not necessarily in their entirety. It is not a cover piece. It aims at interpretating his songs by having the singers represent the characters in his songs. Much of Tom Waits’ songs portray the underbelly of our culture and our hearts in a beautiful and tragic way. I think they did a fantastic job of interpretting his songs, though they did not distort his “sound”. They definitely were not able to replicate his voice. I am not sure anyone could sing like Tom Waits anyway.</p>
<p><img src="/images/posts/zzold/warmbeercoldwomen.jpg" alt="Warm Beer Cold Women @copy; unknown" title="Warm Beer Cold Women @copy; unknown" /></p>
https://zzolo.org/2006/04/23/o-god-please-give-him-back
O God--please give him back!
2006-04-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I recently finished the novel <a href="http://en.wikipedia.org/wiki/A_Prayer_for_Owen_Meany" title="A Prayer for Owen Meany">A Prayer for Owen Meany</a> by <a href="http://en.wikipedia.org/wiki/John_Irving" title="John Irving">John Irving</a>. An amazing book, A Prayer for Owen Meany deals with such themes as religion, destiny, death, and growing up among other things. It is a very well written book and kept me wanting more. I think I lost some interest as the end drew near but the ending was more powerful than expected.</p>
<p>I will not tell the last line of the book for those who have not read it, not that it would give anything away. Usually I can’t help but read the last line of the book before I get too far into it, but this time I did not. This line is so appropriate and unexpected. The narrator spends the whole book relfecting without much emotion about the subject, I think. Then as the book ends, in this one line, he screams. He falls to his knees and cries. It is an exhausting ending.</p>
<p>An interesting thing I found out researching some websites for this post. A band I dig on, <a href="http://jimmyeatworld.net/" title="Jimmy Eat World">Jimmy Eat World</a> has a song Goodbye Sky harbor on their album, Clarity that is based on this novel. Its more of an instrumental song, but the <a href="http://www.azlyrics.com/lyrics/jimmyeatworld/goodbyeskyharbor.html" title="Goodbye Sky Harbor lyrics">lyrics</a>. definitely pertain to Owen Meany. I thought this was already a wonderful novel, but now my old memories have been washed ashore to encompass this new place and it becomes a brief moment of freedom.</p>
<p>Some Resources:</p>
<ul>
<li>A <a href="http://en.wikipedia.org/" title="Wikipedia">Wikipedia</a> entry about <a href="http://en.wikipedia.org/wiki/John_Irving" title="John Irving">John Irving</a>.</li>
<li>A poorly designed site, but with good content about <a href="http://ourworld-top.cs.com/irvingpage/" title="John Irving">John Irving</a>.</li>
<li>A <a href="http://en.wikipedia.org/" title="Wikipedia">Wikipedia</a> entry about <a href="http://en.wikipedia.org/wiki/A_Prayer_for_Owen_Meany" title="A Prayer for Owen Meany">A Prayer for Owen Meany</a>.</li>
</ul>
https://zzolo.org/2006/04/23/look-both-ways
Look Both Ways
2006-04-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have come to realize that my News section is not really news at all. I am not sure what would qualify “news” in the life of Alan Palazzolo. But it is what it is.</p>
<p>Anyway, I saw a really great movie this weekend called <a href="http://www.lookbothways.com.au/" title="Look Both Ways">Look Both Ways</a>. I saw it as a part of the <a href="http://www.mspfilmfest.org/" title="Minneapolis-Saint Paul International Film Festival">Minneapolis-Saint Paul International Film Festival</a>. Look Both Ways is an Australian movie with its main theme about death. In turn it explores other themes like life and love. It was a pretty “heavy” movie, for lack of a better adjective. Check it out if you get the chance.</p>
https://zzolo.org/2006/04/18/blind-woman-on-the-bus
Blind Woman on the Bus
2006-04-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The other day I was riding the bus. It was one of my last days living in Saint Paul. I was on my way home from work with my headphones on, but not loud enough to drown out close proximity conversation. I was reading A Prayer For Own Meany. A blind woman got onto the bus and sat across from me. She had a cute dog.</p>
<p>A few minutes later she was on the phone talking about her voice-mail. From what I could gather, her voice-mail messages had been deleted. If I had lost my voice-mail messages, I would not be upset. I may have lost a person’s number or a message from a friend I had not spoke too in a while; at the worst I could lose the time and place of a sexy rendezvous (unlikely though). But this woman was very upset; she was practically crying. These messages were far more important to her than a sexy rendezvous. It was information that she could not otherwise recover. She was blind. Later in the conversation, she was telling the Qwest operator about how there was a message on there from her father who had passed away a few years back. Imagine that! Unable to see images, a voice can be the only way to fully remember something. We usually take our memory for granted, let alone our nostalgia from polaroids.</p>
<p>As it turns out, her messages were deleted by Qwest. They were claiming that someone had told them to do so. She had not authorized such a thing and her partner, who I believe was blind as well, would never have either. So, who was at fault here? I am not sure. I know that mistakes get made. But this mistake, that most of us would take for granted, turned out to be huge. I wish I could have helped her but the damage had already been done.</p>
<p>It just made me realize that I take things for granted, even my sight. It is necessary to be reminded that I am so very fortunate, because sometimes I forget.</p>
<p>Also, never once did I hear her reveal to the operator that she was blind.</p>
https://zzolo.org/2006/04/11/a-joy-in-every-possibility
A Joy in Every Possibility
2006-04-11T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Spring has finally arrived!</p>
<p>Sometimes, all it takes is a warm sunny day to make you see the world with open eyes again. Today (as opposed to yesterday) was not so sunny, but it was warm and the flip-flops came out. I found myself taking a couple extra breaks at work. It’s difficult when you work in a “dungeon”. It is a great dungeon, as far as those places go. It just seems to not have any windows, and the chance of windows remains at a steady zero. This week is offering solace in weather.</p>
<p>The grass has begun to green-up but the trees remain barren. I can see it in their eyes, they are ready. But like myself, they know that the cold has not yet found slumber for the summer solstice. It will be nice for the growth and the leaves to come soon enough. It will also be a comfort to have my path I came here by a little overgrown. Though I struggle to preserve my path so much, my memory can only fend off the weeds and squirrels for so long. Those squirrels, with their little feet and twitchy tails, they always leave a mess behind. Its hard to maintain a trail you no longer venture down. Still, it is probably best not to forget how we came to be where we are now.</p>
<p>It was an emancipating day, in my over-emotional rollercoaster of a life. With all these ups and downs and loops, its a wonder how I get anywhere.</p>
<p>That is all.</p>
https://zzolo.org/2006/04/10/taylors-falls-and-franconia
Taylors Falls and Franconia
2006-04-10T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Saturday I had the pleasure of venturing to <a href="http://www.taylorsfalls.com/taylorsfalls.html" title="Taylors Falls">Taylors Falls</a> which is located on the <a href="http://www.saintcroixriver.com/" title="Saint Croix Valley">Saint Croix River</a> which is about an hour north of the Twin Cities. We took a small hike along the river which actually featured some contour and ridges which are hard to find in this flat land we call Minnesota. The river was exceptionally high and the “falls” were more rapids. The sign even put the word “falls” in quotations. It was beautiful and so fullfilling to get outside these grasping cities. Thanks Erika.</p>
<p>Before we arrived in Taylors Falls, we stopped at the <a href="http://www.franconia.org/" title="Franconia Sculpture Park">Franconia Sculpture Park</a> which was amazing. It seemed almost like a makeshift junk yard, but in a beautiful, intended way. I am not much of an art critic but I was very pleased.</p>
<p>I have posted some pictures that Tim took <a href="http://www.alanpalazzolo.com/gallery/v/2006/taylorsfalls/">here</a>. (There are a few pictures of Scott Baio (Charlie), who is Tim’s cute, little dog).</p>
https://zzolo.org/2006/04/09/immigrant-bill-protest
Immigrant Bill Protest
2006-04-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Today I Rallied with tens of thousands of people to protest against the <a href="http://www.govtrack.us/congress/billtext.xpd?bill=h109-4437" title="Immigration Bill 4437">Immigration Bill 4437</a> that was passed by the House last year and is still being debated in the Senate. A couple of the main points being debated are that the bill would make “illegal presence” a felony, as well as aid to illegal immigrants, and would enact the construction of a “wall” for the entire US-Mexican border.</p>
<p>Some Resources:</p>
<ul>
<li>A recent <a href="http://www.whitehouse.gov/news/releases/2004/01/20040107-3.html" title="Presidential Speech">speech</a> by President Bush concerning the Immigration issues.</li>
<li><a href="http://www.osjspm.org/pdf/2006%20flyer--Apr9immigrationmarch.pdf" title="Minesota Flyer">Minesota Flyer (pdf)</a> for the rally I attended.</li>
<li>Recent <a href="http://news.bbc.co.uk/2/hi/americas/4888820.stm" title="BBC News">BBC News</a> concenring these issues.</li>
<li>Some more <a href="http://www.alanpalazzolo.com/gallery/v/2006/immigrant/" title="Pictures I took">Pictures</a> I took.</li>
<li><a href="http://www.house.gov/writerep/" title="Contact">Contact</a> your House Representative.</li>
<li><a href="http://www.senate.gov/general/contact_information/senators_cfm.cfm" title="Contact">Contact</a> your Senator.</li>
</ul>
<p>My thoughts (that sound like a 5-year-old):</p>
<p>I will not claim to be all that in the know and I am not here to tell you how to live your life or how to think. I believe in one culture. I know there seems to be some huge differences between nations but borders only create war. Instead of trying to create more defined borders, we should concentrate on making everyone’s life better and something to value. Everyone should be able to live a full and meaningful life no matter where they are.</p>
<p>I do know that our country was founded on immigration and further more slavery and genocide of many people. We are not righteous. We do not belong here as much as anyone else does. This land is not ours to hold, but it provides a place to build from. We can build a better place for every person on this planet, not just one country.</p>
<p>I am a simple man, but I think people may forget that the we must keep the simple idea burning before we can make instrumental strides towards achieving those goals. Details can sometimes confound the much larger picture.</p>
<p>So, maybe I sound like a hippie, and maybe I am telling you how to live your life, but we all have to learn to love and accept each other.</p>
https://zzolo.org/2006/04/04/confession-and-committment
Confession and Committment
2006-04-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I give up. This is my confession. Today I am giving up. I am making my obligation to myself known to the internet public. So, if you see me trying from here on out, you will have to be like, ‘Alan, remember on your website you said you were not going to do that anymore…’.</p>
https://zzolo.org/2006/04/02/online-applications
Online Applications
2006-04-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://www.spinink.net" title="SpinInk">Jake</a> tossed over this link to <a href="http://www.georgenava.com/applauncher.php" title="George Nava's XUL Apps">George Nava’s XUL Apps</a>. It’s a plethora of simple online applications, in case, like in Windows, you do not have a Mail or Calendar application. Or if you just want to play some Video Poker.</p>
<p>These applications use a technology called <a href="http://www.xulplanet.com/" title="XUL">XUL</a> which translates to <a href="http://www.w3.org/XML/" title="XML">XML</a> User Interface Language. XUL is specific to <a href="http://www.mozilla.org" title="Mozilla">Mozilla</a> browsers. Basically, XUL is a coding library that allows you to “create rich, sophisticated cross-platform web applications easily.”</p>
<p>Also, <a href="http://www.georgenava.com/" title="George Nava">George Nava</a> seems to be a pretty busy and intelligent person. The rest of his site is filled with neat things you should check out.</p>
https://zzolo.org/2006/04/02/lightbox-2-0
Lightbox 2.0
2006-04-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://www.huddletogether.com/projects/lightbox2/" title="Lightbox 2.0 ">Lightbox 2.0</a> was created by Lokesh Dhakar at <a href="http://www.huddletogether.com/" title="Huddle Together">Huddle Together</a>. I currently use <a href="http://www.huddletogether.com/projects/lightbox/" title="Lightbox">Version 1</a> throughout my site. Both versions are amazing but 2.0 uses more resources and is not as supported through multiple browsers, so I have put it in the <a href="/en/lab/lightbox2.php" title="Lightbox2 Experiment"><strong>Lab</strong></a> for now with hopes of taking it out someday.</p>
https://zzolo.org/2006/04/02/gossip-the-good-kind
Gossip (the good kind)
2006-04-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/gossipposter.jpg" alt="" /></p>
<p>Last night, I saw <a href="http://www.gossipyouth.com/" title="Gossip">Gossip</a> at the <a href="http://www.triplerocksocialclub.com/" title="Triple Rock Social Club">Triple Rock Social Club</a> with <a href="http://myspace.com/spiderfighter" title="Spider Fighter">Spider Fighter</a> and <a href="http://www.jyrk.com/panther" title="Panther">Panther</a>. We did not get to see much of Spider Fighter, but they “rocked our faces off” for a couple songs. Panther was a one-man, one-iPod show. He was hillarious and funky at the same time. It reminded me of <a href="http://www.beck.com/" title="Beck">Beck</a> and <a href="http://www.npgmusicclub.com/" title="Prince">Prince</a> in a more robotic, vulgar, and down-to-earth way (that doesn’t make much sense, don’t worry I don’t write music reviews). Then Gossip rocked the whole house (not just our faces). They have such a simple yet rich and tasty sound. To top the evening off with something more potent, they did a cover of <a href="http://www.aaliyah.com/" title="Aaliyah">Aaliyah’s</a> “Are You That Somebody” which still is clenching my heart right now. Another spectacular show Minneapolis has given to me.</p>
<p>As well, my friend Colleen was in town, visiting from the NC. So, on top of an amazing show, I was able to spend time with an old, great friend.</p>
<p><img src="/images/posts/zzold/gossipposter.jpg" alt="Gossip Minneapolis Poster © unknown" title="Gossip Minneapolis Poster © unknown" /></p>
https://zzolo.org/2006/04/02/evil-in-the-world-today
Evil in the World Today
2006-04-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/soul_reaper.jpg" alt="" /></p>
<p>As I was looking for links for the great bands of the previous post, it seems more and more bands only have MySpace (notice how I do not link to it) accounts. If you are unaware, MySpace is a soul reaper, much like Death, the Eternal Footman. Everytime you click on the Login button, you are putting in another quarter for your amusement ride to hell. Every animated GIF (picture) causes small strokes in the left side of your brain. And each second you wait for the pages to load and reload at MySpace, is time you will never get back. Please note the picture provided; it is my rendering of what I would imagine MySpace would look like was MySpace not just digitial information. Now, I am not here to tell you how to live your life; I just wanted to warn you. There is still time for salvation.</p>
<p>Note: I do have a MySpace account and I am aware my soul is long gone. if you are interested in being my MySpace Friend, I have this simple rule: Do not try to talk to me, I will talk to you.</p>
<p><img src="http://www.alanpalazzolo.com/gallery2/d/4062-2/soul_reaper.jpg" alt="MySpace is the Grim Reaper © unknown (edited by Alan Palazzolo)" title="MySpace is the Grim Reaper © unknown (edited by Alan Palazzolo)" /></p>
https://zzolo.org/2006/03/26/too-personal-too-vague
Too Personal, Too Vague
2006-03-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I always start journal type things and then forget to write in them. I have many started journals. Is my life inherently boring? Or is it so exciting, writing slips my mind? Or do the things I have to say I just want to keep in my mind?</p>
<p>I have spent the past few months very diligently lisening to new music. Theres been a few that have stuck out of the rest, but it seems to kind of all just blend together. Maybe its my own lack of adventure. Other people’s music has been such a solace to me, the only real spirtual place I have been. But my faith is being questioned. So, i should pick up my own guitar and write the same songs that have been circulating the globe for centuries. Is there any original thought? Is there anything new? I can not answer that, but it is quite emancipating to make some noise.</p>
<p>******</p>
<p>I lost something very special to me a couple months back. Maybe not in its entirety, but it has diminished enough to become something different in form now. Still, the memory and connection still glisten in the morning and puncture into the night.</p>
<p>I crave the knowledge to understand more completely how/why this bereavement came as it did. I suppose I possess it in my head that understanding will lead to freedom from the bondage of my abysmal coupling (love), but I am not sure if that is truely accurate.</p>
<p>Now my denudation has concupiscent for another, a true gallant I would imagine. I hope he is everything she needs. It is the nature of love (or something as equally as encapsulating). It is the tormenting of my choices. It is the hole in my sock I cannot seem to allow myself to throw away.</p>
<p>*****</p>
<p>Sometimes I feel as if she is unaware of her affect on me; she is a beacon of joy. But maybe I am not conscious of the inaffect I have on her. As much as I could give it my best again, the junction of two parties is necessary.</p>
<p>If it was not worth staying because it was no longer easy, then why is it worth staying away when it is hard? It will never be easy. A huge part of trying is just showing up, but one can’t get a degree by simply going to class. So quick to give it away, and so quick to shut it up. Come on honey, give it to me.</p>
<p>****</p>
<p>Comfort seems so unobtainable, but I will find my own way as sure as each day the sun raises.</p>
https://zzolo.org/2006/03/26/never-say-never
Never Say Never
2006-03-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.<br />
It is never going to happen.</p>
<p>It never really happened.</p>
https://zzolo.org/2006/03/26/development-as-freedom
Development as Freedom
2006-03-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I recently just finished reading <a href="http://www.amazon.com/gp/product/0385720270/ref=sib_rdr_dp/002-2246695-8669623?%5Fencoding=UTF8&me=ATVPDKIKX0DER&no=283155&st=books&n=283155" title="Amazon: Development as Freedom">Development as Freedom</a> by <a href="http://www.amazon.com/exec/obidos/search-handle-url/index=books&field-author-exact=Amartya%20Sen&rank=-relevance%2C%2Bavailability%2C-daterank/002-2246695-8669623" title="Amartya Sen">Amartya Sen</a>. He received the Nobel Memorial Prize in Economics for his work in welfare economics in 1998. It focuses on seeing economic development as expanding the freedoms of individuals rather than simply focusing on economic growth such as individual income or GNP. It is definitely a dense read, but the theories brought here are well worth indulging. I do not wish to go into depth about the particulars of the book because my full understanding requires another read of the book, but I will bring some internet resources to the table.</p>
<ul>
<li>A <a href="http://dannyreviews.com/h/Development_Freedom.html" title="Danny Review">Review</a> from <a href="http://dannyreviews.com/" title="Danny Yee Reviews">Danny Yee Reviews</a>.</li>
<li>Buy <a href="http://www.amazon.com/gp/product/0385720270/ref=sib_rdr_dp/002-2246695-8669623?%5Fencoding=UTF8&me=ATVPDKIKX0DER&no=283155&st=books&n=283155" title="Amazon: Development as Freedom">Development as Freedom</a> from <a href="http://www.amazon.com" title="Amazon">Amazon</a>.</li>
<li>A lits of books by <a href="http://www.amazon.com/exec/obidos/search-handle-url/index=books&field-author-exact=Amartya%20Sen&rank=-relevance%2C%2Bavailability%2C-daterank/002-2246695-8669623" title="Amartya Sen">Amartya Sen</a> from <a href="http://www.amazon.com" title="Amazon">Amazon</a>.</li>
<li><a href="http://www.wikipedia.org" title="Wikipedia">Wikipedia</a> entry on <a href="http://en.wikipedia.org/wiki/Amartya_Sen" title="Amartya Sen">Amartya Sen</a>.</li>
<li><a href="http://nobelprize.org/economics/laureates/1998/sen-autobio.html" title="Autobiography of Amartya Sen">Autobiography of Amartya Sen</a> as taken from <a href="http://nobelprize.org/" title="NobelPrice.org">NobelPrice.org</a>.</li>
</ul>
<p>One particular thing that I found odd throughout the book that has little to do with the actual content of it is Amartya’s use of the female pronouns. I have not discussed this with him, so my opinion is just that, my opinion. It seems that he is portaying the point of female importance which I can fully agree with. But I feel this is not affective way to counteract gender bias because it becomes its opposite. I think the use of non-gender specific pronouns would be more appropriate. Still, it is better than assuming male, and what do I really know anyway.</p>
https://zzolo.org/2006/03/12/jenny-lewis-and-company
Jenny Lewis and Company
2006-03-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I went and saw <a href="http://www.jennylewis.com/" title="Jenny Lewis and the Watson Twins">Jenny Lewis and the Watson Twins</a> this evening with <a href="http://www.johnathanrice.com/" title="Johnathon Rice">Johnathon Rice</a> and <a href="http://whispertown2000.rilokiley.net/" title="Whispertown 2000">Whispertown 2000</a> at the <a href="http://www.womansclub.org/" title="Woman's Club of Minneapolis">Woman’s Club of Minneapolis</a>. Simply amazing.</p>
<p>We walked in on <a href="http://whispertown2000.rilokiley.net/" title="Whispertown 2000">Whispertown 2000</a> doing an a cappella with snapping and all. Then they went into a cover of <a href="http://www.gillianwelch.com/" title="Gillian Welch">Gillian Welch’s</a> “Look at Miss Ohio”. Though the rest of their set seemed to be out of key, I think that was there edge. I am looking forward to obtaining one of their albums.</p>
<p><a href="http://www.johnathanrice.com/" title="Johnathon Rice">Johnathon Rice</a> came out with a slide guitar accompaniment (I think his name is Dave.) with his version of “Who Do You Love”. He has this wonderful way of strumming a guitar, very forceful. His songs were simple but effective. He seemed so timid when addressing the crowd, but in actuality he was very open to conversing with the crowd and ended up being really funny in that “awww, how cute” sort of way.</p>
<p>Finally <a href="http://www.jennylewis.com/" title="Jenny Lewis and the Watson Twins">Jenny Lewis</a> came out in all her glory with her full backing of troubadours. While in Rilo Kiley she usually plays the sexy indie rocker (which she pulls off so well), but in her solo outfit she had a real simple dress on and I am not sure if she was wearing shoes or not. Johnathon Rice strummed his guitar and the Watson Twins exercised those vocal chords so majestically. Dave? from above was there and a bassist and drummer.</p>
<p>It was like a church revival. We could feel the spirituality in the performance, though I am not sure if those songs about god were in the right place. Though Jenny was not very talkative between songs, her voice can carry her into heaven just fine. They put together a great performance. Pre-Encore closing was a new song called “Joe Killed Mom” (or something like that) that was bubbling with energy. It saw Jenny on the keyboards, a nice aside from Johnathon Rice and as each member left stage in turn, it ended with a brilliant drum solo as the lights faded. It was very well done. The encore saw a solo song dedicated to Jenny’s father who apparently was there. Jenny and the Watsons also did a short a cappella which I think was a cover but I am unsure. Then to close it off they did a Jesus song which I would think was a traditional song of some sort but I am not familiar with this area. Still it ended it all well.</p>
<p>Thanks for the good times guys and gals.</p>
https://zzolo.org/2006/03/03/restless
Restless
2006-03-03T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>From the moments in the morning when the light creeps across the floor,<br />
after the nightmares form into the reality of the day, those thoughts wash ashore<br />
until my eyes stare aimlessly into the darkness and my mind drifts<br />
and the alcohol has numbed my fight to stay awake. Deep in sleep, it lifts.</p>
<p>When there is no consciousness, no running, no forgetting, and no remembering,<br />
placed into a single nothing, washed over me like the lighthouse, staggering<br />
across an empty canvas, I am. I am aware you are unaware; your flight<br />
is necessary and your return impossible and the love is fading and bright.</p>
<p>My heart resides in between the sun and the moon; years of light will reveal<br />
a low appeal for a connection. Until then I can only put faith in concealing<br />
my scratches and the few that offer their time, those people so beautiful,<br />
timid and set. Your feet are tired, but restless. I give up; I am not able.</p>
https://zzolo.org/2006/02/26/mcluskyism
McLuskyism
2006-02-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I should be working, but I am just not concentrating. Most music reviews start off something like this: “Everyonce in a while a band will come along…” like some bad movie trailer, or something like “There are so many bands that… but…”. It is too hard to find bad music reviews.</p>
<p><a href="http://www.mclusky.net/" title="McLusky">McLusky</a> is brutally honest, a wonderful quality. If you want something that will offend you, make you cringe, and make you want to move, then give McLusky a whirl. I have only listened to them for a couple years (as thanks to Joel and Chris), but they have been around for about 6 years from what I understand. They broke up some time last year which is a shame. What’s a shame is putting out a best of album. I am not a big fan of these unless it contains things that are no longer released. This new release, McLuskyism (released after they broke up, nonetheless, so I wonder who gets the profits) is a good place to start for new-comers. As I am not impressed, it’s a nice reminder of great songs.</p>
<p>Even with such great tunes, <a href="http://www.mclusky.net/" title="McLusky">McLusky</a> can sell me on simply album titles like <a href="http://www.mclusky.net/" title="McLusky">“the difference between me and you is that i’m not on fire”</a>, <a href="http://www.mclusky.net/" title="McLusky">“my pain and sadness is more sad and painful than yours”</a>, as well as <a href="http://www.mclusky.net/" title="McLusky">“she will only bring you happiness”</a>. And I especially am fond of one of their best songs called <a href="http://www.mclusky.net/" title="McLusky">“alan is a cowboy killer”</a>.</p>
<p>Here is a <a href="http://pitchforkmedia.com/record-reviews/m/mclusky/difference-between-me-and-you.shtml" title="Pitchrofk Media Review">Pitchrofk Media Review</a> of <a href="http://www.mclusky.net/" title="McLusky">“the difference between me and you is that i’m not on fire”</a>.</p>
https://zzolo.org/2006/02/26/global-issues
Global Issues
2006-02-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have been meaning to write this post for a while, but it seems to slip my mind (which it shouldn’t). About a month ago, I came across this wonderful internet resource (website) called <a href="http://www.globalissues.org/" title="GlobalIssues.org">GlobalIssues.org</a>. It is just that: a website focused on providing a information base for all sorts of global issues. It is not a news site, so much as a gathering of resources and summaries of issues that should be addressed. If you should want a beggining point on a number of Global Issues, such as <a href="http://www.globalissues.org/TradeRelated/Poverty.asp" title="Causes of Poverty">Causes of Poverty</a>, <a href="http://www.globalissues.org/TradeRelated/FairTrade.asp" title="Fair Trade">Fair Trade</a>, and so much more, then it is a really great place to start some research.</p>
<p><a href="http://www.globalissues.org/" title="GlobalIssues.org">GlobalIssues.org</a>, besides for the fact that it is done with ASP, is a really well laid out site full of so much information, maintained by a really nice guy, <a href="http://www.globalissues.org/about/who/" title="Anup Shah">Anup Shah</a> all by his lonesome. I know he is nice because I have had the pleasure of having some minor contact with him. Check it out.</p>
https://zzolo.org/2006/02/26/andys-birthday-at-azia
Andy's Birthday at Azia
2006-02-26T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Last night was Andy’s birthday. We surprised her at a restaurant called Azia, which also contains a Sushi Bar and a Saki Lounge, called the Catepillar Lounge. It was a drunken mess. Buta fun chaos. Azia is ultra trendy. There was loud, semi-decent techno, a late night happy hour, and kung-fu and anime movies on a flat panel. The only redeming part was the kung-fu movies.</p>
<p>So, the main reason for this entry is to document my vow never to return, unless it is to “dine and run”, which is an option. At the end of the night when I was leaving and went up to the bar to pay out my tab, I found out that the barkeep had given my car to someone else! No, seriously, my card was in someone else’s hand. Now, I do not wish to point my finger at the bar-person. It is an honest mistake, but a huge inconvenience, and a breach of my personal security. So, the manage there talked to me for a minute and took down my number. I could understand there was not much to be done at 2:00am. He told me to call the owner who would be in tomorrow.</p>
<p>Today, I called the owner, wanting some answers! He did not seem to care too much and seemed busy. So, he said he would call me right back because he had not read the “manager’s report” from the night before. Still, no call back.</p>
<p>Since then, I have cancelled my card and am beggining to endure the huge inconenience of not having my check card for a week and a half. This was necessary for two reasons: 1) that person that has my card could easily spend my money, and 2) they could keep my card information and possibly use it against me in the future.</p>
<p>So, what I want is a free dinner, to put it bluntly. I am not looking for a handout (not really at least); I just wanted some concern and some retribution for the problem that Azia had caused. I did not get that. I just got brushed aside. At any restaurant that cares about keeping customers, they are pretty lenant about giving away a few drinks or meals if necessary. I know, I have worked in many restaurants. So, where is my free dinner!? So, do not go to Azia. I am starting my boycott as of right now, but maybe after I eat some food and do not pay for it.</p>
https://zzolo.org/2006/02/23/andrew-bird
Andrew Bird
2006-02-23T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>So I went to go see <a href="http://www.andrewbird.net/" title="Andrew Bird">Andrew Bird</a> at the <a href="http://www.finelinemusic.com/" title="Fine Line">Fine Line</a> this evening. I do not want to be vulgar in such a public space, but I also do not beleive in censoring my words especially because of meaning; and it really is appropriate here. Andrew Bird was fucking brilliant. The man is just simply amazing. I have seen a lot of music preformed in my time, but Andrew Bird is a Jimi Hendrix of the violin, composes a song like Mozart, and whistles like no other. (For lack of a better comparison.) He is a musical genius. As Imeogen would like to say, jellybeans. So, if you get the chance to see him perform, go! Or if you can get your grubby little hands on one of his albums, slap on those headphones.</p>
https://zzolo.org/2006/02/20/modx
MODx
2006-02-20T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I am working on a site where I want to use an Open Source <a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content Management System">CMS</a>. There is a great resource to do research on this exact subject at <a href="http://www.opensourcecms.com" title="Open Source CMS">Open Source CMS</a>. It creates a fresh install of lots of different CMS systems every two hours.</p>
<p>So, I used <a href="http://drupal.org/" title="Drupal">Drupal</a> for a minute because I had heard good things, and it comes highly rated at <a href="http://www.opensourcecms.com" title="Open Source CMS">Open Source CMS</a>. Druapl truned out to not be what I needed for this project. It is very powerful, but it was not very user-friendly and intuitive, at least to me, so I figured this would not be good for the less-technical users of the CMS.</p>
<p>Then I tried <a href="http://modxcms.com/" title="MODx">MODx</a>. It has such a nice interface. It seems a little slow on my machine with all that Javascript, but it is not really that limiting. It makes a lot of sense to me. It seems really easy to make templates and customize code. The one bad side might be that there does not seem to be that many “extensions” offered yet. Hopefully more will come. This may limit it for me, such that, it will not provide the full functionality I might be looking for in future projects. But so far so good!</p>
https://zzolo.org/2006/02/19/song-about-alan
Song About Alan
2006-02-19T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Today I dropped some daisies off at Cole’s house. I had to break in, but I think she needed them more than that window. The idea of giving flowers is a little strange, what with their imminent parish. Still it is nice to get flowers. I wouldn’t mind getting flowers. (Hint hint to anyone out there).</p>
<p>Then I ate lunch with Ms. Andi McDaniel at the French Meadow and all their organic, local glory. I had the tempeh reuben. I am not a huge fan of sauerkraut but reubens usually come in such a great variety. At the restaurant, “On Deck” in Portland, OR you will find a great reuben. I worked there for a short time. Anyway lunch was nice.</p>
<p>After lunch we spent a minute up in her apartment, as she had mucho work to accomplish. After a quick digestive silence, she broke out the guitar and strummed and sang. I bet you didn’t know she could do that. I wasn’t quite aware either. After a little warming up, she went into the finale: A song about yours truely. No, she did not stay up all night writing it. It was defintely in-prov. It was hilarious. She sang about our lunch together and my living in Saint Paul, which is no good, among other things. Then, fifteen minutes into this magnificant ballad she kind of trailed off into how delicious cats were and the such. I appreciate all the great things people have done for me in my life to no end, and there have been so many great incidents, but it was the first time I had a song sung just for me, to me, about me. It made me feel special.</p>
<p>So, thanks Andi.</p>
https://zzolo.org/2006/02/18/johnny-5
Johnny 5
2006-02-18T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>This evening I had the pleasure of spending time over at Beth’s house. She made some sort of lentil, rice, onion, collard greens, and beets dish. It was quite tasty. I don’t know about the yogurt, I have to admit. It wasn’t my thing. And that was all good, but after dinner we went down to the local Holywood video (which I did a couple days temp work at their Corporate Headquartes right outside of Portland, OR). She only had a VHS player so we looked at VHS tapes. It had been a long time since I had done that. At this particular store, they had quite the selection of VHS tapes. It was quite the spectacle. Anyway, after looking for quite some time, we finally decided on…. (wait for it)… Short Circuit 2!! Yes, you heard it right folks, Short Circuit 2. It is such a great movie.</p>
<p>Sometimes after ten years, when you come back to something, it doesn’t have the flare it once had. This was definitely not the case for Short Circuit 2. For those that aren’t in the know, it involves a robot (Johnny 5) that has “malfunctioned” and now has a personality all to his own. It goes through the struggles of his need for input in a large metropolitan city and becoming “accepted” into out human world. Jewel thieves and hang-gliding robots, what more could you ask for.</p>
https://zzolo.org/2006/02/16/uh-oh-poetry
Uh Oh, Poetry
2006-02-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>You either love or hate it. Or maybe you just like Emily Dickenson. I love it, and it may be one of the only artistic things I can do. So, I have added a new section called <a href="/en/writing/" title="Writings">Writings</a>. It contains a few subsections at the moment: Poetry, Journal, and Others’ Writings. It is still in development right now so there’s only one poem up. Please keep in mind that the things I post are what I think are good relative to my ability. Now this may mean to you that I am horrible at this and should stop because I am making the world a worse place. On the other hand I have written a whole lot of extremely bad poetry. A whole lot.</p>
https://zzolo.org/2006/02/14/valentines-day
Valentine's Day
2006-02-14T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Valentine’s Day, I think is very much overrated, but I am not cliche enough to say I hate it. It’s a good idea but has become too pink, commercialized, and just about romantic love. It should celebrate our love for everyone, and we shouldn’t need a single day.</p>
<p>Luckily, there is art to mutilate perspectives on life. There was a Valentine’s Day Card contest for <a href="http://www.mcad.edu/" title="MCAD">MCAD</a> students. They came through with flying colors. I have posted them on <a href="http://www.alanpalazzolo.com/gallery/v/2006/valentines/" title="MCAD Students' Valentine's Day Cards">My Gallery</a>. You can send one as an e-card from the <a href="http://intranet.mcad.edu/modules/news/view_news.php?story_id=935" title="MCAD Valentine's Day Story">MCAD Story</a>.</p>
https://zzolo.org/2006/02/12/old-canes-early-morning-hymns
Old Canes' Early Morning Hymns
2006-02-12T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/old_canes.jpg" alt="" /></p>
<p>noticed this because it contains the front-man from <a href="http://www.theappleseedcast.com/" title="Appleseed Cast">Appleseed Cast</a>, Christopher Crisci. They’re awesome but not what I need at this junction in my life. <a href="http://www.oldcanes.com/" title="Old Canes">Old Canes</a> also contains a member of <a href="http://www.myspace.com/thecasketlottery" title="Casket Lottery">Casket Lottery</a>, which also doesn’t provide the solace I am looking for. But together with a multiple of other artists, <a href="http://www.oldcanes.com/" title="Old Canes">Old Canes</a> makes me want to put <a href="http://www.twogallants.com/" title="Two Gallants">Two Gallants</a> down for a hot minute.</p>
<p><a href="http://www.earlymorninghymns.com/" title="Early Morning Hymns">Early Morning Hymns (listen here)</a>, their debut album, is a foot-stomping, hand-clapping, rock-um-sock-um of an amazing time. Here is a <a href="http://www.graynoise.net/index.php?id=20,104,0,0,1,0" title="Early Morning Hymns Review">review</a> from <a href="http://www.graynoise.net/" title="Gray Noise">Gray Noise</a> that is funny as hell.</p>
<p><img src="/images/posts/zzold/old_canes.jpg" alt="© Old Canes" title="© Old Canes" /></p>
https://zzolo.org/2006/02/09/pandora
Pandora
2006-02-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I have been skeptical of the radio for quite some time. I find most stations devoid of variety and soul. There are some various college stations I have heard that sometimes won’t adhere to some strict line up of corporate music. Still, who am I to judge.</p>
<p>Living in Minneapolis, I have come across <a href="http://minnesota.publicradio.org/radio/services/the_current/" title="MPR: The Current">The Current</a> which is a subsidary of <a href="http://minnesota.publicradio.org/" title="Minnesota Public Radio">MPR</a>. It is commercial free and full of variety; one cannot go wrong with this.</p>
<p>Further still, a new friend, Andi has shown me the light known as <a href="http://www.pandora.com/" title="Pandora">Pandora</a>. This is an ad-free site that with the help of <a href="http://www.macromedia.com/shockwave/download/" title="Macromedia Flash">Flash</a> creates a great interface to create your own radio station. You enter in an artist or song and it creates a playlist that is full of similar songs. The technology behind determining similarity between songs is something known as <a href="http://www.pandora.com/mgp.shtml" title="The Music Genome Project">The Music Genome Project</a>. It seems to be quite amazing and I will have to find out more info on it. So, if you just don’t know what to listen to, give it a try.</p>
https://zzolo.org/2006/02/09/lightbox
LightBox
2006-02-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://www.huddletogether.com/projects/lightbox/">LightBox</a> by Lokesh Dhakar is a simple javascript that does this amazing thing with pictures. Click on the picture here and see it in action. I am very impressed with it. I won’t go into details of it, but all it requires is some javacript, CSS, and a few small images.</p>
https://zzolo.org/2006/01/31/stumbled-in-this-door
Stumbled in this Door
2006-01-31T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>So, I was looking around the “internet” for some design inspiration. It seems to be an area I lack. I do appreciate simple, but those <a href="http://www.macromedia.com/go/getflashplayer" title="Macromedia Flash">Flash</a> sites still amaze me.</p>
<p>Anywho, I stumbled upon <a href="http://www.killerspin.com/" title="Killer Spin">Killer Spin</a>, a cumbersome Flash site dedicated to “Table Tennis”. To those of us not in the know, that is “Ping Pong”. It knocked me out of my chair a little. There are some really nice Flash sites that are usually highly artistic or geared towards marketing some young segment, but Ping Pong. Who knew.</p>
https://zzolo.org/2006/01/30/two-gallants
Two Gallants
2006-01-30T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Life is an endless ride it seems. Even the brightest flames go out without fuel. And though I just want to get off this crazy thing for just a moment to collect myself, the train follows the tracks even through the darkness. I miss her so much.</p>
<p>So, when there is no light and each step I have to check twice, the songs of others help guide my way. I stumbled across this band, <a href="http://www.twogallants.com" title="Two Gallants">Two Gallants</a>, a couple weeks ago. It’s powerful stuff. The newer album, “What the Toll Tells” has help given me back a voice and provided a beat to march forward to. Thank you.</p>
<p>Since my words are not good enough, here is a <a href="http://pitchforkmedia.com/record-reviews/t/two-gallants/throes.shtml" title="PitchFork: Two Gallants Review">Pitchfork Review</a> of their older album, “The Throes”.</p>
https://zzolo.org/2006/01/04/f-e-a-r
F.E.A.R.
2006-01-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><img src="/images/posts/zzold/FEAR.jpg" alt="" /></p>
<p>I have been playing <a href="http://www.whatisfear.com/us/" title="F.E.A.R.">F.E.A.R.</a> the past couple days. An amazing game. It lacks in some areas like storyline and exotic environment. But it makes it up with an amazing physics engine and just a spectualr graphic experience. Its like a bowl full of Lucky Charms for your eyes. It has the most extensive graphics and performance options I have ever seen, as well as a simulation to test your FPS. And maybe I am easily scared but it definitely keeps me looking behind my back. The way they kind of slide in moving “ghosts” is really something.</p>
<p>A great game, maybe not to keep you reading the next page, but just to see what chain reaction of explosions is around the bend. Here are some good screenshots from <a href="http://media.pc.ign.com/media/681/681912/imgs_1.html" title="F.E.A.R. screenshots">IGN</a>.</p>
<p><img src="/images/posts/zzold/FEAR.jpg" alt="F.E.A.R. screenshot © Sierra © IGN" title="F.E.A.R. screenshot © Sierra © IGN" /></p>
https://zzolo.org/2006/01/02/a-new-year-a-new-host
A New Year, A New Host
2006-01-02T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>AlanPalazzolo.com has moved residence from the great <a href="http://www.schostpro.com/" title="SCHostPro">SCHostPro</a> to the even greater <a href="http://www.dreamhost.com/" title="Dream Host">Dream Host</a>. It was not my decision as <a href="http://www.spinink.com/" title="Spinink.com">Spinink</a> is my actual and most gracious host. Most of you don’t care about this stuff, but its news to me. You can still find great Alan Palazzolo information as always at <a href="/" title="Alan Palazzolo">AlanPalazzolo.com</a>.</p>
https://zzolo.org/2005/12/28/i-moved
I Moved
2005-12-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Well, I moved almost two months ago. I now live in Saint Paul, Minnesota. It is cold. It is so very cold. No complaints really. So, I got a really great job at <a href="http://www.mcad.edu/" title="Minneapolis College of Art and Design">Minneapolis College of Art and Design</a>. I hope everyone is having a great end-of-year celebrations.</p>
https://zzolo.org/2005/11/04/my-travels
My Travels
2005-11-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I am not here to claim I have seen amazing things, but I’d like to think I have. Still, if you are interested in seeing into my past through geographical eyes, check out my new section, called My Travels.</p>
https://zzolo.org/2005/10/28/retired-the-3d-flash-header
Retired the 3D Flash Header
2005-10-28T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>I didn’t want to but it just wasn’t making any sense at 3MB. It was so beautiful, so perfect in almost every way. It made me laugh; it made me cry. Now it has to go into the archives. You can find this amazing piece of animation in the Lab, under 3D Flash Header.</p>
https://zzolo.org/2005/10/25/version-3-0-beta
Version 3.0 beta
2005-10-25T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p><a href="http://www.alanpalazzolo.com" title="AlanPalazzolo.com">AlanPalazzolo.com</a> makes it into another version. The site is still being put together; I think it’s coming along nicely. Please excuse any errors you might run into (not that you should). If you have any questions, please use the Contact form. Also, check out the Gallery.</p>
https://zzolo.org/2005/10/21/poem-to-hilary
Poem to Hilary
2005-10-21T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>by Christina Georgina Rossetti (1830-1894)<br />
written 1875-02-02</p>
<p>Remember me when I am gone away,<br />
Gone far away into the silent land;<br />
When you can no more hold me by the hand,<br />
Nor I half turn to go, yet turning stay.<br />
Remember me, when no more day by day,<br />
You tell me of our future that you planned:<br />
Only remember me; you understand<br />
It will be late to counsel then or pray.<br />
Yet if you should forget me, for a while<br />
And afterward remember, do not grieve;<br />
For if the darkness and corruption leave<br />
A vestige of the thoughts that once I had,<br />
Better by far you should forget and smile<br />
Than that you should remember and be sad.</p>
https://zzolo.org/2003/10/04/what-is-right-and-what-is-life
What is Right and What is Life
2003-10-04T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The golden hands of autumn slip through cracked<br />
windows, clenching awe-struck throats, blackened<br />
from smothering smoke, while the stars fan flames<br />
of motionless, monumental moments, boasting blame<br />
for memories that define our luscious, lovable lives.</p>
<p>The half-moon has ruined seasonal wounds,<br />
so we can embrace in the face of whispering winter,<br />
and sun sets earlier every evaded, eventless <br />
everyday we hold hollow hands and scentless<br />
love reaches with each fallen leaf and writhes.</p>
<p>Like the golden autumn night holds your breathe,<br />
you hold me. Like the grey winter holds and seethes<br />
to the mountainside, painting a chattering place,<br />
I cling to you, so frozen in your warm embrace.<br />
Ready for spring, naked, sprawled, we make plans.</p>
<p>I have tasted your death, salty to these worried eyes,<br />
and know now, notably unable to sever hurried ties.<br />
Even as winter wakens my hibernation, your freedom<br />
twists these cheeks to smile, tenderly afflicted , poised to run,<br />
legs clenched, heart open, finding tonight we lay like hands.</p>
https://zzolo.org/2003/08/16/next-time-we-will-not-aim-so-high
Next time we will not aim so high.
2003-08-16T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>Come two o’clock, the rain will<br />
pat down the roofs, cleansing<br />
our everydays woken with weighted<br />
hearts. The sun waits until<br />
the clouds form like circling<br />
vultures craving radiant rays.</p>
<p>Your eyes are true.</p>
<p>Those decadent days spent with antiques<br />
and flowers, where windows were bleak<br />
across my room, and we sucked the life<br />
from balloons. Still, this sentimental satellite<br />
orbits around my heart, even through this war.<br />
Take my hand, I won’t lay low here anymore.</p>
<p>Your eyes are new.</p>
<p>So, maybe you have become a statue,<br />
a monumental moment buzzing through<br />
the air, on heighted hilltop. There a sense<br />
of glory and grace so magnificent<br />
to shine for the lucky victims, bold<br />
to eyes. Still, I wish you would break this mold.</p>
<p>Your eyes are stone.</p>
<p>So when we go to bed, we dream like guns,<br />
flopping around like fire arms.<br />
I don’t know when, but a day’s gonna come,<br />
where my ears will hear this silent alarm,<br />
and I’ll know my expectations have been too high<br />
for such a simple, sacred, subtle girl to reply.</p>
https://zzolo.org/2003/07/15/smeared-sunsets
Smeared Sunsets
2003-07-15T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>His hands wont stop shaking, making<br />
his hands hard not to hinge your eyes<br />
to. Your lips hover near his and hiccups<br />
smear the sacrifice of shared sunsets<br />
across your face. Words are not needing, <br />
not satisfying, pleading whispers of fingertips<br />
to kneecap.</p>
https://zzolo.org/2003/04/09/transit
Transit
2003-04-09T00:00:00+00:00
Alan Palazzolo
https://zzolo.org
<p>The tracks run north to sipping sun<br />
and south to highway gas that rises<br />
off hot concrete. It lulls you some,</p>
<p>you think, as heat escapes, it tries<br />
to catch the trees ablaze. You chose<br />
the tracks because the tracks will cry</p>
<p>no one and freedom, but the roads<br />
are full of watchful eyes. Your arms<br />
won’t reach the sky, you still will boast</p>
<p>they take to water like a torn<br />
paper airplane. The wind from west<br />
and wicked oceans straighten worn</p>
<p>and worried hair. You spin, you twist<br />
from plank to nail. Sun sets on cheeks<br />
with frantic blood and wilted wisps</p>
<p>of bashful breeze. You left, still weeks<br />
from home. You’re finished, dried, uncooked<br />
with feet ablaze, you cried for weak</p>
<p>you screamed. The train screams past; air shakes;<br />
you walk; your ready heart unshook.</p>