AJ Dyrbye

Web Developer and Digital Humanist

Page 2 of 5

Child Themes, or, When Developing From Scratch Drives me Crazy

Over the weekend, I started work on my new spare-time project, developing a new theme for this site.

My current theme is, to put it mildly, driving me batty. It started life as a learner theme I developed in my course work for the SkillCrush WordPress Developer Blueprint. Though I’ve put a lot of work into it so far, there is a great deal left just to get it up to speed for what I actually need from my website. While I’d love to keep working on it, I’ve reached a point of diminishing returns: focusing on fixing it up is holding me back. It’s time to move on.

Thus, in the interest of Actually Getting Stuff Done on this website, I’m now working with a free, responsive preexisting theme that, rather than having to constantly bug-hunt and develop, I can adapt to my needs instead. In addition, I find it fascinating to see how a more established developer constructs a theme.

In my (admittedly still limited) experience, child themes are an entirely different kettle of fish than developing from scratch. I have found that it’s a process of discovering design decisions, and exploring what’s possible by trying out what I’d like to implement, and observing what works and what breaks it. It’s become pretty clear that while I can bend a theme to my own preferences, that theme can only flex so far – any changes I make have a ripple effect on the very character of the theme.

For example, I spent Sunday working on a child for Anders Noren’s Radcliffe only to abandon it. As much as I like the simplicity of the theme, it’s a single-column design. Radcliffe’s design is blog-forward, promoting visual hooks and strong titles to entice readers to click on a post. It’s got a beautiful navigation aesthetic for the top of the site, but it pushes all the widgets down to the bottom. Since I use widgets pretty heavily to welcome visitors, promote my social media presence and provide capsule information about what my interests and strengths are, I can’t afford to promote my blog posts above all else as the design intends.

With that in mind, I decided to try adding a left or right column, to blend the visual appeal of its body column with the sidebar I need to effectively convey who I am and what I’m about. Several hours of tweaking and codex-searching later, I discovered that adapting Radcliffe to accommodate just one sidebar isn’t practical the time I have allotted for this project.

And so, I learn and move on.

It’s hardly wasted time, however. The joy of WordPress is that if I find a theme I like, odds are good that the same designer has another one with a comparable aesthetic that suits better. In this case, I’ve simply selected a new theme with which to begin again: Hemingway, another of Anders Noren’s themes with a similarly clean aesthetic and a pre-established support for a two-column layout. It shouldn’t take more than an evening to transition the changes I made to Radcliffe over to Hemingway, and then I can move on to other things.

Aside from experimenting with sidebars, I’d merely re-implemented my landing page and was beginning on colours, fonts and layout for the rest of the site. I also have custom archive, post, 404 and portfolio pages planned, which should be much faster to implement now that I’m not having to reinvent the wheel. If I haven’t broken anything too badly by this time next week, I’m aiming to take it live.

And then, the real fun finally begins: adding some of that JavaScript functionality I’ve been learning. Speeding up my site’s load times. Designing a logo for myself. In short, doing all the stuff I couldn’t do because I was caught up on how much I still needed to do just on my learner theme.

Thank goodness for WordPress’ theme library, and its child theme support. With the shift in focus they permit, it’s not going to be long at all before I can start looking seriously at from-scratch theme development again. In the mean time, I’ll have a fully functional site I don’t have to cringe at.


Reflections on the LLC jQuery Workshop

This last Saturday was the jQuery workshop run by my local branch of Ladies Learning Code (LLC). I can honestly say I got out of it what I wanted, namely an introduction to the relationship between JavaScript and jQuery and some real-world examples of how they’re applied. Nevertheless, I’m left ambivalent

To be perfectly clear right out the gate, this is by no means a reflection on Ladies Learning Code, its fantastic organizers, the instructor or the mentors. They all lived up to the high standard I’ve come to expect from the organization, and I’m pleased to say that I’ve committed to mentoring at the upcoming CSS and WordPress workshops. In fact, I would like to give a shout-out to Bree for all her hard work behind the scenes, Kim for handling her first time in the instructor’s chair with confidence and grace, and Susan for her personable and knowledgeable mentoring.

The ambivalence comes from being in that funny in-between as a learner. I’m not exactly a novice, but hardly experienced. I came in already knowing programming fundamentals – variables, loops, objects, methods and so forth – which meant that large parts of workshop was a retread for me. Rather than learning the concepts from scratch, I used my participation to 1) deconstruct how the lesson plan broke them down and built on them (smoothly with little wasted space or time – bravo!), and 2) annotating the guided changes to the learner package web page with my own observations connecting LLC’s approach to that found in Eloquent JavaScript.

This wasn’t particularly a surprise; I knew going in that this workshop is geared toward learners who don’t have prior experience with programming or JavaScript. Nor do I regard it as a drawback. There is enormous value in having widely-accessible beginner-friendly sessions like this; my appreciation for it is a large part of why I’ve chosen to volunteer as a mentor wherever I can of late.

In terms of my own learning, I wanted to come out with some reinforcement of what I’m already learning. I can honestly say I’ve achieved that. I’m more confident that I’ve made the right choice in how I’ve approached JavaScript this time around, and that I can start working with it on a web development level without getting bogged down as badly as I did the first time around, with my overly ambitious game idea.

All in all, I gained a better idea of how the moving pieces on a website with JavaScript work in relation to the CSS and HTML, and of the types of things JavaScript and jQuery are commonly used for. It revealed for me that a few things I’d thought were straight-up advanced CSS tricks are actually some pretty simple jQuery, and that jQuery also streamlines implementing some pretty neat interactivity features, things that I’m now eager to try out on my local WordPress install. On that front, it was good to have a primer on event chaining and timing, particularly in relation to using JavaScript to implement event-specific CSS modifications. I also appreciated the segment on plugins; I only had a vague notion of what they entail before, one largely informed by working with WordPress.

It is at once satisfying and a little maddening that I’m at the point in my learning where this particular workshop couldn’t offer much of a challenge. The only issues I ran into over the course of the day can be traced to two things: still being in the adjustment period with Windows 8 after years of nothing but OS X, and a syntax error in which I forgot the period in front of a method and just couldn’t see it. As it stands, the latter tells me that checking for missing periods when troubleshooting is going to have to be for JS as checking for missing semicolons was while I was learning PHP.

The challenge will come; I simply need to find it on my own now. I have a new set of resources and lessons to explore, and a website to tinker with. And I can’t complain about the way I’ve been taking it slow learning JavaScript; clearly it’s been working.

Besides, where else would I have learned that browsing random websites with the console open can be an amusing and revealing pastime (thanks, Susan!)?

Revisiting JavaScript

I first took a crack at learning JavaScript a year and a half ago. I was fresh from defending my Masters, and eager to constructively fill my time between sending out reams of resumes.

It didn’t go so well.

Looking back, it’s not hard to see why. I bought a book, went through Codecademy’s JavaScript modules, and charged right in with a project that swiftly proved far too big and complex for my limited skills. I came out of it thoroughly discouraged.

I decided at the beginning of the year that it was time to come back to it, and do it right this time. 

What does ‘doing it right’ entail, though?

For me, it means taking it slow. Building an understanding of the language. Seeking out instruction and insight into its ‘real world’ applications. Developing a plan for how to apply it in my own work, scaled down to a manageable proportion.

The first part of this new approach has been to go back to that book I mentioned, Marijn Haverbeke’s Eloquent JavaScript: A Modern Introduction to Programming. Instead of just reading it like I did the first time, I’ve been making myself treat it like a course and taking extensive notes.

Reframing the concepts in my own words, and writing out the code longhand, has been the best thing for my understanding of the language. It’s forced me to break down the book into small chunks, which means building up my comprehension slowly with reinforcement and regular, often daily, reminders of the concepts that a given chapter is exploring. It’s drilled syntax and conventions into my head by ensuring I’m writing out expressions over and over. And, by writing out the explanations in my own words alongside the code examples, I’m finding that it’s much easier to actually read through the code with an attention to detail, building my understanding of how all the parts actually fit together.

At this point, I’m on Chapter 11 of 12 of my edition after three weeks of work devoting at least an hour a day. I’m already much happier with my progress. While it’s been hard to resist the urge to start developing code, my grasp of what JavaScript can do and how to work with it is far better than it started out.

I’m feeling well prepared for the next stage, which will begin this coming weekend: actually working with and applying code. On Saturday, I’ll be attending my local Ladies Learning Code chapter’s jQuery for Beginners workshop.

The great thing about the LLC workshops is not just that they provide an inclusive, beginner-friendly space to learn new concepts, it’s that they’re explicitly designed to be a jumping off point for further learning. I’m looking forward to getting a practical grounding in the concepts I’m already working on, and getting pointed to a whole oodle of resources for carrying it further.

The book and I aren’t quite ready to part ways – there’s a second edition with additional materials and a companion website to go through yet – but as of this weekend I’ll be at a point where I’m able to work with the language in a knowledgeable fashion.

I have ideas I’d like to try out, and a website to work on, and I’m excited to see where it all goes from here.

Volunteering with Ladies Learning Code

This last Saturday was a particularly good one: I did something to shift from being simply a learner, to assisting others’ learning experience. That something was volunteering with my local chapter of Ladies Learning Code, a digital literacy initiative that provides affordable, beginner-friendly sessions in technology skills.

I first heard about them in late 2013, when I’d just defended my Masters and was looking for a community and a way to keep developing my own hard-won knowledge base. I took their session on PhotoShop and Illustrator, and was impressed by not only the quality of the workshop, but the enthusiasm and collegiality of the instructor and volunteer mentors.

Not long after, I fell down a year-long WordPress rabbit hole and forgot about it for a while. It was no bad thing from a personal and professional standpoint – being brought on to the Contemporary Ukraine Research Forum as web developer was one of the highlights of 2014 and prompted me to take a course in theme development – but it stalled my participation in the local community.

Now, in 2015, that’s something I’ve resolved to rectify. It’s partly that working (not to mention job hunting) from home is isolating and getting out to participate in the larger community is one of the best ways to break that isolation. But, more importantly, I’ve reached the point where I’m comfortable in my own skills, and it’s time for me to give back by helping others with their learning.

I chose the first session of the year, LLC Edmonton’s HTML and CSS workshop, to take the plunge as a mentor. Despite the overnight dump of snow, about 30 learners braved the roads to attend, plus several other mentors.

Once the instructor started, the time flew.

I initially had a table of three, which became a table of four about an hour in. For the first half hour or so, the uncertainty was palpable. The subject matter was foreign and intimidating to the learners. It was amazing watching my table as they made simple changes to their HTML document, and the baffling cipher in front of them began to transform into a process they could understand and control. One woman even laughed delightedly when she refreshed the browser and saw her changes take effect. With one exception, the help they needed was primarily to break down a given task a bit further until it clicked for them, or to catch them up when the instruction occasionally proceeded faster than their new understanding.

That exception was the latecomer to the session. To get her caught up, I ended up quietly working one on one with her for about half the day; I am tremendously grateful to the mentors at the adjacent tables who jumped in and out to help the other three when I wasn’t able to. She started out flustered, apologetic and baffled, but, over the next few hours, she not only gained confidence but caught up and started adding her own customizations to her page while she waited for the instructor to move on. Though she started behind everyone else, she left excited by what she’d accomplished and was looking forward to teaching her daughter what she’d learned.

By the end of the day, it was amazing how far everyone had come. They’d gone from feeling over their heads to building a simple, well-styled one-page website, no mean feat for a beginner. The last hour was the most intense from a mentoring standpoint, however – by that point in the day, the learners were commenting that were feeling overwhelmed by the sheer amount of information they’d been absorbing. They were generally upbeat and satisfied with their progress, but keeping up with the remaining tasks had become much more challenging.

All said and done, I’m tremendously pleased that I could help out. Having a busy table proved to be no trouble for me; I ended up energized by it. It helped that the Ladies Learning Code group as a whole was tremendously open, welcoming and supportive. Though most other mentors were seasoned, I was by no means the only first-timer. Furthermore, they were from a range of backgrounds – some work in web development, some are interested in web development for personal reasons, and at least one is currently learning web development and programming as part of a career change.

The common thread was love of the subject and desire to instill it in others, and I’m left glad that I took the plunge to share my own.

Github repository

Quick update: As of today, all code and other associated files I created for my Masters thesis are available on Github.

This includes not only the final thesis, but also the full code for the case study website I developed as the project portion of the thesis. As such, it provides an example of my work in XHTML, HTML5, CSS, CSS3, PHP and MySQL dating from 2012 and 2013.

« Older posts Newer posts »

© 2014 - 2021 AJ Dyrbye

Up ↑