An Ektron Taxonomy-Based Breadcrumb System
If you follow me on Twitter (and let’s be honest, that’s how most people know I even have a blog), you’ve seen my posting about an Ektron taxonomy-based breadcrumb system. Well, here we go!
So yes, it’s been awhile since I’ve actually written a blog entry. I’m hoping to do more of them as the creative juices get flowing, whether on Ektron or just life in general. This one is a little of both, but Ektron only tangentially, so it’s not getting tagged.
Today I started a new job at Celerity, a business acceleration company that’s ramping up aggressively in the web and mobile space. They were actually a finalist for the Ektron partner of the year at Synergy 2012. About a month and a half ago, they came knocking on my virtual door, and when it was all said and done, they Godfathered me (made me an offer I couldn’t refuse, not put a horse’s head in my bed!). Closer to home and working with the most recent version of Ektron to a level I hadn’t gotten to with C-SPAN…definitely appealing.
I know this is old news at this point, but I also know a number of folks that have seen my announcements were surprised that I left C-SPAN. I really did enjoy it there, but sometimes when opportunity knocks, you have to open the door. In this case, it knocked twice, and you know the old shame on you/shame on me thing…it could apply here too. I’m glad I took the call and I’m looking forward to the future. (And who knows, C-SPAN’s still using Ektron at the moment, if they continue our paths may cross again.)
Of course I’ve got nerves going into this, who wouldn’t starting a new job, especially where you were recruited? It’s also only my third full-scale job transition. I started my full-time career in 1995, and despite two company changes between then and 2003, it was generally the same people. The same in 2003 through 2013, when I slid via contract from Information Concepts to C-SPAN. But, as I said, I have a huge learning opportunity here, as well as plenty to contribute I hope.
One nice thing is the commute is a lot shorter…about 23 miles round trip each day versus about 75 miles for C-SPAN (counting the mileage to pick up the carpool). Plus I can leave my house at 7:30am to get to work by 8am most days, whereas I had to be out the door before 6am. I’m hoping to get a new routine going where I hit Title Boxing in Herndon for their 6am classes Monday/Wednesday/Friday (I stayed in bed today…sue me, it was the first Monday in forever I could do that!). It’s really been working out too…from the end of June through the start of February I’d dropped from over 420 pounds (I didn’t have a scale before that, 420 was my first weigh-in) to 394 pounds. Then I joined Title, started doing DDPYoga, and got back on Weight Watchers to keep an eye on my consumption, especially on my “cheat day.” I’m down to 361 pounds as of my last weigh-in, in about two and a half months.
It’s a total set of coincidences that led to all this too. First off, the gym I joined last summer had a local chiropractor, Chiropractic Health and Wellness Center in Sterling, doing quick evaluations. Since then, they’ve done a lot of work to help ease the pain in my knees and lower back, and worked on my neck. I couldn’t walk five minutes without my back locking up before, now I can motor around nicely. (The gym helped a bit with personal training, but they kept changing trainers on me, and I got tired of it.)
Then came the hurricane a few months ago, and I’m sitting home wondering if I’m going to lose power or flood (neither happened thankfully). Somewhere in here there was a discussion on Twitter about Ektron, what exactly I don’t know, but Dave asked this question to which I and someone else responded, kind of with opposite views. We ended up having a long Twitter exchange, and it turns out she was in the same boat I was, as she lived the next town over! Also, if I’d stayed at Information Concepts we would’ve been colleagues, as she joined up nine months after I left. So we met over bowling, and then she introduced me to Title Boxing. So full credit to Stephanie for helping get me in shape and also finding a cool place with cool people where I can kick the stuffing out of bags again…I missed doing that when my knees caused me to stop tae kwon do, but no forms or jumps required here! (And if you think my weight loss is something, you should see her transformation…and I thought she was good looking before!)
Add all that into the job situation, and we kind of come full circle to this. Never ignore an opportunity when it presents itself. You don’t have to take advantage of it, but don’t just let it pass you by without finding out something more, or at least acknowledging it. Even though I changed my LinkedIn to say I had a new job, I got an email today saying they had an opportunity for me…I politely informed them of this, but you never know if someday that turns into something else. If you’d told me back in June that I’d no longer be at C-SPAN and I’d be over 60 pounds lighter and I’d be sweating in a boxing gym pounding leather, I’d have said you’re nuts. But, here we are!
Okay, this has become a bit more zen than I was originally thinking, but hey, it’s my blog and I don’t always have to be giving out Ektron tips. :) The next blog will probably be zen too, so fair warning. I also won’t try to subtly advertise as much either via hyperlink. :)
One more thing on social media. This, Twitter, and LinkedIn will be my public faces, but Facebook’s going to become more of my private, share with friends, say things I want to say type place. (And I already checked, my posts aren’t visible if you’re not logged into Facebook.) To that end, I’m going to start culling my friends list a bit there. This is nothing against anyone there…most of you I’m probably following on Twitter anyway, or if I’m not feel free to let me know your handle. So if I unfriend you, I’m not unfriending you personally! I feel I need to qualify that now, since some are people I’ve recently worked with, and it’s not a thing of “I left, now I don’t like you, neener neener.” If that had been the case, you wouldn’t have my personal email or cell phone number, so look at it that way. :)
Day two of the new gig awaits following this commercial interruption for sleep!
Gangnam Style the Chicago Way
I’ve been playing around with the JQuery Picture library as a way to do responsive images. Basically, it allows a user to create a <picture> object (something being proposed by many for HTML5 to be the <video> tag answer for images) and hook in multiple sources based on media queries. I’ve also been playing around with the Twitter Bootstrap framework, which has responsive stops already set up, including classes like “hidden-phone” that can hide a DOM object when it reaches a certain width. Combining these two could be pretty powerful, such that an image wouldn’t appear on a phone but would on a tablet or desktop, at the appropriate size for the screen size. The catch comes that even though you’re calling a class to hide the image at the phone level, the image itself still loads, which can affect load time.
That said, here’s a solution using an empty 1x1 “spacer” gif - the kind typically used on a site to drop in and stretch height/width to fill in an area in the old days. If we set that up with the JQuery Picture code at the same stop as the “hidden-phone” class stop, then on an initial load at that size, the actual image you have lurking about won’t load and use network resources.
<picture alt=”image alt” class=”hidden-phone” style=”max-width: 100%”>
<source src=”/img/small_size.jpg” media=”(min-width:768px)”>
<source src=”/img/medium_size.jpg” media=”(min-width:980px)”>
<source src=”/img/large_size.jpg” media=”(min-width:1200px)”>
<img src=”/img/medium_size.jpg” alt=”image alt”>
The rest of the setup to make this work can be achieved from the JQuery Picture and Twitter Bootstrap basic setups. So far this looks like it’ll work well. I’m thinking of making this into an ASP.NET function or class library for easy reuse, where I can pass in what base image to use (using the ImageResizer component to do resizing as appropriate), the width of the column the image is in (to set the widths to use in the resizing stops), and whether to hide the image for the phone or not (to determine whether to add the “hidden-phone” class and use the spacer.gif or a smaller size of the base image).
UPDATE: Our friends behind the @RWD Twitter account have suggested PictureFill for responsive images. You’re using divs to do the work, but they also note that if you leave an empty entry for a smaller size, no image tag should render. This saves the HTTP request for the 1x1 image as well as a 404 error.
If you’ve watched Bill Cava’s webinar on Ektron Content Types (and you should), and you check the original blog, you’ll see there’s a link to some sample code. The ContentTypes.cs file is the heart of the whole operation, as it’s the one that renders out the XSD-converted smart form. It’s a great start, but in looking at it, I think it could be more fleshed out.
Here’s what I changed from the original sample. If you want a copy of my file, it’s posted in the Ektron Developer Center.
One additional note that I found the hard way, regarding the root element of your smart form. If you want the “nice and neat” class name, you’ll need to do a first step in your smart form if you don’t want to manually change your rendered XSD-based class. Start with a group box, set the name to what you want your root element to be, and use the settings to make that name take the place of the default “root”.
Alternatively, if you forget to do this, you can change “root” in the class file. After generating the class, if you have “root” as your class name, change the class to whatever you want. Then in the declarations above the class, find this line:
[System.Xml.Serialization.XmlRootAttribute(Namespace = “”, IsNullable = false)]
And change it to:
[System.Xml.Serialization.XmlRootAttribute(Namespace = “”, ElementName = “root”, IsNullable = false)]
Please note that any sub-classes created will also have “root” in them as a prefix, so if you want to be consistent, you’ll need to change those as well. And if you regenerate the class, you’ll need to do this again. (Which is why using the initial group box may save you a few headaches!) Thanks to Bill Cava for reminding me of this…I asked on the forum and he came up with this answer.
How do I know? I’m typing this on my iPhone at a conference VIP dinner. I think a chunk of this could be because I drove from work to the conference site to meet folks for dinner….took 20 minutes. We got on a bus, drove around for an hour…to end up seven blocks from work. Now I’m sitting through this, then we have to get back to the site, then I have to drive home…UGH.
So, that is not making me happy to start with. But I’ve never really been comfortable in large groups of people I don’t know. Maybe I need to get out more, not sure.
But I sure as hell wish I was bowling tonight.
President Obama is finishing up his acceptance speech as I write this. Wild night. I was surprised the presidency was called so early, honestly, but there you have it.
And now I’m going to help wrap up the night here at work, go home, and sleep for awhile before I have to get ready for Ektron Synergy and practice my presentation.
Whomever you choose to vote for…you need to vote tomorrow. And don’t go crazy with “if my guy doesn’t win, I’m leaving the country” or “the country is doomed” or anything like that. As the saying goes, keep calm and carry on. Or as the Blue Lanterns say, all will be well.
Seriously, no excuses, if you’re eligible to vote, just do it. If you’re looking for me tomorrow morning, I’ll be at my polling place at 6am to vote. (Then I’m getting some donuts before I have to work out and go to the chiropractor, followed by a nap since I have to be up to the wee hours as the returns comes in!)
Some election humor via the Simpsons after the jump. (I’m not advocating for anyone by the posting of these clips…except maybe Kodos… :) )
I was going over my November schedule today, since it’s normally when I’d restock my monthly food stores - sausage biscuits, cereal, cheese sticks, cashews, popcorn, etc. But that’s for normal days with my set food schedule. Looking at the calendar this month, though, I have very few “normal” days ahead. For example…
This week, Monday’s normal. Tuesday, though, I’m working the late/overnight shift to help with election night (make sure you vote!), while taking Wednesday off. But not entirely off, since I have to go to a dinner for the conference I’m attending on Thursday/Friday, which I’m also speaking at, so I have to get some time to finalize my notes and practice a bit.
Next week, Monday’s normal again, but Tuesday I’m flying out with my bosses to Indiana, and coming back on Friday. Then the next day, I pick my parents up at the airport, and I take a week off work while they’re visiting for Thanksgiving the following week.
After that, it’s at least four regular weeks (right now anyway) leading up to Christmas, which I’m spending with my parents again. I’ve got all these ornaments and a tree that I could set up, but if I’m not going to be here to enjoy it, it doesn’t seem worth the effort to put up since I just have to take it down when I get home.
The hard part of all the nuttiness of the schedule is getting in my training and chiropractor appointments, and worse there was a bowling league I wanted to join. (Stephanie, it’s your fault, you got me interested in it again!) It meets on Wednesdays, and the first two of the league I can’t be there because of other commitments. I might check if it’s something I can pick up in week 3, but then there’s still other weeks I’d miss. Maybe it’s something I should just go do as a practice deal on weekends, get used to bowling again…it can screw with my bad knee, but it’s surprisingly energetic and I worked up a sweat when I did it during the hurricane. Just another reason, though, to get done with cataloging my comics, so I can get my basement clear to work out in when my schedule (or my desire) doesn’t have me going to the gym.