New website -

I've honestly spent more time working on this project than I have on pretty much any other project that I've ever done.

It makes me really happy that this one is live.  You can check it out here.  Greaserag is an organization that organizes open shop nights and group rides for WTFs, or Women Trans Femme identified people.  They have shop nights at three locations five times a month and group rides seasonally.  They also do lots of events and classes for people.  They're a really great organization and if you're a WTF who wants to know more about her bicycle and how to fix it it's a really good way to learn.

Home Page Layout

I'm not sure how the idea first came around to have me redo the greaserag website.  Lowrah (one of Greaserag's main organizers) and I had been looking for a project to collaborate on, but nothing ever seemed to actually get started. The website originally didn't sound all that hard, it needed the ability to publish blog posts to separate location pages and put posts on a calendar.  On the surface that doesn't sound too hard.  Then there was Wordpress import which seemed to be a good thing to learn how to do, I thought if I figured that out I would probably end up making quite a bit of money selling the software to other people who wanted to take it on.

So anyway, I agreed to do the project and got started on it some 8 or 9 months ago.  It's been really slow going but I learned a lot along the way and it's lead to a lot of good code that I'm using on other projects.  The carousel library that it uses for the featured post sliders I noticed right away had a ton of potential as something for concrete 5 and I modified that into Attributes Slider which has already made me over 500 dollars in sales.  If this was a real web design project there's no way that I could have done it, if I had to bill hourly for this I have no idea how much money it would have cost.  A whole lot.  There were so many things along the way that just didn't work or had to be tweaked and adjusted and changed and redone.  Nobody would have paid for me to do as much time experimenting as I did with this website.

Somewhere along the line as I was working on trying to figure out the code for making the blog posts and deciding if I was going to use composer or some other technology Chad Cantrell contacted me about a freelance project expanding on the Problog add on.  The basic premise of this add on was "User Blogs" - every registered user can publish blog posts.  Then  they can choose to share the post either with their own personal blog only, a selected category or with a main blog on the site home page.  This seemed to vibe really well with what I was trying to do on the greaserag,org site so I took the project. 

After that project was done I did a lot of forking to the code, so what's part of my version of User Blogs is way different than the one that Chad has.  The main thing that I stripped out was integration of the blog into user profiles, he had it set so you could post from underneath the profile page I think and had a blog for each user in their profile and integration with Letergo wall to publish new posts to the wall.  I didn't need or want any of that kind of stuff for Greaserag, the profile fields for users are really pretty basic. 

I also worked in integration with Scott C's Items Calendar. That was pretty tricky.  Because of the way that Items Calendar adds in pages it was necessary to add page aliases underneath each location page to populate the calendar.  I'm not sure if this was the best way to go about it, I could have tried to change the calendar more and have it pull in posts from everywhere but filter them by the selected category.  That might have been the better way to do it but it would have required a lot more programming on a bit higher level than what I'm comfortable with.  Items calendar is some pretty complicated code when you look into it.  I have been able to modify it quite a bit and several of my patches ended up going back into the marketplace code, so maybe I'm now at the end of the project to the point that I could actually try and modify the calendar to work in the same way as the User Blog List does.  Maybe I'll to that on the Occupy website I'm coding up next, it's using the same User Blog software.

The really hard part about the calendar was figuring out how to get it to work as the second tab on the page.  There was an error with the javascript that caused the calendar to show up as blank if you put it in a hidden div on page load.  It turned out that I had to write some custom tab code and then put the tab javascript in the block for the calendar that controls the tabs on the parent page so that I could get the correct bID for the div that had the calendar and call a function each time that tab's div is shown.  Kind of par for the course with this one, every little thing that should be just simple and easy ended up taking 5 times longer than it should have.  It took me months to actually track that down and figure it out, I thought it was just impossible for a long time.

Once I had User Blogs working and integrated with Items Calendar most of the basic functionality of the site was done.  You could post a blog post and choose which location to share it with or share it with the blog on the home page.  You could add it onto the calendars with a couple clicks of the mouse.  It seemed like everything was good to go.

Adding a blog post Location Page, Blog View Location Page, Calendar View Location Page, Photo (Flickr feed) View Location Page, Comments View

That was only part of the story though.  There was still the fact that they had 2 years worth of content living on the website and needed to import all of that data and have it work.  If there's one thing that I've learned from bikelove it's that people are attached to their user generated content.  The main reason I couldn't move on to the new content platform there was that I never could figure out how to make sense of the data in the phpbb database so that I could bring it into concrete 5.  I had another coder who volunteered to help me but he took several months to get it done and never gave me functioning code that I could use, he just gave me a converted database table that I was able to import from properly. 

So import had to work and it had to work perfectly.  I learned a lot about how wordpress works with it's content by doing this project.

The biggest thing I learned is that wordpress has a function that will parse all of your text and scan it for bare urls and turn those into flickr and youtube and vimeo embed code.  Actually several different services - they all work.  It's a technology called Oembed and it seems really cool.  I had to learn enough about that to make a helper function that could parse the content on the blog posts and on the lists to do the same thing.  It honestly wasn't that hard once I found a PHP library that I could use properly. I think it's going to be released under Hutman once we've settled down from some of our projects. We need to review the code and make sure it works for all the services we're trying to do and works with which is a service that supposedly supports several hundred different services.  I think a helper class with a page list and a content block template that show how to use it could be a very popular marketplace item.  I originally thought that I was going to need help from Robert or Nathan to get this one working but really didn't, I think a small tweak to the regex to get it working was all I needed.  But I still did most of the work on the code while I was clocked in at Hutman so it's Hutman code. 

I also had to modify how the blogs work page breaks.  Typically in concrete 5 this is done either by using the description field with no rich text at all or by using the text helper to shorten the content block text, which also strips out all formatting and looks like ass.  In Wordpress they use a comment to designate where the page break is.  So I had to modify the rich text editor to have a page break preview that used the same comment and modified the page list block to use this comment to split.  I had to write some code that tries to auto complete any open tags left from splitting the content but it seems to work. 

So I'd say now I'm 85% of the way done with having a totally functioning wordpress import for concrete 5. Right now it's tied in pretty tightly with User Blogs so that would have to be split out.  Then I would like to make a simple blogging platform that works with composer and a page list view.  I have the feeling that might be the killer application that comes out of doing this whole project, having a functioning import script that lets you go directly from a wordpress website to a fully functioning concrete 5 website.  Hopefully I have time to code this up over the summer. I could probably work something custom if someone had a rush job and really needed to convert a site and didn't mind using a slightly hacked version of Problog that would need patches each time it's updated.

I'm not sure how enthused I feel about writing a whole blogging platform though.  That seems like a whole lot of work.  Maybe I will just look into finding out how much effort it would be to modify problog and see if Chad wants to roll the changes into his code.  It would make sense for him.  If I was selling the import add on and the oembed helper then I'd still be making money on it.  But I'd be making more if I wrote the blog portion of it too.  So I probably will try to write a blog but keep it very basic.  I know I can write most of what you need for a blogging platform.  I'd have to write my own trackback block, I wonder how hard that is?  And learn a lot more about integration with composer, I think that would be the way to go with it.  Or maybe a custom page form is better, I'm not sure.  I like the auto save feature of composer and I'd like to incorporate that.  I learned that you can actually choose to "Edit in Composer" on composer enabled pages in the site map so it should be pretty easy to make a page list with some sorting headers and filter fields above it for searching the blog posts and just make sure the links are the same as they are in that link from the site map and you have the ability to edit your posts in composer.  This seems to be the most flexible for people moving forward too because if the blog is mostly composer based then it will be core updated and not me updated so it will probably be a lot stabler code.

For now though I'm just happy that the site is finally completely working and done and live.  The only thing I have left to do is modify the registration process a little bit.  Any user can publish blog posts so registration is now set to approved by admin only.  This means I have to hook into the registration and activation processes and send two emails, one to let them know that their registration is pending and then one when they are approved that lets them know they can log in and start posting and tells them a bit about how to use the blog platform.

I really like the idea behind this publishing platform.  I've always liked horizontal communication mediums better than vertical ones.  It's no fun to be the only one posting things out there to a a world on the internet.  It's nice to let other people help in that process.  I always tried to do as little censorship as possible on bikelove because I thought that it was important that each person stand behind t their words and know that their words have importance.  Here with this blogging platform you are giving every member the ability to be a participant and share their experience.  I think that's a wonderful thing.  There were several people contributing to the blog before and this just brings a new layer of detail to that premise.  You can more easily see lists of posts by people by viewing their user blog or find posts that are relevant to the location that you are interested in pretty easily.

I feel bad that I couldn't do more on the project, I think it shows a lot of my shortcomings as a programmer.  I was able to come up with the publishing platform but not really help with much more in the Information Architecture part of it. We didn't really deviate much at all for the pages of the site that aren't blog posts from what was there in Wordpress, I didn't help with organization of any of that content at all.  It was pretty much all I could do to really get all of the different pieces working together and bug free. 

Other than that today was pretty uneventful.  I worked then tried to meet up with the Occupy protests down at Loring Park twice but never ran into them.  I know there were 1000 or so people walking around town somewhere, I just wasn't ever where they were at the same time.   I was too early when I went down at the time they said they'd be there on the flier, so I went to Freewheel and bought a new rear light because I lost mine and then went to the Wienery for dinner.  Then I went back down to the park but again nobody was there even though the flier said they'd be doing stuff until 10:30 that night at the park.  Oh well.  I headed into south Minneapolis to pick up some coding supplies and just managed to get home before the rain got bad.

I've been experimenting with not taking my sleeping pills at night.  I don't like the idea that I have to get 8 hours of sleep a night and that I'm dependent on a pill even if it is just over the counter medication for that.  So far I've been getting about 6 hours of sleep a night and feeling fine so I think it's OK.  I'm kind of plagued by chronic insomnia so I'll probably be back on the pills sooner rather than later.

blog comments powered by Disqus

Featured Post