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.

It’s All Part of My Rock’n’Roll Fantasy

Lots going on these days. I finally had a long weekend to relax and catch up on some stuff. Went up up to see Martin, Kath and the kids. That was very nice. Martin is in his mountain man phase now, working on a ZZ Top beard. Also got himself some ducks and chickens and honeybees, and is thinking of getting a cow. Wow. Abbie is now old enough that she’s walking and starting to talk and is a full-on little person. Charlie and Match are happy and energetic and sweet and curious.

My scala class remains really cool but is also a huge time sink. I’ve talked to a few people including my friend Nick, and no one I know who’s taken this course has completed it on the first try. I’m now more than halfway thru – up to week 5 of 7 on the lectures and homework. My last homework was the first on where I got less than a perfect score cuz I ran out of time. Couldn’t do it during the workweek due to deadlines, nor over the weekend due to visiting Martin. Ah well, this week’s lecture seemed pretty easy, but the homework is to implement Huffman encoding. On the plus side my team at work completed our second perfect sprint in a row.

Unfortunately the lowest thing on my todo list is working on origami. The convention is coming up in just a month and I want to have some cool new stuff. Since I gave my one-and-only Stellated Dodecahedron to Uwen for the Copper Union exhibition, I undertook to fold another one. It’s been sitting ninety percent done on my table for three weeks now. On the way I came up with another idea in the Dodecahedron series. I’m calling it the Dimpled Dodecahedron and it closely resembles the Archemedean Icosidodecahedon. It’s sitting there ninety-five percent done. Ah soon.

Speaking of origami, my publisher is trying to arrange an event at Kinokiyuma bookstore during the OUSA convention, and also drop-shipping a shipment of my book to them and to OUSA in time for the convention. I’d be great if that works out.

But the main monkey business this days is with music. First off, my jazz combo invited me to join them as the main tenor man. Of course I accepted and am looking forward to attempting to channel John Coltrane and working on my soloing skills. Also thinking of dusting off some of my originals from Event Horizon and seeing how they go over.

Also, after weeks of just practicing, I’ve gotten back to recording. Worked on Your Dancing Shoes last night, got down a solid take of the piano part, which forms the backbone of the song.

But, you must be asking, what about the Relix? Last we heard the group was on a positive upswing. Well, all human organizations are fragile, and the Relix is entering a, um, transitional phase. First our guitarist Lee gave notice. Lee was the 12-string and hollowbody guy and added a perfect complement to Frank’s straight-ahead rock sound. The good news Lee agreed to lay down a guitar track on Your Dancing Shoes, which is right in his zone.

Immediately after Lee our singer Paul gave notice. Paul is going thru a tough time right now, but it still came as a shocker since it seemed that music was the main source of joy in his life. Of course not having a lead singer is a bit larger problem than losing a second guitar, plus Paul is also a great harmonica player and guitarist too. So we’ll see where it goes from here. We’ve got some replacement singers lined up to audition, but even they’re good, chemistry is important too. The guys in the rhythm section have both mentioned the idea of starting something new and have independently asked me to join them. I think if I start something new I think it’s gonna be Buzzy Tonic live, doing a mixture of my originals covers that showcase my singing and piano playing and reinforce the style I’m going for. Kinda getting back to what I was trying to do with Erik, but not so unplugged. Not sure if I’ll be able to fit the sax in, but that’s a secondary concern. The minimum viable product would a be a power trio – me with bass and drums, but I’d prefer a guitarist as well as a co-lead singer (Mike and Gus both sing backup) and preferably someone who writes. Even so, I have 20 or more songs ready to go, including 6 or 8 of my originals. Like I say, we’ll see how it goes.

Functional Programming in Scala

Lots stuff going on these days. I mainly finished the spring cycle of work on the cars, washing and waxing and getting ‘em into the shop for routine maintenance. The only thing remaining is to get the Mustang in for an oil change and the fluids topped off. Also started mowing the lawn a week ago. All our flowers are doing really nicely and the trees are all a-blossoming. The weather has been getting up into the 70’s fairly consistently, although we’ve had our share of rainy days. Ah, spring at last.

I’ve been taking a Scala course from Coursera, taught by Martin Odersky, the language’s inventor. This is after having read a Scala book over the last few months. It’s in the second week of the class now and it’s pretty intense. The lectures and books are easy enough to understand, and in fact very illuminating and even deep. But when it comes time to the assignments it feels like starting over, between the overhead of getting set up, the strong functional programming paradigm, and the language’s wacky syntax. It’s more than just learning a new language, it’s a new way of thinking. I did some Lisp in the 90’s but now I have to unlearn all my Java knowledge. Right now the focus is on using recursive functions in place of loops. Hopefully I’m far enough the learning curve that it should get easier soon. Either that or my Java code will start getting confused.