January seemed to breeze along without really stopping to say hello, and February doesn't look to be slowing down either. af83 will be hosting a Drupal Commerce Sprint in Paris from February 22 - 26, and we'll be doing as much as we can to make sure it's a productive time. I'll be flying over with mikejoconnor to join DamZ, Bojhan, fago, and whoever else shows up to work on the core Commerce modules and Rules 2 for Drupal 7. We're very excited about the week and doubly excited about the chance to work with Bojhan and fago early in DC's development.
If you're interested in joining us for a week of hard core Drupal in Paris, sound off in the forum thread for the sprint. We'll keep potential attendees notified of plans / IRC meetings through that thread. We're looking to finalize attendees by the 15th and draw up our battle plans to maximize our time together. I can't wait!
Costs will mostly be covered by Commerce Guys and af83. However, if you can't make it but would happily send someone in your stead, stay tuned and we'll post up links to the appropriate chip-ins.
I had a great time last weekend taking part in DrupalCamp Austin as a learner, a helper, and a presenter. I also enjoyed sharing an apartment and eating meat (and/or ice cream ) with my fellow Commerce Guys, Mike and Tim, and it was doubly fun to get reacquainted with folks I hadn't seen since last year's Drupalcon Szeged or Do It With Drupal.
As a learner at Drupal events, I tend to benefit most from sessions that discuss meta issues in Drupal development... how to grow your community or business, interact with clients, deploy and manage sites in the wild, etc. Ben Finklea of Volacci didn't disappoint with the weekend's opening keynote session, Building a Successful Drupal Business. He focused a lot on building good business processes for tasks ranging from managing sales leads to hiring. I missed out on Ben's SEO chat later but actually had the pleasure of joining him for church on Sunday morning, a rare opportunity on a Drupal weekend!
As a helper, I had fun doing a little bit of Drupal / Ubercart triage in the Commerce Guys room. Myself and a few other experienced Drupallers fielded questions and offered site building advice to various folks looking to iron out issues with their latest sites and prepare for upcoming projects. Aside from the communal eating of meat and ice cream (see above... and below), this is probably my favorite part of Drupal events.
Last, as a presenter I walked through the installation and configuration of Ubercart starting with the UberDrupal installation profile. It's not perfect, but it gets the job done and helped folks in the audience visualize how to use the sweet Acquia Prosper theme and leverage Ubercart's core systems. I was scheduled to discuss the ongoing Ubercore Initiative the next day, but most in the crowd were there because they had chosen Panels over Ubercart the day before. So, with a slight adjustment, I presented another Ubercart overview with glimpses of the plans for future development (like those in my last post on products). Those interested in learning more than that session afforded should hop in the #d7uc IRC meeting scheduled for Nov. 20 at 1 PM EST and keep an eye on http://d7uc.org.
On the recommendation of Todd Nienkerk of Four Kitchens, I drove the rental with Mike and Tim down to Driftwood, TX (nowhere near a beach) for some Salt Lick BBQ. They brought us plates piled with meat fresh from the open fire pit, treating our taste buds through our yummiest business planning meeting ever. Here's hoping there's a trip to Austin (for Drupal and/or BBQ) in my future!
This next week I'll be taking my show on the road. After a high school friend's wedding this evening, I'm driving with Christina to Abingdon, VA where we'll stay with my grandparents for the weekend. We'll be meeting my older brother and sister-in-law there for some hangin' out and some play action - The Fantasticks at the local Barter Theatre. It should be a fun weekend!
On Sunday evening or Monday morning we'll drive down to Greenville, SC where I'll set up shop in their "bonus room". It'll become my new home office for a few days while we spend the evenings visiting with family and loading up on baby shower loot. I love spending time with my in-laws, so the week should be a real treat.
Even better... we won't have to leave our house unattended that whole time! Some friends are in between leases at two apartments and have agreed to come babysit Top Porch and our awesome veggie garden while we're away. Sheets changed, clean towels out, floor vacuumed, and chocolates hidden. Hah!
For some time now, my standard operating procedure for writing new modules to client specifications has included a tedious conversion of database tables into schema arrays for use in each module's install file. Usually, I'd begin with copying and pasting into the install file a schema array I'd used elsewhere, and I would modify that array to match up to the table I had thrown together to store the module's data while testing. I would then have to go through the process of uninstalling and re-installing my module to make sure I didn't mess up the schema somewhere.
Lo and behold, at the end of May I learned about the Schema module at an event where I was supposed to be the instructor. I must have missed this somewhere along the way when converting all my code to Drupal 6, but it sure does make new module development a lot easier!
The Schema module offers several features for examining the tables in your site's database and comparing them with the schema data defined in your site's module install files. If you use it for a full inspection of your site's database, any table it finds that does not have a matching schema array will be listed on the page with a schema array already built for you. It even includes little placeholders where you should insert table and field descriptions.
So, now with the Schema module, I can copy and paste the auto generated schema array into my install files, making module development that much faster. I'm really digging it. One pitfall that you should be aware of: if you're using drupal_write_record() to insert and update rows in these new database tables, you must copy the schema arrays into your module's hook_schema()before it will work. If drupal_write_record() can't find the schema array for the table to which you want to write the record, it will not be able to construct the insert or update query properly. Remember to clear your cache (by visiting the modules page, for example) before testing it so Drupal can rebuild the cached schema data.
I hope it makes your life easier, too! Many thanks to Barry and the other Schema maintainer(s).
It's now pushing 3 AM, so I guess that means Day 1 of our training in Chicago has officially been over for a little while. No matter, I'm just winding down and figured I'd report on how things are going! The folks in attendance are all awesome and bring a lot to the table in terms of experience and personality. It's a treat to have each of them here, and I look forward to the next two days of training.
Basically, our time together hasn't been without its hiccups (our server slowed to a crawl when we instructed everyone to visit the modules page at the same time... oops ), but for the most part it was a good day of introductions, hopefully very fruitful for the newcomers to Drupal and Ubercart, and a fun way to meet more experienced Drupallers looking to bone up their Ubercart knowledge.
Today we managed to cover most of the basics, from an installation through setting up a store catalog with images, product classes, attributes, and the core catalog module. I covered the sessions related to the Catalog and Attributes systems and hope to distill that information into some articles before I forget everything I said. :D
The day has also been quite tasty. I had a hearty salad at Whole Foods for lunch (Dear wife, I even voluntarily put raisins on it!) with 5 other guys from the training. For dinner we met up with some Palantiri at Hub 51 where I got an awesomely fat and juicy burger with fries. I got to rub shoulders with Larry Garfield and refine my understanding of things like handlers, OOP in Drupal, and models of time travel in Star Trek. After that it was back to the hotel to relax and get work done porting the UC Store Credit module and UC Free Order to Drupal 6 for use on Ubercart 2.x. Give 'em a shot!
Now the day is way past the close for me, so I'll hit the sack and do it all again tomorrow.
I just released the Book Search module for Drupal 6. I already told my wife how excited I was about the project, as everything fell into place quickly and effectively. I'm one of those oddballs who views his coding as an art, and I love the sense of accomplishment that I get from turning a blank file into a well-styled, commented, feature complete module all in one sitting.
The module adds a book search tab to the search form and allows your users to perform simple keyword searches through specific books on your site. As an administrator, you decide which books should be available for search through the book search form, and the user can specify to search any of these books or a select few. The module also defines a book search block that appears when users are view pages from searchable books. The form redirects to the book search form upon submission.
One enhancement over the core advanced content search is the fact that I'm persisting the book search options between searches. The core advanced content search turns your parameters into special keywords that then persist in the actual search keywords textfield. Huh? What gives? This module will simply set the defaults for the book search options based on the path and remove them from the keywords in the search keywords textfield. Perhaps this has already been fixed for D7, but if not, someone should prod me until I submit a patch for that.
From conception to release, Book Search took about 3.25 hours, keeping me above my target 100 lines of code per hour. I can't say with absolute certainty, but I'm sure the Mountain Dew I had over lunch before diving into the code had something to do with the speedy development.
The module was developed for a friend and client named Bill Mounce who operates Biblical Training, a website that offers free seminary level courses online from some of my favorite Evangelical teachers and preachers. He'll also get use out of the module on Kids' Greek, where he's developing online curriculum to teach biblical Greek (targeted at kids and homeschoolers, but obviously awesome for everyone). Bill chaired the translation of the New Testament in the English Standard Version of the Bible, and he keeps an awesome blog that discusses various issues in translation (both academic and practical) and Christian ministry. I highly recommend it!
I love it when my work and personal life interests collide. I hope others get some good use out of the result, as well!
I recently described myself as a person who is slow and hesitant to make changes. The setting was an open mic feedback time during a members' meeting at church, and the topic was the new timing and nature of our services on Sunday mornings. My feedback was quite positive, but as I sat down I realized that I'm either incredibly wrong about the kind of person I am or have been acting extremely out of character lately!
My life couldn't possibly handle any more changes right now (so I say). I recently went back to school to pursue a Masters of Divinity at SBTS in Louisville, KY. As a "going back to school gift," my wife surprised me with the news that she was six weeks pregnant (now 11 weeks!). I was dense enough to think she was just hinting at wanting to have children at first, but pulling out a onesie with a hand painted "My daddy goes to Southern." on it tipped me off. I still requested a "second opinion", and the weekend test confirmed it... I am indeed going to be a dad come September. Woohoo!
So, grad student, first time father... not very compatible roles to play if you cherish sleep at all. But I couldn't stop there. I also finally decided to leave behind my job of 3.5 years and join Commerce Guys, a young Drupal company specializing in e-commerce sites using, you guessed it, Ubercart. Perfect fit? You bet!
The original Commerce Guys, Mike O'Connor and Tim Hill, have been using Ubercart since the alpha releases of a couple years ago. I hooked up with Mike at Drupalcon Boston and roomed with him during Drupalcon Szeged. Mike and Tim also made it down for last summer's Ubercamp, and we all had a rockin' good time. When the offer came in for a position as a Commerce Guy, it didn't take much deliberation on my part.
I had wanted to move toward full time Drupal work within a web development company for some time. I received some good counsel from Robert Douglass during and following Do It With Drupal and ended up doing a card sorting exercise he recommended with my wife. The goal was to figure out what I was looking for in a job, and I decided that in the short term I wanted opportunities for growth and increased pay, more flexibility (i.e. work remotely), the opportunity to continue working on Ubercart if possible, and continued chances to travel with my wife (and soon family). Don't think you can find exactly what you want doing Drupal full time? Think again.
My family and friends were very supportive and excited about my decision to move, but I was honestly blown away by the unexpected support from the Drupal community. There was a good show of support in the news post on Ubercart.org, some personal cheers via chat, and a hostoftweetsfromDrupallers on Twitter (including one I might frame). A big thanks to everyone for their support. I'm excited about the move and have been enjoying working from bed and my favorite coffee shop already!
Ryan Szrama is a Drupal e-commerce developer for Commerce Guys, focusing on Drupal Commerce. Aside from his work, he loves his wife, his daughter, his church, and a good book over a white mocha.
You can find him elsewhere online at:
Find me at these upcoming events...
I'll be presenting Drupal Commerce at the following events and sponsoring some with Commerce Guys. Be sure to say hi!