Category: Code Rant

Disclaimer: Opinions in this post are my own and do not reflect the opinions of my employers past, present or future.

The dust has already settled on this whole debacle and I think I’m ready to chime in. If you happened to be away from the internet on March 22nd and 23rd, a developer unpublished a fairly popular node package.

The Story

The developer, Azer Koçulu, had a product called Kik. It’s a project kick starter/generator. Turns out there is a social media tool called Kik too. A patent lawyer at Kik requests Azer to unpublish his tool from NPM (apparently they were going to be publishing some packages there and wanted to avoid confusion). Azer says no, Kik emails NPM site support, NPM support team removes the module, and Azer unpublishes all his node packages from NPM (he had about 250). This probably wouldn’t have been a big deal with most developers, but Azer had an amazingly popular package called left-pad. It had about 2 million installs over the last few months. Azer’s medium post explains why he removed the modules.

I had honestly never heard of either of these “Kiks” before this situation and my initial response was to roll my eyes. I rolled my eyes again when I saw that left-pad was only 11 lines of code. I’m relatively torn reflecting back on it. Should we be frustrated at the developer for removing his module, or should we be upset with ourselves for relying on a dependency that should be easily replicated by any competent developer. Have we become so dependent on other people’s code that we’ve forgotten how to do simple low level logic in code? I’ve thought a lot about it and I’m pretty well inline with David Haney http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/. Deep down, developers that rely on solely on other people’s work annoy me. I use to see a lot of people advertising themselves as WordPress Developers that would simply find the right plugins and duct tape them all together. I feel NodeJS has fallen into the same boat due to the popularity of the Node Package Manager.

I’m an impostor too

I’m guilty for relying on other people’s code too. I do recall a time where I would hunt down jQuery plugins for the simplest application. I would usually end up spending more time configuring JS and hacking CSS to get the plugin to fit my needs. I eventually realized that I could build out exactly what I wanted in the same amount of time. There is a lot you can learn by reverse engineering other people’s code. I’ve spent a lot of time digging through YouMightNotNeedjQuery.com. There is a lot of JavaScript functionality you miss out on by learning jQuery before JavaScript.

I’ve caught myself recently falling back into this hole. I’ve been fortunate enough to be working on AngularJS projects for the last two years. I’ve dug through GitHub a number of times looking for directives and factories to speed up my development efforts.

The Real Heroes

I’ve recently developed a great deal of respect for developers that properly run open source projects. I’ve started a couple open source projects and just let them fall by the way side. Open source projects do not pay the bills and require a lot of effort to keep up. Any “community” on the internet has a knack for becoming toxic. There are too many projects out there that receive more flack than what they deserve. The community needs to contribute instead of complain to make the projects successful.

I have a few legitimate projects I want to open source, but I haven’t had the time to properly get them into GitHub. I’ll hopefully get something out there soon.

David Walsh has a great series he does called Confessions of a Web Developer. I’ve been reading them since about part 6 or 7 and I enjoy every one of them. I have been struggling with content here for a long time and he had some great tweets over the past few days that motivated me to put more effort into this blog. I’m really great at complaining so I figured I’d follow the master. As always, opinions are my own.

I haven’t felt challenged in my work for a long time. Thankfully, I’m in the position that I can inject challenge into my work. I try new design patterns, frameworks and testing strategies.

I’ve put a lot of effort into my Youtube channel, but it takes way too much time and dedication to run it well. I’ve kinda given up on it. Gathering resources and preparing a tutorial for a 10 to 20 minute video takes me about 20 hours of stop and go work.

I’m a hypocrite when it comes to commit messages. I tell everyone to keep them descriptive, but the last 50 commit messages to my personal repo is “stuff”.

I look over a lot of resumes at work. I pay more attention to where you have worked and how long you have worked there. I value loyalty more than skill. A developer with 2 – 5 year employments is more valuable to me than someone with 10 – 1 year employments. Constant jumps tell me you are more interested in promotions than improving your skills.

I can’t show off the vast majority of the projects I’ve worked on due to NDAs. I’ve been apart of developing and launching around 75 products. I’ve worked on around 125 if you include projects I’ve done maintenance or consulted on in the last 7 years. I can maybe talk about 15 of them. I feel like this puts me at a disadvantage in the job market, but I’m not looking for a job so it’s not an big deal.

I want to tell people that bash IE to just “Shut the hell up”. It’s beating the dead horse with his own fossilized bones. We all know IE 6, 7, and 8 are challenging to develop for. I think most of these people are too high on their Mac horse to look and see how much effort Microsoft has put in the newer versions of the browsers.

You’re dead to me if you hate on Win 8 without a good reason. The start screen change is not an acceptable answer.

To this day, I do not understand why open source developers hate on .Net developers. I’ve even seen “.Net snobs need not apply” on a Ruby On Rails job posting. It feels really immature.

I’m in a constant battle of whether I want to dress professionally or like a geek. I have a large collection of shirts, but I was known as “tshirt guy” for a long time. I really want to be respected, but it’s challenging wearing a Zelda & Dr Who crossover shirt.

I don’t think you deserve the help if you didn’t spend 15 minutes trying to find the answer on Google. You need to put some effort into it before asking someone to stop what they are doing to help you.

I value being an Eagle Scout more than being a college graduate. I didn’t take away a lot from college, but it did provide me a reference that landed me my job.

I only allow recruiters on LinkedIn to contact me so that I can tell them no. It’s an ego thing.

I’ve haven’t found responsive web design challenging or interesting in several years. I’m sure some people would say “You’re not doing it right”. I’ve looked at a lot of sites, gone through source code from frameworks, and read many articles. I’m confident in my skills and capabilities.

Disclaimer: The thoughts in this article are my own and do not represent the opinions of my employer past, present or future.

I’ve been sick in bed the past few days. I tend to do a lot of reading when I’m down and I stumbled on a several articles criticizing the Bootstrap framework. (I also got going on Single Page Web Applications, but that’s for a different time.) I got pretty motivated to express my opinions from my experience with the framework.

I’ve been utilizing the Bootstrap framework for over a year now. I’ve had a lot of success with it and it always amazes me how much hate it gets. I’ve spent a lot of time in their source code and I have a really good understanding of how everything works. I’ve done a lot of responsive work outside of Bootstrap and I’m pretty comfortable arguing for or against it.

This is one of the tag lines from Bootstrap’s web site. Do I believe it’s true? Yes, I do.

Designed for everyone, everywhere.

Bootstrap makes front-end web development faster and easier. It’s made for folks of all skill levels, devices of all shapes, and projects of all sizes.

There is one big thing that gets overlooked a lot when looking at Bootstrap. Bootstrap is trying to do two big things. It’s a responsive grid framework and a responsive UI framework. The UI part of the framework provides styled static elements like inputs and buttons, and also has a set of interactive components that work well on a smaller screen.

So what’s with all the hate? I have a few reasons I’ve heard and theories I have.

You have to use a bunch of random classes to get it to work.

I see a lot of this. There is a trade off though. Many single class elements end up with countless rules that get over ridden based on it’s parents elements or the current media query. It’s a trade off. Do you want more rules in your style sheet or more classes on your element?

It’s bulky.

The full CSS library is around 130kb and the JavaScript library is around 30kb. Is this heavy at a glance? Yes, but there are three things you can do if you don’t like this.

Utilize a CDN – There are several providers that serve up the full Bootstrap package over a CDN. A CDN will provides speed by caching the content and your browser will download it faster because it’s on a different domain

Build your own Bootstrap package – This is the less obvious choice, but you can really slim down the package by using their tool. You can also download their source code and create a custom build yourself.

Do both 1 and 2 – There should be other static assets in your project. You might as well invest in the service.

It’s trendy and people only want to use it because “Bootstrap” is a buzz word right now.

There is a lot of truth behind this statement. Bootstrap is extremely popular right now because it’s fairly new. jQuery had a similar buzz around it after it hit mainstream.

It’s not not suitable for large scale applications.

I couldn’t disagree more. Bootstrap’s consistent naming patterns make it ideal for large teams working on large projects. A fully custom responsive implementation requires a lot of documentation and communication across the team. The likely hood of a class being misused is pretty high. With Bootstrap, everyone can easily know how the grid works and work through new pages quickly. I’ve seen a large number of backend developers wire up pages using Bootstrap with ease. This introduces a level of efficiency that can be extremely challenging to replicate with a custom responsive implementation.

All Bootstrap sites look the same.

Did you expect to use Bootstrap and not have to code your own CSS? Checkout Wrap Bootstrap and see if you can tell if the sites are “exactly the same”. I roll my eyes at this comment a lot. It is very common to come across websites that look stamped with the Bootstrap CSS, but imagine what these sites would look like without it.

Web Designer: I don’t want to design for it.

Ok, that’s nice. Don’t want to be limited to 12 columns? That can be changed by a couple keystrokes in a LESS file. Don’t like the default buttons and inputs? A little custom CSS will fix that. The only thing we can’t do is recreate a design based on a non-grid layout. Most CSS responsive frameworks have limitations when working with non-grid based layouts. Just do whatever you want. Clever front end developers will figure out how to do it.

Front End Developer: I have spent a lot of time learning to be an expert on responsive.

Don’t worry about this. I personally know several SQL developers that panicked when Linq to SQL/Entity Framework came out. They thought that they would be out of the job because anyone who knew C#/VB would be writing their SQL for them. This is 100% not true. A framework can get you 90% there. Knowledge and experience will get you the rest of the way. The experience you have in the core technology is always relevant. The same can be said about jQuery and JavaScript. jQuery made JavaScript 100Xs easier to write. CSS precompilers can be thrown in this boat too. jQuery and Linq also introduced ways to write really bad JS and SQL if you weren’t careful. Bootstrap is no different. It can help you write simple and quick responsive elements, but can also create overly complicated and complex elements. As an experienced FE Dev, it’s your responsibility to identify the right and wrong ways.

You’re old fashioned and boring

If it ain’t broke, don’t fix it. I really hate LESS. I’ve been using it heavily for a year now. I just hate it. I see too much bad code, improperly named global variables, hundreds of media queries that could be consolidated, and excessively over qualified selectors due to nesting. Bootstrap contains the ONLY LESS files I’ve seen that do something cool. They create loops for generating the CSS for the grid layout and calculate out exact widths with it.

I feel like I have much cleaner and better performing CSS without LESS, but it takes me a little bit longer to do. You could say the same about Bootstrap. A lot of people said the same thing about JavaScript with jQuery and SQL with LinqToSQL. These tools and libraries get widely adopted and we can’t avoid working without them. I’ve seen a lot of bad JavaScript due to jQuery and several websites crash due to bad Linq statements. Why do I continue to use LESS, jQuery, and Linq? Efficiency. I can code with or without them. It doesn’t matter. I want to be versatile and quick. I can get stuff done a lot quicker with them. The same can be applied to Bootstrap. It’s a new tool that introduces a lot of efficiencies. It can also introduce potential inefficiencies much like the tools above, but a good developer should catch these before they become a problem.

Bootstrap is a very capable front end framework that makes responsive easy and quick to implement. This is much like what jQuery did with JavaScript. Is Bootstrap something I’m going to implement on every one of my projects? No, but it will be my goto framework when a project fits the mold and I can save time. It’s another tool to add to my toolbelt that will allow me to be innovative and more versatile.

I love coding for a living. I’ve done a lot in the job market since I started working. I’ve worked at a video game store, a paintball field, several small business, several grocery stores and other random jobs. Nothing can compare to coding. I get to build really cool stuff and it’s never boring.

I’ve really wanted to be involved in this part of the computer industry for as long as I could remember. I’ve always loved video games. In 3rd grade I wanted to be a video game tester. I got a VHS tape from Nintendo Power that showed the testing process of Donkey Kong Country. I thought this would be the coolest job in the world. This is essentially called “QA” for Quality Assurance. I didn’t know that this has very little to do with making games and I didn’t really want to do this. I eventually realized I wanted to actually program the video games. It’s been a real long journey that had taken many delays, but ultimately led to the greatest career I could ever dream of.

I get shadowed by a lot of high school students who are interested in the programming industry. The number one question I get asked is “How do I get started?” This is a very loaded question that doesn’t have an easy answer.

The first and most important question you need to ask yourself is: “Do I have the right personality to be a programmer?” Wanting to make a video game or making the next big iPhone application isn’t enough. This breaks down into several smaller questions.

Do you have good problem solving skills? You’ll spend a lot of time looking at a blocks of code that don’t work and you will be expected to fix them in a timely manner.

Are you good at working behind the scenes with other people? Programmers are more like roadies than rockstars. We make sure everything is working and setup correctly. The rockstars are the ones who sell what you work on to clients and present your projects at conferences.

Are you wanting to do this for the fun and excitement of the industry? A programmer’s compensation varies severely due to many different factors. What region of the country do you work in, what is the demand of your technology, what is the quality of your work?

How do you handle pressure? There is no room for procrastinators here. Deadlines are very important. Pushing them back isn’t always an option.

You have the personality? Great! The next step is to learn to code. My recommendation is to start early. I took Visual Basic in the 11th grade and C++ in 12th (this may not be early by today’s standards, but it was for 2000). I had picked up a little HTML along the way too. I learned about project planning and databases in college. I had a small amount of knowledge in a large number of fields. I see this as really the best way to go. You will have professionally trained instructors who are available to help you out. This may not always be an option for everyone. You can get similar instruction now a days from online courses. Code Academy and Microsoft Virtual Academy offer great courses to get you started.

You need to have an idea of what you want to program before trying to get into the job market. Coding a video game isn’t always a direct hire situation. It’s frequently a hobby thing that turns into a real job if you are really good and lucky. iPhone and Android programming is very targeted and you may have difficulty finding a good job in it right off the back. Most iOS and Android devs that I know got started in server or web development. Learning a flexible language like Java or C# will make you versatile enough to be able to apply for many different types of programming jobs.

I think getting hired at your first job is the hardest part of wanting to be a programmer. Most places want several years experience. How can you get experience when no one wants to risk hiring a greed developer? The easiest answer is to find an internship when you are in college. The second is to freelance. A lot of developers I know love to freelance. It’s not for me.

The type of environment you work in is very important. I like to work with a lot of other developers in a relaxed environment. Not all jobs are like this. You may have to wear a suit and you are the only developer in the company. You may have to work in a cramped cubicle farm with fifty other developers. Make sure it’s in a environment you are happy with. You wont produce quality work if you aren’t happy where you are working.

Your resume and interview are extremely important too. Don’t bloat your skills on your resume. I read a lot of resumes and it’s pretty easy to spot. You can’t have 9 years of relative experience in a programming language if you just got out of high school. Separate out your academic experience and what you feel is truly professional experience. I outlined my academic programming languages in my interview with my current company (COBOL FTW). They greatly appreciated the modesty and asked a lot of questions about the work I did in the classes. These turned into discussions about my passion to code and build applications. Modesty goes a long way in interviews. Focus on your passion for code and don’t boast about being a code “rockstar” or “ninja”.

Ok, so lets say you scored that awesome first job. Welcome to the club, now it’s time to keep the ball rolling. This industry never stops and you can be kicked out quicker than you got in. You don’t want to go from coding to sacking groceries because you spent 15 years coding a legacy language and not ever learning anything new. You need to build a reputation for yourself and prove your long term worth. You can do this by expanding your knowledge in new programming languages, networking with other developers and most importantly, learn how to do your job the absolute best way possible.

My journey to this point in my career has been pretty amazing. I’ve gotten very lucky with the opportunities put in front of me and I’ve been very fortunate to work with some very inspiring and talented people. I wouldn’t say it was perfect, but I tried to fail forward the best I could. Your career is ultimately what you make it.

I am a web developer, and we could be the most complicated and strange people you have or ever will interact with.

We grew up building LEGO models asking ourselves the question, “How can I make this bigger?” We played videos games thinking, “How can I build this?” We were fans of both Star Trek and Star Wars, because we knew the only thing they remotely had in common was the word Star. We wore bow ties before the Doctor said they were cool.

Now we work in the dark corners of our offices, ruling over the kingdom that is our code. We take other people’s ideas, bring them to life and at times lack the ability to explain how it works. We find it difficult to integrate with our co-workers because our interests are typically polar opposites. We try socialize, but it usually ends in awkward situations.

We use different web browsers and read news from different sources. We see viral videos before they went viral; we bought the latest tech gadgets before they were announced (and we never show it off); and we already know which console will be the best in the next generation.

We frequently fix bugs with descriptions of “It’s broken,” and we still somehow manage to find and fix it. We work off general ideas and play the guessing game instead of working with structured documents telling us what to build. We are left off the ending credits, and we don’t mention it. We celebrate with other developers and brag amongst ourselves.

We thrive off complex problem solving and we do not have an off switch. We go to sleeping thinking about what problems we left at work and wake up eager to get back to make it better. We fight internal struggles to throw our work out the window and start from scratch to make it perfect. We don’t ask, “How can this make more money?” Instead, we ask, “How can we make this better?” We don’t ask, “Why?” We ask, “Why not?”

We don’t get always along with other developers. Our code is our art and we think our own art is perfect. Our brains are answering the same questions with different paths to the solution. Some of us code for scale, some for maintainability, and some for complexity. We always feel that our way is the right way. We will bang our heads on our desks for hours and not ask for help because we are too proud. We will say “Oh yeah” or “How did I miss that?” when someone walks over to us and bravely asks us “What’s up?” or “Can I help?”

Some of us try to get ahead by boasting abilities and using the terms “Ninja”, “Guru” and other technology buzz words. The humble among us know that our work speaks volumes above the words on our LinkedIn profiles. None of us know everything, but all of us are eager to learn as much as we can.

United, developers can do anything. They will build a global e-commerce platform and then build you a social network capable of handling millions of users. We don’t care if it reaches that number, but we do care that it can.

We are here to build what you need, and we patiently wait for the next challenge.

Disclaimer:
My right eye was swollen shut when writing this. Please be sympathetic on spelling and grammar

If you’ve been keeping up with recent news in the gaming industry, then you have probably heard that Fez 2 has been cancelled. This is the result of a bunch of exchanges over twitter and stuff. Totalbiscuit (TB) summed up the situation pretty well on his Content Patch for July 29th and gave his option from a gaming media perspective. I’m going to come from a different side.

The high level overview of the situation. “AnnoyedGamer” Marcus Beer calls out a couple of indie gaming developers for not providing an opinion on some of recent updates on the XBox One Indie publishing announcements. Beer insults them pretty thoroughly. One of them is Phil Fish, designer of the game Fez. The two exchange a bunch of tweets and Fish “rage quits” game development and cancels Fez 2.

I knew nothing of the situation going into watching the Content Patch video. TB mentions that Fez was featured in Indie Game The Movie. I own a copy of it on Steam and it’s available on Netflix. It is a pretty good movie. The movie primarily features three games. Braid, an early and very successful game, Super Meat Boy, a game that was in the process of being published, and Fez, a game in heavy development. You get to see all the aspects of success, failure and all the struggles with indie game development.

Phil Fish really caught my attention when he was on screen. He is very animated, opinionated and pretty vulgar. His game, Fez, was first demoed in 2007, and wasn’t released until the middle of 2012 on XBox and 2013 on Steam. In the interviews he mentions getting a lot of hate for continually delaying the game. He also demoed the game at a convention. The build of the game for the convention was a new build from the previous day and had a game breaking bug that resulted in the game needing to be restarted anytime someone played it.

I know game development and design is difficult. It’s something I’ve always wanted to do, but my programming journey took me into another direction. I do understand the development life cycle and management of projects.

Delaying the release of a product over and over will only spark frustration to your potential client base. I remember seeing the 2007 game footage of Fez and was pretty excited about the game. The lack of a solid release date really killed my attention span. It’s not appropriate for every game to have a “beta” version that that can be purchased and played. I purchased Minecraft while it was in beta and the full release date was heavily ignored by me. The continuous updates to the game kept my attention. Fez may not have been a good fit for that model. Fez’s delay may have been due to continual scope creep (addition of features), lack of discipline, or having too high of standards for your work. A product that is in development typically doesn’t have income outside of investors. Investors will only invest for so long before pulling funding. A product can never be successful unless it’s published.

Bugs will happen. One of the greatest things about the software industry now is patching. Video Games consoles didn’t have patches or updates until the more recent generations. That means your SNES and NES games had bugs the whole time you owned the game. Developers had to make sure that their code was 100% before the game was physically made. Now, developers are very use to being able to push out bug fixes quickly. Starcraft 2 has had a ton of patches for bugs and game mechanics. With all that being said, you can’t let that ease of fixing destroy how you code. If you have a demo or any sort of public showing of your product, make sure it’s buttoned up. I typically use source control branches to keep a stable version of what I’m working on. I can publish a working product at any given time using this strategy. I’m not an expert at presenting stuff, but I would feel a lot more confident in a demo if my product lacked a few features and didn’t crash.

Something that is unique to indie game developers are their target market. Gamers can be and frequently are some of the most immature, critical and evil people on the planet. Don’t believe me? Go play some ladder games of SC2 2v2 or League of Legends and see if you get out without being raged on. Trying to please the masses in this industry is darn near impossible and you have to do your best to accept that. You may see your game as art, but they are going to play it and see it completely differently than what you expected. They will berate you for simple things like not being able to change the controller scheme or character dialog. You can’t wear your heart on your sleeve when dealing with gamers on Reddit, forums or anywhere else on the internet.

Finally, arguing on Twitter is the dumbest thing ever. Three years ago, I was told by one of the co-founders of Joomla that I didn’t know HTML. I had complained on twitter that the editor wrapped my content in 4 font tags and was going to switch to WordPress (this was for the Boy Scout Troop’s website I was working on). I tried to reply saying I’d rather use a text area field than a wysiwyg editor and he retorted back saying “garbage in garbage out”. I then realized that arguing on Twitter is REALLY dumb, especially between adults. How can you make a valid argument about something in 140 characters and it be civilized?

Anyway, It’s 2am right now and I’m really tired. Lily has been rolling around in her crib all night. Side Note: Get a camera in your nursery if you have a little on in a crib. Its kinda cool watching them sleep ^_^.

I’ve been running Windows 8 for several months now. All I see on the net is a bunch of hate for it. I’ve been trying to read these with an open mind, but most of them are just ridiculous. Even I believed the “Every other OS is junk” theory. I still feel that Vista wasn’t great, but it wasn’t nearly as bad as what people thought. It was awesome if you had a beefed up dual core PC. Making fun of Microsoft products is far past beating a dead horse. IE9 and 10 are awesome, but nobody knows that because they are too busy using Chrome or Firefox. A lot of people don’t like change either. Windows 8 has a lot of changes, but I wouldn’t say it’s for the worse. Anyway, I’m going to get off my soap box and go over some of my favorite Windows 8 features.

It boots super fast.

I don’t think I’ve ever had a computer boot as fast as my Windows 8 machine. I use to go and get coffee when I was booting up in Windows. I now generally just get my iPad out and check my email on it.

You don’t need your start menu

I’ve seen a lot of people complain about their start menu being gone and how everything has to run in the Metro style theme. You can avoid the Metro styled stuff completely if you don’t want to use them. The start menu is replace with a start screen that provides a really good visualization of your apps. It’s very easy to customize and much more usable than the original start menu. I have almost no desktop shortcuts now. I had about 15 items pinned to my start menu and was about the height of my screen. I got rid of my quick launch bar because it’s faster to use the new start screen.

Cloud Saving Your Settings

I use to always do a bunch of stuff to have consistent desktops, lock screens and stuff. Windows 8 saves all these things to the cloud. I signed into a Windows Surface tablet and everything came down without needing to do anything. This is a really minor thing, but it is one of those small nice to have items that gives Windows 8 a great fell.

Great Multi monitor Support

Holy cow, the multi monitor support in Windows 8 makes it completely worth the upgrade. You can span your task bar to every screen and the task bars will only show what applications are on that screen. This was a feature in a tool called UltraMon that I really liked using. It makes multi monitor multi tasking really easy.

I really feel like Windows 8 is a step in the right direction. You have to be willing to accept change and put a tiny bit of effort to learn how to do some stuff again, but it’s totally worth it.

I got pretty upset with my last wordpress theme. The theme was stripping out all of my script tags I was inserting and replacing them with comment tags. I’m attempting to add ads to my theme, track with Google Analytic, and other things. I tried going to their support forums, but you have to pay now to view them. Again, pretty frustrating.

I fix this, I’m going to build my own WordPress theme. Going to start with the default Twenty Eleven theme and build it out the way I want it. I may even build out some of my own plugins. I’m going to have fun with this!