At Cogneato we’ve had a CMS that has been built up over more than a decade. We started working on a completely new system a while back to have a new and more powerful interface, add new features, and get rid of a lot of the cruft that the old system had from being developed over such a long period by many developers with different styles. We decided to use Doctrine as an ORM and Symfony as a framework for our back end.
We have maybe 200 sites running on various versions of our old system though, and we need to be able to add the new system’s features without having to completely redo them. We needed a way to be able to leave all the current stuff in place and pull in the Symfony stuff to the existing files with a simple include.
As I’ve mentioned, at Cogneato we’ve been building a new version of our CMS using Symfony on the server side. I’ve spent a LOT of time with Symfony now. I like it and will be using it for some other projects outside of work as well. We’ve been working on some eCommerce type sites that will hopefully be launched in the coming months, while building the system that all of our sites will eventually run on.
Though I like it, there have been many challenges to deal with, especially with making Symfony work with our old system. We have way too many existing sites with more than enough custom programming to convert them completely to a new system, so we’re setting it up so that both can be run side by side on old sites, while new sites will eventually only need the new system. But it has been a lot of effort to get the two working together properly. Symfony is inflexible in some ways, and not well documented in some areas. I intend to, in the coming months, write about my solutions for the various issues we’ve dealt with.
At my place of work, Cogneato, we recently lost one of our developers. It’s kinda sad because I talked to him the most out of the people there. I was also feeling somewhat comfortable with the number of people there. Sometimes I had to look for things to do, but now there will probably be more than enough for me. I will be taking over parts of what he did, so I will be doing more back-end type development. My job at RPM was much more in the back-end area, so it shouldn’t be much trouble. I will get to work on and learn about our CMS, which will give me much more knowledge about building them. I’ve been trying to build my own for a long while now, and this will give me a lot more capability to do so. They have been upgrading the CMS to use Qooxdoo, a framework for web applications, so I will be learning that as well. I’ll probably post some of what I learn with that here. Hopefully it won’t be too hard for me to jump into this upgrade in the middle of it. With this change, I will also be getting more of various tasks such as development type fixes and solutions for sites, upgrading the CMS for older sites, and dealing with server issues. And possibly I’ll move away from doing SEO and some other more front-end tasks. I’ll probably continue doing layouts, most likely handing them off to others earlier though, dealing less with the content and specifics.
Hopefully this change will work out for the better. And hopefully our lost developer will do alright wherever he ends up.
The design of the gallery portion of the David Hawkins site I’m working on at Cogneato called for a reflection of the current image below that image. This could have been done by making reflections for each image in an image editor and then adding them to a separate field in the CMS. That would have been a pain and would require (most likely) us to be involved for each image added.
Because of the design of the site, I had to modify the script somewhat to make it work properly. One issue was that I had a border around my images.
For example, on one site, called Pink Rave, I had to add blog functionality, which isn’t quite built right in like with WordPress. For the standard “archive” box, I had to make a bit to spin through all posts and chunk them based on date, then output the represented dates in the box. For the search functionality, Cogneato’s CMS has nothing built in, so I had to do custom queries. They are using the BLOB data type, so I couldn’t use the FULLTEXT searching, instead having to build concatenated LIKE statements. Luckily, the CMS can easily put the results of custom queries into its result objects, so it is easy to then work with them like I otherwise would. In fact, for this blog, I handle all multiple item listings with the same output script that just fills the object array with different data depending on the type of page.
In addition to my front-end development at Cogneato, I’ve begun doing site SEO. I’ve always done the very basic SEO that comes from clean HTML structure with descriptive content and basic accessibility considerations as well as simple but descriptive URL structures. However, for Cogneato, we are going much deeper than that. It’s a good opportunity to learn more of this SEO stuff, but so far I haven’t liked it that much. I’d much rather be cutting up layouts or programming or working with data. The SEO can be very boring. For instance, setting up and monitoring rankings for a big list of keywords can be boring and tedious: Perhaps it will be more interesting when I’ve gotten to look at trends and use that information to modify things. There’s also stuff I don’t like about it in principle. Throwing keywords into title tags, headings, and alt text can potentially go against usability and accessibility (the blind love keywords repeated over and over). We aren’t nearly doing the blackhat type stuffing with bunches of keywords stuffed everywhere, mostly just one per area, but I still don’t like it or having to figure out creative ways to make it work and make sense. Also figuring out ways to put in different phrasings of the same basic keywords isn’t fun, and can potentially make a site look less professional in my opinion. I’d much prefer all this happening in the copy, as there as a lot more room to work it in without it being so glaringly noticeable. And I don’t like moving away from semantic structure for search engines. I did a FAQ with li’s, h2’s, and div’s rather than dt’s and dd’s. I’m not sure what the “best practice” is for that, but the dl seemed more appropriate to me than the ul.
Still, I think I’ve learned a good starting bit about optimizing for search engines and will continue to learn more, which will be very useful for my own sites, even if I don’t go all out with them. I’ve been doing some research and watching some Lynda courses on the subject, which has helped a lot with learning some best practices.
Well, it seems like my job at Cogneato is likely to end up long term. Cogneato seems to be doing rather well this year, so Ron the owner thinks he will be able to keep me on long term. He is setting me up as the front end developer, as he finds me to be fast at the task. I take designs he’s done in Fireworks, slice them up, and convert them into HTML and CSS. I’ve done quite a few now, plus a few other things such as some set up on the CMS that will drive a couple of the sites.
I get to do the sites in modern HTML and CSS. I’ve only used a few tables for layout purposes (stuff I couldn’t figure out how to do cross browser without them), get to use PNG’s for transparency, and have been using the HTML 5 doctype. So far, every site has been at least somewhat different than the others, and most of them have required me to figure out something new. Some of the designs are fairly fancy. I find myself using a lot of extra divs/spans for appearance purposes only. It has been quite enjoyable. I test sites in Safari and Firefox (the newest versions) plus IE 6, 7, and 8. IE always gives me troubles. For IE 6 I am able to give them a simpler styled site, I just have to make sure it works, so I usually hide PNG’s and some other hard to deal-with elements. IE 7 usually isn’t too bad, and IE 8 usually works or mostly works with no special effort.
One site gave me a lot of trouble: DG Bar Ranch. It had a lot of the difficult things going on at once: drop shadows, gradients, boxes with variable height and width, a changeable part of the background image, z-index issues, all sorts of things. I took longer on that site than probably most of the others combined. The drop down menu’s caused me a fair amount of difficulty. I also had issues making the body background, composed of three separate repeating images, repeat properly while staying where they were supposed to. I couldn’t get the “position: absolute” to expand to the width of the body in all instances, but rather the width of the viewport, so I used “position: fixed” for one of them. I then, for IE 7, had to create two special divs to allow a background gradient fixed to the bottom to slide over a background image. The site isn’t up yet, but I can link to it when it’s up.
Anyway, I like the job and am glad it seems I will be staying on long term. I will try to post on some of the techniques I’ve learned along the way.
Yay! I finally found a job. After six months of no income, I needed it. I’m doing front-end development for Cogneato, a small web development firm in Akron. They’ve done quite a few sites over the past decade, and have their own CMS/CRM they’ve built over that period. It’s pretty neat, allowing for some complicated things to be done with data and interesting features for managing customer information. It has many fancy AJAX features in the administrator interface. There have been seven people working there, and another one is coming soon. I only get to work on the front-end though.
Cogneato is only a 20 or so minute drive from my house. The atmosphere is very casual (hoodies instead of ties) and relaxed, very comfortable to work at. The owner and all the employees have been very nice.