Posts in ‘Stephanie Raumschuh’

The BEST National Holiday

May 15

We think every woman out there will agree that today should be the day most celebrated every year.  National Chocolate Chip Day is probably the second busiest day at the gym or the busiest day in your local grocers baking aisle.  :)

To take our minds off of all that web design and development work we’ve got cookin’, we thought we’d share a recipe that our very own baking extraordinaire (and web developer extraordinaire), Stephanie Raumschuh uses as her fall back all-time favorite chocolate chip cookie recipe.  Enjoy!

read all »

My favorite web design and development tricks: The short list

Jan 20

I love a good list.

I have a slightly Type A personality and, to me, organization is a beautiful thing (Although I have to admit that all the recent ‘Best ____ of 2011’ lists that every publication on earth seemed to be putting out around New Year’s were getting a little out of hand, amiright?). That being said, I’m intending to keep this list fairly short and just give a little shout out to a few of my current favorite web design and development bookmarks that I hope might be useful and interesting.

I do most of the front-end web development (HTML, CSS, Javascript, etc.) here at TPI World Headquarters, so anything that I come across to help me streamline that process is aces is my book. I’m also fortunate enough to have a few friends in the industry who help keep me in the know and introduce me to the latest and greatest technology for creating beautiful and functional websites:

  1. Visual jQuery – (http://visualjquery.com/)Ok, ok, this Javascript library (jquery) isn’t news to anyone in the industry. It’s been around for a while now, but I gotta admit that I am still enamored with the way jquery simplifies javascript and makes things like animations and manipulations so easy and, dare I say, fun. This site is one of the most easy and useful documentation sources I’ve ever seen. It’s clean and easy to navigate and I can find what I’m looking for, usually, in a matter of seconds. Bonus: Each entry has syntax, examples and options all lined up and organized (Type A, remember? *sigh*).
  2. Chosen – (http://harvesthq.github.com/chosen/)Speaking of jQuery, this little gem is a great plugin if you’re digging on some creative ways to utilize select lists.  Whoa. Did I just get a little excited about using select lists? I did. What can I say? A few lines of code and your oft-unwieldy multiple selects become an enchanting experience for the user. Ok, I have to stop now before this gets embarrassing.
  3. CSS3 PIE – (http://css3pie.com/)Mmmmm, pie. If you’ve been reluctant to embrace the new-fangled awesomeness that comes with CSS3 because you’ve been worried about IE compatibility, fret no more! My friend, early-adopter, and programming wunderkind, Skye, introduced this to me on a recent project we worked on together. What a difference! While I haven’t had much opportunity to utilize it on other applications just yet, I’m definitely going to be putting it through its paces on some upcoming victims, er… projects we have in the works.

A short list, but a good one.

There’s new plugins, languages and tricks coming out all the time, it seems, to make our lives as web developers ever more exciting. Have you come across something lately that’s changed your coding life forever? Let us know! We love expanding our knowledge and keeping our clients happy with interesting and engaging websites and applications.

Combining navigation on the easySlider jQuery plugin

Dec 23

Today, I was putting together a proof-of-concept for a new website design that included a media ‘slider’ on the home page. I did a bit of searching and came across the Easy Slider 1.7 plugin which uses jQuery to simplify this task. Score! We love jQuery here at TPI because it takes heavy-coding Javascript tasks and makes them really simple to accomplish and usually more interactive and fun.

This plugin seemed to have all we needed except one thing. There was a choice in navigation between arrows left and right (previous and next) OR numeric/individual item navigation below. (For this case, we’ll use actual ‘Sliders’ as our representation of the easySlider. Hungry yet?)

Navigation illustration

For the design we’re envisioning, both systems needed to be utilized. It seemed like a simple fix and I set about combining both  navigation types to show up at the same time. Problem. For some reason, the next/previous buttons weren’t behaving properly when you used the numeric navigation below to choose an item! If you clicked on an item in the numeric nav, the next button would inexplicably send the gallery zooming off into space and then slowly return to the first item in the list.

How do we fix this!? Good ol’ scheming and know-how to the rescue! I’ll give you the quick-and-dirty since I’m pretty sure that’s what you’re interested in, anyway.

First, to show both navigations, go into easySlider1.7.js and find this part:

if(options.controlsShow){
var html = options.controlsBefore;
if(options.numeric){
html += '<ol id="'+ options.numericId +'"></ol>';
} else {
if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
};

html += options.controlsAfter;
$(obj).after(html);
};

And change it to this:

if(options.controlsShow){
var html = options.controlsBefore;
if(options.numeric){
html += '<ol id="'+ options.numericId +'"></ol>';
if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
html += ' <div id="arrows"><span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span></div>';
if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
} else {
if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
};

html += options.controlsAfter;
$(obj).after(html);
};

Then find this part:

if(options.numeric){
for(var i=0;i<s;i++){
$(document.createElement("li"))
.attr('id',options.numericId + (i+1))
.html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
.appendTo($("#"+ options.numericId))
.click(function(){
animate($("a",$(this)).attr('rel'),true);
});
};
} else {
$("a","#"+options.nextId).click(function(){
animate("next",true);
});
$("a","#"+options.prevId).click(function(){
animate("prev",true);
});
$("a","#"+options.firstId).click(function(){
animate("first",true);
});
$("a","#"+options.lastId).click(function(){
animate("last",true);
});
};

And change it to this:

if(options.numeric){
for(var i=0;i<s;i++){
$(document.createElement("li"))
.attr('id',options.numericId + (i+1))
.html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
.appendTo($("#"+ options.numericId))
.click(function(){
animate($("a",$(this)).attr('rel'),true);
});
};
$("a","#"+options.nextId).click(function(){
animate("next",true);
});
$("a","#"+options.prevId).click(function(){
animate("prev",true);
});
$("a","#"+options.firstId).click(function(){
animate("first",true);
});
$("a","#"+options.lastId).click(function(){
animate("last",true);
});
} else {
$("a","#"+options.nextId).click(function(){
animate("next",true);
});
$("a","#"+options.prevId).click(function(){
animate("prev",true);
});
$("a","#"+options.firstId).click(function(){
animate("first",true);
});
$("a","#"+options.lastId).click(function(){
animate("last",true);
});
};

NOW, to make it work properly (and here’s the kicker), parseInt!!!!!

Find the ‘animate’ function (~line 140):

function animate(dir,clicked){
if (clickable){
clickable = false;
var ot = t;
switch(dir){
case "next":
t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;
break;
case "prev":
t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
break;
case "first":
t = 0;
break;
case "last":
t = ts;
break;
default:
t = dir;
break;
};

And insert this itttty bitty little parseInt:

function animate(dir,clicked){
if (clickable){
clickable = false;
var ot = t;
t = parseInt(t);
switch(dir){
case "next":
t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;
break;
case "prev":
t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
break;
case "first":
t = 0;
break;
case "last":
t = ts;
break;
default:
t = dir;
break;
};

Thats it! Wow, that seemed a lot harder than it was. We figured out that the two navigations were treating the current item differently (one as an integer, one as a string – who knew!) so basically we’re just telling them all to be integers so both methods will work the same.

For reference, here’s another little proof of concept we drew up. Sliders. Get it? We’re hilarious, i know. (click the pickles OR the ketchup. CRAZY!) easySlider plugin ‘Sliders’ demo

Holiday Break Business Reading List

Dec 11

If you’re anything like the crew here at TPI, you probably aren’t taking much of a break this holiday season. Staying busy is the name of the game and we certainly do our best to keep the machine running as much as possible. That said, we sincerely hope you DO get some time to relax, spend time with those most important to you and maybe even take a few minutes to improve your business for 2010! I know, I know… who has time for reading when there so many cookies, candy and pies around just calling your name?! The truth is that investing time in your business (even when you’re not ‘working’) by reading about relevant marketing strategies, business models and successful (and not-so-successful) stories can give valuable insight into areas where your own techniques might be lacking.

To that end, I’ve taken the liberty of compiling a short list (in no particular order) of some great marketing and business books to light your fire and help jumpstart your business in 2010 with new fervor, focus and inspiration. A lot of ideas in these books aren’t earth-shattering, new and different ideas, but common sense practices that sometimes fall by the wayside in business and want for a good reminder. The key is using the good advice you find. Good advice only works if you put it into practice.

Admittedly, I haven’t ready all of these books. For what its worth, its a list I’ve compiled from other business leaders I follow and have been written by or invaluably helpful to them. That’s good enough for me and I will undoubtedly be picking up a few of these to read on a few cold nights this winter.

Have you already read any of these? What are your thoughts? We’d love to add to our library as well so definitely leave us a comment with your own recommendations!

Happy Reading!

1. How to Win Friends and Influence People – Dale Carnegie: An oldie but a goodie. A nice reminder on how the key to being successful is all in how you treat the people around you.

2. Citizen Marketers: When People Are the Message – Ben McConnell and Jackie Huba: If you’re curious about social media and how it might relate to your business, this one is a good resource.

3. Love Is the Killer App – Tim Sanders: I haven’t read this one but its definitely on my list. Its also about dealing with people but with an emphasis on networking and sharing information.

4. Good to Great – Jim Collins: Need I say more? Which one will YOUR business be?

5. Just Ask a Woman: Cracking the Code of What Women Want and How They Buy – Mary Lou Quinlan: This was recommended to me and I’m actually looking forward to reading it. Discover the power of the female buyer!

6. Blue Ocean Strategy – W. Chan Kim and Renée Mauborgne: All about the ‘blue ocean’ of uncrowded and untapped market space.

7. The Long Tail – Chris Anderson: From the Editor-in-Chief of Wired Magazine. If anyone will know about the future of business, this is the guy.

8. How To Be That Guy – Scott Ginsberg: This guy started wearing a nametag everywhere as an experiment and learned a lot about how people responded to it. Now he shares how to be unforgettable.

9. Selling the Invisible: A Field Guide to Modern Marketing – Harry Beckwith: Selling the way you do business and treat customers, rather than a product. Because everyone wants good customer service!

10. Purple Cow – Seth Godin: And just for good measure, Mr. Godin is considered one of the most brilliant minds in marketing. Read this one.

PSA: Nerd alert!

Jun 25

Don’t ask Abram about Black Holes unless you’re REALLY interested. He’s scary smart.