Saturday, January 02, 2016

New Month in a New Year

Today’s the second day of the first month of this new year. I decided to go ahead and do a sort of Fresh Start writing on this new year, even though it isn’t strictly the first. It wasn’t by design, but I like the laid back attitude of that because its part of my focus. I want to look forward to the year and I want to set some goals, but I don’t want to set myself up for letting myself down. That’s new years resolutions can so often do and I’m not going to do any of them. I’m happy to see my wife taking a similar approach because we’re so often on the same page.
I’m going to lay out my thoughts about both this month and this year. Maybe the month thing will become a Thing I do more regularly, sort of checking in on the directions I’m taking.

My January Expectations

I’ve taken two weeks off for the holiday, so my energy for work is at an all time high after such a great break. This is leaning my attention right now towards things work related, both officially and unofficially as I look at what I need to do when i return to work this week, but also the wider focus on my web development skills and the areas where I’m most interested in practicing and exploring.
ReactJS has a lot of my attention today and probably will for the foreseeable future through January. I intend to do a lot more self education on React, Redux, and the best practices that have been growing in that ecosystem. I want to use this at work, but I’m already sold on it personally so this will be something I explore either way. The more I educate myself the better positioned I’ll be about introducing it at work. I feel myself becoming a vocal advocate about React and I’m totally okay with that.
As two posts in today can attest to I’m feeling a rise of writing energy and directing it. Maybe getting this blog in order is also helping that, despite still having over three-hundred posts to migrate from the old blog. I don’t know how long the migration will take but I won’t waste that time not writing. I don’t know how often I’ll post but I’m very determined to write every day. I’ve been doing Morning Pages, which I recommend to everyone, and hope to do at least one good writing session in addition to those every day. My plan is to sit down with a blank screen, fill it with words, and repeat that until good things come out I can turn into posts. That’s largely where this came from.
Professionally, I have less specificity and more of a general sense of “get better” mostly in organizing. I’ve always contradicted myself in my love for organizing that is so starkly contrasted by how ill organized I actually am. I’m trying to get better at that and expect to make a really solid effort by starting my first day back after the break an hour early just to sit down, look over all my active projects, and really lay out what my plans are for the week. I’ve been trying to build habits about how I organize through the day and week, and how I make sure nothing slips through the crack. I keep ongoing notes, but don’t follow through often enough with moving those into action lists and notes on the projects I have on my plate. I think this is a good month to push these efforts up notch.

My 2016 Expectations

On a broader scale, I’m not looking at the year of 2016 with a definite set of resolutions I’m going to accomplish, but I’m taking stock of the things that I feel are important to me right now. I think these will change and that’s a good thing. I’ll let my focus grow and adapt along with my life.
I’m going to play more video games, both with my son and on my own. We got more games for the Wii-U and we’re having blast. Plus he got me a new USB gamepad for my desktop machine and I can’t wait to get more into that. I need to rekindle my love of gaming. But I want to balance that, because while I feel a need to play more games I know my son could probably cut back. I have plenty of other interests we share, between reading and creating, but he’s become so focused on his video games he needs some help learning to follow other passions. I’ve let his focus on creativity wane and I don’t want him to struggle with those lacking habits in the future, so its a good time to take my own need to create more and channel it into family activities that get him sitting away from the screen more often.
I’m going to read more. I’ve been loving the first Nightvale novel and I’ve got plenty of books lined up ready to read after it. I’m doing better at finding that time and I’m going to keep increasing that momentum. The more I read the more I enjoy it, the faster I get through books, and the better I get at absorbing each next book. I am starting to feel like obtaining my high school levels of reading is actually possible.
I’m going to be more out. This is a hard one to explain to some people, but here it is: I’m a queer person that doesn’t fit any typical queer person persona. Its hard to feel like a member of any queer community as a person who doesn’t outwardly look like a queer person. I’m not with any men and I’m happily married to my wife of twelve years, together raising our brilliant son we don’t look any different than most heterosexual families, when in fact neither of us are straight. And while we’re very open about that, the fact is that being open about it just doesn’t come up much or impact our lives a lot. That inherent lack of impact can make it feel like a huge part of who you are as a person just isn’t there, or doesn’t count for as much. This is genuinely painful, and whether its through activism or otherwise, I hope to find more ways to embrace this part of myself.

I'm Really Excited About ReactJS

I’m really excited about ReactJS.
I’ve let my tentative excitement grow for a while now, with a few experiments and tutorials and lots of reading. There is a strong habit of Shiny New Thing syndrome in the web world, and I’m as guilty of it as anyone else, so a lot of effort was made to avoid jumping on the bandwagon too soon. After building my first simple but complete application with ReactJS (and Flux) I’m absolutely convinced it is the best option for me to build web interfaces going forward.
To share my excitement and to preserve my thinking, in case I come back in a couple years wondering how I got started with ReactJS, I’m going to outline all the reasons I’m so excited about ReactJS.

ReactJS is Fast in Every Way That Matters

Saying a software library is “fast” is often a red flag for not having a holistic view of the trade offs. Faster than what? Fast by what measurements and under which conditions? I can say that ReactJS is fast because I’m not saying one vague thing, but saying ReactJS is fast in all of the ways that it needs to be fast. It isn’t just fast as software executing on a machine, but as a tool for humans completing tasks.
ReactJS is Fast in the following ways.
  • It doesn’t take long to get started with ReactJS. You can learn the basics to get started actually using it productively very quickly, without a lot of upfront costs or cutting corners that you wouldn’t in production usage. Learning has a very forgiving slope compared to some of the more complicated Javascript UI layers available to choose from these days.
  • Owing largely to the simplicities that make learning ReactJS so fast and easy is the amazing swiftness with which you can actually develop within an application built with it. Refactoring that would take a day can be done in less than half an hour. Building new large components can be accomplished before you finish your cup of coffee. All the common development tasks around using ReactJS are just wonderfully streamlined. I think, more than most libraries, ReactJS was really able to consider its use by developers as a form of User Experience and optimized those experiences impressively.
  • It is fast in the usual way people mean when they talk about software: the things it is built to do it does very quickly. It is largely defined by how amazingly it outperforms other DOM rendering options, owed in large part to its use of a virtual DOM layer.
  • It doesn’t have a huge impact on page load sizes. Other options can add enormous costs to your page load, and while ReactJS isn’t necessary tiny it is one of the smallest libraries among those it would compete against in the same space. What’s more, if you need to make it even smaller you can try React Lite, a stripped down implementation of React that removes the server-side rendering most of us don’t use and comes in around 20k minimized with full API compatibility to drop in as a replacement for the full React. This is an amazing cost savings.
This library is fast to learn, fast to build with, fast at rendering your UI, and fast to get to the user.

ReactJS can be a Small or Big Part of Your Project

There are two sides to a spectrum, in my opinion, to the way a library or framework: either a library is a dependency with relatively little weight compared to your own project or it is a larger thing within which your project feels to simply “fit into”. This is the library versus framework debate, and it took me a while to get a handle on where ReactJS sits on this spectrum. It gets compared to Angular a lot and compared among other Javascript frameworks, and for good reason as it solves so many of the same problems and enjoys as vibrant an ecosystem around it. But ReactJS’s own webpage describes it as a library and, I think, deliberately.
What I’ve come to realize about ReactJS is that it has managed to be both. It is easy and light enough to be included as a dependency in a project even if you only needed it for a single component, either one you needed to create in one isolated part of your application or even if you included React as only a secondary dependency of an off-the-shelf widget you found and wanted to drop into your project. In this way it almost feels like jQuery’s lightness, only there because its the glue so many plugins depend on. At the same time, ReactJS and its Flux implementations can serve as wider role in organizing a project and act as a foundation upon with a huge ecosystem of helpers, tooling, and components are blossoming faster than anyone can keep up with.
Simply put, ReactJS is the only option I’ve found that feels it can work equally well as either a small or large part of your project. This is very important to me, because I have needs on both sides of that spectrum and I hate the idea of needing to invest my time in so many different options for so many different situations. I want to hold fewer things in my head and narrow my focus. Generalization is nice and still important, but there is a growing need for a specialization that is hard to achieve with a constantly changing set of projects in my work.

ReactJS has Great Support

Finally, it is really important to look at a non- technical aspect of a dependency before you depend on it very deeply. There are many projects out there that fill the same shoes as ReactJS, and some of them even have impressive accomplishments that objectively set them apart from it! Elm and Mercury and Riot are great contenders beside React, each with their own very positive attributes that set them apart and make them absolutely great options.
Community and backing is as important as technical considerations for many of us and in many situations. In many cases, these are easily outweigh the technical considerations. We need to depend on ecosystems within which we can rely on the backing (Facebook in this case) and the community (React is going to naturally attract more people than the clones it inspires) and for my situations these aspects outweigh the many great reasons I might otherwise have picked something a little more technically exciting.
I’ve recently been looking into Redux, which sits beside ReactJS and fills the Flux prescription Facebook is encouraging everyone in the community towards. What really struck me as amazing is how huge the ecosystem within just this one subset of React is and that realization is what finally sold me.

Conclusion

So, for the foreseeable future my personal focus as a web developer is with feet firmly planted in growing my understanding and experience with ReactJS. I’m going to be building more small web apps to practice this craft, using them as testbeds for learning new pieces of the ReactJS landscape. I’m going to be building some of my own libraries and components, sharing them with the community and writing about them here.
I’m really excited about ReactJS.
I write here about programming, how to program better, things I think are neat and are related to programming. I might write other things at my personal website.

I am happily employed by the excellent Caktus Group, located in beautiful and friendly Carrboro, NC, where I work with Python, Django, and Javascript.

Blog Archive