Mo’ Better Responsive

I’ve pretty much completed a first pass at making all the pages on my web site mobile-first responsive. Along the way I made a hit-list of items that were too much trouble for the first pass, so now I’m circling back to them. They mostly fall into one of a few categories. First is tweaking the existing styles and fleshing out new ones so the page layouts look good under all resizing and formats. Things like font size, padding and spacing. There’s also a few pages with unusual formats that still have to get converted. Some of this gets pretty subtle and I didn’t want to let it slow me down, but it’ll be worth it. Second is adding new content to the existing sections, and I’ve been doing this on an ongoing basis. It’s getting easier now, as the templates are all largely complete. You’ll notice an expanded roster in the music section, for example. Third will be some all-new presentation formats for the audio and visual elements of the site, but that’s still a little ways off. So for now, go click around and see what you can see.

The Devil You Know

Not too long ago I took a job with an ad agency as a consulting software developer. This was not the first time I worked in advertising. Many years ago, I co-founded Radical Media’s interactive division back in the 1990’s. (Technically they were a media production company, but alot of their clients were ad agencies, including the one I took a job with, and there’s alot of overlap) and I did all sorts of fun and exciting and groundbreaking stuff there. Since then I’ve done freelance ad jobs here and there. It’s actually surprising how little the ad business has changed in twenty years, the corporate culture and all. Stuff that was innovative back then is just business as usual now.

Being a temp position, so there’s no telling how long it’d last. In orientation they gave us alot of feel-good propaganda about how great advertising is, a lovely coffee table book and all, and really who would expect anything less. Good that they really cares about visual design, and to be able to use my design skills, and nice that they’re small enough so you can talk to people on your own floor if there’s some kind of tech problem. The place was totally chaotic however, in a sort of sleepy, hurry-up-and-wait kinda way. I spent three days waiting around for a computer, using various loaners. The computer they finally gave me was messed up, so I spent two more days trying to get it working before giving up and getting another one.

When I got on a project, they threw two other new hires onto the same piece of work. It was not deep but it was wide, and they really wanted to get it done fast as possible. Must’ve been money at stake with the client, so from their perspective this was a sensible way to do it.

The entirety of the work was tweaking CSS to make the site match the comps. Problem was the CSS, which was supposed to be hierarchical in an OO sense, was really a tangled mess. On top of that, there were hundreds and hundreds of auto-generated files that were not under .gitignore, so every time you checked in code there was a shitstorm of conflicts to wade thru. So with six people working in parallel, we all kept overwriting each other’s changes. I never lost any of my work, but most of the others weren’t as careful. Fixing any of this was out of the question cuz it would’ve blown the deadline.

On the third day our git repo exploded and work ground to a halt. The devops guys restored by the next morning. Fun fun fun.

So we worked thru the weekend. By this time we were completely off the script, so I literally spent a whole day with creative director, with him going “move that 10 pixels down” and me making the change in the code, and then him going “hmm, no, move it 5 pixels up.” He seemed a little put off by me questioning why their process wasn’t better. Like I said, the industry hasn’t learned anything in twenty years.

Then Monday the deadline came. I spent another day doing some minor fixes, and that was that. We spent a couple days chilling waiting on a new project. I spent my time reading up on git to see if I could avoid another gitpocolypse in the future, and on responsive frameworks for CSS.

Then we got a new project, a web site for some investment bank portfolio services. Again very CSS-heavy, with some animated charts’n’graphs and things. They gave us access to the git repo, but told us not to start work just yet, as the account people were still working things out with the client. A couple days after that they the deal fell thru and at was that. Of course they thanked us profusely and sincerely hope they can work with us again. And so it goes.

Responsive, Mobile-First

It’s all the rage these days in web development to make your web site responsive and mobile-first. What that means is that it will look good on your phone or tablet, and you don’t have to rewrite the entire web site to do that. This is something I’ve been meaning to do for my site for a long time.

I recently took a consulting gig where making everything responsive, mobile-first is the main focus. There’s a ton of frameworks out there to help you do this, so I spent some time surveying a few of the more popular ones. It turns out the alot of these frameworks are pretty heavy, and pack in alot of design assumptions that might or might not fit with your vision.

For my own web site it’s total overkill, so I decided to roll my own responsive grid work. So far it’s pretty basic, but I can add on to it as needed. The basic definitions can be found at: zingman.com/css/zmpGrid.css. So far I’ve implemented it on two pages: the main home page at zingman.com and the music landing page at zingman.com/music. Go ahead, resize the window, then go look at it on your small, wireless device! It may take a while to update the entire site, but everything is all tempalated out already, so look for more responsive, mobile-first pages coming soon!

The Devil You Don’t Know

I recently had to turn down an offer for a bank job. It was tempting – it seemed like a very cool project, right in the sweet spot of my skillset, a combination of front-end and full-stack, of JavaScript, Java and API design, on the same scale as what I’d been doing in Platform Engineering, and a good opportunity to learn about the finance industry.

However, the pay wasn’t great, no better that I’m making now. But the real problem was it was thru a headhunter. All seemed okay until the bank decided they wanted me and the headhunter made me an offer. When it seemed like an offer was in the offing they actually asked “should I just accept whatever offer they make?” Seriously? Then he came to me with the offer and wanted me to say yes on the spot.

Naturally I had questions and concerns. It was a temp-to-hire position, so the main issues were around the move to the staff position. Jeannie was in a similar situation a year ago: they told her it’d be a six month contract-to-hire, but then they dragged it out for a year, and then when they offered her a staff position the salary was lower than what she’d been promised. I told all this to the headhunter (same agency btw), that what I really care about is the staff position, the temp position is just a speed bump, and I wanted to negotiate the terms of the staff position upfront. He’d mentioned a 3 to 6 month contract and a VP level staff position. Imagine that, me bank VP! And my kids’ friends all think I’m a hippie. But dude wouldn’t offer anything more solid than his “expectation”. When I pushed he wouldn’t budge, nor commit to anything firm. Dude insisted I give him answer by the next morning. The time came and went. Meanwhile I talked to the guys at the bank directly, and they were talking about up to 18 months as a contractor and an as-yet-undetermined staff title.

So I had to pass on that one. Headhunter dude was then like “well if you change your mind let me know.”

Plus the commute was kinda long anyway. Ah well.

Technical Reference Guide 2015

As some of you gentle readers may know, I’ve been a-lookin’ for a new job over the summer and into the fall. A mainstay of the industry now is the dreaded tech interview, which wasn’t really a thing last time a went a-huntin’ close to ten years ago. But now they’re all the rage.

In a way it makes sense, cuz whoever is interviewing you needs some way to evaluate your skills and all that. There’s no way they can judge if you can write advanced, subtle and poetic code, so they settle for a much lower level test: can you regurgitate some basic stuff? Still, it’s not always easy to think on your feet and come up with a good answer on the spot. I haven’t used alot of this stuff in my day-to-day in years. Doing a tech interview is a skill in its own right, a kind of performance like jazz improvisation, and it took me a few times to get good at it.

Along the way I compiled a handy quick reference guide. Basically every time an interviewer asked me a question and I didn’t know the answer, or more commonly just wasn’t able to express it in a clear, structured and smooth manner, I wrote down the question, went home and looked it up, and added to my guide. Then I circled back and studied up for the next interview. Before too long I started getting a fair number of repeat questions, and was able to nail more and more of them.

This is not meant to be any kind of comprehensive tutorial, just enough to remind me to spew forth some talking points. As you can see by the topics covered, I cast a fairly wide net with my skillset in the kind of position I’m going for. Really this is a symptom of the state of the industry these days, the way jobs are balkanized by programming language, more than my own itinerant tendencies. “Are you a java guy or a javascript guy?” Oh please. I know like twenty programming languages. And if I don’t know any particular thing I know how to look it up. It’s also a fairly interesting snapshot of what languages and frameworks an in vogue these days, totally different than 2007.

So here you go.

Endless Summer Slacking

I just got back from a fun and relaxing camping trip. Perfect weather, lots of jamming on guitars, canoeing, swimming in the lake, cooking of fire, just great. Back home again now, doing all kinds of stuff. Since Labor Day is late this year it feels like we get an extra week of summer. Still one more week until the kids go back to school.

Some happy news! Gus back playing the drums again and the Left Hook is back in full swing. We’ve had a couple rehearsals at my house now, with him on his electronic kit. Good to have the group jamming once more. Going back to the studio and real drums next week. In our hiatus the rest of band spent our time working on arrangements and vocal harmonies, so the level of playing is increasing. We also added five or six new songs to the set. We’re actively working on bookings gigs now. We have a bunch of irons in the fire, and one confirmed date – our triumphant return to the Fisherman’s Net in October. More on that as the time grows near.

I’ve integrated the bench press into my workout. This enabled me to drop some other exercises so the total length of the workout remains the same. I’ve been going up in weight rather conservatively, but I’m up to 200 pounds now, in two sets of eight reps each. I can feel it more in my elbows and my ribs than anywhere else. I’m also up to 8 pullups.

Meanwhile, a couple weeks ago I got a call from Google, trying to recruit me as a software engineer. I passed level one with the recruiter, and it was onto level two, a tech interview over the phone. They sent me a packet with stuff to prepare. Man that company has alot of attitude, alot of hubris, but not very, um, mature. Seem to take it for granted you’ll be absolutely gobsmacked knocked out that they want to talk to you. Selling points include “we have an ice cream truck on the 8th floor of our office!” Then on the topic of how to dress they say “dress however you feel comfortable, but remember hygiene is important.”

They had some advice on what you’d need to know, so I spent a week studying up on all kinds of stuff I haven’t really used much since college: directed and undirected graphs, binary search trees, heaps and stacks and hashes, matrix math, sorting algorithms, big-O notation, and a bunch of more general stuff on Java language and systems architecture. Google must be hiring alot right now because twice that week I came across someone’s post for a Google tech interview cheat sheet. I made my own notes, but they’re so dense it wouldn’t make sense to anyone but me. In the process I came across a good approach for representing the state of a piece of folded paper if ever get back to working on Foldinator.

The day before the camping trip the interview came, and they didn’t ask me about any of that stuff. Instead the topic was serialization/deserialization. The format is they ask you to write a program off the top of your head, and as you go they put in more requirements. I did well, solved the problem and had a good discussion and all. But was I knock-your-socks-off awesome enough for Google? I guess we’ll see; they’re supposed to let me know in a week or so if I advance to round three. It sounds like that’s more of the same, but on site and with five back-to-back sessions in a row.

Web Site Evolution

Like the legendary cobbler with worn out shoes, it seems like I’m never able to find the time to work on my own web site. Indeed zingman.com is now twenty years old, and some pages go back to the beginning. Over time I’ve added various bits of php, css, sql, javascript, and wordpress, but I’ve resisted doing a full-on rebuild in an all-new framework and technology stack for several reasons, including that it’s a large time investment, the technologies keep changing, and it’s not really necessary anyway, at least right now. I am thinking of making everything responsive for mobile devices, but there’s alot of pages in there. So I upgrade things on an as-needed basis, always making things more automated, and growing closer to the vision step-by-step. Meanwhile everything runs extremely light and fast.

Over the spring I managed to complete a fairly major upgrade cycle for styles and page layouts, with everything finally in a stack of hand-built php templates and modules. In the last couple weeks I’ve started another round of work. This one is to put all the image links into popups. Better user experience, less clicking back’n’forth. I used lightbox for this; it’s one of the simplest javascript plugins out there for this purpose, and so far seems to work just fine. Have to do a little tweaking of the styles, but that’s about it. So feel free to click around to different pages and check it out.

Next step is go thru the origami pages and add support for multiple images for each module. This will involve refactoring some of my templates to handle photosets of different lengths, so I want to give it a bit of thought before I plow on ahead. Check back here in a week or so.

Change in the Weather

It’s been a long, cold stormy winter. Snow day after snow day all thru the second half of January, all of February and even three more snowfalls the first week of March. Enough already! And then suddenly two or three days ago the sun came out and the temperature rose above freezing. Now the snowpiles have dimished from five feet high to three feet, and you can even see a bit of lawn here and there. On the other hand, the remaining snow is black slush from hell and the potholes are in full bloom. Still, it feel like spring is finally here!

I spent most of the winter intensely busy at work. My previous project ended around the new year, and now I’m making the next-generation content management platform. It’s a whole new technology stack, with HTML5, AngularJS, JSON, Git, Gulp, Lint, Less, Vagrant, Karma, Protractor, with Scala and Akka on the middle tier, and lots of other good stuff. Also a major upgrade to our processes and best practices, including full-on test-driven development and continuous deployment and integration. So there’s been a lot to put together and come up to speed on in a short time. We also have a new and expanded team, including four people from my old group and three new guys with more one the way.

Our team is distributed, with guys in Italy, Poland, Nova Scotia, New Jersey, Queens and Westchester, so I’ve been working from home alot more. We have daily video conferences that include GIT pull requests, code reviews and design and planning sessions, which sometime go on for a half a day. Been also putting in alot of late nights and weekends. Still, I guess the best way to learn something new is to jump in the deep end with full immersion. It looks like I’m past the steepest part of the learning curve now. We have a big milestone demo coming up a couple weeks and it looks like we’ll actually get there.

And So It Goes

It’s August now. Been busy with camping trips, seeing more family and friends, and getting things done at home. Work is still pretty busy too. I just finished a little skunkworks demo for my boss’s boss. My boss dropped it on me as she was headed out the door for vacation. Nice. Along the way I learned angularjs. It’s been a while since I’ve been deep in the javascript world, but angularjs seems like a nice framework, very helpful in writing logical, organized code. Or maybe my demo just happened to be in the sweet spot of what angularjs is good at.

Lots of churn on the band front. Right after my last post on the topic, our bass player and my good friend Mike quit the group. We got a new bass player now, who I found quite by accident. My friend Charlie guitar asked me to sit in one evening with his jazz group. I was unable to commit, but didn’t want to say no because we were scheduled to rock rehearsal that night, but with no bass I wasn’t sure it was on. I hit reply to all instead of just replying to Charlie, and one of the other guys in the jazz band said he’d be into playing bass with a rock group. This really confused me at first cuz the guy, Rob, plays piano in the bebop group. So he came down and it turns out he can jam on bass. He plays a fretless, which is pretty interesting.

Now the challenge moves to building up a set, getting more tunes and getting them tight. Our guitarist Jeff favors basic 70’s guitar rock and is reluctant to learn new material outside of his comfort zone. I like some of that stuff, but too much is not very interesting on the piano. So I’m trying to broaden the palette and some Steely Dan, Billy Joel, Stevie Wonder, maybe some Rush and Genesis and some other piano-oriented songs, as well as some more funk, ska, soul, new wave, etc. Should be interesting to see where it goes.

Meanwhile I have several other irons in the fire. I answered an ad for a group looking for a keyboard player in a Ronnie James Dio tribute band. They have some gigs lined up, so that could be fun. I also got an invitation to sit in with a group doing Beatles songs at some fair in New Jersey in a couple weeks, singing and playing piano with Dr. Pluto on bass. And lastly I’m trying to get Buzzy Tonic Live off the ground. Asking around to line up musicians. More on that as it progresses.

Random Reflections

Let’s see … lots of bits and pieces these days.

I spent the weekend hanging out with Seth and Mark at Seth’s cabin in the Berkshires. Good to get away from the wife and kids for a spell and eat lots of barbecue. We went on a nice hike to a waterfall. You should know that Mark is an amazing musician and leads the band Cracklin’ Foxy out of Saranac Lake, NY. I learned the only music Mark hates more than Happy is anything from the soundtrack to Frozen. Also Mark has grown a mountain man beard. I think it was 20 years ago this weekend Seth invited my out on his dad’s sailboat and we cruised up an down the Hudson.

I’m over the hump on my Scala class. It’s actually making sense now. I submitted the homework on Huffman encoding and got a perfect score. I’ll admit I googled the problem, but hey, that’s what you do in real life when faced with a programming challenge. Rather than just copy what I found, I took several different solutions and read them and compared them until I understood what they were saying, and then created my own solution that best expressed it to my sensibilities. This week I finished the last lecture, and there’s two more homeworks to go, but the last one is another double, pushing up against OUSA.

Jeannie is back at work, starting a new job after switching jobs followed by a spectacular flameout a couple months ago. Woo-hoo. Meanwhile the kids are counting the days until the end of school.

I’ve been rockin’ my own work of lately. Ever since Olga got sacked it’s been so much easier to concentrate. Today at work I wrote over 200 lines of code! Also I came across a situation (marshalling data parsed out of an xml response) where the Scala approach is better than the way I’ve been doing it in Java all these years. Would have been far less code.

My train reading these days has been the Conan the Barbarian series by Robert Howard. It turns out these were originally published in Weird Stories magazine in the 1930’s alongside the first C’htuulhu stories, and Howard and H. P. Lovecraft were friends similar to Tolkien and C. S. Lewis. Conan is perfect train reading. I had to give up Game of Thrones because it got to be so rambling and pointless. The Conan stories OTOH are nice and short, with tight plots, heavy on action and with a supernatural twist. I can usually read a whole novella between my morning and evening commute.

The Relix are officially defunct. Our drummer Gus finally quit last week, frustrated with auditioning new singers. He’s now trying to start a new group with Mike and me from the Relix and some guys from his other band, which also crashed and burned. We’re getting together later this week. I learned Space Truckin’ tonight in honor of the occasion.

Meanwhile I’ve written and begun recording two new tunes. One is called Your Dancing Shoes, and it’s a catchy blue-eyed-soul number with a big horn break in the mode of Domino or Sir Duke. I’ve asked Lee, the erstwhile Relix guitarist – the jazzy one – to lay down a guitar track for me, and he enthusiastically agreed. Now I just have to get the bass part clean enough that I’m satisfied with a take. I’m going for no punch-ins on this one because the there’s not very many gaps in the part, and it’ll just groove better.

The other song is called To Be a Rock, and I plan on asking Frank, the other – straight ahead rock – Relix guitarist to sit on that one, cuz it matches his style. In fact I wrote these two songs with these guys in mind. I hope he agrees because even though I could probably play the part myself, I want to capture his sound, which I have no idea of how to reproduce. This song still needs some development; I feel like it’s missing a part toward the end.

Since I’ve become a regular member of my Jazz combo I feel like I should learn the tunes. I have an older version of the Real Book (1980’s) than everyone else, and it’s just chock full of errors. I also want to get my chops of for slaloming changes of the bebop and bossa nova numbers. I finally had a chance to practice sax this week. I’d been noticing for some time that it’s been getting harder to pop out those low notes. I went over the horn with a leak light but the low notes are all tight. They ought to be; I just had the horn repadded two years ago. I finally discovered the problem is the octave key. So tomorrow I’m gonna call up Virgil Scott and see when I can get the horn in. For now I’ve fixed it with electrical tape. I noticed it’s the third spot on my horn fixed in such a way.

Live update – four firetrucks pulled up to my neighbor’s house a little while ago. They loitered four about an hour and just took off.

The last topic for tonight is origami. I finished my Dimpled Dodecahedron, wetfolded it and all, and it came out very nicely. Only one step away from the Stellated Dodec, v2. The closing is working out different than the previous model since I can’t remember how I did it before. I still have two weeks before the convention and hopefully I’ll be able to finishe a few more ideas. The big problem now is that my folding style has grown so complex it’s very difficult to fold these models even for me.