In challenging times, remember this…

You learned to walk. You learned to talk. You learned to love and how to forgive. Don't believe. Have faith. Things will work out and, if you pay attention, your life will get better. Be grateful for what you do have and trust that you can and will grow from the experience. Help others by sharing your new-found perspective.

PHP Developer Tip: End-of-line format

If you are editing a PHP code file on Windows or Linux, make sure your file end-of-line format isn't Old Mac Format. This could cause problems when executing even if your PHP is flawless.

Buying memory for your Laptop / Notebook

Thinking of adding more memory to your laptop? Buying more memory can often one of the best ways to increase the speed of your laptop. When a computer runs out of memory, the operating system will start using your hard drive store memory temporarily. Unfortunately hard disk is MUCH slower than memory resulting in even the fastest computers slowing down to a crawl.

The good news is that, instead of buying memory from the manufacturer, you can often save some money if you have the right part number for your memory which you should be able to find out by asking questions where you initially purchased your computer or using Google to search for your make, model number and the words memory upgrade.

Always make sure that it is even possible to upgrade the memory. If you are lucky, you may even have an empty memory slot. Other times, you will have to replace existing memory. For example, if you have 2 sticks of 2 GB of memory in your computer and want to add 4 more GB, you may have to remove one of the 2 GB sticks of memory and replace it with the new 4 GB. If you don't know about this ahead of time, you may end up surprised when your computer starts up only claiming to have 6 GB of memory. And what do you do with the stick you removed? Sell it on eBay to recover some of your investment or just keep it as a spare part in a save place -- like the packaging that the new 4 GB of memory came in.

Most laptops and notebooks use a format of memory called SODIMM which is different from regular SDRAM type desktop memory even if the rest of the specs seem to match. It's a physical difference. Also, DDR2, DDR3 and DD4 are not compatible. Make sure you buy the right memory. If you are not sure, ask in a store or online before you buy. What doesn't usually matter as much is the brand. Most computer manufacturers don't make their own memory anyway.

 
Compatible memory will usually work but occasionally it won't. This happened to me a couple of years ago with a Lenovo Thinkpad.

The computer was constantly close to or actually running out of memory (according to Windows Task Manager) which seriously impacted my productivity. I needed to upgrade the memory quickly so I went over to Staples, purchased some memory and stuck it in my laptop. It worked perfectly on the first shot and was totally reliable.

About 6 months later my laptop got stolen and I replace it with the exact same model. Once again I had to upgrade the memory so I went back to Staples and purchased the exact same part number. My laptop wouldn't start up. I suspected that it was probably just a bad stick so I went back to staples and exchanged it for another of the exact same memory. The new stick didn't work any better. So I returned it. I admit that I was surprised and disappointed, especially since it had worked so well in my previous machine.

This was the first time since way back in the days of 386 CPUs that such a thing happened to me. I've even got great deals purchasing memory off of eBay, knowing full well that I was taking a chance, and they always worked well and were super reliable.

The moral of the story is, wherever you buy your memory, make sure they either have a good return policy or that you are getting a really good deal. The alternative is to get certified Lenovo memory from a place which may not have such a great return policy which is what I ended up doing. It was just a few dollars more and it worked on the first shot.

Which Web Development Programming Languages Should I Learn?

I am often asked this question by other Web developers. In fact, I regularly need to figure decide which web programming languages and technologies I need to learn next as part of my life long learning.

Start with Web Browser Technologies

Did you know? Even after over 20 years of mainstream web technology, web browsers only natively understand 3 things: HTML, CSS and JavaScript. That's it, that's all!

There actually used to be a fourth, vbScript, but it was only available in Internet Explorer and Microsoft finally deprecated it as of IE11. Anything more and it is usually an add-on, plugin or other synonym for what is essentially an extension.

So my recommendation would be to get the basics down. No matter what you end up working with after that, you won't be able to do without this basic foundation unless you just want to end up editing content in WYSIWYG editors.

Once you've got those down, you can expand into jQuery, Angular.js, Bootstrap and Foundation which are implementations of JavaScript and CSS. These should give you enough experience so that, if you do end up using different libraries or frameworks, you'll have an idea of how things work and will be able to adapt.

Server Side Technologies

Once you've got a good handle on web browser technologies, the next step is to look at Web server technologies. There are many options and you will have to make a decision as where you want to go with it.

Server side technologies enable servers to deliver dynamic content to web browsers. For example, it may send the browser different content depending on the context such as page being displayed. Basically your website has a theme/layout is separated from the content of the page. The advantage is that you can easily change the look of your website without having to modify the content.

Your first choice will be whether you want to work on Windows based technologies or cross platform technologies that can include Windows, Unix/Linux, OS X.

I could rattle off a whole list of server side programming languages like Java, Python, Ruby on rails, .Net, PHP, Perl, node.js and databases like MS SQL Server, MySQL/MariaDB, MongoDB, Postgres and many more. Is there a right one to choose? Who knows really. In my opinion, the right one is the one that lands you the job in my opinion. Just try to avoid the fads if you can. Those are the technologies that are supposed to be the next big thing and then fizzle out over the next year or two. It's like trying to always wear the latest fashion. Tomorrow what was way cool is so passé. Stay a little conservative… and again, pay attention to what is happening in your industry. In fact, you may even discover that certain industries have standardized on particular programming languages and technologies making the choice a no brainer.

Which ever server technology you end up working with, take the time to learn how to set it up and configure it yourself. Over time, this will serve you well, especially when something worked in the development environment and didn't when it went live onto the production site.

Life Long Learning is the Only Sustainable a Way of Life

There are so technologies that it will often seem like you picked the wrong one for the job. My recommendation here is to pay attention to what your employers are using, what the employers of your friends are using and learn those technologies.

If you are paying attention to your industry, even if you make a mistake and choose the wrong technologies to learn, it will still be possible to find work with companies that made the same mistake and you'll have less competition for these jobs when you find them.

I once had a job working for a company that used a programming language called "Crackhaven". You may not have heard of this programming language because the founders of the company invented it and it isn't used anywhere else in the world. Documentation was almost non-existent and was often incorrect. I didn't get the job because I knew Crackhaven -- I didn't. I got the job because I had lived a career of Constant And Never ending Improvement (CANI) which resulted in knowing so many programming languages that I can adapt to new programming languages with relative ease. Programming concepts are similar across most programming languages. Most of the time, it's just about learning how to use their function libraries and APIs.

Whatever technologies you end up learning, try to stick with them for at least a couple of years if you can. Notice that employers are looking for at least 6 months experience, often even 2-3 years minimum in job postings. If you constantly jump from one technology to the next, you may become very skilled but you still won't meet the requirements.

Follow the Money

Stay focused on your desired outcome and the results you really want. Pay attention to your industry and keep an eye on the job postings, even when you are not looking for a job. Keep in mind that 80% of all jobs are never advertised so you may assume that those that are might also be the ones that are harder to follow.

When you are working, also take the time to learn something new. You don't have to spend tons of time on learning, just a little every day. If you really want to change the direction of your career because you see yourself in a dying technology, you'll need to spend more time to ramp up. Stay focused on your desired outcome and the results you want to get.

To help you keep an eye on job market trends, take a look at Job Trends on Indeed.com. You can enter multiple technologies and see how they've been trending over the last few months/years.

Above all else, have fun. There is nothing worse than working in technology and hating what you do. Follow your passion and become an expert in what you do and there will always be new opportunities opening up,

While not computer programming, program your brain by learning about marketing. It doesn't matter if you are the best in the world at what you do, nobody is going to come knocking on your door if they don't even know you exist.

Don't keep it all to yourself. Share your knowledge at every opportunity, except when it is clearly not wanted. People don't hire you in hopes of learning your secrets, they hire you because they can't, don't know how or don't want to do it themselves. By helping people regularly, they will begin to recognize you as the go-to guy or gal, see you an authoritative figure and remember you fondly for years to come.

Shopping for the best laptop for web developement

As a developer with a diverse background in IT and web development, I prefer to purchase a solid laptop that will serve me for 5-7 years rather than replace it every 1-2 years. This is because it takes me over a week to install and configure all the software, tweaking the registry and getting things working just the way I need it. It's been getting better since I discovered Ninite and Chocolatey but I still prefer not to do it any more than I have to.

Another advantage is that, by the time I am through with a laptop and ready to replace it, it is still good enough for me to pass on to a typical non-programmer user for browsing the web, email, social media, watching videos and typical computing tasks.

With that in mind, here is my advice for buying the best laptop for web development…

The best laptops for Web Developers

As others have mentioned, go with business class. They are built so much better and are more reliable that consumer class machines. That said, if you are a student on a tight budget, you may need to compromise. Just make sure they are compromises that you an live with.

The Macbook Pro is probably the most versatile platform. You can run OS X (which runs on Unix), Windows and even Linux if you really wanted to. You can also develop for iOS AND Android. These machines are also very well built. If you are not sure what you will be working on, this is probably the most flexibility option you will find. I don't personally use a Macbook Pro but know many web developers who love these machines.

That said, I've been using Thinkpads for over a decade. Every time I go out shopping (I really do my homework), the best option has always ended up being Thinkpads. I think the Lenovo Thinkpad P50 is your the best option. It replaces last year's Thinkpad W540.

I actually have high hopes for the Retro Thinkpad, hopefully coming out later this year or next year for the 25th anniversary of the Thinkpad. I hear that it's going to have a the famous classic 7 row keyboard, 16:10 ratio screen, dedicated volume controls, cursor navigation keys in a layout that makes sense, as well as with many other highly desirable modern features that have been missing from the Thinkpad line since the T520 and W520.

Thinkpads are not usually on the bleeding edge of technology. However they are solid and often well thought out machines. After using them for a while, you start to realize the rational behind many of the choices that go into their design… except for the trackpad which was terrible for the last few years but is starting to get better on select models.

It's not going to help you with your needs today but, if you can hang on to your current laptop a little longer, it might be well worth the wait.

If you want something to tide you over or are a student on a tight budget, look for a used 2.4 GHz Thinkpad T520 or W520 with i5 (dual core) or i7 (quad core), a screen resolution of  1600 x 900 or higher and 8 GB of memory. Add an SSD drive to it and this machine perform just about as well or even run circles around many of laptops sold today.

Keyboard

Typing on a poor quality keyboard will actually slow you down and result in more typos. There is nothing like working on the legendary quality keyboard found on a Lenovo Thinkpad in my opinion. They just feel great and, if I am going to be typing 8-15 hours a day, I want my fingers to be happy. Go to a store and type a page of text. After doing this on a few computers, you'll quickly realize that not all keyboards are the same. Don't forget lighting for the keyboard. Programmers often work until it's dark outside. A well lit keyboard can be less disturbing to those who are sleeping than having a bright light on. Try typing on a perfectly flat keyboard with the lights off. It's a lot harder than one might think. Get good overhead or back lighting for your keyboard. If you live in Canada, note that most laptops sold in this country seem to have the multilingual keyboard layout with the bigger inverted L shaped enter key (and some keys shuffled around). If you are used to a US keyboard layout, look for it specifically. Finally, make sure that you can activate the function F1-F12 functon keys by default. Although most of the world rarely uses these keys, developers use them all the time and it quickly becomes a pain to have to press the Fn key in addition to one or more keys in order to activate functions keys.

Trackpad

Don't just look at it, try it out. Is it responsive? Can you scroll with it? Is it multi-touch?Does it have mouse physical buttons that are not just part of the trackpad? Try dragging and dropping something. Try right clicking. I prefer to use the little red trackpoint in the middle of Thinkpad keyboards but hey, everyone has a preference. I also have a separate wireless mouse in which case the trackpad may not be important at all. I think it still is because I don't always have my mouse with me.

Memory

If you don't need to run a local web server or virtual machine, 8 GB should do just fine. Otherwise go for 16 GB. When ordering your computer with 8 GB, make sure it is just one memory module so that you can add another at a later date. Otherwise you may need to remove one or both of your 4 GB memory modules to bring it up to 12 or 16 GB in the future. Also compare the price of the laptop with less memory and adding 3rd party memory vs getting it fully loaded. You may discover that you can save quite a bit of money by doing an post-sales upgrade.

Storage

I can't be objective here anymore -- I admit that I am an SSD drive junky. I am so used to these that it is actually painful to go back to an HDD these days. When you run out of memory, swapping memory to disk also has much less of an impact. How much space will you need? What ever that number is, double it or you will very likely run out of disk space over the lifespan of the computer. My research has also shown that Samsung 850 Evo SSD drives to be much more reliable over the long term than others. Otherwise, plan on replacing your SSD drive every 2-3 years to ensure it doesn't fail.

CPU

Minimum i5 -- don't even look at an i3! Choosing between an i5 vs i7 really depends on the type of programming you will be doing. The only time you should consider an i7 is if you are looking at a quad-core for better performance. A dual core i7 is more expensive and provide little performance gain over dual core. Intel is the standard on both Windows and Apple OS X laptops. AMD? If something doesn't work, will you ever feel confident that the problem isn't the result of you wanting to save a few bucks? Being able to rely on my tools is paramount to me. I know people who shop at the other end of the pricing spectrum and they are forever wondering why their computers aren't reliable.

Video chipset

If you are going to be developing games, you'll want a faster video chipset. If you are just doing web development, the Intel video built into a CPU will do just fine and is much more likely to be supported in the future than niche high performance video chipsets. I made that mistake once. It was fine until I upgraded the operating system and discovered that the manufacturer didn't come out with updated drivers. That said, if you play games in your time off, it might be worth spending a couple of hundred dollars for a computer that will address both your needs for work and play.

That said, my laptops have always been pretty solid over the years -- except when I start installing games on them. Might just be a coincidence but I'm just saying that I noticed a pattern. As long as I keep games off my laptop, I very rarely seem to have problems with it. Be concious of what you install on your laptop. If you just want to try trial software out, do it in a virtual machine and only install it on your computer's operating system when you feel confident with it. That's what trial software is for… to try it.

Display

I recommend a minimum of 1600 x 900. Anything less and you will always feel like you don't have enough space on the screen to work… even if you have a second display. I made that mistake once. I was lucky that it was possible to upgrade the display on my Thinkpad by just replacing the LCD. That's not always possible. Seriously consider 1920 x 1200 or better. You can always reduce the resolution but you can't always raise it. While glossy screens are fun to watch, matte anti-glare screens are much easier on the eyes especially over many hours. A wide horizontal and vertical viewing angle is also a god send. Personally, my ideal screen is 15″ but I know a lot of people who like the portability of laptops with a 14″ screen… if you also have a nice big 23+ inch external monitor to work on most of the time. Other factors to consider include brightness (brighter and better contrast is needed if you are in a very bright environment) and colour gamut. Some might say that colour gamut isn't that important however, the day you have two screens connected and notice that blues and reds look purple and orange on your other screen, you'll be wishing you had a laptop with a better screen gamut to be sure which colour you are using. When you know you are seeing the right colours, you can feel safe telling others that it's their screen that is displaying the colours wrong. Finally, there is the issue of touch screens. Touch interfaces may not be perfect yet but they are definitely on the books for the future. Tablets, smartphones -- if you want to make sure your websites work with these technologies, it is probably wise to get a laptop with touch screen if you can afford it.

Battery

Most quality laptops should get you through an 7-8 hour day these days. It only becomes important if you are going to be away from a power source for extended periods of time. That said, keep in mind that after a while, the battery won't be able to store as much power and will likely only last half that time or less. Bonus if the battery can be replaced without having to send it out for service.

Audio

You are probably going to have external speakers or wear headphones anyway so don't worry about this too much. Do listen closely to the computer sound. Make sure there is no distortion. When testing, listen to both music and to sounds. Noisy chips in the computer and SSD drives, and annoying noisy fans can really get on your nerves after a few hours. While fans do make some noise, it's the solid state chips that really surprise me as sources of noise since I changed to an SSD drive. Also make sure that there is no sound coming from the laptop when the speakers are muted.

External Connectivity

Don't even look at a laptop that doesn't have USB 3.0 connectors, preferably at least 3. You will live to regret it. HDMI is nice because you rarely need adapters but DisplayPorts tend to be more versatile. You can always get a DisplayPort to HDMI adapter. VGA is finally on the way out so get HDMI or DisplayPort if possible. Audio jack is nice but as soon as you get tired of the wires, you'll start looking at Bluetooth so make sure it is included (some laptops still don't). WiFi, G/N/Dual AC should be standard. G for backwards compatibility and Dual AC for the future. Optical drives are no longer worth including for the limited number of times you need it these days. Get an external DVD/RW drive instead if you think you will you need it.

Biometric Scanner (a.k.a. Fingerprint reader)

I tend to log in and out of many websites several times in the course of a workday. Many developers keep all their passwords in Word documents which is hopefully at least password protected itself. However what stopping anyone from peering over your shoulder as you look at your list of passwords on the screen? When used together with a password manager like Roboform, a finger print scanner can not only save you the time it takes look up and type your passwords dozens or even hundreds of times a day, it will also reduce any chance of people learning your passwords as they watch over your shoulder while you type. Your manger or clients will also feel better about trusting you when they realize that you don't type any passwords in plain view of other people. Tip: Make sure the password manager you intend to use works with the fingerprint scanner built into your laptop. True, there are USB fingerprint scanners but how long do you think it will take before someone just pulls that baby out and walks away with it?  Better to have it built-in.

Docking Station

This is optional but I find it very convenient if I need to regularly disconnect and reconnect all the peripherals plugged into my laptop. Some docking stations just connect to a single USB 3.0 plug on most laptops while your whole laptop can sit in others (like with a Thinkpad). The later has the added bonus of putting your keyboard on a slightly more comfortable angle and often comes with its own power supply.

Power supply (a.k.a. power brick)

Check out the size of the power supply, especially if portability is important to you. Some laptops literally have a power supply almost the size of a real red brick. If you don't check before you buy, you might be surprised at the size of it when you open the box. Also, if you do need to travel once in a while, it can be well worth purchasing a extra power supply that you can keep in your bag. This has saved me on many occasions from arriving at work just to realize that I forgot my power supply.

Cost

If you are going to be making money using this machine, don't skimp. In the long run, it's worth spending a little more on tools of your trade, whether it is hardware or software as your choices affect your productivity, how happy you are to go to work and how comfortable you will be. Clients will also judge you by the professional equipment you use.

Is a quality professional computer really that expensive of an investment when you consider that it will be used to generate potentially hundreds of thousands of dollars over its lifetime? Compare the price of a $3,000 laptop to your total income over the next 5 years. Then take the $3,000 laptop and divide it by 5 years and then again by 365 days and realize that it is only costing about $1.65 per day.

You probably spend more on coffee every day. Have one latte less and get yourself some professional grade tools.

Creating Linux dot files in Windows

Ever tried creating a file Linux style dot file like .htaccess or .gitignore in Windows Explorer? It gives you a "You must type a file name." error message. This might lead people to think that Windows doesn't support these file names. If you use a command line, you know that this is definitely possible in Windows. In fact, you can even create dot files in Windows Explorer quite easily with this little know trick.

To create a filename that start with a period "." but has no extension, like .txt, simply add a period to the end of the filename.

For example, enter the file name:

    .htaccess.

…to create:

    .htaccess

Windows will automatically drop the trailing period for you but completely forget that there is nothing before the leading period.

This tip also work when renaming files. For example, you can rename htaccess.txt to .htaccess

May the world overcome bigotry and prejudice, and find peace, love and acceptance in 2016

Respect for others seems to be a fleeting quality at times… but then, just when you least expect it, the best in people comes out restoring faith that things can change.

There will always be bad apples out there and people need to stop associating good folks with the bad just because they might share some physical or cultural similarities. May the world overcome bigotry and prejudice, and find peace, love and acceptance in 2016.

Best regards,

Michael Milette

It’s not about the nail

There was so much conflict in the world this year (2015). At an early age, I was taught to use my words instead of aggression. What if people all around the world started talking instead of fighting and trying to blow each other up? It still wouldn't help unless we learn to really listen to what others have to say.

In this brilliant video entitled "It's not about the nail", can you see past the hilarious interaction and really get as a man from her perspective and as a woman from his perspective?

 

Useful WordPress Contact Form 7 Field Definition Templates

Here are some useful field definitions for use in WordPress Contact Form 7 that are useful when collecting mailing addresses.

Canadian Provinces (English / 2 characters )

<p><label for="province">Province (required)</label><br>
[select* province id:province include_blank "AB" "BC" "MB" "NB" "NL" "NS" "NT" "NU" "ON" "PE" "QC" "SK" "YT"]</p>

Canadian Provinces (French / 2 characters )

<p><label for="province">Province (required)</label><br>
[select* province id:province include_blank "AB" "BC" "MB" "NB" "NL" "NS" "NT" "NU" "ON" "PE" "QC" "SK" "YT"]</p>

Canadian Provinces (English / Full names)

<p><label for="province">Province (required)</label><br>
[select* province id:province include_blank "Alberta|AB" "British Columbia|BC" "Manitoba|MB" "New Brunswick|NB" "Newfoundland and Labrador|NL" "Nova Scotia|NS" "Northwest Territories|NT" "Nunavut|NU" "Ontario|ON" "Prince Edward Island|PE" "Quebec|QC" "Saskatchewan|SK" "Yukon|YT"]</p>

Canadian Provinces (French / Full names)

<p><label for="province">Province (obligatoire)</label><br>
[select* province id:province include_blank "Alberta|AB" "Colombie-Britannique|BC" "Manitoba|MB" "Nouveau-Brunswick|NB" "Terre-Neuve-et-Labrador|NL" "Nouvelle-Écosse|NS" "Territoires du Nord-Ouest|NT" "Nunavut|NU" "Ontario|ON" "Île-du-Prince-Édouard|PE" "Québec|QC" "Saskatchewan|SK" "Yukon|YT"]</p>

Australian States (English / 3 characters)

<p><label for="state">State (required)</label><br>
[select state id:state include_blank "ACT" "NSW" "NT" "QLD" "SA" "TAS" "VIC" "WA"]</p>

United States of America -- USA (English / 2 characters)

<p><label for="state">State (required)</label><br>
[select state id:state include_blank "AK" "AL" "AR" "AS" "AZ" "CA" "CO" "CT" "DC" "DE" "FL" "FM" "GA" "GU" "HI" "IA" "ID" "IL" "IN" "KS" "KY" "LA" "MA" "MD" "ME" "MH" "MI" "MN" "MO" "MP" "MS" "MT" "NC" "ND" "NE" "NH" "NJ" "NM" "NV" "NY" "OH" "OK" "OR" "PA" "PR" "PW" "RI" "SC" "SD" "TN" "TX" "UT" "VA" "VI" "VT" "WA" "WI" "WV" "WY"]</p>

Have a favourite you would like to add to this list? Drop it into a comment below.

Best regards,

Michael