Why I’ve ditched Bootstrap in favor of @inuitcss


inuitcssI recently discovered inuitcss and I’ve fallen in love! Why? It’s simple.

No, that’s the answer. It’s simple, as in, inuitcss is simple. So what is it, and what was wrong with Bootstrap?

inuitcss is sassy

What is sass? It’s this CSS templating language. It isn’t overly complex. But the idea is that you can express combinations of CSS patterns using loops, imports, etc., without the final effect being costly. SASS essentially compiles your CSS templates into a single main.css file that you pull into your web page. inuitcss uses sass most effectively.

For starters, inuitcss is broken up in LOTS of tiny modules. That way, you only pull in the modules you are interested in. For example, if you want to create tiny images with text next to them (Facebook status updates anyone?), you grab inuit’s object.media module. It is really small, and hence easy to grok what it does. You want layouts, i.e. dynamic, flexible grids? Grab the object.layout module. Each module is simple and nicely separated from all the other modules. Just pull in what you need. In the end, it makes it easy to slowly but surely, learn what its doing.

I could never figure out Bootstrap did because it was SO BIG and monolithic in size. I just imported everything, buckled my seatbelt, and held on tight.

inuitcss can be as small as you want

Each module has an enable flag. Some, to turn on the whole module. Some modules have multiple sizes. For example, object.buttons has small, large, full, and pill. You enable what you want, and only those parts end up in your final CSS file.

inuitcss has sizing options, and you can pick whether you want CSS classes like desk-1/2 or desk-one-half (or both!).

inuitcss doesn’t impose any design upon you


My app on a desktop

This is the part that really sells things. When using Bootstrap, I had to learn this structure my HTML had to assume. I always hated showing the web layer at presentations, because all that HTML takes up so much screen space. People don’t want me to talk about complex layouts from Bootstrap. So I would always wave it away, pointing out its Bootstrap, and jump to the rendered site. Yech!

inuitcss is simply a bunch of CSS classes. A few have some rules, such as the structure a media object must undertake (like a media element containing a media-img and media-body subelement). But that’s it! Most of inuitcss is how to style components, not how to string them together in the big picture. And for a CSS newbie like me, that is perfect. It makes the task of building a nice looking site not appear ominous. I don’t have to undertake learning all the ins and outs of such complex things as Bootstrap.

By using inuitcss, I was able to style an already built app, and not change gobs of structure! I find that to be a breath of fresh air.

For a pre-alpha release, inuitcss looks really good, especially for responsive!

My app on a tablet

My app on a tablet

One of my tasks was to take my 90’s looking web page and style it for responsive. I really didn’t know what I was doing. But inuitcss made it approachable. I worked with one part of the interface at a time. As I got the hang of its simple classes, I was able to fine tune things. Eventually, I overrode the default colors to plug in my own. I tweaked the line heights (with one setting), and then plugged in a custom font (Ubuntu font family of course!).

Not only did I want styling, I wanted it to work responsively. I had read about the gory details of coding it. I had read a detailed article about em’s, media queries, and other stuff. I figured I was in for a world of hurt given my lack of CSS knowledge.

My app on a phone

My app on a phone

inuitcss made it super simple! They had built in media queries to apply to certain styles and pre-built breakpoints. Basically, you can saw laptop-and-up-1/2, and it parse that as any screen resolution of the tablet device or higher, render with half of the screen width. Or palm-1/3, translating into if-this-is-a-phone-render-with-1/3-of-the-screen. They had one other setting that said to stop floating to the side, and instead stack vertically. I applied that to the palm breakpoint, as you can see right here.

The previous version of inuitcss was a single toolkit. I decided to take the plunge and use the pre-alpha, multi-module, multi-github-repo version. It means that I don’t have access to many of the existing components, like greyboxes. But nonetheless, I have built a sweet demo app for my technology stack that doesn’t suck. And of which, I don’t have to wave my hands because it looks like another Bootstrap cookie cutter project.

I can tell you this: my site certainly looks different (apart from me ripping off the color palette of spring.io).

I’m not going back

In the past, I have commented how Bootstrap makes me look good. While true, inuitcss makes me look wicked! And it seems easier.

I owe so much to @russmiles!

Russ's shipment of Learning Spring Boot, ready to distribute to conference attendees

Russ’s shipment of Learning Spring Boot, ready to distribute to conference attendees

Russ is a good friend of mine I met back in 2008. He was working for SpringSource at the time as a consultant. He had spotted my open source project, Spring Python, and invited me to make it an official Spring Extension. I was quite excited! Along the way, I had this crazy idea of writing a book about it. I had seen so many other Spring books that I wondered if I could do the same.

When I bounced this ridiculous idea off Russ, he immediately told me to go for it. Having written a couple books, he had suggestions on how to pitch it, who might be willing to publish something about what was frankly a niche project, and also brought on board Sylvain. Thus was born Spring Python 1.1.

Throughout the writing process, Russ provided a constant stream of useful feedback and assistance, a veritable mentor by any definition. (The irony being that I’m older!) Fast forward to now. My third technical published, Learning Spring Boot. This time around, I negotiated different options in my contract, I took the liberty of writing it in asciidoctor, and I’ve journaled about the writing the whole time to give potential readers an insight into what they can expect.

When my editor asked about ideas for marketing, I immediately suggested they send Russ a truckload of copies to hand out. He travels to all sorts of conferences. Naturally Russ leaped at the chance. You can see the picture of his shipment at the top of this article.

I have mentioned before that I picked the cover art for Learning Spring Boot to symbolize how the power of Spring Boot is built upon a strong network of roots underneath the forest. In that case, I was speaking about the Spring Framework underneath Spring Boot. Regarding my ability to write, Russ has been a strong foundation for my ever growing reach into the written world. What more can a fellow software geek ask for?

Cheers mate!

“Learning #SpringBoot” is now signed, sealed, and delivered /cc @PacktPub @JavaMUG

3021OS_mockupcover_normalI finally wrapped up edits and proofing the pre-finals. This book is officially completed. The only lingering thing on my plate is migrating the code base into my newly minted github repo. I hope you have already pre-ordered your copy.

According to my editor, they are uploading it to the printers tomorrow. I can’t wait to get my shipment!

I can say this: I’m exhausted. As I write this blog entry, my watch reads 49 minutes past midnight. Nonetheless, I’m glad to have finished such an exciting book. Can’t wait to hold a copy in my hands.

Good night!

I owe so much to the @javaposse. Congrats on 10 fine years!

javaposseYears ago, I discovered the Java Posse. It was a phenomenal podcast. Every episode was chockful of deep technical discussions, modern issues and revelations in the Java community, and just good old fashioned fun. I thirsted for every episode.

These gentlemen were technical experts who also had loads of real world experience. They pointed me to new technologies, emerging technologies, and fostered my desire to start read blog sites. Back then, I had discovered Google Reader and slowly accrued over 100 blog sites to monitor. All of this constant reading and digesting, along with links from the Posse themselves has made me a better developer.

If I had relied on the dusty books on my shelf, my skills would never be where they are today. By constantly growing and polishing my skill sets beyond what my job demands, I also grew a hunger that I realized couldn’t be satisfied at my old company.

When my wife discussed changing jobs so we could relocate, I had been encouraged to be bold. Asking myself, “where do I REALLY want to work?” The answer I immediately felt: “SpringSource”. I made it a goal of mine. It took patience, but a year later, I was presented an offer. And here I am.

Reading just today on twitter that people were attending the final episode struck me very strongly. I knew it wouldn’t last forever. In the past couple of years, their subject material was shifting away from Java and into other areas. That was natural, because the members had moved into other areas of the vast Java community.

In the end, ten years of podcasting is an incredible story. Congratulations Dick, Tor, Joe, Carl, and Chet! Your production has touched more people than you can possible imagine.


“Learning Spring Boot” is available for pre-order! /cc @JavaMUG @NashvilleJUG

3021OS_mockupcover_normalThe day is here! You can now pre-order your copy of Learning Spring Boot!

At this very moment, I am working with the finishing editors to polish up this book and get it uploaded to the printers. It should be out SOON! I’m naturally eager to get the word out. But it isn’t just about money. Spring Boot is something I’m incredibly passionate about. In fact, I have been working for the past five weeks on another feature, auto-configuration of Spring Security OAuth2.

Suffice it to say, I can’t wait to see it ship. I just hope you are as eager to get your copy as I am!

Use social media; don’t let it use you

I have seen a handful of posts and tweets recently that have summarized my own developing view of where we as people should stand in relation to social media. For starters, we need to recognize that social media is a product for which we are probably NOT the client:

If you are not paying for it, you’re not the customer; you’re the product being sold. –blue_beetle

Do you use Facebook, Twitter, LinkedIn, or anything else? In case you didn’t know, you aren’t the client. The client is the person that pays for it. So what are the consequences?

For years, I have put up with time wasting emails from recruiters sending me ridiculous job opportunities. I have seen past colleagues recommending me for technologies I never really used. It took me at least four years to realize this, but I finally shut down my LinkedIn account. And it wasn’t but a few days later, when I read a compelling article that outlined how GitHub is not a 1:1 match for your CV. I couldn’t help but back that up.

Another revelation in the slippery use of social media came from a long time friend of mine, when he tweeted this:


My friend Russ had signed up for some freebie service that would automatically track his own twitter usage and generate more content on a weekly basis. It took else to bravely ask him, “are you getting any value out of that?” This inspired Russ to say no, and drop it. To be honest, all those extra tweets annoyed me, but I didn’t feel I had time to pause and ask Russ the same question.

Today’s IoT seems to be all about generating traffic any way possible. We get drawn to the idea of generating more buzz about ourselves, regardless of any value, just so we can get everyone else to say “look at me!” Have you felt like this?

everyone-can-be-super-and-when-everyones-super-no-one-will-beI confess I feel a desire to do it myself. I couldn’t put my finger on it until I saw an article posted by Eberhard: Why Generation Y Yuppies are Unhappy. In summary, we are being fed this message that we are all special and that we should be ambitious as well. A good career is a given. We simply need to choose in what way. Hot top: if everyone is special then no one is special. Sorry, but we aren’t all special. We are all unique and each of us can contribute something to society. But it doesn’t mean we will all be glamorous, have a legion of follows on any social media network, or catch everyone’s eye. Those that expect this and are not actually seeing life shape out this way, are becoming unhappy.

Today’s social media provides this platform where we can constantly publish who and what we are. Only what we put out there is undoubtedly positive, polished, and the best of who we are. We never put out our faults and our mistakes. It creates pressure on our friends, family, and, well, everyone that things are going great. They should feel the same! If something isn’t going great for them, then something must be wrong on their end. What kind of message is that?

I have many colleagues that do different things. One of my buddies travels to conferences all the time. He has a bit of techno glamour because he often gives talks and has built a great network of technical fame and street cred. I have sometimes been jealous of that. But when I stop and think about what I would have to give up to travel like that, I realize that his life is not what I want. (And perhaps, my life is not what he wants!)

I don’t want to miss anything my family is doing. This was strongly justified when I met a particular person at SpringOne this year. It was someone that had been following me on Twitter for a bit. He walked up and greeted me in the coder’s lounge, eager to shake my hand. “It’s so great to finally put a face with the name!” I admit I was startled by this. We talked about technical stuff over lunch. I enjoyed that. I wasn’t the creator of something like Ruby on Rails. I wasn’t the inventor of the Spring Framework. But I was making my own small contributions to the Spring community and other people were recognizing that.

olivergierke_2014-Nov-02I see tweets from colleagues living in Europe. For them, it’s not such a big deal to jump on a train and travel to Prague or Switzerland for some a conference or a meetup. They snap pictures along the way and tweet them. Amazing stuff! I enjoy seeing them posted!

But I recognize that I have my own beautiful sights here as well. There are many times I’ve taken my family on my father-in-law’s boat to ride on the river through downtown Clarksville. Driving through the hills of Tennessee to Florida has many wonderful sights to take in. And taking your family to Disney World several times a year is something not everyone else can partake of. It takes recognition to appreciate what is in your own backyard and not take it for granted.

It feels as if today’s generation is all about getting on the hip and cool social media networks because that’s what everyone else is doing. The next time you do, stop and ask yourself, “Is this giving me what I want? Is this serving ME. Am I posting things that I enjoy so I can socialize with others, or am I posting things to make myself happier?” If it’s the latter, then you need to guard yourself.

We must all seek happiness through things that resonate with our core values. I have enjoyed writing computer programs since I was a kid. I learned how to push around a “turtle” (aka triangle) on an Apple II when I was a youngster using Logo. That was FUN. And I haven’t stopped doing fun stuff since. Twitter provides the means for me to follow people that post articles, links, and pictures of similar experiences.

But I am now learning how to control my social media involvement. As I wrote at the top, I shutdown LinkedIn because it didn’t help me. A few months ago, I started turning off Tweetbot during the day, because it was absorbing too much time. When I first signed up for Twitter, I started following lots of people. Now, I am starting to unfollow people when I realize they are not providing me any value. Are you sifting through your own social media networks like that?

This is why Facebook is now at the top of my list for deciding, “Is this of value to me?” I uninstalled the app from my iPhone almost a year ago, and I haven’t missed it! I feel close to being able to pull the trigger on closing my whole account. (I want to contact my high school German teacher, and it appears I can find here there. Perhaps we can trade email accounts for correspondence?)

To wrap up things up, I can tell I definitely enjoyed the conclusions of ‘Why Generation Y Yuppies are Unhappy” when the author wrote:

  • Stay wildly ambitious.
  • Stop thinking your special.
  • Ignore everyone else.

Being ambitious is what it takes to be successful. Realizing you might not be famous, special, or widely recognized is okay. Having a handful of very close friends you can truly depend on is more important.

The hardest one, though, is learning to ignore everyone else. Social media networks encourage us to look at everyone else and constantly evaluate and judge ourselves based on everyone else. Knock it off! Social media networks should be used to share, chat, and converse with your friends. It should never be used as a meter stick to develop our own self worth. If you ever find yourself doubting yourself based on what you have seen or read on social media, than double check the authenticity of that.

Progress Report: Learning German with Anki

After reading numerous articles on Hacking Chinese, I decided to dive into Anki. Anki is space repetition software. It lets you create any set of flashcards that you want, and then helps you review your deck daily in a more efficient manner.

Thanks to the iPhone app, it has become very easy to stick to a daily routine over the past two months. Looking at the current stats, I have done 13 hours of reviews. I recently ran out of “new words”. Now everything in my deck is either “Young+Learn” or “Mature”. Reviews that used to take me 10-20 minutes now take 5-8 minutes.

This is exciting! My deck has just under 900 flash cards in it. And I have realized that I am only getting started. It’s time to start adding new words to the mix. I have started to add new cards, in part thanks to German is easy!. That author has the funniest yet well written articles on the roots of German and English.

Am I fluent yet? Hardly. 900 words isn’t enough to hang your hat on. I read tweets from my German friends and feel like I keep getting closer to understanding it before hitting “Translate” on Tweetbot.

Nonetheless, I feel like I am better grounded to learn German than ever. But it’s important that I keep loading up my deck with new words and expressions. And getting them from a native German author is the best way to capture contextual sentences to build up my deck. If I can make a habit of extracting new content from every blog article and also creating reverse cards (where the front and back are swapped), who knows where I could be a year from now!

Why github and LinkedIn are not my CV

I recently read a compelling article, “Why github is not your CV“. I was shouting “yes yes yes” as I went through it.

As you may or may not know, I recently closed my LinkedIn account. I was feeling some of the same things the first article expressed. In short, these platforms don’t let you put together a properly edited and polished perspective. Instead, they put together a one-size-fits-all view and try to couple several features that they think work, like building contact lists.

I prefer to use my own blog site as the place to publish my public persona. I spend time on the sidebars showing key things I want people to know. I order things as I see fit. And I move things up and down based on priority. Try that with github or LinkedIn.

The best developers aren’t always found on github

Another critical nugget in that other article is the issue if your company won’t interview someone with no github profile. If having a github profile was a critical component, I would never have made it to the Spring team. I had worked for years at my prior company, polishing skills, and building rock solid apps…for the government. None of my work was staged on github.

Yet I had maintained a mission critical, 24×7 system. This was a system that evolved constantly and had tons of real world issues I had to solve. With a legacy, EOL’d, no books or public forums language. Your ability to contribute to OSS projects should NEVER be the end all/be all of your skill set. If you want to become a team leader for a particular OSS project, your contributions to that project are certainly of value. But the lack of such contributions shouldn’t be viewed as a negative.

As a meet more and more people, and travel more and more places, it is apparent that the universe of software development is infinite. Whether or not someone has contributed to OSS is simply not enough to slap a pre-determined filter on prospects, which is what recruiters are always looking for.

Book Review: “Vaetra Unveiled” by @DanielRMarvello

VaetraUnveiledCover_tnI just finished Vaetra Unveiled by Daniel Marvello. It was a delightful read! I wanted to write up my reactions to it.

Vaetra Unveiled is a classic swords-and-sorcery novel. There is action, suspense, and charm amongst the characters. Daniel does a great job at world building in the sense that I could imagine everywhere the story took me without getting bogged down in it.

For the record, I have also read The Hobbit and Lord of the Rings, paragons of high fantasy. Sometimes Tolkien’s world building, or rather culture/history/mythology building would overload me, causing me to sometimes skip over songs and other material.

I enjoyed seeing how magic was presented. Daniel’s take on magic is quite interesting. I promise not to give anything away. The main character, Jaylan Forester, in his various pursuits, begins to encounter magic, something he isn’t used to dealing with. He doesn’t understand it, let alone how it works. As he tries to solve the problem at hand, he discovers his own gifts in that arena. I won’t say more than that, but it was fun adventuring along with Jaylan as he tries to figure out the rules of vaetra.

Having read Doctor Strange comic books for years, I rather enjoyed seeing that vaetra isn’t just made up on a whim. Instead, vaetra appears to have a real set of rules that empower and constrain who can do what. No one has infinite power, and the various characters have to work together to free some innocent “mundanes”.

Which leads me to another good point. I enjoyed that there was real plot as well. As George Lucas stated, the point is to tell a story, not show off the set that was built. There were a couple moments along the way where I felt Jaylan was a bit dimwitted and I thought not “getting it” as fast as I thought he would. But it was only a couple. For what turns out to NOT be a 500-page tome of fantasy, it was nice that I could read it with the Kindle app on my iPhone in about five days. It certainly whets my appetite to the read the rest of the series.

The only con I can think of is that sometimes Jaylan feels a bit simplistic. Perhaps a bit too much of the good side. This may be my own bias after having read the first ten Jack Reacher novels, where when Reacher sees something wrong, he dispenses hard core justice. Jaylan is nothing of the kind. Perhaps a little more nitty gritty and some tougher decisions would strengthen Jaylan’s character. But at the end of the day, his character was believable.

About Daniel Marvello

Daniel has been of great assistance to me. I discovered his blog while working on Python Testing Cookbook. My desire to pick up and write the fictional novel i had started 20 years ago was rekindled as I helped my wife polish her trade novel. Googling about structure and tips, I found Daniel’s article on the details of a beat sheet. Suffice it to say, I wooed him to beta read Darklight. As a beta reader, I felt like he provided me top quality feedback in grammar, diction, and POV.

The side effect is that I developed a desire to read his own craft. A) I enjoy a good story. B) Could he really write fiction analogous to the critique he provided me? C) For a Kindle book, it only cost $3. D) Since my cheapskate days are behind me, I honestly like to support other people that seem to deserve it. I’m glad I did!

Goodbye LinkedIn, it’s not me it’s you

I finally did it. I’ve been debated for the past four years whether or not to close my LinkedIn account. When I saw an email come out about how you can get ALL your data in a single download, I jumped at the chance. I grabbed all my connections’ contact info, and put it on a private page inside my personal blog. Then I proceeded to dump LinkedIn.


Starting back in 2009, I wanted to relocate my family to Tennessee. My old company didn’t have offices there, so I started on a hunt to find a new position elsewhere. The first place I turned was all the contacts I had built via LinkedIn. Guess what? Not a single opportunity was raised with my so called network.

Perhaps that’s a bit drastic? Agreed. Which is why I didn’t drop it at the time. I found an interview with one company at the time through a past co-worker. Another interview was yielded through a recruiter I found through other means in the Nashville area. The best opportunity was when I met Keith Donald at the 2008 SpringOne conference. I had to travel to a remote conference to find out his office was five minutes from my own back in Melbourne, Florida.

Any who, a year after handing Keith a resume, he calls me up with a new opening. Suffice it to say, that’s how I found my way into VMware, and now Pivotal.

LinkedIn: 0  Users: 1

Updates to LinkedIn

I can’t remember if this was last year or two years ago. LinkedIn comes out with a new “plugin” to your iPhone. Essentially, it routes ALL your email through their servers just so it can add a bit of metadata about the person emailing you using your connections. The security alarms this threw off in my head were justified by the amount of negative press it generated in the blogger community.

GPG-signed messages would break. The possibility for MITM attacks was there. And pay note: this predated the discover of NSA snooping major companies.

LinkedIn: 0  Users: 2

A few months ago, I saw the ultimate thing. Someone had screen captured a headline from LinkedIn’s own website which read more or less, “You don’t like recruiters? We don’t either.”

Are you KIDDING me? LinkedIn, you make your money on upselling accounts so that recruiters have more access. This told me that LinkedIn would do anything to keep to come to their site. And in the meantime, the only emails I am getting are from recruiters. No friends, no colleagues, nobody. The people that wish to contact me either email me directly, buzz me on twitter, or reach me through another channel NO ONE Is using LinkedIn.

LinkedIn: 0  Users: 3

Anybody using endorsements today? I know. What a joke. This year, I have received several endorsements from past co-workers of my old job for subversion the CM tool. From people that don’t write software. A tool I did NOT use when I worked there. I tool I haven’t used for four years.

I get endorsements on Rational ClearCase. A tool I haven’t seen for just as long. Anytime i go to their website, I’m always seeing, “Will you endorse so-and-so for abc?” No NO NO!!!! Endorsements have no value.

Bottom line

  • Endorsements haven’t earned me a dime of value
  • Reviews from past co-workers and colleagues hasn’t earned me a dime of value
  • Security policies from LinkedIn are absurd

I have better control over my personal brand using this website. I can post links to what I think is important. I move things to the top of the sidebar based on relevance. Right now, Learning Spring Boot is at the top. Two months ago, I had SpringOne 2014 at the top. Two months before that, my updated keys due to heartbleed.

And I am in control of this data. No one is spamming me. Recruiters aren’t hassling me. The place where I can build real relationships is through twitter, my responses to questions on stackoverflow, and meeting people face-to-face at the Nashville JUG. Why do anything else?

If you’re still reading, then feel free to raise me on twitter. You’ll find the link on the sidebar.

LinkedIn, it’s not me it’s you.