David Keogh's Technology Blogs

These blogs represent the personal experiences and opinions of it's creator, and should be read as such.




Java: Still leading the pack?

There were five primary goals in the creation of the Java language:

Java has been around since 1995. It was designed using the WORA principle, allowing developers to write code once, and port this code to various OS's with the end user requiring only a compatible JVM . The JVM would then act as an interpreter for your compiled classes and convert the resulting compiled bytecode into machine code, ready for execution. There is overhead involved in converting / interpreting bytecode to machine code however, but JIT compilation can help to reduce this overhead.

Java's syntax is familiar to those with exposure to C / C++, but unlike those languages, which allow programmers to write functional as well as OO code, Java is strictly object oriented, modelling real life people, characteristics, items, or even abstract concepts as objects, each with their own state and behaviour. Although learning a true OO language certainly presents its coders with a steeper learning curve, object orientation helps a developer to achieve a more MODULAR, EXTENSIBLE, MAINTAINABLE, and REUSABLE system...

Automatic memory management is another of Java's strengths, using an automated garbage collector to periodically remove objects that are no longer in use and free up valuable system memory. Some may see this as a weakness, with developers unable to assign and release memory as needed, but many hail this as a breakthrough that speeds up development, and removes the incredibly tricky area of manual memory management. Although the GC may be called explicitily in code, its never truly guaranteed to respond to that call, only really guaranteed to execute if the application is close to running out of memory...

The Java language itself is very simple. However, Java comes with a library of classes that provide commonly used utility functions that most Java programs can't do without. This class library, called the Java API, is as much a part of Java as the language itself. In fact, the real challenge of learning how to use Java isn't learning the language; it's learning the API. The Java language has only 50 keywords, but the Java API has several thousand classes — with tens of thousands of methods you can use in your programs.

The final, and perhaps most important reason to use Java is that programmers like it. Java is an elegant language combined with a powerful and well-designed set of APIs. Programmers enjoy programming in Java and are usually amazed at how quickly they can get results with it. Studies have consistently shown that switching to Java increases programmer efficiency. Because Java is a simple and elegant language with a well-designed, intuitive set of APIs, programmers write better code with fewer bugs than for other platforms, again reducing development time.




Software Development: Which language to choose?

Software Development involves far more than just programming. There are many phases involved in bringing an application to life before delivery to its customer. A consultation phase, followed by Design, Construction, Testing (with a return to Construction if necessary), Deployment and ongoing Maintenance are the typical stages in the lifecycle of a piece of Software, with many of these phases having multiple iterations.

Luckily, the modern toolset makes things a little easier for the Programmer. IDE’s can speed up the development and debugging processes, and Modelling Languages can often help describe the relationships between various components even before any programming is done.

And that brings us to the more serious problem for the aspiring beginner programmer. Which language to choose? It seems cool and hip for the younger generation to start off by learning the more socially popular, yet less business-oriented languages such as Ruby, Python, Perl etc. But while it is never a waste of time learning any programming language, it is worth mentioning that although such things as looping constructs, branching statements, variable declarations and object creation is often the same or similar in most of these languages, that’s pretty much where the similarities end.

Probably half the battle with any language is knowing how to program. The other half is the reason why choosing your starting languages is so important! An API is a crucial resource accompanying any programming language, providing a vast collection of Classes, Interfaces and Methods to inherit or implement in order to speed up your development. And knowing the important aspects of your chosen languages API is just as important as knowing the syntax of the language itself.

Therefore, at least in this Programmers opinion, beginners should choose what will be of most benefit to them in the long run, what will keep them employed for the longest term, and what is of most use to the business environment around them.

So while there is no doubt that in certain circles and schools, Python is considered the most popular language, it is a completely different story when it comes to the jobs market, where Java, C and C# still rule the roost, and more than likely will do for the foreseeable future. Learning one of these languages, and the most common Classes from their API’s, will go a long way to ensuring you are not sitting in an interview explaining why you chose to learn the exotics...

My personal recommendation to any beginner is to learn an object-oriented language such as Java, followed by a Database language such as MySQL. The next step would be to learn some Web languages. Start gentle, with HTML5 and CSS3. Then move on to JavaScript and PHP. Much of Software and Web Development is now merging, with many companies looking for people with knowledge of all of the above, Java, MySQL, HTML, CSS, JavaScript and PHP. Choosing the most used and most valuable languages to business is sure to keep you relevant in the fast-moving IT world…




Web Development: Why so complicated?

The web world, like most other aspects of the IT world, is an ever-changing landscape. Where once you could labour over your stylesheets for a couple of weeks, trying desperately to coax your web site to adapt to every conceivable screen size or breakpoint, we now have a huge array of useful frameworks to remove the arduous and tedious tasks.

With RWD usually built-in, most of the modern frameworks substantially speed up web site production, allowing the creator to concentrate on the most important thing to the end user - content. But is it all rosy in this garden?

Not even close. The web is still a huge platter of technologies, all of which work well in their own unique ways, but struggle when used in unison with incompatible partners. The only things for sure are still the backbone technologies of the web.

HTML 5 is the only game in town when it comes to markup. Almost overnight, it completely removed the need for audio and video plugins from vendors such as Adobe. Allowing its users to be naughty and untidy is often-times forgiven, albeit not recommended. You should still behave as though you were still using XHTML, and should be rewarded in time by having code that still stands tall as browsers get updated and unused features and tags are deprecated.

CSS 3 is now the power-house styling language it always promised us, providing more straight forward and lower overhead alternatives to features previously only offered by Javascript. The problem that faced Javascript for a long time, was that lots of end-users turned it off in their browsers to prevent all manner of malware and phishing attacks. So using CSS for as much as you can guarantees that the customer's web site will offer its users a similar experience across most platforms and devices.

But it dosen't end there. Most modern dynamic web pages and sites use a host of additional languages, each used upon the foundation layer to increase usability and or UX. Javascript is the preferred client-side scripting language, coming back into favour in recent years. MySQL is an extremely popular choice for databases, providing speedy and secure data storage and retrieval. PHP is another well-established and reliable choice as a server-side scripting language, communicating with the database and returning it's results.

So, unlike a lot of software development, where many people specialise in a single language or maybe even two, web development is an increasing diverse skillset, with developers often having to pop in and out of maybe 4 - 6 languages and frameworks daily. Other skills, such as optimizing not only code, but images too, interacting with servers and administration interfaces and debugging browser and device issues are often added to the mix also...



Responsive Web Design: Progressive Enhancement or Design Sacrifice?

RWD is a web development approach aimed at creating sites to provide an optimal viewing experience. That means easy reading and navigation with a minimum of resizing, panning, and scrolling. It also means access across a wide range of devices, from desktop computer monitors and tablets, to mobile phones of all shapes and sizes. The question is: Why should we be concerned about people who choose to view our sites on smaller screens? Read on…

Currently, more than 50% of the entire world’s internet connections are made via a mobile device. And this is increasing at an exponential rate. This is important news. Firstly, it tells us that the traditional methods of people sitting comfortably at their desks, facing massive monitors, and enjoying cable connected broadband are (almost) becoming the minority. At the very least, as Web Developers, it tells us that we must radically rethink what we do and how we do it.

Mobile phone ownership is unequalled in consumer electronics. There are currently more than 6 billion phones in the world today, spread across a population of just over 7 billion people. To doubt that mobile friendly website creation is not just the future, but is the here and now, would be to doubt that the earth is round…

Yet, it need not be too intimidating. In fact, there are several unique ways to make the mobile development process as easy, if not easier than to develop for its bigger brother.

Media Queries is a CSS3 module allowing content rendering to adapt to conditions such as screen resolution. This allows the page to use different CSS style rules based on the characteristics of the device the site is being displayed on, most commonly the width of the browser. Media Queries became a W3C recommendation as of June 2012.

Progressive Enhancement - This concept embraces web technologies in a layered fashion. The basic premise is to allow everyone to access your website, using any browser or internet connection type. Those with more modern browsers and greater broadband speeds can receive an enhanced version of your site.

Mobile First - This method embraces the miniature. With a focus on UX on the smaller screen, the developer can ensure that their site is fine-tuned to perfection before proceeding. The next stage is to gracefully take that concept and enlarge it, possibly populating it with additional images, or merely larger ones, and creating suitable white space where needed.

My Hot RWD Tips:

  1. Try to make your mobile site WEIGH LESS. That is, a user accessing your site on their mobile phone should NOT be downloading a desktop sized site.
  2. Consider CONDITIONAL LOADING: This can be used to ensure that small screen users don’t download a whole bunch of stuff they can’t use. e.g Social Widgets, Lightboxes etc..
  3. Keep an OPEN MIND regarding Breakpoints: Some believe that breakpoints should be based around screen sizes, but with the increasing number of devices sizes, maybe it’s more logical to create a breakpoint where the actual layout breaks?
  4. Consider a MOBILE APP: If your site is incredibly popular, or your content is updated daily, consider the creation of a dedicated app. This can only boost returning site visits, and possibly add an additional revenue stream to your site.
  5. BOOTSTRAP: I recommend this for people who already know how to make websites the hard way. With an emphasis on RWD straight out of the box, and the ability to get your site up and running in no time, it's important to note that beginners will be lost at sea when it comes to debugging the additional overhead and complexity involved in using Frameworks of any kind...
  6. Repetition: Finally, PRACTICE MAKES PERFECT. Try to make each new website that you create responsive using different techniques. Separate or singular stylesheets, percentage or pixel based etc.

And that’s the beauty of web development. You may choose to use all of the above strategies, or take on a singular concept or mix and match as suits. Or just do it your own way. But whatever you choose to do, ALWAYS CHOOSE MOBILE…



Search Engine Optimization: Black magic or common sense?

There are now THOUSANDS of books dedicated to SEO. For the sake of readability (and my own sanity), we will concentrate on META KEYWORDS for this blog...

History - The keywords attribute was popularized by search engines such as Info-seek and Alta-Vista in 1995, and its popularity quickly grew until it became one of the most commonly used Meta elements. By late 1997 however, search engine providers realized that information stored in Meta elements, especially the Keywords attribute, was often unreliable and misleading, and at worst, used to draw users into spam sites.

Search engines began dropping support for Meta data provided by the Meta element in 1998, and by the early 2000′s, most search engines had veered completely away from reliance on Meta elements. In July 2002, Alta-Vista, one of the last major search engines to still offer support, finally stopped considering them. Today, no consensus exists as to whether or not the keywords attribute has any effect on ranking in any of the major search engines. It is speculated that if the keywords in the Meta tags can be found in the body of the document itself, that they can still have an effect.

With respect to Google, thirty seven leaders in Search Engine Optimization concluded in April 2007 that the relevance of having your keywords in the Meta attribute is little to none. In September 2009, Matt Cutts of Google announced that they are no longer taking keywords into account whatsoever. However, both these articles suggest that YAHOO still makes use of keywords in Meta tags in some of its rankings.

In September 2012, Google announced that they would consider keyword Meta tags for news publishers. Google said that this may help worthy content to get noticed.

TODAY - FOR: Since today’s search engines use a wide variety of factors to determine site rankings, optimizing a page to rank highly is a cumulative effort. Everything that the search engines may use should be considered, and therefore you should certainly use Meta tags, including the meta keyword, along with every other legitimate technique at your disposal. At best, it may help boost your site a bit in those engines that still read them. At worst, it won’t hurt your client’s rankings. Here are some things to consider before typing in those keywords:

TODAY - AGAINST: According to the OFFICIAL GOOGLE WEBMASTER CENTRAL BLOG on March 13th 2012, Matt Cutts is quoted as saying of keywords: “They simply don’t have any effect in our search ranking at present.” He continues, “About a decade ago, search engines judged pages only on the content of web pages, not any so-called “off-page” factors such as the links pointing to a web page. In those days, keyword Meta tags quickly became an area where someone could stuff often-irrelevant keywords without typical visitors ever seeing those keywords. Because the keywords Meta tag was so often abused, many years ago Google began disregarding the keywords Meta tag.”

Other information I have researched suggests that only about 1 in 10 Google Search results will contain a page that has Meta tags. Bing on the other hand returns 4 out of 10 pages that have Meta keywords.

In July 2012, Duane Forrester, senior product manager for Bing, provided this advice about the tag: “I’ll make this statement: Meta keywords are a signal. One of roughly a thousand we analyse.”

So...my advice? Use them, discretely, and honestly.



Hardware: Considerations when building your own PC

People who work in IT are often asked questions they know nothing about, usually by individuals who presume that working in IT means they know everything about computers, both on the hardware and software sides, and not realising just how varied and specialised IT roles can be. Sometimes a Computer Programmer may know little about Web Development for example, while a Web Designer may not know much about developing a web site's back-end. And on it goes... someone who works as a Network Programmer may know nothing about the previously mentioned technologies, whilst a PC Repair Specialist may know nothing about all of the above!

With the above in mind, this section will cover the theory behind building your own PC at a basic level, so as not to alienate those new to the topic.

To begin with, you need to ask yourself 2 questions:

Generally speaking, if you have the resources, you should always attempt to buy or build the FASTEST PC you can. Hardware gets outdated quickly, either by superior software being written which requires high-end CPU's, GPU's or fast RAM, or by said software benefiting from faster I/O operations from disk.

So where should you begin? The following components will be needed for a fresh build, so lets take a look at what we need:

If it's your first PC build, then buying a large case is probably best, giving you plenty of room inside to assemble your components, and often providing you with optimal airflow. Look for good brands such as Corsair, CoolerMaster and Antec. They will usually have several fans included, and should come with plenty of the latest USB 3.0 connections.

The motherboard is crucial, and dictates what kind of CPU you can use, how much RAM you can install as well as how fast the RAM can operate. As with almost all of the listed components, spending more usually secures a superior product. Look for brands such as MSI, Gigabyte and ASUS.

The CPU often used to be the single most important component in any PC. Whilst that is arguably no longer true, it still remains an essential component, and you should aim for a 6 to 8 core i7 CPU from Intel if your needs are mainly content creation, and a high-end quad-core CPU from Intel in the core i5 or i7 range for everything else, including gaming. AMD offer a range of chips to rival those from Intel, especially for gaming, where a reduced number of cores and a higher general clock speed can often result in higher frame rates. They are usually cheaper too. But do some research before committing...

The GPU, or Graphics Card, is now arguably the more important decision for new system builds. Far from being used solely for games, modern GPU's usually handle all physics computations, as well as rendering for animation or video compression and high-end photography work being handled by high-end software. Advances in GPU's are far greater than CPU's, and you should try and purchase the latest spec GPU from either Nvidia or AMD, ensuring that both its clock speeds, and its VRAM are sufficient for your needs.

RAM is where the short-term needs of your computer's memory is stored. RAM is volatile, with a loss in power usually completely wiping its banks of any stored data. It does however, operate at a fantastic speed compared to persistent data storage (hard disk drives, solid state drives etc), and allows the computer to execute tasks without having to first find them on disk.Your motherboard and CPU dictate what RAM can be used and at what speeds. For example, a modern X-99 motherboard, with a core i7 CPU installed, should allow you to use the latest DDR4 SDRAM modules at speeds up to 3,200 MHZ. Bear in mind that the sweet spot for RAM is usually 8 - 16Gbs. Less is not recommended, but neither is more, unless you work in content creation. Otherwise it will just reside there, smiling at you whilst eating your wattage...Look for quality RAM from companies such as Kingston and Corsair.

An SSD is the best thing to have happened to persistent storage in a long time. It means your HDD no longer contains complex moving parts, and operates at speeds sometimes hundreds of times faster than a traditional platter drive. Whilst still being expensive compared to platter-style HDD's, without purchasing an SSD you could find that your shiny new PC is being bottlenecked by this component. Try and buy a reputable brand with as much capacity as you can afford. Look for offerings from companies such as Samsung and Intel.

The power supply is where most PC builders, especially experienced ones, get things terribly, terribly wrong. Even with the latest all-singing all-dancing CPU and GPU installed, the power needs for the VAST majority of these builds will be usually no more than 600 watts. If you think you might need a little more, or are a bit unsure, then up that number to 700 or 750. Like the comment above on RAM, going above the sweet spot will simply result in hardware sitting in your machine offering you no real benefit to your computing experience, but eating power all the time. Just because there are offerings around the 1200 or even 1500 watt range does not mean they are a wise choice. Unless electricity is free in your area...