Introducing sassy_s

I’ve been using Underscores (aka _s) for all my base theme needs since pretty much the day it came out. And I’ve been using Sass for more and more projects — so, inevitably, I started smooshing the two together.

Sass actually makes it really easy to do this, at least if you use the default .scss format. All valid css files are also scss files; you can just take your css file, change the file extension to .scss, and start throwing around variables and functions and all that Sassy stuff. But while it’s easy to get a project rolling that way, it leaves something to be desired organization-wise.

One of the very cool things about Sass is that it assumes that you’ll work with multiple files (partials, in Sass-speak) and compile them into one at the end; renaming the big stylesheet and working from there like I’d been doing still left me searching through a lot of lines of code to find what I needed. Ideally, I’d have a file for menu styles, a file for media styles, and so on. Even better, I’d be able to drop in a file of my own favorite mix-ins without recreating them for each project. I always set up my color schemes first thing, my base fonts and line heights, set up clearfixes and assistive text the way I want them, set up common styles for borders and boxes and the like; the values change, but what I’m styling has a lot of the same structure from project to project. (That one’s not included in the repo, but I’d love to hear about other people’s favorites.)

So to make more lazy level up my own practice, I finally took the time to make all this into a properly organized repo. Y’all can grab it here: https://github.com/sabreuse/sassy_s

A couple of notes:

  • sassy_s is just a refactoring of the stylesheet — not a complete starter theme. It’s designed to work with a copy of _s, not replace it.
  • I’ve provided links to a couple of beginning Sass tutorials, and a couple of inline examples, but there are lots of great resources out there for installing and using Sass. If you have Sass questions, they’re the place to start.
  • The sass --watch command will overwrite your style.css with every change. Start with a fresh copy of Underscores and copy over your style.css header first. Don’t add this to a theme you’ve already made (unless you’ve got it under version control!)
  • If you’ve heard that you can’t use Sass if your end-users don’t run Ruby on their servers, fear not! In almost all cases, you should be running Ruby and Sass on your development machine, then exporting your Sass to a normal CSS file. It’ll run just as well as any other theme.

A very short photo essay

20130107-184459.jpg

I’m not much for unboxing shots, but this the box the Raspberry Pi came in, next to a normal-sized laptop for scale.

20130107-184513.jpg

The house has working doors for the HDMI and ethernet ports. This amuses me way more than it probably should.

20130107-184539.jpg

Tiny computer installed in tiny ranch house. The doors are cute and all, but the hinged lid is actually the part I’m most proud of. Most of the Lego cases I looked at are either permanently bricked-in, or have a lid you have to pop off, which for me usually means rebuilding half the structure.

20130107-184559.jpg

Working!

NaCODEWriMo

(Name is subject to change. Oy, that sounds awful. But then, so does the original…)

Like so many ideas, this one started with a quick tweet that turned into a “hmm, this could actually be something”

For those who aren’t familiar with it, NaNoWriMo is National Novel Writing Month — the wonderfully crazy idea that thousands of total amateurs should sit down and write every day in November in order to finish a novel in a month. And they’d have community support, feedback, cheerleading, progress-tracking tools, and whatever else might help them along.

What they don’t have is the expectation that every novel that’s produced has to be a great masterpiece, or even publishable. A lot of people outside the project have sneered at NaNo over the years because it’s full of (sniff) amateurs who aren’t real, serious, writers; NaNo, in turn, just doesn’t give a shit. The people who do it year after year know that they’re getting something out of it regardless of the final product. They’re building a daily writing habit that they can take beyond this month. They’re finishing a thing — a thing that a great many people have dreamed of doing someday. And it turns out that a surprising number of them actually are “real” writers1, and they use NaNo to jumpstart projects, reset their work habits, and come out with perfectly serviceable shitty first drafts of something that — with much more work and editing and revision — will become a truly finished novel. Plus, they have a lot more fun doing it than any of the sniffers on the sidelines.

I’ve been thinking a lot this year about getting people into code, whether they’re beginners writing their very first Hello World, or experienced webheads who don’t identify as coders even when they write beautiful and clever code all day.

I live and breathe open source, and one thing every project always needs is people — their patches can always be improved with good feedback, but if the people aren’t there, full of enthusiasm and a sense that they can be a part of something really quite cool, then we’ve got nothing. Why not use NaNo-like tools of community support, feedback, and enabling the work to happen to nurture our own community?

So I’m launching this idea in hopes that it’ll be as intriguing for other people as it is for me. I don’t have a goal as concrete as a finished draft of a novel in mind2, but feel free to comment with any ideas for a good one-month chunk of stuff. And please spread the word, and keep posting your own progress!

  1. Let’s not even get into all the awful assumptions packed into that phrasing
  2. Daily LOC targets are a completely shitty metric for programming output anyway.

Plugin: Blogify Posts Menu

I hate “Posts”. Oh, I don’t mean that I hate posts, and in fact I’m kind of in love with making more of them now that I’m finally getting back in the habit.

No, I mean I hate the thing in the WordPress menu that says “Posts”, because when I’m looking at the menu for what to click, I’m thinking, “I want the blog”. And because I’ve seen about a bajillion new users get really, painfully stuck on Posts and Pages and What’s the difference, and How do I know which one to use, and even after explaining, still just want to know, “but how do I post to my blog?”

When it happens that consistently, it isn’t a problem with the users. They’re simply telling us that we need a better label.

This plugin changes the label. No muss, no fuss, no configuration needed. Scratch your own itch, or add it to your standard bag of tricks when building sites for other people. Grab the plugin and more details at the WordPress repository or on the plugin page.

Contrib-o-rama week 1

I started the year with a plan (I won’t call it a resolution. They don’t work and I dislike them.) to give back to my communities, both online and off, in small but countable ways, as a regular practice. Bigger bang-for-the-buck is on the list too — it’s an important goal of mine to do some substantive work on WordPress core this year, for instance — but the key to the bigger plan is making the small stuff happen every day. As such, the very first contribution of the year was a list of ideas that includes not only “submit a patch” and “release a plugin” but also smaller things like “answer someone’s question” and “participate in a meeting”.

If (like me) you’re just now looking for where to started, those small things are the big things. If (also like me) you’re prone to having a whiteboard full of big ideas and no time to make them all happen, the small things are a way to make sure you at least take a crack at something. But most important, the small things start to add up surprisingly fast. I got more theme reviews done in the first week of January than I did in certain whole months of last year, in large part because I didn’t want to leave too many gaps on that damned page.

I also want to kill that damned page. I started off with a manual list in order to give myself just enough pain to keep me moving on the plugin version. As I intended, it’s driving me nuts. So I’m digging away at turning the manual list into a slightly less manual list.

So what does it need to do?

  • Allow easy and automagical connection to the obvious things like WordPress Tracs and Github commit feeds
  • But don’t limit it to WordPress or for that matter to any one project. It’s meant to be a contribution-focused lifestream, not a project widget.
  • Incorporate things that don’t natively live online. The internet isn’t and shouldn’t be the only thing that counts. This is most easily done by allowing manual additions rather than limiting the stream to feeds only.
  • But still require that things are verified in some way: if a direct link to a changeset isn’t relevant, then… what? A URI, time/location stamps, anything else? What it points to gets into the somewhat philosophical problem of verifying anything; but at the same time, the stream shouldn’t be just freeform diaries or status. It must point to something real.

And maybe someday:

  • Social proof. Collaborators. Pretty reports and graphs and things. Others?

A contribution a day

Last year, I (again) watched various post-every-day efforts with a lot of hope and interest and (again) utterly failed to live up to them. Still, I like the idea of daily or weekly discipline, and while I know I won’t blog every day or even every week, I figure I can try to do something to contribute, however small:

In your tech community 1

  • Answer someone’s question in IRC or the forums
  • Write a really good bug report
  • Comment (intelligently!) on a trac ticket
  • Participate (don’t just lurk) in a team meeting
  • Review a theme
  • Document
  • Submit a patch
  • Release a free plugin
  • Release a free theme
  • Post your work-in-progress in public. Even if it’s not ready for release, even if it’s just a gist sketching out an idea in pseudocode, it may help someone else. Plus, sufficient eyes, all bugs shallow, yadda yadda.
  • Write a blog post with the intent to inform or debate. As opposed to, say, posting cute pictures of teh kittehs. You can count those as a bonus, if super-cute.

In the outside world:

  • Next time the call to fix your parents’ computers comes in, do it in a way that teaches them to be one small step more self-sufficient the next time.2
  • Volunteer your tech skills for a non-profit in your real-world community.
  • Teach kids to make robots, write code, build games, or just tinker.
  • Give a presentation. Start with your local BarCamp if you’re not yet the kind of rockstar who gets flown around the world to talk.
  • Join a local meetup. Present at a meeting. Help organize a hackathon, pair-programming day, or codefest, and help someone less experienced there.
  • Check out Random Hacks of Kindness or a similar geeking-for-global-good organization.

Obviously, these aren’t all one-day ideas, and you don’t have to check off every box on the list. But I think it’s worth making a habit of contributing time, skills, and knowledge. It makes the universe a shinier, spiffier place. So who’s in?

UPDATE: To start out, I’m tracking things on this page. Better and less manual  developments to come.

  1. As always, my examples are mostly WordPress because that’s where I hang out. But most of this, or something very similar, also applies to whatever your project of choice.
  2. Teaching technology is HARD. I used to make a living at it, and it’s miles easier to just grab something and fix it than to help the user understand what to do themselves. It’s also incredibly rewarding. Try it sometime.