Tag Archives: software development

Why Coding is the New Black

What job skill do you think will be most valuable by the year 2020? As it turns out, the world runs on code and as you can expect, coding will be a valuable skill set to have by then. In fact, so many companies and individuals are so optimistic about this that there are now a slew of startups on the Web dedicated to teaching you how to code.

Code

If you are little way past grammar school, don’t lose hope because the Web can take care of this for your. You can either decide to take specialized education programs or teach yourself how to code using the hundreds of websites and resources available online, most of them at no cost.

Where Do You Start?

Learning HTML and CSS can be a good foundation to learning code. These also happen to be the building blocks of web design. You can start by learning the basic syntax and simple browser animations to get you up to speed.  One of my favorite websites is Codecademy which takes the classroom approach by giving you small quizzes along the way. The website comes with a progress monitor as well as a white board that allows you to make errors, correct and re-learn, effectively teaching you what works and what doesn’t.

HTML

If you are the sort who likes to watch as opposed to reading, there is still hope for you. Treehouse, a startup that offers instructional videos on coding and programming languages is a great place to get your feet wet. The website teaches you how to build websites, create iPhone and Android apps, code with PHP and even start a business: all using video. You get over 1,000 videos in the different areas of web technology, take quizzes and interactive code challenges, as well as earn badges as you monitor your progress along the way.

According to the co-founder of GonnaBe, a location-based app, “Understanding data at any scale requires a computer to run numbers, not a calculator. In today’s big data world, that means coding.” The CTO of Osurv Mobile Research, a smartphone survey company, echoes similar sentiments regarding big data by saying, “A new coder better understand what that means and how to handle it. Every company has access to a gold mine of consumer insight in the form of analytics, social networks, activity logs, etc. The challenge in managing that information is developing a process to extract high-value bits and act on the quickly.”

Learning the basics of coding is a skill set that can last a decade despite the complex and dynamic world of programming. Coding is the new literacy and will separate those who are tech literate and the tech illiterate. It can make you a better leader and business person and make you marketable in a more tech-oriented world.

If you can learn to code, do it. You won’t regret it.

Is it time to stop numbering software releases?

numbersAdobe has recently has announced that it will stop selling boxed copies of its Creative Suite software. This comes as no surprise – they are trying to push customers into their subscription-based Creative Cloud service. With Creative Cloud, the subscriber can download any an all updates of the Creative Suite software as it becomes available. As I thought about that announcement, though, it got me wondering: how much longer will software companies number their products with years and or versions?

Apple stopped it with the iPad and has never numbered the iPods or computers. They also never numbered the iWork suite for iOS. iWork for the desktop has been stuck in iWork ’09 for years, but it is constantly getting updated. I would not be surprised if the next full iWork version drops the year altogether.

Microsoft Office is now available as Microsoft 365 and in subscription format. I would expect the 365 number to be around for a while and the software would just get periodic updates without a number change. I guess we could see Office 720 in the future, but is it really needed?

Are software version numbers even needed anymore?

If retailers are moving towards downloadable versions of the software, why can’t they just add new features to the current version without renaming it? Sure, a new version brings more money in the way of people who want the latest and greatest. However, with the subscription model, subscribers get the latest and greatest automatically. You might even say they get the updates for “free.”

I would even argue that Apple has a one time fee subscription model in the Mac App Store and the iOS App Store. Until a major new release of iWork comes this can’t be a definitive statement, but so far all you have to do to get the latest features of the iWork software is buy it once through the respective store. All updates have been free. This has been true with Apple’s iLife offerings too. Will this continue when a major update is called for? As I said, that remains to be seen.

One thing is for sure, if software products lost their versions there would be a lot of pressure off of developers to constantly be releasing new, huge versions. Instead, they can focus on adding features that can be added via updates as soon as they are ready. No more need for a big version release – just download the latest update. Both the Chrome and Firefox browsers have moved to this rapid release structure, and the result is users get new features and updates almost as soon as they are available.

The case for software versions

Of course, there are benefits to numbering. The biggest is compatibility issues when sharing files. When you are sending files to another person, they often need to have the correct software to open it. For example, if I send a Photoshop file to a person, I need to know what version of Photoshop they have. I can’t send them a Photoshop CS6 file if they only have CS3 on their computers. If Photoshop did not have a version, how would I know if the software would be compatible? I could ask the person if their version of Photoshop was released after a certain date, but that would just get too confusing.

Conclusion

For now, I suspect version numbers and years are here to stay. However, as more and more companies move to the subscription model or Apple’s model I believe there will be a day in the near future when you just send a Microsoft Office file to someone and it just works because everyone is running the newest updated version they got via automatic update.

HTML5 and the Future of Mobile Apps and Gaming

HTML5 will change the way we view mobile apps, and will change the way we think about how software has to be viewed on a mobile device. It will even change the way we view desktop applications. HTML5 is the biggest game changer since Apple’s App Store.

But if what I am saying is right, then why hasn’t this all come true yet? The reasons are many, some minor and easily overcome, and some not so much. Let’s start with an explanation of what HTML5 and JavaScript advancements are already doing in the mobile world.

HTML5 is the new HTML standard.

Major enhancements such as the <“video”> tag, CSS3 animations and better JavaScript support are what have made HTML5 such a hot topic. With the power of HTML5, web developers and programmers can write software in a cross-platform language and save significant time and effort.

HTML 5 Development Platforms

Some companies, such as Sencha who developed Sencha Touch, and Prism Technologies who developed PhoneGap, have created mobile development platforms that reach from Android and iOS all the way back to Blackberry and Windows Phone 7. The reason these platforms are so flexible is because they utilizes HTML5, advanced JavaScript and CSS3 to replicate a native app using a web browser.

I’ve had experience using Sencha Touch and PhoneGap (PhoneGap makes it easy for users to load HTML5 libraries into a native app “wrapper”, which can access hardware-specific functions such as the camera and accelerometer, for distribution on an app market) and have found that while it is very useful while building information and text driven applications, it is not very effective in creating graphically intense applications such as ones with photo galleries, interactive menus, or games. This leads me to why HTML5 has its limits in the mobile world today.

Mobile Browsers

Each mobile OS has a browser that is used to generate the HTML5 application. The problem is that not every browser was created equal, especially when it comes to HTML5 support. When looking at HTML5 on an iOS devices such as an iPhone 4s, HTML5 is very responsive and smooth.

This is not so true with Android and Blackberry. Although Android has good support for most of HTML5, it has many “artifacts” or poorly handled graphical renderings that make it slower, less attractive, and overall less responsive than its iOS counterpart. This is the main reason development of HTML5 has not surpassed development of native applications to date. There are a few other limitations to HTML5 such as hardware support when accessing components like the camera or file systems, but HTML5 hopes to circumvent that soon with future standards.

The conclusion is that HTML5, while being very powerful and flexible when used with JavaScript and CSS3, is not yet a suitable replacement for native development and therefore one must first consider the goal of the said application before deciding to proceed with development in HTML5 or native environments.

But don’t forget, according to Strategy Analytics, more than 1 billion HTML5 supported phones will be sold worldwide by 2013. Read more here.

You can read more about mobile HTML5 support here.

Bring Python to Your .NET Development with IronPython

Python is a high-level programming language that has gained popularity in recent years for its emphasis on clear code that is easy to read, combined with surprising power and flexibility. Because Python is free and open-source, it has become a widely used scripting language primarily for web-based applications…but did you know that a little help from the .NET framework can bring your Python apps to the desktop, complete with a graphical user interface? IronPython is a handy tool that will allow you to enjoy the perks of .NET development with your favorite language, Python.

IronPython is a version of Python that is tightly integrated with .NET, originally developed and maintained by a team of Microsoft engineers but recently released to the open-source community. IronPython integrates with Microsoft Visual Studio and allows you to combine traditional Python code with .NET technologies, including Windows Forms and WPF for UI design. The result is a Python-coded application that looks and behaves no differently than any other Windows program, which is a big improvement over the command-line programs typical of the language.

'Hello World' with IronPython

But how exactly does IronPython fit into the .NET world? The diagram below shows the basic functionality where the Python code makes calls to both the .NET framework classes as well as Python libraries. The Python code is then compiled by the IronPython Engine and converted to assembly code that can be executed by the .NET runtime.

IronPython isn’t just for the desktop and can be used to develop web applications that integrate with Silverlight, a Microsoft framework similar to Adobe Flash. If you’re worried about pigeon-holing yourself into Windows with .NET, fear not, IronPython is supported by Mono, an open-source and cross-platform alternative to .NET. Likewise, if you don’t have the money to throw down on a license for Visual Studio, IronPython Studio is a free IDE that runs from the Visual Studio Shell.

So, if you’re a Python developer and want to make user-friendly apps that can take advantage of all that .NET has to offer, bust out of your command-line world give IronPython a spin.

How to install Microsoft’s FxCop for Visual Studio 2010

I recently discovered Visual Studio Achievements, which as the name indicates, adds video game-style “achievements” to Microsoft’s premiere IDE while you code. Visual Studio Achievements was even created by Microsoft’s Channel9 team, so you know it’s the real deal.

Some of the unlockable achievements include positive awards like “Add 10 regions to a class. Your code is so readable, if I only didn’t have to keep collapsing and expanding!” and negative awards such as “Write a single line of code at least 300 characters long. Who needs carriage returns?”. With leaderboards and fun icons, Visual Studio Achievements adds a little fun to your programming experience.

Many of the achievements require a Microsoft tool called FxCop to be installed for them to be unlocked. FxCop is a utility that can analyze your source code and provides feedback on possible design, localization, performance and security improvements. Unfortunately, if you head to the FxCop download page, you’ll quickly learn than the FxCop “download” is actually a text file that tells you to install another file to actually get the application.

When you open the FxCop text file, you’ll be presented with the following information.

FxCop Installation Instructions
1. Download the Microsoft Windows SDK for Windows 7 and .NET Framework 4 version 7.1.
2. Run %ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\FXCop\FxCopSetup.exe to install FxCop.

I know, I was surprised too. For this to work, I need to install the Windows SDK, then install another installer? Well you’re in luck – I took the time to figure out what files were needed so you can install FxCop as quickly as possible. Just follow my instructions below.

Note: This guide is only required if you are using Visual Studio 2010 Professional. If you have Visual Studio 2010 Premium or Ultimate installed, FxCop will already be included with your IDE.

How to install FxCop

Step 1. Download the Microsoft Windows SDK installer.

Step 2. Run the installer. Click “Next” until you get to the “Installation Options” screen.

Step 3. In the Installation Options screen, select only “Tools” under the .NET Development section. You’re free to install other features as well, but “Tools” is the only item that will include the FxCop installer.

windows_sdk_installer

Step 4. Click “Next” and continue following instructions until installation is complete.

Step 5. After the installer finishes, navigate to C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\FXCop.

Run the installer in that folder, FxCopSetup.exe.

After installing FxCop, you’re finished! You can now enjoy the full features of both FxCop and Visual Studio Achievements.