- Ubercamp Sessions and Introductions
- Faster module development thanks to Schema
- Commerce Guys Drupal / Ubercart Training Underway
- Painting Top Porch, Days 2 and 3
- Late Nights and Site Updates
- Painting Top Porch, Day 1
- Ubercamp 2.0 Hosted by Drupalcamp Colorado
- Beautiful Poetry, Music, and Truths
- Ubercart 2.0 Reaches Release Candidate for Drupal 6 in a Late Night Hackathon
- Good Friday Service and Songs
Ryan's blog
A few dozen Ubercart users and developers flew into Denver, CO on Friday for Ubercamp 2.0 at Drupalcamp Colorado. Despite the various delayed flights and missed connections, a nice dinner and a bit of rest Friday night prepared us to show up at the camp eager to learn, share, and enjoy the geek-speak. Seven Ubercamp sessions made it into the final schedule for the camp. For my part, on Saturday I was able to present the Uber-Update. I covered the current state of Ubercart (sooo close to 2.0!), plans for Ubercart 3.x, and the goodies I have in the works (like the checkout form builder and UberDrupal). Today, Lyle and I presented the Discount Framework, a solution for uber-flexible discounts using Ubercart's Conditional Actions and Price Handler systems. Someone was kind enough to post a recording of this session if you're interested. Will Vincent (tcindie) is here to present his hotel booking module. Top Notch Themes and the team behind the U.S. Air Force Academy Association store shared with us some simple pointers for doubling conversions and sales with Ubercart (in one case, simply migrating to it!). Last but not least, Tim from Commerce Guys also presented two sessions on Ubercart's integration with Google Analytics and Views. Beyond the sessions, I've had an awesome time hooking up with a lot of folks from the forums, many of whom I'm finally meeting for the first time. It's been a treat to meet many new (and regular) users and provide some fun on-the-fly consulting. Commerce Guys also flew in a couple of major Ubercart contributors, Erik Peterson (torgosPizza) and Tim Rohaly (TR) as a way of saying thanks for their efforts. We hadn't seen Tim at any events yet, so getting to hang out with him and give him due credit for his contributions has been a treat. There's still more fun to be had in sessions, at the Ubercart dinner this evening, and in the code sprint tomorrow. I'll be sure to report on the success of the sprint, as we're eager to nail down the remaining issues for Ubercart 2.x. Feel free to pitch in wherever you are! |
|||
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. 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 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. 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. |
|||
So, we continued the painting adventure in earnest on Sunday after a quick post-church lunch at Arby's (I always carry my Arby's coupons for just such occasions). Christina came home late that evening and was very impressed, but that quickly turned to distress when I didn't stop painting again till 1 AM. Apparently she was having trouble falling asleep and needed me by her side to conk out. Sorry, babe! What was keeping me? Well, she wanted a red accent wall in the library/office (the middle room) downstairs. I picked up a gallon of the closest color I could find to the one she specified. However, the first coat looked like crap and the second coat didn't do much to help. I ended up waking up this morning (painting day 3) to put a third coat on and then put a fourth on this evening. I used the entire gallon, but it looks awesome! Pics to follow soon at the new Szrama Clan website. While I continued to work on the accent wall, my step-dad was making awesome headway in the kitchen. The whole thing is taped and primed, leaving me with a much shorter weekend of painting to finish the job. It's been fun to take care of little annoyances around the house as we paint. I fixed a picture frame and a cabinet shelf, and we finally scraped the stickers off the windows that pre-dated our purchase of the house. I think next I'm going to have to clean all the windows downstairs, because they're straight nasty. Today was probably the best "painting" day yet, because it included a trip to the movies, Moe's for dinner, and Dairy Queen for a late night "we finished two rooms, hooray!" snack. We saw X-men Origins and Terminator Salvation. Both flicks were awesome, but I was definitely more excited about and impressed by X-men. Watching Wolverine and Gambit in action just rocked. If you have to pick between these movies, go get some X-men. Now it's past midnight and I'm continuing my trend of working all day and working all night. I'm hoping to hit the sack soon, because I have to get up to prepare for a business trip to Chicago where I'll be teaching Ubercart to a room full of learners. I can't wait! Christina's in Toronto for a couple weeks, so she won't miss me being at home. Here's hoping the garden doesn't dry up while I'm gone! |
|||
This week has been crazy. It's included several late nights hacking on four Ubercart modules that I developed as a Commerce Guy through a community funded project. More on those later. The week also involved my first all-nighter in over five years. I thought I left those behind with my undergrad studies, but apparently I'm still just as much of a procrastinator! I had to stay up all night Thursday and work till about 5 PM on Friday to finish a research paper (to be posted) and final exam for my class on the Doctrine of the Person of Christ. I'm pleased with the results, but I really wish I'd been disciplined to finish the paper sooner so I could have more time to mull it over and revise. I'll let it sit for a while and then touch it up to post it online. Basically, it's a short paper dealing with the Son of Man sayings in the Gospel of Matthew. I've been intrigued by the topic for some time now and have thoroughly enjoyed my recent studies on the topic. The gist of it is Jesus uses the title to establish a new framework for understanding the Messiah against the popular framework of his day. The Son of Man combines the figures of the suffering Servant of the Lord from Isaiah 42-61 with the exalted Son of Man figure of Daniel 7 into a single person. Anyways, despite staying up all night Thursday, I still stayed up till about 1 AM on Friday evening working on my websites. I've had a VPS (web server) at Slicehost for some time now but had never migrated my personal sites onto it. So, I buckled down Thursday evening while waiting for my step-dad to get here and got to work. I managed to get a couple of sites up and running, the Szrama Clan website and The Wingfeather Wiki. I still need to migrate this site and a friend's site, and then all my eggs should be in one basket again. I'm really excited about the two sites I did manage to get live. The first is a simple collaboration site for Christina and I where we previously shared about our engagement and marriage. However, it's been given a fresh paint job (notice the theme of my weekend?) in honor of our daughter (in utero). We'll hopefully populate it with pictures of both the ultrasound and Top Porch in short order. The other site is a Wingfeather Saga fan site. It represents my first real personal attempt to use Drupal for social publishing. I've never done a fan site before, but I love Andrew's writing and am happy to promote it. Hopefully some other fans come on board and pitch in! Are you one? Register your account today. And so, sleep deprived and with plenty of work still to do this weekend, I now close this blog post at 3 AM. I have much more to do and plenty to write about, but I fear even I must sleep a little every now and then. Until next time... |
|||
So, this Memorial Day weekend, Christina drove off to visit with family in Nashville while my step-dad drove up from Atlanta to help paint the downstairs of Top Porch. For those just tuning into my life, that's the name of my house, and he's the one who made us the sign that proves it. Painting downstairs is quite the task, as our ceilings are 11' tall. However, after a yummy breakfast at Denny's and a trip to Lowe's for paint and supplies, we dove in undaunted by the long weekend ahead of us. I'm happy to report that things went quite well and possibly better than expected! We managed to paint and trim the living room and half of the library/office. We had to leave a few sections unfinished, because we didn't have the sandpaper necessary to smooth out some patched spots. We'll take care of those tomorrow and finish at least the library/office tomorrow. Who knows, we might even make some headway on the kitchen. I don't have the color cards on hand, but I'll be sure to post the colors tomorrow. They're earthy and quite appealing, and even just the work we've done so far feels like it's transformed the house. Our walls thus far have been a dirty, scuffed white with small trails of stain and running down them here and there. We inherited them in this state and meant to paint them but never really had the opportunity. However, with baby Eowyn on the way and a pregnant momma able to leave the premises for a weekend, it was now or never! |
|||
Been a while since I've had a chance to post... a nasty flu bug (sadly, not the swine flu) had me down for the count for a couple of weeks, and I'm just now catching up on the backlog of work and "things-to-do." However, my general lack of productivity couldn't stop plans to schedule Ubercamp 2.0 from coming together. Several of us chatted at the code sprint in DC about where our next Uber-event would be, but I had no idea a wonderful opportunity would fall into my lap. The organizers of Drupalcamp Colorado approached me about hosting an Ubercamp at their venue over the weekend of June 27-28. At first I was bummed, because I saw that I had plans for that week... then I realized a day later after sharing the bad news that I was looking at May on my calendar, and magically my schedule conflict cleared up! So, Ubercamp 2.0 is a go for a joint venture with Drupalcamp Colorado. We'll be bringing as many Ubercart users and developers together under one roof there in Denver as possible. Ubercart sessions will focus on configuration walkthroughs and practical module demonstrations in the same vein as my Advanced Ubercart Usage session from Drupalcon DC. With a little more time, though, it won't be quite so rushed. They'll be up for voting ASAP, and hopefully others from the community (hint hint) will be proposing their own sessions once the site is open for proposals. Basically... I can't wait! Lastly, if you can't handle waiting that long to see me, there are still a couple of seats left at my Ubercart training in Chicago scheduled for May 27-29. Oh, and Christina and I found out we're having a girl! Name pending, but it's looking like it'll be Tolkien inspired. |
|||
The first album by the Christian band Jars of Clay remains one of my favorite CDs, and I still listen to it regularly despite all the music I've collected since I first heard them in high school. One song on the CD continually grips me. Its message has reached me at various stages of life and on various continents (I have a very encouraging journal entry inspired by the song during a trip to Ecuador in 2002). The song is titled "Worlds Apart" and what follows are some of the lyrics. I particularly love the poetry of the first verse in both the allusions to Icarus and the comparisonof the love of Jesus to the tears of a world embracing every heartache. When I finally grasped the image in that line alone I was amazed and reminded that, indeed, the love of Jesus is limitless. How many tears have I shed even in a world that does its best to flee from heartache? Worlds Apart I am the only one to blame for this To turn away and not become And can I be the one to sacrifice? To love you - take my world apart All said and done I stand alone Did you really have to die for me? ... |
|||
So, Lyle and I were in need of a good morale boost last night to spur us ever onward in our quest to catch up with the Drupal community. My wife was out of town, so we hunkered down for a few hours at Chick-fil-a and hacked away on the final issues related to an Ubercart 2.0 release candidate until the restaurant closed. We returned home and finished watching Fullmetal Alchemist (incredible anime) while waiting on an eleventh hour patch from sammys. The patch received, we proceeded to refine, test, and test again the latest changes since the last beta until we felt confident to package up a release candidate some time after 3:30 AM. The release notes show the most recent changes, primarily the addition of a core price handler to centralize development related to price altering discount, fee, and tax related features. Here's hoping the year was worth the wait and the new system is leveraged by the awesome developer community to put up some solid contributions! These last few months alone have seen 30+ new patch contributors to Ubercart core, so I know you all have some muscle to flex. We're expecting a final 2.0 release to follow soon and can't wait to get back to working on core and rewriting some of our first Drupal modules ever. Enjoy. I know we will. And yes, I slept like a baby last night. |
|||
Today I had a chance to worship with my church in honor of Good Friday, the commemoration of the sufferings of Jesus leading up to and including his death. One man willingly and intentionally walked into a firestorm of accusations, ill will, and political expediency knowing that it meant certain death for him. He bore in his body our sins on the cross so that all who believe in him might die to sin and live to righteousness. The sufferings of Jesus were a horrible injustice, and yet he bore them all and persevered for the joy set before him, the joy of a church full of people who were redeemed by the blood he shed. There are so many mysteries in all of this related to the nature of atonement, the incarnation, and the Trinity. In spite of the mysteries, the simple summary still penetrates the hardest hearts and the most enslaved minds, Jesus died for sinners. I've been greatly encouraged by a couple of songs by Third Day, a band that captures in many ways the biblical teaching on who Jesus is and how he purchased salvation for sinners. My two favorites of the moment, highly appropriate for Good Friday are Communion and Carry My Cross. You should check 'em out! |
|||





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!
), 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.


(Getting the flu the last two weeks of class sure didn't help.)