Posts

Last Post Ever

This is my last post ever on this site.  I have moved to beginningprogrammer.com . Please follow this link to understand my new vision .

Why a Programmer Must Have Sales Skills

Image
Have you ever had a great idea and pitched it only to have it ill received? Then later you found out that your idea is being implemented and the credit has gone to someone else? This probably raised frustration or even anger within you.  Perhaps they stole your idea and in their ego-centric ways decided to steal all the glory for themselves.  How could they?! Or perhaps there is another side to this. Recently I brought up the idea to the my team that perhaps we should consider setting our focus to certifications, but not programmer certs but rather system certs... you know.. Security+, Network+, Oracle Administrator, that type of thing.  Our core application is a Java application that is hosted on Solaris servers.  Our contract has strict requirements for any one that touches those systems. My pitch went something like this: Me : "Hey, now that our development efforts are winding down and much of the work load is on the SA and DBA side what do you all th...

A Guide to Learning Design Patterns

If you’ve been writing code for more than a year, you might have heard of design patterns. I’m always surprised while interviewing veteran developers that have not heard about design patterns. I always make design patterns a topic during interviews because I believe they are a concept that every developer with more than a year experience should at least be aware about. So when the interviewees response is “I may have heard of them, can you tell me more…”, I become quite surprised. In truth I’m no longer surprised as much anymore because I’ve come to realize that the developer universe is vast and  many developers work in these little vacuums  with very particular tools to get their job done without ever tracking the on goings of the bigger developer community. Is that acceptable for a developer, is it not? It depends. It depends if the developer wants to be more marketable or not. It depends if the developer wants to do better at interviews when the time comes for a new job...

Using UML to Analyze Legacy Code...

For every programmer out there creating brand new code and working on the latest technology, there are many of us who are cutting our way through the code maintenance jungle. Maintaining code is not for everyone. Some programmers love creating brand new code and introducing new technologies. We need those programmers in order to move companies and coding technologies forward. At the same time all projects eventually require maintenance. That’s where we need programmers that will do the dirty work of maintaining code and if they love it it’s even better. Maintenance can mean a lot of different things. Maintenance can sometimes mean fixing defects. Other times it can mean enhancements. Sometimes it can mean refactoring and paying off technical debt. Or as in my latest case modifying the code to meet new technical requirements. Maintenance is not totally exclusive from creating brand new code. Maintenance sometimes means moving from the old to the new. The Problem In my latest ca...

This Application Does Not Work!

Image
Recently I ran into a great offer that I just couldn't pass up.  I have been in need of screen capture software for creating online tutorials.  I've heard that Screen Flow is an awesome product and quite inexpensive.  Unfortunately I switched from Mac to a Windows 10 box and Screen Flow is only made for Mac OS.  My best alternative for a long time has been CamTasia Studio. I was reluctant to get CamTasia because $300 is simply too high a price.  So... recently I ran into this other product called Movavi which costs only a fraction of what CamTasia costs (as of this writing it costs 59.95 which includes 40% discount). I downloaded the trial version and did a quick demo to test it out.  It worked like a charm.  The trial version is limited to two minute videos. I proceeded to purchase the next day because finally I would have the software to create online tutorials.  I was not ready for the big disappointment that was lurking in the shadows. ...

What is the best way to learn programming?

As a friend and I were walking through the Barnes and Noble Technology section today, he asked me "I want your opinion on what you would do to learn one of these programming languages today".  My response was "I would buy me a subscription to PluralSight.com and get serious about learning from there". Let's face it.  You have many options today to learn something new.  If you have a computer and an internet connection you learn just about anything.  You can learn most of what you need to know from the internet and yes the internet has a lot of your answers and you can learn it for free.  The problem is that you get what you pay for.  You may actually pay more for something that is free because although the monetary cost is zero you end up paying with your time.  That's the caveat on learning anything for free, you may just spend a lot more time than necessary trying to be cheap. That is why my top choice for learning programming today is Plural...

Python vs. Other Languages

For the last two months or so my fellow McLane Advanced Technologies Programmers and I decided to take on Python. We all have pluralsight accounts so we decided to engage in the Python Fundamentals course by Bingham and Smallshire. It took us a couple of months to get through the course since we only would do it through our lunch hour. With schedule conflicts, practice exercises it took us a while to get through the course but we finally completed it a couple of weeks ago. And I must say, it was an amazing course. The crazy part about the course is that it's only 5 hours long. Five hours plus another 10 hours of hands on practice and you can be pretty decent at python. Throughout the course we took time on our own to do some exercises after each of the lessons. I fiddled around with it quite a bit and decided to save my practice exercises to github.com ( https://github.com/fernandozamoraj/py_sandbox ). Although our goal is to go deeper with the sequel to this course, Python...

One Nice and Easy Way to Test JavaScript Concepts

Image
If you are an application developer, there is a high possibility that you develop web applications.  As such there is a high probability that you will run into a situation where you need to test some JavaScript concepts.  There are official ways to run JavaScript unit tests.  But that's not what I am referring to here.  Sometimes you just need to test how something works in JavaScript.  Recently I wanted to test what JavaScript with types that were undefined.  Rather than run the application, I wanted to run some simple JavaScript code.  Most you already know this but it's worth mentioning anyway, in case you don't.  You can test out many concepts right from the command line using node.  But not just from you DOS command line, from your node command line,  the REPL (Read Eval Print Loop). First you have to install node.  You can find out how to install it from the official node website . Once you have install node and configur...

What Does It Take To Create the Next Big App?

Image
I've had many individuals approach me with app ideas.  Their ideas are good, but I don't think they have the slightest clue what it would really take to bring their idea to life.  Someone approached me with their idea today and it prompted me to write this about ideas, app ideas in particular. Ever since the app store was born the ideas for apps have grown.  We all have them.  "Wouldn't it be great if we could create an app that did [insert idea here]". First off let me start off by saying that ideas are great.  In fact I think everyone should keep a small notebook and paper handy for whenever that light bulb goes off.  Some of us have more ideas than we know what to do with. Ideas sound really enticing given that we only hear about the big success stories.  For each success story there are literally hundreds if not thousands of unsuccessful stories. As great as ideas are, it takes much more than an idea.  If you have a great "app" idea t...

Naming Your Adapter When Using the Adapter Pattern

Image
At some point in your project you may need to use a third party API.  One common approach for using third party APIs is to use the Adapter Pattern .  The API that you use may be very specific to a particular technology. When you do create these adapter classes that utilize that API you should avoid names for your adapter that relate to the particular technology. For example, let's say that you have an API for the Sony Toughpad barcode scanner.  You wouldn't want your adapter classes to be named SonyToughpadBarcodeScannerAdapter. You should avoid naming your adapter like this in favor of something more generic like BarcodeScannerAdapter. This is because in the future you may need to adapt your adapter to a different API such as the Intermec Handheld Device barcode scanner.  The name for you adapter will be adaptable to this API but the name will be misleading.  At this point you have the choice of renaming your adpter to the more generic name.  Howe...

A Few Thoughts on Clean Code

Image
Having nothing better to write about than the craft that I love.  Today I will write a little bit about clean code.  Seems that most new developers are unaware of the concept of clean code and I don't just mean the book by Uncle Bob. I mean the whole idea that code needs to be readable.  Code needs to be elegant.  Code needs to be, as my college professor used to say "sexy".  You should be able to look at code and simply admire it. When you look at clean beautiful code it should make you feel smarter because you understand it. And you understand because it is beautiful.  It is elegant.  The code does what it's supposed to do.  It reads like a good prose. Good code is not tricky.  Good clean code is not for the few uber smart people.  It is for nearly any one to understand, sometimes even non-programmers. If on the other hand you look at code and say any of the following phrases this is not clean code: "Oh sh_t!" "What the ___...

One Small Step

Image
About three months ago I decided to start blogging regularly.  The thing that led me down this path was John Sonmez's talks about getting things done.  The idea that if you just show up and do it, the creative juices will start flowing and you will write something meaningful. Another writer that I listen to is Seth Godin.  Seth claims that writer's block is simply a myth .  Seth writes a blog post everyday.  All of his posts are insightful and provoke quite a bit of thought.  I really don't know how Seth does it. One thing is to blog regularly and a whole other story to write daily.   I admire what both of these authors do.  I admire that they don't just talk the talk but they also walk it. John is a very succesful entrepreneur that has made his niche out of mentoring other developers.  Everything that flows out of him seems to flow so naturally.  He is not only writing though.  See John is the most published author at plu...

10 Methods to Help You Debug Legacy Code

Image
A large majority of the work we do in our project is to fix reported bugs. The project code is considered legacy code in the context of test driven development. Not only is the code considered legacy code, in many cases it is poorly written which makes it even more difficult to find the real issue. The code was inherited this way and it is not something that you can simply change even with adequate time and resources the ends may not justify the means to fix it completely. All this makes the issue of finding the solution to existing bugs very difficult. But all is not lost; there is an approach that we can take to make troubleshooting much easier. I am writing this paper with the goal of outlining a structured approach that we can take to make it easier to debug the legacy code. This paper is comprised of several tips that demonstrate the creativity necessary to find and fix the root cause of a reported bug. 1. Accept that it is not easy The first thing that you ...

Getting Started with Raspberry Pi

Image
The Raspberry Pi has been around for some time, three and half years to date, and it had not caught my interest until recently.  Sure I had heard about it and although it seemed interesting it was also a little intimidating, to be honest.  That's until recently when an individual decided to start a makers and coders meetup group right here in little old Belton Texas.  When the meetup up group was started I was immediately interested since I had already been introduced to making things with the Arduino.  I can't say enough about how pleased I am with joining this group.  I have learned some cool new geeky things since then about the Pi, Linux and Python. So What Is the Raspberry Pi? To put it simply in laymen's terms, the Raspberry Pi is small computer that has enough power to be a personal computer.  No it won't necessarily replace your Windows laptop. It does not have the same amount of power and hardware resources. Also, the operating systems ...

You Can't Learn Any Language in 15 Minutes

Image
Last week I wrote the post Learn Python in 15 Minutes .  The point of that post was to demonstrate that the basic fundamentals of the Python language are simple and easy to learn.  However I will be the first to admit that you cannot learn any language in 15 minutes.  You won't be anywhere near proficient at least. Working in a particular language consists of much more than the language's syntax.  Part of being fluent in a programming language consists of being familiar with certain things such as string manipulation, collections handling, familiarity with the supporting framework and libraries and available third party frameworks. Anytime you learn a new language and you are already proficient with a different language, the question that always comes up is "I can do X thing in language Y, how do I do that in language Z?".  This is similar to knowing a real language but unfamiliar with the nuances of a different culture.  Don't believe me? Put someon...

Learn Python in Fifteen Minutes

Image
Lately I've dove into the world of Python. I had been hearing a lot of different things about it and about its many benefits and was curious what the buzz was all about.  It's been a couple of years, at least, since I made it a goal to learn Python and just recently decided to take the dive and really get acquainted with it. If you're a programmer and have heard of Python but haven't had the opportunity to give it a try but would like to know more about it, you've come to the right place.  In a book I've been reading lately, The Basics of Hacking and Penetration Testing ,  I read about a concept called zero entry hacking. The idea behind zero entry is explained best with the analogy of a swimming pool where the water level starts at 0 feet and gradually gets deeper.  This idea allows you to get in as deep as you feel comfortable but with little commitment of anything deeper.  A zero entry lesson is what I will give you in this short post.  You can read...