When not working on websites

While I have been back in school I took the opportunity to take some other classes and brush up on some skills I haven’t used in a long time (like C++). However one class I took that was an absolute blast was Embedded C Programming.

The class had us writing C for use on the Arduino, and I loved it. I had forgotten how much I enjoyed working in low-level computing. And creating physical projects was even more fun. The class got me interested once again in circuits and even wanting to go back and learn assembly languages – something I’ve always wanted to do, but never really devoted the time to doing.

I’ve always been fascinated by embedded programming, ever since an old friend of mine from my old church had told me that’s what he did. I think if there is a way that I can combine using skills in web development and databases with embedded programming that would be one of the coolest jobs out there. Probably not very common, but still would be absolutely fun.

Another JavaScript framework story…

Well here I go, I’m going to throw in my opinion about JavaScript frameworks now, too.

Actually, I’ve only really “worked” with two, if you defined the term somewhat loosely. That is, if you don’t really consider jQuery a framework. It’s more of a really robust library.

I’ve worked a little with Angular and Vue. I could take or leave Angular (most likely the latter) and I would define Vue as “Angular: The good parts”

When I first encountered Angular I thought it would be really fascinating and helpful. Then I started using it. To me, everything about Angular is so massively over-engineered it’s like digging a 40 foot foundation and erecting a crane to build a bungalow. Unless you need an enterprise level project, Angular is probably too much.

Then I saw Vue, and it was beautiful. All the lovely templating and component aspects of Angular without the massively complicated overhead, or the need to transpile languages (yuck!). Vue can be used simply OR in more complicated scenarios.

So for a short opinion piece, I’d just like to say I like Vue.

LinkedIn

One of the projects this semester involved working with LinkedIn.

I don’t like LinkedIn. There I said it.

I once thought to myself “I wish there were some universal resume format that everyone accepted that could be used or submitted anywhere” and someone replied to me “I think you just described LinkedIn”

He was partly right. Where I think he was wrong was that LinkedIn decided to be too much. I don’t really like using social media that much, of any kind.

LinkedIn takes too much work to stay on top of or to be useful with. I think that if it were redesigned to be just a resume sharing site it would be wonderful.

Until then… alas.

Databases

One of my ongoing projects at work is a kind of menu content management system I’ve had in the works for years now. It started as a really simple database for beer and has grown to incorporate so much more. When starting it out I’d mostly only been familiar with MySQL, so that became what I built it with. I actually really enjoy MySQL but there are a couple of flaws that make things difficult.

I never thought I would really enjoy working with databases at first, but after working more and more with them I’ve found it both challenging and fun. Especially designing a database.

There is something fascinating about looking at a problem, say, a business need, and thinking how to solve it with programming. It gets even more interesting when you are constructing a relational database for this purpose and have to figure out the whole process of normalization.

For me one of the most difficult aspects was gathering requirements. It’s not always easy to get people to state what the root of their requirements are, and even more difficult when the requirements keep changing.

I’m continuing my knowledge of databases, learning more about writing more advanced procedures, using triggers and cursors, making good uses for transactions, and also learning about other database products.

Over the next year my goal will be to become more proficient in Oracle Database. I think there is a lot to learn, but so far I’ve enjoyed the process.

Front-end vs Back-end

This isn’t a war. I like both, really. But my preferred place to be is the back end. I was talking with someone about this recently and it got me thinking, so pardon my stream of consciousness for a little while.

Many years ago when I started programming it was not on web projects at all. My first language was QBASIC, followed by Visual Basic, and then C++. But over time I stepped away from programming and moved into design.

Since then I began a long journey back. I started out doing some web designs, then some front-end development work, and more front-end, then, started moving into doing back-end work, and work with databases.

As fun and interesting (and often very difficult) as doing front-end work is, I find the back-end work even more interesting. I like working on the server, parsing data, writing the logic for business functions and outputting all the data to the front-end.

While I think most companies set people up to do more of one than the other, there is a real value to learning the other. It can help you fill in when needed, but also will help better align you with your teammate’s needs.

Console Debugging

This is probably a bad idea. But I’d like to take a moment to share a little code I use for remote debugging when I’m working on php projects.

To be fair, php does have some nice debuggers and with a good IDE you can step through your code, but that doesn’t work so well in live environments and production servers. It can be difficult to setup and even more difficult to use. So I wrote a little function I’d like to share called console_dump that could probably be used and improved. Without further fanfare here it is:

    function console_dump($data, $var_dump=false, $encode=false ){
        if(!$encode){
            ob_start();
            if($var_dump)
                var_dump($data);
            else
                print_r($data);
            $data = ob_get_clean();
        }
        echo "<script type='text/javascript'>\n";
        echo "//<![CDATA[\n";
        echo "console.log(".json_encode($data).");\n";
        echo "//]]>\n";
        echo "</script>";
    }

This code is pretty simple. It has a few parameters – the data to be dumped, the format to dump it (print_r or var_dump), and whether or not to encode it as JSON.

What I like about this is that when I want to see the variable types I can use var_dump, and if I want to navigate the data in the console, via javascript, I can do that also.

A quick walkthrough: The first part checks to see if we are using var_dump, if so, we have to capture the output from the output buffer, assign it to a variable, and clear it. This is because var_dump does not have the ability to return a value like print_r does. Although the same method can be used to return data from both, it’s not needed for print_r. That’s another part I’d clean in this function

Lastly the function outputs some script tags and logs the JSON encoded data. This function isn’t perfect, and I see places I would improve it, but it’s a hopefully helpful tactic.

Why I like php

Php has had some significant difficulties in the past, and is far from a perfect language, but I like it. I can confidently say at least two facts about php: it gets a lot of use, and a lot of hate, and I don’t think the two are unrelated; its ubiquity is at least partly responsible for its detractor’s antipathy.

There are some flaws to the language (most of the significant ones have been addressed) and there are some quirks. Function naming conventions for one thing, are somewhat infuriating, but it’s nothing a good linter and code hinter won’t solve for you. There have also been security issues raised over the years, but more of those have to to with poor usage of the language than the language itself.

I think however, most of the animosity comes from the fact that it’s so heavily used. Elitist tend to look down on it. Programming snobs like to stick their nose up at this internet lingua franca. It’s not as well planned out and thoroughly designed as a C#, or as robust as Java, or easy to read as Python. And (gasp) it’s not as modern as JavaScript. And yet it trucks on, still heavily used.

Why?

I would suggest a few reasons.

First, it gets the job done. The tool that works is the tool that gets used to most. Php, at least for me, does the things I need to do well, and easily, and most of the things it doesn’t do well are things I don’t often need to do. I suspect this is true for most people.

Second, it plays nice with a free stack. Php loves MySQL and Apache. It’s like a match made in heaven. It’s not restricted to those, but it works beautifully with them. Free and out of the box.

Lastly, and this may be a silly one to most, but I think it looks nice. I actually enjoy reading php code. I think it’s pretty.

Whatever the reasons, I suspect php is here to stay. And I like that.

Resuming a Résumé

One of the major tasks this semester has been to update my résumé. Something I find rather challenging. in the past my résumé has been a strictly chronological one. However I liked being introduced to the functional résumé and the hybrid résumé, and I feel that these may serve some purpose for me for a couple of reasons.

First off, a little background, the standard, chronological résumé is basically a reverse-time list of jobs and employers, and what you did at each job. Functional résumé organize content by skillset, and hybrid résumés, as expected, do a little of both. For someone with a simple career path and relatively unchanging job history, chronological is perfect.

My history is a little different. In almost all of my jobs I’ve been in a bit of a dual or triple role. I’ve often filled the part of designer, developer, and photographer – sometimes among other things. This makes it rather difficult to list out roles and responsibilities within a single company without being overly clunky or verbose.

Also, my job description has over time changed from designer, to front-end developer, to full-stack developer, and I’m looking for a way to represent that.

In my case I think using a hybrid format may be more useful in the end. This format would allow me to list my most applicable roles and responsibilities to the job I’m applying for first, and then follow up with the other parts. I’d have to refactor my résumé a bit, but I think it would be the way to go.

Choosing a framework

Bootstrap should make an interesting segue from talking about portfolios to talking about, well, frameworks. I had decided about halfway through to switch my portfolio project over to Bootstrap. But why bootstrap?

Good question.

Because it’s there.

Honestly, though, I have very little particular attachment to any frameworks, but I find Bootstrap pretty decent, easy to use, and probably, most importantly, something I’ve used enough to not have to completely learn from scratch. I’ve used other frameworks such as UIKit (which I believe is Bootstrap based) and MDL (Material Design Lite) which I wasn’t a huge fan of.

I think choosing a framework is an interesting task. On the one hand, just sticking with something you are familiar with leaves you boxed in and you could be missing out on something that could be better. On the other hand, if your just jumping all the time from framework to framework you’re spending all of the time learning and no time actually doing. So what to do?

I would say gain a passing familiarity with the notable options, and just stick with one thing that works for you, until it doesn’t work anymore. That may not be everyone’s approach, but it’s mine, and I would offer at least one reason why I think it’s a good one: it’s the reason frameworks exist.

Follow me on this: the entire point of having a frameworks is to streamline and simplify the most often-used and often-needed parts of a project. If you are constantly spending time hopping from one framework to the next, you end up negating any advantages of time and effort spared that could be devoted to the project at hand.

All in all, I will probably stick with bootstrap until it doesn’t work for me anymore.

On Portfolio Processes

Well, as things draw to a close I’ve got to look at the end result of my portfolio and critique myself. Arguably one of the most difficult parts of design is assessing yourself. Some designers tend to be overly fond of their own work. Others are overly critical. Still others think they are overly critical and not critical enough, because they are in fact overly fond of it.

I’m not really certain where I stand, but I like to think I’m fairly balanced with myself (which is probably what everyone thinks they are). Nonetheless, I will attempt an honest assessment.

My portfolio, overall, is incomplete, in the sense that I didn’t accomplish all that I wanted to over the semester. This turned out to be an exceedingly busy several months for me, and I didn’t get to achieve what I wanted to. I had intended to include more interactivity, and a few more visual effects and animations that would have added quite a bit. Alas, time ran out and I had to finish the project. So, in that regard, I would have to say the portfolio is lacking the extra “something” that would have really made it shine more.

Examples of those extra “somethings” would have been to have a dynamic “recent work” section that the user could quickly click through, filterable content on the actual portfolio page, as well as some dynamic effects on the individual showcase pages. Lastly I would have liked to include some animation as the homepage “hero” section.

That having been said, I don’t think it’s a failure in anyway. Especially when I consider that the groundwork is in place, and ready to be added on to. As for design, while it’s not 100% where I’d like it to be, I think the design is solid, with an easy-going color scheme. I also like the layout on most of the pages.

The strongest part, in my opinion, is the typography. I think the contrast on the heavy serif font contrasts nicely with the light body copy, and gives a very sharp appearance.

I had originally set out to create my own “template” from scratch, but realized switching over to a front-end framework like bootstrap would be much more maintainable and practicable. The switch set me back a bit in time, but the trade off is that going forward I can update easier.

Finally, I would say that there are a few more projects I would like to showcase, and I really need to polish them up and get this portfolio live. In the end, if I had to rate my portfolio… well… nah, I can’t decide.