Tag Archives: programming

Teaching kids how to code with programming games

computer codeIt comes as no surprise that computer coding is a viable life skill. Computer programs, video games, and virtually everything else runs off the stuff, and knowing how to write said instructions can turn into a lucrative career. The problem, however, is that there just aren’t enough coders to keep up with the booming rate of technology. At least that’s what the development companies are telling us. While there’s a huge demand for their products, there aren’t enough workers who can create them.

While, for the time being, software developers are working overtime, the companies have come up with a virtually fool-proof plan for the future: teaching code to kids.

Through apps, games, and other fun-related activities, kids old enough to hold a tablet are learning coding basics. By tackling this subject early on, there’s a better chance future generations will produce more coders. And, even if a majority doesn’t turn into software-writing pros, they’ll still hold the basic knowledge of binary and other computer controlling lingo.

The Lack of Learning Curve

But just how hard is it to learn these skills? For those of us with a basic understanding of HTML, it’s hard to tell if code is similar to learning-another-language hard, or reorganizing-mumbo-jumbo hard. Presumably, however, it’s several steps above the former. Not only does coding require the knowledge of computer language, one also has to know how to combine and adjust codes to achieve specific outcomes. While, when learning another language, various sayings can achieve the same meaning, the same is not true for computers.

It’s also likely true as to why there’s such a shortage of programmers in the status quo. If it were easy, everyone would do it. However, software company execs say with the release of these games, kids (or adults) are able to have fun while learning basic commands and combinations.

Some top-ranked programming games include:

Whether you’ve got a child at home or you’d like to try out these brain-teasing apps yourself, coding games are a great way to learn a new skill … and while having fun in the process.

Head to the iOS or Android app store to check out more programming games today.

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.

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.

ShiftEdit: A Web-Based IDE for PHP, Python, Ruby and More

If you’re a programmer or developer that juggles several projects at a time, your code can sometimes be lost between multiple workstations, or worse, lost in some sort of catastrophic system failure. If only you’d had a chance to run a backup first! With everything going to the cloud these days, wouldn’t it make sense to have your valuable projects protected in the fluffy white stuff as you work on them?

ShiftEdit is a web-based development environment for HTML, PHP, Ruby, Python and more, and they’re adding new languages all the time. Like the usual desktop-based WYSIWYG counterparts, ShiftEdit offers ‘Code’ and ‘Design’ views for creating your applications, as well as syntax highlighting for their expanding portfolio. As you code, your projects are automatically saved, safe and sound in the cloud and accessible from any computer with a browser and internet connection.

Code, design, and split views

If you require FTP access and database connectivity for your projects, ShiftEdit gives you the ability to connect to one site for free with the option to add unlimited sites by upgrading to their Premier service ($5/month). ShiftEdit also gives you access to basic version control tools in case you’ll be collaborating with other users.

FTP and database connectivity

If you’re looking for enterprise-class tools that help you whip out projects at lightning speed, ShiftEdit may not be everything you need. The IDE currently lacks auto-complete functionality and only provides real-time syntax debugging for JavaScript and PHP. Combine that with a finicky FTP tool, and you may want to steer clear with your high-impact projects. That said, ShiftEdit is on the right track to being a feature-rich IDE with new things being added all the time, like Dropbox support.

With more and more production-grade development tools becoming web-based, don’t be surprised if you’re developing straight to the cloud in the next few years. Give ShiftEdit a try and put yourself ahead of the curve.

Four HTML5 and JavaScript Frameworks To Jump-start Your App Development

Let’s just face the facts: Flash is dying, platform/browser agnostic development is in, and Windows 8 is bringing HTML5/JavaScript to desktop development. Love it or hate it, as a developer you’ll probably need to familiarize yourself with the finer points of HTML5 and JavaScript-driven application design, but where does a person start? Traditionally HTML and JavaScript are used for website markup and making pretty transition effects, so how do we get from high school level web design to making HTML5/JS a realistic front-end for enterprise class applications?

HTML5/JS frameworks are beginning to pop up as viable development environments for the entire range of web-based applications, from desktop to mobile. Here are four HTML5/JS tools that will turbocharge your apps and keep you savvy with this new trend in development.

1. Yahoo! Cocktails

Yahoo recently announced its newest mix of HTML5, CSS3, and JavaScript tools, and believe it or not, Yahoo still knows how to bring decent services to the table. Cocktails brings existing Yahoo! services like YQL and YUI together with HTML5/JavaScript tools for rapid multi-device and multi-platform development. The most impressive aspect of Cocktails is its integration with Yahoo!’s Mojito, which allows JavaScript functionality for your apps even if the device has JavaScript disabled by running scripts on the server side. Yahoo! isn’t dead yet!

2.  SproutCore

SproutCore is an open-source set of tools built using MVC (model-view-controller) architecture for creating universally accessible, scalable, and speeding applications. The team that created SproutCore offers many easy-to-follow guides for beginners, and the well-established community of developers make troubleshooting relatively pain-free. Of the frameworks I’ve encountered, SproutCore is the most polished…and it doesn’t hurt that it’s free.

3. LimeJS

If your forte is creating web-based games, LimeJS is a framework for rapid development of native-experience touchscreen apps for mobile devices or desktop browsers. This simple but flexible tool set is free to download and takes the headaches out of creating rich cross-platform user experiences with standardized code and solid community support.

4. Sencha

The only non-free framework on this list, Sencha is meant for industrial strength app development. Sencha offers an array of tools like a visual designer, rich spreadsheet support, CSS3 animator, and skinning to put a unique look and feel to your application. The Sencha API allows for rapid development for touchscreens or standard desktops, and while it isn’t free to download, Sencha provides professional support and training for its customers. User interface, app functionality, and data connectivity — Sencha does it all.

Conclusion

Will HTML5/JavaScript bring about the downfall .NET/WPF app development? Not anytime soon. But if you’re looking to bring your application to as many users and devices as possible, HTML5/JS is your ticket to fame. These frameworks will get your started, and if you have a favorite not listed here (there are many), please leave it in the comments.

Add Variables, Operations, and Functions to Your CSS with the LESS Dynamic Stylesheet Language

As a programmer, the most frustrating part about working with CSS is the redundancy. If you’re designing a layout with a strict color and font scheme, you can find yourself copy/pasting the same same snippets over and over…and what if that scheme changes? You get to track down each element, which takes forever even with search/replace.  What programmers crave for CSS is the ability to give dynamic behavior to a static sheet. LESS is coming to the rescue.

The LESS Dynamic Stylesheet Language is a brilliant little piece of Javascript (just 34 KB!) that you can add to your web pages to bring your CSS the power of a full-blow programming language. Installation is a snap: simply include a line of code after your other stylesheets, and suddenly you have the ability to use variables, operations, and functions in your CSS. LESS is compatible with IE6+, Webkit, and Firefox and will simplify the way you code.

Variables and Operations

Let’s paint an example:  what if you wanted to set a variable to convey a constant color or size throughout your stylesheet? No problem, just employ an @variable and your coding (and updating) just got a lot faster. Need to use basic operations to scale up font size? LESS supports that, too.

Functions

Maybe you want to reduce code redundancy by assigning multiple lines of code to a single word. LESS functions have you covered. Better yet, the functions support parameter variables for added flexibility — you won’t believe how groomed your code will look.

With LESS you can reduce your coding time and simplify your updating process by eliminating redundancies and employing basic concepts that programming languages have enjoyed from the very beginning. Save time and eliminate the clutter by adding LESS to your web development tool belt.

Creator of C Programming Language, Dennis Ritchie, Dies at 70

If I were a revolutionary in the tech industry, I’d be a little worried. Just a few days after the death of Steve Jobs, the tech community has lost another game-changing leader on October 12 — Dennis Ritchie.

While considerably less famous than Jobs, Ritchie was the father of the C programming language, which he created in 1973 at the Bell Telephone Laboratories. Ritchie was also well-known for being a key developer of the Unix operating system (along with Ken Thompson), which made extensive use of C.  Over the course of his career, Ritchie was able to witness the incredible impact that his C language had on the industry. As more advanced languages began to appear, some were extensions of Ritchie’s C (such as C++) while others borrowed generously from C’s straightforward conventions in both syntax and compiling. Ritchie was such a fan of simplicity that he made every effort to make it a hallmark of UNIX…with arguable success.

UNIX is very simple, it just needs a genius to understand its simplicity.

– Dennis Ritchie

Ritchie was the recipient of some very impressive awards in the Computer Science field for his contributions to the UNIX OS, including the Turing Award (1983), the National Medal of Technology (1999), and most recently the Japan Prize (2011). All fellow computer scientists were humbled in his presence by his brilliance and understated character.

The loss of Ritchie rings a surprisingly personal note with me; after all, the closest I’ve ever been to speaking with the man was when I used his textbook (K&R C) for a class in college. Still, I grew to appreciate the dry humor he inserted into his writing and it’s impossible to forget that every professor I had revered him as a true genius.

Mr. Ritchie, you will be missed and thank you for your contributions to Computer Science. Some people say that Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science, and Ritchie’s tools have helped make that combination bearable .

How to Stretch a Menu Control to the Width of a Window in WPF

If you’ve ever created a Menu in WPF, you’ve probably noticed something peculiar: A Menu will not stretch to fill the entire width of its parent container. If you set the Menu’s width to ‘auto’ or delete the width property altogether, the Menu will shrink to the maximum width needed by its MenuItem elements (so if you have 0 MenuItems, it will disappear completely).


	
	
	
	

A Menu in WPF only stretches to the width of its children by default.

This is contrary to the default behavior of a Toolbar control, which will automatically stretch to the width of its parent container.


	

The easiest solution I’ve found to deal with this problem is to manually bind the width of the Menu to its parent container’s width. To do this, you’ll first need to give the Menu’s parent container a name (I’m using a Grid as the parent, so I called it “grid_Main”) and then add the following code to your Menu:

Width="{Binding ElementName=grid_Main,Path=ActualWidth}"

Which in my application looks like this:


	
		
	

This will stretch your menu to the full length of its parent container, which in my case is the entire window.

If you prefer to do this programatically in C#, you can set the Menu’s width to equal the parent container’s width after the parent container has loaded (doing so before the parent container has loaded would set the Menu’s width to 0).

To do this, I created a Loaded event in my Menu in WPF:


And in the event, I set the Menu’s width to the ActualWidth property of its parent container, which is the same Grid I used in the earlier example.

private void menu_Main_Loaded(object sender, RoutedEventArgs e)
{
	this.menu_Main.Width = this.grid_Main.ActualWidth;
}

This has the same effect as binding the element properties in WPF, but we’ve overlooked one important thing: since the width of the Menu is only set when the control is loaded, it will not change if you resize the Window after the application is running.

To deal with this, I found it easiest to create a SizeChanged event on the main Window:




And in the SizeChanged event, once again set the width of the Menu to the width of its parent container as we did before.

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
	this.menu_Main.Width = this.grid_Main.ActualWidth;
}

This will give you the same functionality as the WPF solution, although it requires some additional code.