search

Stir Fry

For years Trephaena and I have been wanting to be able to make our own stir fry. We love going to places (and always will) but being able to make our own just seems like something we should be able to figure out. One of the reasons, as usual, is to be able to control the ingredients so as to control the oil and salt input. As we went through recipe after recipe we found a few pieces of a few of them that seemed to work well but nothing ever did it for us completely.

Knowing that we’re never going to replicate the restaurants exactly (especially since we’re not willing to go to their level on the oil input), we’ve accepted that we’re going to have a darn tasty alternative that is just a different sort of meal. It won’t have quite the same taste characteristics and won’t fill the same need as the restaurant version but it still can be yummy. So this is one such recipe that has come from my head although clearly had some influence from all those recipes we’ve been through.

Ingredients

  • 1 can pineapple tidbits (or chunks cut into quarters) in juice
  • 1/4 C soy sauce
  • 2.5 T cornstarch
  • 2 bags frozen stir-fry veggies
  • 1 medium onion, diced/chopped to your preferred size
  • 2 or 3 cloves garlic, minced
  • 1 C ketchup
  • 3/4 C + 1T water
  • Vegetable, peanut or grapeseed oil for frying

Steps

  1. Drain pineapple but keep juice
  2. Add soy sauce and 1.5T cornstarch to juice
  3. Dump juice/sauce mixture over cubed chicken and let marinade 30+ minutes (sometimes a day or two in our house due to schedules)
  4. Stir fry veggies in oil, transfer to large bowl and cover to keep warm
  5. Heat more oil add onion, saute for 2-3 minutes
  6. Add garlic, saute for 30 sec
  7. Add ketchup and slowly add the water in so as to keep it simmering, do this for 3 minutes
  8. Mix 1T cornstarch with 1T water, add to sauce, simmer 2 minutes
  9. Add chicken with juice/sauce mixture, cook until chicken is cooked through
  10. Add pineapple, heat through.
  11. Add veggies back in, heat through.
  12. Serve over rice

Getting Your Foot in the Door

Author’s note: this post was in my drafts for about a year and I just never got back to it. Now things have changed, I got a FE position within my current employer mostly using CodePen and their little test to prove I could do it. The issue is still a real one that I think deserves some discussion so I’m posting it now without finishing it.

As my first post mentioned, I’m working on moving into development (specifically front-end development) as my full-time gig. That’s fine and lovely but I’m not so sure I have any idea how to do that. Certainly building this site is a good start, getting me more experience, a face to my development on the web and a place to post my experiences but now what? I can’t just quit my day job and dive into working on side projects or stay up 27 hours a day working on a sweet portfolio and I wouldn’t expect a company to hire a guy that has virtually no proof of ability other than what he says he can do. So here I am, ready to move on and feeling that I have the skillset to move on but no real way to do it.

Employment Agency?

I feel like I test well and have the skills so I thought if I could get registered with an employment agency, especially one that specializes in technology-related jobs, I’d be much better off. So a month or so I did that and got some assessments done at the beginning of 2014. Turns out I do have the skills, or at least those assessments indicated that I did. However, those test scores are not something they’re allowed to share with potential hiring managers so they aren’t nearly as much help as I’d like. That bit aside, the hiring team does have access to them so I know the folks there are aware of what I can (or can’t do). Had an interview this morning which is what spurred the thoughts that are attempting to form themselves in this post. Even with those assessments and talking-up that I’m assuming the agency did for me when it came down to “what have you done” I had to send them the one client site that I’ve done recently and hope for the best. That site was my first attempt at responsive design and my first attempt at using Twitter Bootstrap so when I looked at it a few weeks ago when getting a resume ready, I cringed a bit.

I don’t mean to be negative on this idea or on the agency, it’s just a fact of my situation right now. They are doing well at offering me things and bringing me to hiring managers, it’s just tough. I’m also a little stuck with my availability for locations as we aren’t going to move and I do daycare drop off and pickup which limits my range quite a bit to the inner southwest metro of Minneapolis. That is a great place to work and a good place for some tech jobs but removing downtown and the northwest corner of the metro from my list is a bit detrimental. I’m not miserable in my current position so it’s not like I’m trying to get out as quickly as humanly possible, just ready for a change.

CodePen FTW?

Since I don’t have a lot of clients (read: 2) I need a place to play with new ideas, familiarize myself with new technology and keep my knowledge up-to-date. While I would love to get into a side project that I’ve had in mind for about 5 years, it’s just not reality right now to spend enough time on that to get it to the point it would be worth putting into a portfolio. Absolutely it would be great to put in there when it’s done but in the meantime I need something to show people that prove I have a clue. I have an account on CodePen and have a collection setup as a [portfolio of sorts][1] showing what I’ve played with and some UIs I’ve built. While this is pretty sweet that it is even out there, it’s not a fully built, production ready site that proves I have the chops.

Late Nights is All I Have Left

Z…z….z…..

Using Grunt CLI to Control PHP and SCSS

I’ve been working on a framework (good marketing term, right) for one of my teams at work for a while now and have been using Grunt to keep things in order. This framework is intended to be used on our internal “admin” forms that are used by our Business Analysts to configure our programs. One of the key requirements of this framework was that it be skinnable for each of our client systems so we can easily tell which one we’re in (since many BAs work across clients and many of the forms are identical across systems). The other key requirements was that the codebase be kept up-to-date in all of the client-specific CVS repos (yes, you read correctly, we’re still on CVS).

The Problem

I’d been using grunt for small projects for a while to lint and concatenate JS, compile SCSS, merge my SVG into one file and various other little tasks as needed. But this was different. I wanted to have a single location for the dev files where I could have my SCSS files, individual JS files and a little dev setup for mock JSON responses (and whatever else I might need). Then the compilation process that I needed grunt to do was to compile those source files into the appropriate client-specific folders (this destination is variable definition number 1, more on that later) using the client skin settings (just scss variables at this time) (this is variable definition number 2). And then my PHP header and footer files would read the files from the directories within one of those clients (variable definition number 3).

This was all well and good for initial development where I was focusing on one client as the test case. Everything always pointed to their CVS directory, their skin variables and their directory mapping within the PHP files. But then, once things were working there, we quickly wanted it in three clients. This was great, people liked the new framework and what it offered. But maintainability dropped like a rock. Now I had to run Grunt 3 times whenever I made a change (and this framework is very much in its alpha stage) but for each time I had to provide a new grunt CLI variable, change the variables in my scss files and change my PHP files to reference the right directories. No good. No good at all.

The Solution

As the boys on Top Gear like to say: How hard can it be? My plan was two step (mostly because I couldn’t stop updating the framework for a few weeks to make the change all at once): 1) change the scss and php variable locations to somehow read from a configuration file that grunt would generate as part of it’s duties and then 2) change the grunt file to iterate through the provided CVS locations all-at-once to distribute the updated code to each location.

Round One

To get start I installed grunt-php-set-constant, a Node module for setting PHP constants from within a grunt task. Seemed pretty straightforward, I would pass in whatever variable I was already passing into the grunt CLI and that would translate to the php constant being set appropriately in the header.php and footer.php files that control where to get the compiled CSS and minified JS files.

Then use Daniel Auener‘s approach for setting up color schemes in SCSS using Grunt. So this would easily take my goal for step one and would also make it very simple to update to step two once the rest of the application was ready to be distributed en masse. Ideally I wanted all my variables in one scss file so I could easily compare values and whatnot but I can get over that. I’m also using the autoprefixer package to make sure I’m good on all the vendor prefixes (really it’s mostly because I’m using Flexbox on this project) so each color scheme will be setup to compile to the common CVS location that the framework files reside in and then autoprefixer will distribute (as it’s already setup to do) to the right CVS location.

Round Two

The update of how Round One went and how Round Two shaped up will come later once things are actually up and running for a bit to make sure I’m not giving some poor advice on something.

Bagel Chips

I always see big piles of bagels at work after a generous co-worker (or more likely one of the contractor agency people that try to get business from us) and hate to see them go to waste. Also, I like bagel chips and I like to make food for my family. So I’m logging my attempts at recipes for turning those bagels into properly good bagel chips. I can’t promise any of these are great. Just logging the things I’ve tried!

Initial Recipe

Ingredients

  • 8 bagels (various savory flavors like everything, poppyseed, sun-dried tomato, salt, plain)
  • cooking spray
  • old bay seasoning
  • salt

Steps

  1. Slice to 1/8″ (I use my mandoline but you could sure do it with a knife)
  2. Spread them out on a cookie sheet, 1 or 2 chips thick
  3. Spray with cooking spray
  4. Sprinkle with old bay & salt
  5. Stir
  6. Spray again with cooking spray
  7. Bake 7-10 minutes @ 400

Notes for future attempts:

  • Try only sundried tomato bagels with no seasoning

Rubber Stamper for the 21st Century

There is something satisfying about the old-school rubber stamp for marking a document. In the world of the web we just don’t have much of a need for paper anymore and the rubber stamp is dying as a result. Some co-workers and I had discussed this situation and decided we need to be able to stamp websites. Seems like a fun way to comment on the site and send a screenshot or post it on Tumblr or something, right? The first attempt was a bookmarklet that just throws a big greek beta over the page to indicate that the site is in beta mode. Mostly this was because we have clients that like to tell us when little things aren’t working like they want, we figured we’d throw a beta stamp on the site and send them a screenshot: “the site is in beta” would be our excuse. Something like this.

A better stamp

But that just didn’t seem stamp-like enough. It needed to be red. And a better font. And look like a real, honest-to-goodness rubber stamp. So using that same basic idea I threw together a quick stamp using our team’s favorite hash tag: #kindaconcerning. This is really for many different uses, most notably when we see something on a site that is really terrible or embarassing or something (either that we did or just something we ran across).

Still not enough

Even with that it seemed to limiting to have the location, size, color, text and basically everything about the stamp be so pre-defined. So partially to resolve those concerns but also partially because it sounded like a fun little exercise I built this toolbar for this very task. Based on the same idea as Malte Wassermann’s Viewport Resizer (which, as a sidenote, I highly recommend) this write a little tool bar to the current document and then reloads your current document into an iframe in that document. Then you have lots of fun controls at your disposal to stamp away with.

And that’s where we’re at today. Not sure how much further we can go with it? The only thing I’ve considered since I wrote this last night is maybe incorporating a screenshot tool within it that it would generate a screenshot automatically and let you download it. That seems like a significant amount of work for something that pretty much every computer can do on it’s own right now but we’ll see. Might be a fun little exercise for some day in the future.

Enjoy!

Clamp Organization FTW

Just came across this great PDF summarizing some clamp storage options so rather that me file it away and lose it for years again (nobody wins), I think thought throw it out here for everyone to share. Enjoy!

5 Great Clamp Organizers

Why We Make So Much of Our Food

I have a few hobbies — maybe too many — and so does my wife which gets us into a lot of trouble with the daily upkeep of the house. Dishes piled up, vacuuming always on the overdue task list, never seem caught up on laundry, the list could go on. We frequently discuss with each other all of these things because they usually end up irritating us quite a bit. But then we never drop a hobby or take some of the free time that we do have (which is quite limited with the two little ones) to remove even one of these things from our list. The one that seems it could kill two birds with one stone would be the fact that we try to make as much of our food from scratch as we possibly can. If we stopped this we’d not only have more time to address this laundry list (excuse the pun) but the dishes that are a part of that list would be drastically reduced so we could effectively take two items off the list by stopping this one hobby.

While that sounds great and lovely it just won’t be happening. We eat quite well (if we do say so ourselves) and giving that up for more processed, pre-made and less healthy foods just isn’t in the cards. It’s not that we’re eating 100% organic meals or we’ve got some particular dietary need such as Celiak’s or allergies, we just like knowing every bit of what we’re eating and packaged food just doesn’t allow that to be a reality. We started this trend in our house years ago, before kids, with a small set of recipes that mostly came from Trephaena’s mother’s recipe box. Nacho Skillet, Calico Beans, Tator Tot Hotdish and Hamburger Stroganoff were amongst the frequent dishes. Clearly it’s not that we’re food snobs.

Even with being as intentional as we are about things we still have items in the panty and fridge that have an ingredients list that sounds like the multiple choice answers on my CHEM 201 final. But we have less of that. In this day and age it’s nearly impossible to remove yourself from these ingredients completely. Even if you can do that it means a great deal of money (which isn’t us), a great deal of time (running out of is as previously mentioned) or both. We shop at Linden Hills Coop and the Minneapolis Farmer’s Market whenever we can but that means another stop or separate outing and they generally cost more (although not always as some people assume). We usually base our plans off fresh foods at Target or Cub Foods and sometimes to some packaged items that are just less processed than another option. Like our Hamburger Stroganoff mentioned earlier: we still use canned soup for the sauce for that because making that from scratch just isn’t realistic. But putting that sauce together with the soup, sour cream and spices makes it so we know exactly what is in there and we limit the added sodium and other junk. It’s just all about controlling what you can control.

I’m sure I sound all high on my horse about this and we can’t possibly eat processed food or McDonald’s or something but the fact is that we just don’t do it. We’re not saying people that do are bad or wrong, we just don’t do it. And people often can’t believe some of it (mostly it’s hard for people to believe that I haven’t had McDonald’s since 2004) but once we got ourselves into the groove and your body begins to expect a certain makeup of food the desire to have those other things begins to fade. Not that we don’t love us some french fries or milkshakes (or for me in particular a big greasy burger) but it’s just not part of our regular diet and for that I think we’re happy.

Day to Remember

This winter has been pretty darn cold and pretty darn snowy. School was just closed for the third day this year because of cold (I could totally get into the “back in my day” comments with that one but I won’t… yet). I’m not sure why it took me until mid-January to realize that a 2½-year-old is totally of the age that loves snow. And he’s not even at the age that he has to do much with it. Just being out in it with a shuggel (what most of us know as a shovel) and dad is enough for hours of entertainment and what can only be explained as pure joy.

We went out last weekend for probably an hour and attempted to build a fort but the snow was too cold (I know, right?) to stick together. So we sort of piled it up in a circle in an attempt to make one anyway. It didn’t work that well but he sure didn’t care. We played hide-and-seek using it and that was good enough for both of us. We dug with our shuggels down to the alley, throwing snow at every chance we got. We had a snowball fight with the bits of snow that we could get to stick together. We tried a snowman but then we sat on the first level of him and giggled and twisted until that idea was back to it’s pile of snow. We made snow angels although they mostly got trampled as quickly as they were made so no proof of their existence can be found (there is some religious tie-in there with angels that I won’t get into).

And then we capped off the adventure with a little of the all-time favorite: eating snow. I didn’t even have it in me to try and stop him. It was “delicious” and made him smile from ear to ear and I could see that it wasn’t from the spot where we found the bunnies have “visited” so I think we were good on the nutritional value of what he was eating. All of it was just so innocently delightful that I couldn’t quite believe it. The pure joy that he found in all of these activities really made me inexplicably happy but simultaneously a bit sad. The inexplicable happiness I’m guessing I don’t need to explain but the sadness was because it made me realize how much the world messes you up. Work, finances, politics, responsibility and the list could go on. It all means that experiences like what he had out in the snow are limited because once you have all those things on your mind, you can’t go back.

However, being able to experience those with someone so dear to you is almost close enough that you don’t care about those nagging realities. For that time in the snow I could just be a kid again and worry only about where the next snowball was coming from or trying to figure out how I could get the walls of our fort taller. Having kids has made me feel more like an adult (and old) than buying two cars, having a job for 9+ years or even buying a house but getting to play with Tjostel in the snow made me realize that it can also make me forget all that crap and enjoy things for what they are. So I hope this is a day I remember for a long time and repeat as often as I can.

My Website Full of Firsts

Developing this site crossed many things off my list of “to do” items for my career as a web developer.  This post got a little bit like a “to do ” list itself but if I detailed every pieces at length it would be way too long for me to ever read so I’d assume the same for you. I’ll probably post some more detailed parts over the coming weeks so for now we’ll go with the list-like post. I have been informally doing this for something like 15 years but the launch of this site in it’s current form and the mindset change that I’ve made to get here marks a new era in my career as a web developer.  It’s been a fun and relaxing ride up to this point but now it’s time to get serious and do a bit more to make things happen.

My First Blog

The first thing I wanted to make sure this site included or rather that this site was centered around was a blog.  But not just a blog about being a web developer but a blog all about me.  And it needed to be the real me and not just the me that seemed like the one that I should try to convey so clients would like me or do work with me.  I’ve been trying to do that for years and clearly it hasn’t gotten me real far.  As I’ve grown up over the years and become more comfortable with just being me and accepting whatever that means for the rest of my situation I’ve learned this rule time and time again.  Becoming a father (and then having my second kid) hammered it home more than ever.  I have to be me… so here I am.

My thoughts aren’t profound and probably are pretty boring to others but nobody started off with post #1 being discussed on the Reddit homepage or having so much traffic that the server falls over from traffic. Maybe none of this ever makes it to anyone and I’m the only one that ever reads it.  That’s okay by me.

My First Packaged CMS

While the blog idea was important I also had to change my mindset and strategy around how I develop websites.  I have been a “roll your own” developer since the beginning because that was part of what got me into web developer: I loved being able to open a file in notepad and create something from nothing.  While I still love that and will continue to do that, there is no reason to attempt to do that for things that awesome tools already exist.  This site is built completely on WordPress because there is no possible way I could ever compete with something like that in configuration options, stability, features and user experience.  So I let go of the blogging and content management portion of the site, put my abilities into writing a plugin to do the administration-y stuff that my business requires and now I can spend my time developing stuff I really want to spend time on (more to come on that as my first side project begins to take shape, stay tuned).  

My First Fully Responsive Site

I believe there are very few business cases these days for sites to be built (especially brand new sites being built from the ground up) without being responsive in every way possible. It’s my first attempt and, while I think it’s pretty good, it certainly has room for improvement. I started my tabbed navigation from a lovely experimental pure CSS3 idea in a post by Lea Verou and adjusted a few things as needed. Then I borrowed some javascript bits from Chris Coyier’s Transformer Tabs on www.css-tricks.com and adjusted a few things as needed there as well. The navigation is (as is usually the case) the biggest challenge for making a blog responsive but Chris laid out some pretty good groundwork so I just needed to style up the usual drop-down style navigation with the navicon for a toggle button. From there the rest of the site flowed pretty easily as it’s mostly just text and basic layout. Regardless of the complexity of the site, having a fully-responsive site under my belt (and in my portfolio) makes me feel good.

My First Site Built Completely with Sass

While building my first responsive site I did some research on methodologies and best practices. Sass has become an integral part of my workflow so I knew I needed to make that part of things. Going back to Chris Coyier again I found the papa bear, mama bear and baby bear breakpoint setup perfect for me. It makes media-queries easy and I can honestly say that I’m not even 100% sure what pixel points my breakpoints are at because I set them up once and then just made things flow from size-to-size from there. Variables, the @extend and the @mixin options are just what CSS needed to be brought to the next level. I will likely have a post in the coming weeks with more of my thoughts on CSS preprocessors so I’ll leave the rest of my thoughts for that.

My First WordPress Theme

The site concept detailed above started as a pen on CodePen where I spend a lot of time these days building a portfolio to poise myself for this focus on making this a real career without having a large client-base to work with. Then I dove into WordPress for the very first time. Being a fairly-seasoned PHP developer with my aforementioned appetite for rolling my own from scratch this was a bit of a change for me. Don’t get me wrong, WordPress is great at what it does and who it’s meant for. It’s just quite a change and I’m still getting used to “the loop”, a function for every session and page variable and a templating system unlike the others I’ve previously used. The most recent number I found from Matt Mullenweg (Co-founder of WordPress) shows WordPress powering a very impressive 18.9% of the entire web. Clearly it is a very fine CMS and I can tell from the 6 weeks I’ve spent on it that I’ve made a good choice.

My First WordPress Plugin

While I am thrilled with the famous 5-minute install of WordPress and the ease that it brings to managing the content on my site there are pieces of my business that I still need to run from a website. Historically I have built that into whatever framework I’ve used for the rest of the site and it’s been “easy” (relative to setting up the content management portion) to incorporate. With WordPress writing your own PHP to do your bidding isn’t quite as easy but certainly it has it’s constructs to allow for it. I did some searching and even tested out a few plugins but I couldn’t find any that do what I need for migrating code from one environment to another. I have a shared environment on my host where the two or three environments for a site all live within the same parent directory as each other and as this site. So having a script run to move files from development to test or test to production just makes sense and makes the act of deployment a couple clicks of a button and maybe 20 seconds of waiting for files to copy. While this plugin may not serve many users, it serves me perfectly and the learning I did about how WordPress handles plugins will undoubtedly come in very handy in future development on the platform.

What’s Next?

While there are many ideas floating around in my head for blog posts, projects and streamlining of my business the first thing on my list is getting all of my existing sites converted to a proper CMS to avoid any further headaches there. Some may be WordPress, some may need something different but I guarantee that someone out there has had more time than me to write a better, more fully-tested and more feature-rich CMS than me that will do the job that I should stop trying to do. From there I’ll be able to spend my time working on those blog posts and side projects to make this business what I always wanted it to be: fun.