The Best Way to Start Programming for Free

We all have good ideas, right? But sometimes these good ideas take more skill than we have at our disposal to bring to life. Maybe you’ve thought of the perfect “app for that,” but haven’t ever programmed a line of code in your life — in fact, you don’t even know where to start programming! Your good idea remains locked away in your noggin along with all of those other dreams that seem sadly out of reach, and that’s a shame. But maybe there’s a solution?

This is an interview with Geoff from Xojo, a development environment that helps people with no programming experience turn their good ideas into fully working apps. As the Xojo team says, it takes pride in “enabling ordinary people to create extraordinary apps.” I figured I’d ask him a few questions about just how Xojo helps regular, non-coding folks achieve such lofty goals. (Disclosure: Xojo is a LockerGnome sponsor.)

http://youtu.be/Yfv-WPlgjKU

What makes Xojo different from other development environments?

The Best Way to Start Programming for Free
Xojo: Enabling ordinary people to create extraordinary apps. [Image: Jeremy Bronson via Flickr]
Most development tools have chosen to be powerful, but not easy-to-use — or they’re easy-to-use, but not very powerful. Most people think you have to make that choice, but there are lots of products that prove that’s not true. A few examples that leap to mind are the iPad and the Nest programmable thermostat. These devices do a lot more than anything in their category in the past and yet both are easy to use.

I have always believed that if you are making a choice between powerful and easy-to-use, you haven’t thought about the problem long enough. People interested in creating apps want to focus on what makes their application unique. They don’t want to be bothered with the details of the target OS. And they want their applications to be indistinguishable from those made with the tools provided by the OS vendor. They want to be able to build any kind of app they can imagine for any modern platform.

Xojo does this. First, it lets the new developer make incremental progress. There’s no mountain of learning that has to be completed before the simplest app can be created. You can drag a few controls on to a layout and click Run to see your interface come to life. Then you can start learning commands to do what your app needs to do. Second, most people don’t want to learn the details of the OS. Each OS has thousands of commands. Xojo abstracts you from that so you can focus on the app. Third, everyone wants their applications to look and feel native. That’s why Xojo uses native controls on each OS rather than drawing the controls itself like some other tools do. And finally, you don’t want to have to learn one language to create desktop apps, another for the Web and another for iPhone/iPad. Xojo provides a single development tool and language that targets desktop and the Web, with iPhone/iPad coming later this year.

One tool to rule them all. :)

Is cross-platform development really that important?

It is. When we started out, we created only desktop apps and only for Mac. At that time (and still to some degree today), Mac users had to live in a Windows world. So being able to create a Windows version of your Mac app without much extra work was a very powerful idea for Mac developers. We provided that. Today, Mac market share is growing, and more and more Windows developers feel they can no longer ignore the Mac market. People writing software for use inside their company are finding that they need to target more than one OS. That’s what we are seeing. They are coming to us for a solution to build a single app that can run on Mac and Windows desktops, Linux servers, and the Web. And, of course, they want to be able to build apps for iPhone and iPad, so we are hard at work on that as well.

But there are more cross-platform issues. For example, when you build a Web app with the traditional tools (JavaScript, HTML, CSS, AJAX, and PHP or Java), you have to spend a lot of time testing your app in each browser and then making changes because, regrettably, they don’t all interpret things the same so you can end up with different results in different browsers. The Xojo Web framework abstracts you from the assembly language of the Web (my term for JavaScript, HTML, CSS, AJAX, and PHP or Java) and in doing so abstracts you from the differences between Internet Explorer, Firefox, Chrome, and Safari. Dealing with all of that can consume enormous amounts of time.

If anything, cross-platform is more important now than it has ever been before. If you are developing for only one platform, you should take a hard look in the mirror. If you see sharp teeth, a long tail, and tiny arms, you might be a dinosaur.

Why have you opted for a partial freemium model with Xojo?

Most schools today teach their introduction to programming course with Java. I can think of no better way to turn people off to programming. It is our goal to be the tool for anyone who wants to learn programming. So we’ve made that part of the process free. We’ve also commissioned a book, An Introduction to Programming with Xojo, which will teach anyone the fundamentals of programming. Most of what you learn will translate to just about any other programming language. However, we strongly believe that once you learn programming with Xojo, you’ll continue to use Xojo. And once you reach the point where you want to share your app with your friends, co-workers, or the rest of the world, you’ll buy a license.

If you’re an experienced developer, you’ll reach that point very quickly.

Where did the idea for Xojo come from?

I’ve loved programming since I was about 12. But I’ve also thought it was needlessly complex. Xojo is the realization of my dream to make programming accessible to new developers and fast and efficient for experienced developers. You should be able to learn one tool and language, and then build for whatever platforms you need.

From your experience, what is the most common issue software developers face?

Complexity. Even a simple app can be a long and complex process to create with most development tools. That’s why we focus on ease-of-use and fast development.

Are “apps” just a fad?

Sure, in the same way that “computers” are just a fad. :)

Apps have been around for as long as computers have. Now we have more types of computing devices and thus more types of apps. We have traditional desktops and laptops, Web browsers, smart phones, and tablets. They all run apps. The apps might look different because of the device upon which they are running, but they are apps nonetheless. And that’s the great thing about Xojo. You can create apps for different computing devices with a single tool and language. That’s how programming should be.

Now that Xojo has been released, what do you hope to do with it in the future?

This is really just the beginning. We will continue to make it faster and easier to create apps for more platforms. Cross-platform is important and will only be more important in the future.

Is Xojo easy enough for someone who has a modicum of interest in programming?

You’ve probably already figured out the answer to this one. Yes, it certainly is. In fact, a lot of our users have no previous programming experience. That’s the great thing about Xojo. It’s easy enough for a beginner but powerful enough for a professional. You’ll never outgrow it. And you don’t have to believe me. You can download Xojo, our documentation, and the Introduction to Programming with Xojo book, and start learning today. For free.

Three Social Network Startup Suggestions

I want to make a social network. Where do I begin? I’m asked this question often, probably because I am an experienced community builder. At the time I’m writing this, Wikipedia will tell you that LockerGnome, Inc. is a network of blogs, Web forums, mailing lists, and online communities. All of this is true, and when taken as a whole, what we have here is a gathering of people bound by a mutual interest in technology, though it’s not really a social network.

What is a Social Network?

Emperor Palpatine, Community Builder
Palpatine, Community Builder (Image by G4TV)

Most of us immediately think of Facebook whenever the terms social and network are put together. Though tens of thousands of communities existed on the Web during the dozen or so years before Mark Zuckerberg first served up the website Thefacebook in February of 2004 (wow, has it already been nine years?), it wasn’t until the blue and white letter “f” (and years later, the Like button) became a household brand that the term social network began to be used in ordinary conversation.

LockerGnome is not a social networking service, as connecting everyone from popes to criminals to crimefighters has never been my aim. Though I’ve always worked to grow LockerGnome to reach as many people who are interested in the types of interactions we engage in here, we’ve always been a more directed community than those that aim to be one-size-fits-all groups. Here we are focused on educating, entertaining, and engaging anyone interested in technology. We try to keep discussions of divisive issues such as politics and religion out of our interactions. We want everyone to feel welcome here, and as part of our maintenance of a sense of mutual respect for each other, we keep our debates within the realm of operating systems and hardware. Let the arguments over war and the economy remain where they belong: Facebook and Twitter.

Size and topical considerations aside, we are a community that continues to grow and strives to connect as many people as we can who find technology important, essential — or simply fun! Over the years I’ve experimented with a variety of ways to reach out and connect those people, and you who find yourself reading this are those people. You are now within the community we have here, either as a visitor or as a member of our family. (No, we’re not a cult. Though that could be fun… oops, I drifted into my recurring Emperor Palpatine fantasy for a moment there. Don’t worry; we’ll continue being a more egalitarian operation here.)

Anyway, since I’m asked the social network question often enough, I know that some of you will benefit from my sharing a few of my observations on community building. Through my development and nurturing of online communities for nearly two decades, through my interactions with members of our mastermind group and from contributors to our Q&A community, I’ve gathered together and now present you with some suggestions for making a social network.

Social Network Suggestion #1: Aim Big by Aiming Small

Anyone (or any group) setting out to build a community, online or off, knows the endeavor is going to start out with a few people, and those few may simply be you and your friends or family or business partners. Yet those few people could quickly multiply, as Facebook did, into thousands of people swimming around in a pool made only for a few thousand. If you don’t have the infrastructure in place or the resources to accommodate a rapidly expanding network, your community may quickly paddle on to a group that has deeper waters. So before you dive into any online undertaking, know how deep you intend to plunge and anticipate how many participants you intend to be able to accommodate.

There are already several social network services attempting to build vast oceans of interacting people; Twitter, Google+, and the aforementioned Facebook immediately come to mind. Lesser-known services such as Diaspora have achieved minor success (up to this point in time, at least) in providing alternatives to these larger communities (and as I mentioned in 2011, I’d be far more interested in joining Diaspora if more of my friends were there). Then there are many smaller pools of people who are happily communing with others in smaller social seas.

In my opinion, aiming to serve a niche community is the best way to go. I’m not saying it’s impossible for ambitious social network developers to create the next big social network. If you have the resources to meet the demands of a rapidly growing community such as Pinterest or Instagram or YouTube, then go for it. What I am saying, however, is that it would be far more satisfying to watch the slow and steady growth of a small network of members into a large community than it would be to put a great deal of time, energy, and other resources into building out a space that either explodes faster than you can keep up with it or that hardly anyone uses.

At one time, Facebook was a niche community. It simply connected the students of one campus. A community that isn’t being served (or served well) by any existing social network provides a great opportunity for the creative or entrepreneurial-minded person. Begin by thoroughly researching the Web and mobile landscape for existing websites and apps that already connect the people you wish to connect. Are the existing social networks already connecting those people? Are they doing it well? If not, how can it be improved? The team behind Instagram had to try various approaches before it finally settled on building a social network of people sharing photos from their iPhones (and didn’t even have an app available on Android devices until April of last year, shortly before being acquired by Facebook).

That said, definitely choose tools that will accommodate a larger-than-expected community (plenty of free and open source social network software is available to help you begin building this), even if your mutual interest is something you feel only a small minority of people will be interested in interacting over. You may be surprised at how many people have a lust for Chia Pets; just don’t count on your social network growing like the seeds in the terracotta planters (overnight). Twitter, for example, started out as the project of a very small team of developers, built out of tools that allowed for rapid growth (though it still felt it necessary to switch platforms a few years after its initial launch, a point to which I’ll turn some attention in a few paragraphs). Yet Twitter could just as easily have remained a niche community, or as short-lived as a similar effort based on RIM devices had turned out to be.

Social Network Suggestion #2: Know Your Own Boundaries

A Social Network Home
A Social Network Home (Image by The Joy of Tech)

Thefacebook may’ve not exploded into the Facebook we know it as today if its founder hadn’t engaged in some unscrupulous activities in order to discourage others from using competing services. (Smearing the name of Facebook’s founder is not my intention here. Most of us have seen the movie, and the actual facts are fairly well known. So anything I have to relate about Mark Zuckerberg is public knowledge, at least for those of us who pay attention to technology-related business news.) If you aim to take on competitors in your field, however, you will inevitably be faced with some opportunities that will test the boundaries of your sense of integrity. Are you willing to destroy the competition if you have information that will potentially damage your competitor(s)?

My suggestion is to keep the fight clean. Your social network may not explode overnight, but you’ll sleep better knowing you’re an honest competitor, rather than one who is willing to hack a rival’s systems in order to take a shortcut to success. Sometimes pushing the boundaries is good; many of those suspicious of Google’s activities have also appreciated being able to find their way around an unfamiliar city using Google Maps, for example. Facebook is constantly making headlines with its privacy breaches, a trend that seems to go all the way back to the company’s founding. Weigh how far you’re willing to go with innovation against your legal resources. Are you willing to pay a legal team to defend your product’s features if they are determined by others to be outside the realm of propriety?

Feature creep is another thing to watch out for. Some successful social networks are constantly delivering new features in the hopes of both retaining existing users and attracting new ones. Without fail, every new feature introduced by Facebook, Twitter, or Google+ is thoroughly scrutinized and then either praised or criticized. Facebook Beacon is one example of this, a feature introduced in 2007 that enough users found disturbing enough to compel the company to remove. Mark Zuckerberg eventually admitted that Beacon was a mistake.

Map out your boundaries before you begin your social network, and you’ll find the ride to success far more satisfactory. Though I’m sure Mark Zuckerberg is quite satisfied with the status of his bank account, one wonders how much his well-being is disrupted by the wake of his ambition. (See the final scene of The Social Network for a simple image that captures this.) Is personal fortune worth losing friends over? Carefully consider how far you’re willing to go before setting out to build the biggest social network on the planet. If you’re more inclined to be less brutal, settle on a smaller network.

I’m not saying it’s impossible to reach the level of success of Google or Facebook without being a bit evil, but it takes a certain type of personality to be able to make the tough decisions that will inevitably result in losing a few friends. Steve Jobs is considered by many to be a visionary and perhaps one of the greatest marketing geniuses the world has ever seen. Jobs left a legacy of great products, but he also made a few enemies throughout his tenure at Apple.

Social Network Suggestion #3: Start off with the Right Tools

A Ready-to-use Social Network
A Ready-to-use Social Network

If you wish to go big, you’ve got quite a challenge ahead of you. Even established social networks such as MySpace are having difficulty staying in the game (though I know people who expect it to make a comeback). If you wish to develop the level of community that will attract hundreds of thousands (or even millions) of participants, you’re gonna need a bigger boat than whatever free content management system (CMS) you’re already looking at.

Even though free and open source tools are perfectly fine for building communities, projects that attempt to approach even a fraction of the size of Facebook’s community usually require a level of constant customizing that is simply not built in to free software. Drupal is one open source platform that has over 20,000 free community-contributed modules aimed at extending the functionality of the CMS. Yet you can only add so much to a CMS before discovering you’ll need someone skilled at programming to customize your project to perform the way you really want it to. (Anyone who has been a bit too overzealous with their installation of WordPress plugins understands some of the hurdles one might face when adding features to a CMS, such as your website slowing to a crawl due to too many extensions trying to do too many things at the same time.)

That said, open source content management systems are still great tools to use in various stages in the development of a social networking project. Joomla, Drupal, and Django have each proven their ability to scale as communities grow. If you’re not prepared to start from scratch, any of these platforms will provide a great foundation. Instagram, for example, used Django for its application servers prior to its acquisition by Facebook. I’ve heard developers say time and again that there’s no need to reinvent the wheel, so it’s a good idea to pick one of these frameworks or content management systems, find out as much as you can about it (such as what programming language and database it was built with), and develop from it (or hire developers that know how to).

If your project is successful, it may eventually outgrow its foundation. Perhaps you’ll find yourself switching frameworks, as Twitter famously did when it switched its front-end from Ruby-on-Rails to Java and its back-end from MySQL to Lucene, resulting in a search engine the company claims is triple the speed of its previous one. You may also need to change the technology you’re using if the project you’re working on changes its fundamental purpose, as the team behind Instagram discovered as it was trying to create its own social network application.

If you’re already a programmer, your selection of a framework may depend, in part, on your preferred programming language. If you’re not a programmer, you can spend a great deal of time trying to decide on the best platform for Web development or for writing apps. In the meantime, you may wish to familiarize yourself with a ready-to-use platform such as Ning, which doesn’t require you to know a lick of programming.

I don’t recommend using Ning, however, as I’ve had issues with it in the past and continue to find the platform lacking. There are plenty of similar services out there, though, but I haven’t found a suitable one. They are simply too template-y, with many of the resulting social networks looking like clones of one another, as do many forums. (You may argue that forums look the same because the format works, and that’s a valid argument. Personally, I would prefer to build a social network that stands out both visually as well as functionally.)

When it comes down to it, making your own social network is not difficult, but making one that will be successful is. Of course, success is relative, depending on your measure of the concept. What level of profitability would you accept as the mark of a successful venture? Would you accept breaking even financially the first year or two? Would you even measure success as simply building a network that connects people, even if it turns out to be a hobby rather than a moneymaking project? Chime in below with your own views on the subject!

Learn to Code Bootcamp Bundle

There should be an image here!Knowing how to program a computer may seem like a far-fetched dream for “ordinary” people. After all, don’t you have to be some kind of genius to manipulate the will of a machine and have it do your bidding?

Not at all. Remember: no one is born knowing how to program a computer. Everybody has to start somewhere. Whether you have an interest in learning how to write your own code as a hobbyist or you need to know for securing a job making the big bucks, programming a computer is not a mission impossible to any but deities and demigods. You can do it, too! But where do you even begin?

That’s where the Learn to Code Bootcamp Bundle comes in. Get these six courses for a heavily discounted price ($99 for what would normally cost $935.00) and learn how to code with the best of ’em:

When you break it down like that, learning how to program a computer doesn’t seem like such a daunting task, right? And think of the geek cred you’ll rack up by knowing how to code. You’ll never fail to impress others upon meeting them at parties, and they will find you irresistibly attractive. It’s a fact!

Learn to Code Bootcamp Bundle

How to Improve Your Website’s Reputation

Social Networks

On LockerGnome.net, Harold asks:

How do I improve my website’s reputation? What tools are available to do this?

Social NetworksReputation management has changed a lot in the past 10 years. Previously, your website’s reputation was built largely on your advertising and less so on word of mouth. Keeping your business out of the news for wrongdoing and presenting your products and/or services in a positive light through advertising used to be enough to promote positive brand awareness.

Let’s start by replacing website with company for the purposes of this explanation. Why? Because you should think of your website as a business. In many ways, it is a business, regardless of you making money off of it or simply doing it for the love of doing it. Thinking of your site this way will help you simply by the process of doing so. You’ll begin to think of your personal goals as business goals, and you might be less inclined to stray from your mission plan.

Today, everyone and anyone has a voice. This voice extends well beyond the bounds of the people you see during your daily life. A single upset customer may have swayed two or three people to avoid your business before, but now their over 100 (on average) Facebook friends, Twitter followers, and Google+ circles are capable of hearing their issue and repeating it to their respective friends. If it’s a tool you’re searching for, then these popular networks are your best place to start. You might evolve your strategy to include services like HootSuite, which allow you to manage and track several different social accounts at once.

You are no longer just another customer, and a smart business knows this. The best businesses to work with today not only put customer satisfaction at the top of their priority lists, but they also take a proactive approach to reaching out and developing a relationship with their customers on a more personal level.

This can happen in a number of ways. You could ask a question that some or most of your customers might find interesting. A flower shop may randomly pose the question of their followers’ favorite springtime flower in order to generate dialogue with their clientele. This conversation creates context, which businesses can use to better pitch their upcoming products, services, and specials to their existing customers without upsetting them or driving them away.

Marketing is no longer about push. Push is still relevant, but you can only get so far by placing ads on every available surface or website you find. You need to create context in order to avoid the ad blindness so many consumers have developed in recent years. Offer your products or services to influencers in your respective genre, and let them help to promote your brand in a way that carries far more authority than an advertisement ever could.

Ask yourself, “Would You believe your favorite blogger or the brand when it comes to determining if their product is right for you?” Chances are, you’re more apt to believe someone you already have context with. Your company’s reputation depends on these influencers in a big way.

If someone calls your brand out on Twitter or Facebook for wrongdoing, then you’re better off responding to it openly and providing an acceptable customer solution than sweeping it under the rug. Your reputation is one part what people say and an equal part how you respond to it. Don’t be afraid to apologize publicly when you’re in the wrong. Even if you aren’t, it pays to go above and beyond now and then.

Context is king in today’s business world. If you don’t have a relationship with your customers beyond just the produce or service you provide, then you’re going to have a far more difficult time managing your website’s reputation down the road.

Learn to Design Website Landing Pages

Learn to Design Website Landing PagesKnowing how to build websites is sort of like gardening. Some people enjoy taking it up as a casual hobby, while others commit themselves to it as a full-time career. And just as with hobbies and full-time jobs, some people are naturally good at what they put their minds toward, and others need a little more guidance in order to succeed. And still there are others who never learn from their mistakes, believing all the while that they are nurturing green thumbs and crafty Web weavers as their dry gardens perish and websites sport designs that would be outdone by an angst-ridden junior high student circa 1996 showcasing bad poetry via GeoCities with blink tags a-go-go.

But anyone finding themselves (or those they care about) in any of the above scenarios should remember: anything worth doing is worth doing well. If you’re building a website, you want to make sure that it’s worthwhile for the people who land there — otherwise, you’re just being rude! And if you’re actually taking money for building someone else’s website, then being simply decent at the task when you should be excellent is borderline criminal!

Don’t be one of those Web designers.

Luckily, there’s help out there for anyone who strives to earn their keep in this fashion. The Landing Page Design Kit — valued at $299, but yours for only $59 (that’s an 80% discount) — will take you every step of the way toward being the best Web designer you can be with 53 training videos, worksheets, and over 300 Photoshop design templates.

If you find that The Landing Page Design Kit doesn’t fulfill your expectations, you’ve got 30 days to return it for a full refund, no questions asked. But this offer won’t be around forever, so take advantage of it while you still can!

The Landing Page Design Kit: Double Your Freelancing Rate

Hello, World! How to Get Started Writing Apps

One of the questions I am asked all the time is how I learned to write software. That question is always followed by “will you teach me?” Creating applications is a complicated process, but that doesn’t mean you can’t learn. You may already have some of the skills needed.

It All Starts with An Idea

My computer days date back to the early ’80s, when my mom bought me a Timex/Sinclair 1000 computer. I wrote a couple of games, but mostly wrote programs for doing my math homework. Fast forward to the ’90s. Working as a technician, I needed a way to track inventory and print work orders, so I wrote a program using CA Clipper to accomplish that task.

In each of those situations, I had a problem to solve. When I get asked by someone how to get started, I ask them what their motivation is. Sometimes it’s a career path they want to take, but the majority of the time it’s because they have a time consuming task, or some other problem, and they want to make their life easier.

Ask yourself what app you would like to use on a regular basis, and go from there. It doesn’t matter if a similar app already exists; you are writing this for yourself.

I Have An Idea…

Great! Time to get started. Decide what your platform of choice is. Are you writing a Web app, a phone/tablet app, or even a Windows 8 Store application?

Books are indispensable when it comes to programming. One good reference book is sometimes all you need. And not just books on how to write code, but books on good programming habits, user interface (UI) design, and object-oriented principles are all valuable to have in your arsenal. Most will be available electronically, but I recommend a physical book. I do not recommend, however, sitting down and trying to read a 600-page book. With most programming reference books, you go directly to the chapter that covers the information you need right there and then.

It’s time now to set up your development environment. The way you do this will depend on the platform for which you’ve chosen to develop. Check out the developers’ section of the website for that platform. Some platforms, such as Apple’s iOS and Windows Phone, have an integrated development environment (IDE) available for download. The IDE is where you’ll actually spend time writing code. Other platforms, such as Android, are more open and allow you to chose an IDE. Eclipse is a popular IDE for creating Android apps.

You’ll also need the Software Development Kit, or SDK, for the platform you choose. As with the IDE, you’ll find the SDK in the developers section of the platform’s website. Follow the instructions on how to set up your IDE, and properly install the SDK.

OK, I’m All Set Up

Hello, World! How to Get Started Writing AppsTime to finally write some code. Think of writing code as learning to speak a new language. Whether you develop for Windows, iOS, Android, BlackBerry, etc. your code is going to look a little different. It’s important to note though that, while your code may look different, your goal should remain the same, and that is to write clean, efficient code. You’ll thank me any time you need to debug your code, or add features to your application.

Look for sample applications similar to your idea and review the code. No matter which platform you choose, sample applications with full source code will be available. In most cases, you can use these samples as a good starting point for your own app. These sample applications will also guide you in how to structure your project and are great learning tools.

Start with a couple of small apps to get a feel for things. One of the first programs I create when learning something new is a simple, one-form application. It contains a text box and a button. Clicking the button will show a popup dialog with whatever text was entered. It’s simple, but there is something satisfying when you see your application do the things you told it to do.

Next: code, test, code, test… This is how you’ll live most of the time while writing the app. You’ll make many mistakes along the way, and run into road blocks. Don’t get frustrated. Use your favorite search engine and search for the issues you are having to overcome these hurdles. Chances are that someone has had the same problem as you. Keep at it; the more experience you have, the easier each issue will be resolved. Before you know it, you’ll be reusing your code in other applications, and each app will almost write itself.

I hope this short guide has encouraged you to give software development a try. Whether you are writing a small personal application for yourself, or the next number one selling on the App Store, it can be a very rewarding experience.

My name is Nick Alonge, and I’ve been a software developer for the last 20 years, creating everything from websites, traditional desktop applications, and most recently mobile applications. I started my own business five years ago after working in a corporate environment for 12 years.

Image: Hello, World by oskay (via Flickr)

What is the Best Platform for a New Developer?

Programming

Steve writes:

I am a control engineering student about to finish my studies and I’m preparing my thesis, which I decided would be a project including Web programming. I decided I want to get my hands on this because I want to figure out whether Web and app developing would be something I’d be willing to pursue (plus computer networks and C++ programming were my favorite classes). Initially, I thought I would spend time in becoming knowledgeable about many kinds of programming including .NET, HTML5, iOS, and Android developing and more, but soon enough I realized that a lot of developers dedicate their time and efforts in a single style of developing, or a certain platform.

At the moment, mobile app developers and especially iOS developers are highly wanted by employers in my country (Greece), however, since the world of Internet and computer platforms changes faster than ever before and it’s hard to know for sure what’s going to be relevant in five years or so, what advice would you give to a confused beginner who would like to potentially pursue this full time in the future? On what area of programming or what platform would it make sense to focus? Do you think it’s possible for a single and determined developer to work on many platforms? Also, when would it make sense for a developer to invest time in less popular platforms like BlackBerry and Windows Phone? And last, since I happened to return from the Firefox OS APP DAYS event, what are your thoughts about it? Do you think that open source HTML5 developing could be the next big thing, or is it dead and it’s only worth investing time in platform-based apps?

I hope my questions are not too confusing. To sum it up in one question: Which do you consider the best platform on which a new developer should focus?

ProgrammingMastering Web technologies (and staying on top of trends) will always be advantageous.

If you keep updated with all the latest trends in Web development, you’re bound to hear about hundreds of different platforms and languages that each have a unique solution to the problem of developing the next generation of software. Unfortunately, only a handful of these platforms ever make it past the initial flash in the pan promotional push they receive from programmer and developer communities.

The trick is finding a platform that looks like it has longevity, and learning as much as you can about the major standards and updates taking place on that platform.

HTML5 is an example of one of those major standards that is worth investing time and effort into learning. The Web is the one driving force of which virtually every modern device takes advantage. iOS and Android apps are nice, but a solid website with matching functionality that runs across virtually every device can be even better, at least until native apps can be created. It’s important to know how to serve the majority of your potential user base so you can provide that service while you create something more refined for specific groups.

BlackBerry and Windows Phone may not have the same numbers as iOS or Android today, but that doesn’t mean a comeback isn’t in the cards for the future. Apple was once written off as a loss by many pundits in the tech world. Today, it’s the most valuable company in the industry.

The greatest thing about the world of development and programming is that your value is in how much you can learn. Having that updated knowledge makes you infinitely more valuable to a company than being master-level efficient at a platform that passed its prime years ago. You can stay ahead of the game by spending some time each day keeping up with the latest trends and identifying which ones have the most potential to stick around for some time to come.

Photo: Gabor Cselle

Mobile Apps Vs. HTML5

Mobile Apps Vs. HTML5There are many different ways to make an app for a platform like iOS and Android. You could build an application out of native parts with little to no functionality requiring an active Internet connection. You could also build one that is little more than a portal to a website that depends heavily on an active connection to the Internet.

The question raised by recent comments from Facebook CEO Mark Zuckerberg is whether or not efforts spent developing robust, Web-based applications would be better spent concentrating on native apps.

Zuckerberg said during an interview at TechCrunch Disrupt 2012:

When I’m introspective about the last few years I think the biggest mistake that we made, as a company, is betting too much on HTML5 as opposed to native… because it just wasn’t there. And it’s not that HTML5 is bad. I’m actually, on long-term, really excited about it. One of the things that’s interesting is we actually have more people on a daily basis using mobile Web Facebook than we have using our iOS or Android apps combined. So mobile Web is a big thing for us.

The biggest takeaway from the Zuckerberg interview indicated that he believed Facebook’s future largely rested on mobile. The current desktop site is still the most robust portal to the social network, but mobile is the way most users are experiencing it. Smartphones have indeed freed users from the confines of desktop computing in a big way.

HTML5 or Native? Which is Best?

HTML5 is an excellent tool for developers. It opens the door to a wide variety of applications including cloud-based storage, embedded video, and sites that automatically scale up and down based on factors like window size and platform. With more users heading to mobile as their platform of choice when using social media, it makes sense to develop a robust mobile site that works just as well on these platforms as a native app.

This introduces a number of interesting problems. While it’s easier to update a user interface on an app that works more as a simple Web portal, your users have to load each page as it’s called. A slow connection means slower navigation on these devices, despite efforts to optimize the interface to meet these needs.

A native app can store the basic interface components locally. Information is called as it is needed. This makes things a bit snappier, though updating the app to meet new features and UI options requires a bit more effort.

Hybrid apps may well come out on top. It would be nice to update fundamental parts of your app once and have it automatically carry over to every app connected with your site/service, but if you can steer at least some of this functionality to the native app environment, the results could give you the best of both worlds.

Why Both Are Better

The problem facing Mark Zuckerberg’s team at Facebook was that HTML5 wasn’t ready at the time. The future of the platform is looking much brighter as more browsers have started to support the standard. HTML5 still suffers from fragmented support, and therein lies the problem.

If you can develop a good, comprehensive Web platform and have your app’s native features complement it and take it a little further, you’re on the right path.

It’s not enough to do one thing anymore. You can get away with a mobile-friendly Web portal, but having an app bring more features such as integrated sharing and social components, dynamic location-based controls, and/or hardware-specific solutions can make it really shine.

What do you think? Is Mark Zuckerberg correct in saying that mobile is the future of the Web? Do you believe that HTML5 could be the future of apps, or are you a believer in the power of native apps?

Http Www by Kosta Kostov

Humble Beginnings in Web Development – Advice for Newbies

Humble Beginnings in Web Development - Advice for NewbiesGnomie Tom “Mousey” Lovelady writes:

Hey there Chris,

I’m attempting to delve into the world of coding and Web development in order to successfully begin creating applications for mobile devices as well as for Web sites; I hope at some point to be able to integrate the two. I’ve just purchased an HTC Desire (the original Desire) which is on its way to me and I’ll be diving into some mobile development and testing my skills with a few friends. I’ve seen loads of threads floating about on LockerGnome from people asking how they should get started learning how to code and learn programming languages in order to start off on their own journeys. But I’d like to kill two birds with one stone here. For starters, have you ever dabbled much into coding? Having a basic knowledge of PHP and HTML is very useful in a lot of different scenarios, especially when it comes to maintaining a Web site of any complexity. So I’m just wondering if you have any experience yourself with diving into the source code and really getting your fingertips sweaty with some coding?

I’d like to suggest purchasing some of the “For Dummies” books off of Amazon because they’re always cheap and the desk references especially are absolutely fantastic. If there’s anything they can’t teach you, well, you probably don’t need to be asking how to start out with coding. Another good suggestion is to download open source Web software such as phpBB for forums or Joomla! for content management systems and start tearing into some of the source code. Join up with their communities and start asking questions. As long as you ask politely and provide any information they may need with as much detail as possible, the communities will often get back to you promptly and can really help out when you’ve got a goal set that you aren’t sure how to get to.

If you’re looking into Web development and you’ve never done it before, the first two you’ll need are HTML for Dummies and PHP for Dummies — or something comparable. CSS is also an invaluable language to learn because CSS dictates styling information and usually controls how everything looks on a Web site. Every other language is typically for functionality, and CSS is for aesthetic appeal.

Any aspiring Web developers looking to tear apart software should look into a gem I found on Wikipedia: the Free Software Portal.

I’m far from a brilliant coder — if anything, I’m bloody terrible — but by tearing apart some of the more basic Web applications that I found at the Free Software Portal and eventually working my way up to tearing down some of the more complicated ones and even adding my own bits and pieces here and there, I’ve managed to develop my skills a lot in the past few weeks and I’m hoping to put those to good use in other areas. Maybe someday I’ll even be doing it for money on the side.

The key thing I’d have to stress is persistence. Yes, it sucks when you get a 404 error. Yes, it sucks when your database craps out on you. Yes, it sucks when you get endless streams of PHP errors and have to go digging through lots of files looking for any tiny things you might have missed out on the server side script. But just think of that sweet, sweet air punching moment when your script finally runs properly! When it’s all displaying properly and you can click through it knowing that everything that page is doing is something that you made it do.

A useful tip if you aren’t the patient type is to code for little segments at a time instead of a fanatical 36-hour binge followed by a two-hour nap, a Red Bull, and another 24 hours in Dreamweaver. I tend to code for half an hour at a time, or until I’m frustrated (whichever comes first), at which point I go make a nice hot cup of coffee, go for a brief walk, and come back to the task when my mind’s fresh and I’ve had a quick think over what I could have missed out during the coding.

Coding’s a very rewarding hobby if you give the rewards time to come to you. I hope this helps anybody looking to get started!

Page Speed Online: Google is Making You an SEO Expert

Page Speed Online: Google is Making You an SEO ExpertGuest blogger Lance Seidman writes:

Creating content for the Web can be sort of a difficult thing to do and, as more people try, it seems a lot of people aren’t having success trying to be content creators. You may notice, however, that more and more people are looking for work in the tech field as they feel it’s a more lucrative and ever-growing industry to get into — but maybe only because every day it’s being reinvented.

If you’ve never been in the tech industry or, more important, never learned or used any programming languages (Web or platform), programming for the Web and the many different aspects to it are going to obviously be something you may not really understand right away. Whether managing a website that is your own or doing it for someone else, you may be labeled as a webmaster. If you truly have zero experience and this is something you would like to make your job, you should either hire someone to assist you or get cracking on learning as it can make or break your future on the Web.

For a moment, think about what the word webmaster really means. Most likely this isn’t a foreign word to you by now. Is a webmaster the ultimate computer hacker who dominates the World Wide Web (WWW) by means both fair and foul? Absolutely not, and if this was a possibility you were considering as a definition, maybe you need to change career paths. The truth is, a webmaster is the person who is responsible in overseeing a website’s daily operations and ensuring that it runs smoothly for potential visitors and, it is hoped, repeat visitors.

Good webmasters should be quite efficient and knowledgeable in the Web programming languages being utilized for the site in their charge. As a webmaster, it is your job to ensure the website you’re “mastering” stays afloat at all times without any down time (or it will come back as being your fault). You must keep this website going with all of your might. If the website you’re representing has a broken link, an image that takes too long to load, database errors, or incorrect product displays — and these problems keep coming back — you’re going to be mastering the unemployment line soon and the website you were just fired from most likely won’t provide you with a good recommendation for hire on your next hopeful position.

If you’re not scared, you should be. It is extremely important to make sure the website for which you’re a webmaster runs seamlessly and without issues. It’s really a good idea to have some form of pre-existing programming skills or at least enough for the basics in HTML, CSS, JavaScript, and PHP, but the fact is that you need to be ready for anything — and this is especially true when you’re the webmaster for someone else. Always stay alert and ahead of the curve as someone who could be younger (read: cheaper) and maybe even better is out on the Web right now looking to cash in or get a job — your job. You may know the type: someone who is trying to prove that his or her age has nothing to do with their skillset and they decide to contact your superior to point out all of the things wrong with the website and how they can improve upon your imperfect work.

This is why it’s important to stay on top of the game. Luckily, resources exist to make you the best of the best — or at least still worthy of employment over Machiavellian geeks who just want to usurp your cubicle.

To succeed, a website’s content must show up when people are looking for it in their search engine of choice. SEO (search engine optimization) is the ever-evolving and adapting science of making sure that people can easily find (and visit and revisit) your website. Good use of keywords, easy navigation within an appealing design, speedy page loads, and visibility on mobile devices are just a few things to consider when you’re trying to cultivate and optimize your website’s viewership. But there are differing degrees to which each can be tweaked to ensure that people can find your site over all of the other ones out there.

For instance, it is extremely important to use the right keywords in your content, but many webmasters don’t realize that there is a limit to how — and how many — keywords should be used (and the standards dictating the proper use of keywords constantly change).

Another factor to consider is that, often, less is more. If your website depends on JavaScript goodies and other plugins to get its message out, then you should be prepared for them to break every now and again. If they’re not implemented properly, a visitor may be greeted by unfriendly error messages and decide to go visit one of those other sites they found in Google, instead — never to return to yours.

Google has taken notice that not everyone is up to date on the latest Web technologies, and is trying to address the common outcry from webmasters that their websites — no matter how deserving — never show up at the top of search results no matter how hard they try.

As a webmaster, you want your website to show up on top of a search engine’s page results. Tons of fly-by-night operations exist and try to convince you that, if you pay top dollar, they can put you on the top. It is impossible to guarantee that you will be on top and you’re foolish if you believe that some company can put you in front of someone else on the results page; Google can’t even offer this — unless you buy ad space and outbid others for these prime, sponsored spots.

Many people think that a Google employee is looking at each and every page — out of billions — on the Web somehow hourly, but it’s all performed with artificially intelligent (AI) Google bots, and this is how Google can cover the Web so quickly.

The bots will determine if your website is suitable for a specific search result. If keywords and content don’t match up, it can potentially ruin your chances of showing up on that coveted search engine front page. And depending on how desperate you are and the horrible tactics you may try, you could get blacklisted — especially if you try to hide bogus keywords in an attempt to climb on top. If your website’s actual content doesn’t use the same — or close to the same — words in context, your site is viewed as spam and will likely not show up in relevant search results (or, at least, not for long). There’s an old saying: “When you try to be a pig, you’ll get slaughtered.”

Tip: Don’t try to add so many keywords to one sentence of your website’s content in a way that causes it to no longer make sense. Even trying to include words or phrases in odd spots of your website may raise a few AI eyebrows and cause your site to get blacklisted. Hiding words on your website to keep your keywords somewhat similar to your content won’t be successful as Google crawlers/bots are smarter than that. Even if you try different stylesheets to hide/make words transparent in hopes for better ranking or better visibility is a poor idea.

So maybe you’re thinking at this point that now you don’t know as much as you thought you knew about SEO or being a good webmaster. Perhaps you’re getting discouraged? If you are, this may not be the field for you. Contrary to what people on the outside looking in may think, being a webmaster is one of the hardest and constantly fluctuating jobs available today. While programming languages hardly change, revisions in Web languages do occur. Many aspects of CAD/graphic design have been around for as long as there’s been a printing industry, but Web technologies always get facelifts. The good news for the stability of a wannabe webmaster’s job outlook is that most people don’t have the time to be on top of everything, and it’s really impossible to be on top as a one-man (or woman) show.

An automated all-in-one tool that is going to make you the best at what you do without the necessity for extensive knowledge must not exist, right? Well, wrong again. Page Speed Online is a small website that seeks to fill the gaps in your knowledge of Web technologies and could be the terrific tool you’re looking for. As a bonus, it’s completely free of charge!

It shouldn’t be a surprise that Google, the Search Engine King, developed it. The site is constantly re-creating a fully automated checkup of your website that not only will give you a score of your site’s performance on the Web, but also a mobile score. It gives you solutions to resolve your issues and meet the 100% butt-kicking website potential you’re supposed to be offering. Once you simply input your website address and hit the Analyze button, you will be given results almost instantly. This will certainly keep you on top of the game and maybe even keep that pesky outsider from trying to steal your job. More important, you’re helping create a better and more stable website experience that will be surely be almost priceless to your visitors and, ultimately, the website you represent.

Only Spiders and Jerks Don’t Adhere to Web Standards

Reese Matthews writes:

I’ve only seen a few of your videos, so I don’t know if you’ve touched on it, but there is a bigger problem than “Does __________ browser suck?” or “Is __________ secure?” If you haven’t, perhaps you could talk about it.

Back in the 1990s, the two big browsers were Microsoft’s Internet Explorer (IE, aka Infernal Exploder) and Netscape (aka Nutscrape). Both companies had the same stupid idea of creating HTML tags that worked only with their own browser, not with others. As a result, many websites would work only in certain browsers.

Some people with biases towards one browser made HTML pages saying things like “Use __________ browser or get lost!” In some cases, jerks added JavaScripts that caused browsers to crash, and sometimes the operating systems would crash as well.

The instances of such stupidity decreased when Netscape faded and both Firefox and Opera were small up and comers. Firefox likely became a dominant browser because it was free while Opera remained on the margins because you had to pay (which I did gladly) or live with ad support until version 8.

At the risk of sounding like I have a persecution complex, there was (confirmed) targeting of Opera by some websites back in the early 2000s, especially by Microsoft. Hotmail and other pages contained code that caused them to display improperly. The source of the pages was examined and there were JavaScripts and metatags that specifically looked for Opera, changing how the page was displayed. When users set Opera to “Mask as Internet Explorer” (Opera would pretend that it was Microsoft’s browser), the problems disappeared. The software didn’t change — the only change was the name sent to the user agent.

It seems such stupidity has returned to the Internet. Websites like Google, YouTube, and others may not be deliberately targeting Opera or any particular browser, but they are writing code that prefers and works well only on Firefox, Chrome, and Explorer. Have a look at these two screen captures I took today, within the same browser, less than two minutes apart. There is no change in my installed version of Opera 11.62; I only changed how the Opera browser identified itself to the user agent:

Only Spiders and Jerks Don't Adhere to Web Standards

Only Spiders and Jerks Don't Adhere to Web Standards

This is not the only page or website doing this. Many features in Gmail and Google+ are crippled or missing if the browser isn’t Firefox, Chrome, or Internet Explorer — and it’s not just Google or YouTube, but many others. Why should pages appear differently solely because of the name of the browser?

This isn’t purely happening with Opera; it’s happening to many other good and full-featured browsers. I use QtWeb — based on WebKit, the same as Safari — as my portable browser, and it has the same problem with many sites. And yet, K-Meleon (which hasn’t been updated in 15 months) is based on Mozilla, the same as Firefox, and it doesn’t have these problems except on YouTube. But even there, it lets me view the older version of the site and watch videos without any problems. YouTube won’t make the older version available to other browsers. YouTube actually calls Opera 11.62 an “outdated browser” — even with the latest versions of Flash and Java installed.

Other popular browsers are or have been deliberately excluded. On Macs, Camino is crippled when loading some sites while Safari looks fine. And a few years ago, many banks would only allow Internet Explorer for Internet banking despite other well-established browsers being capable of it. Firefox was blocked out, and it was widely popular at the time. Speaking of banking, remember this story from 2005, where a man was arrested for using the DOS browser Lynx to make a charitable donation on a website?

The World Wide Web Consortium sets the standards for the Internet such as HTML and XML. If websites were built according to those Internet standards, they would work on every browser. Instead, companies are deliberately and rudely segregating users, giving them a second-rate experience of their sites solely because of their own fanboy or corporate biases. This is not a software issue; it’s a lack of basic manners and courtesy by website designers.

Gaug.es Vs. Google: a Web Analytics Showdown (Of Sorts)

For the longest time, I’ve used Google Analytics for tracking visits and pageviews to my websites. Google has done a great job at accumulating tons of information about my sites and the visitors that stumble upon them. Lately though, I’ve gotten the feeling that it might be providing too much information, at least for my needs. A while back, everyone’s favorite code hosting site GitHub acquired a company called Ordered List and with it a neat little Web app called Gaug.es.

Google Analytics has plenty of strengths. It provides tons of information about your site beyond a count of visitors and pageviews. With it, you can see how long someone has stayed on your site, see where your visitors are clicking, and set up alerts and goals to help you build up your site’s online presence. Best of all, it’s 100% free to use.

However, Google Analytics does have quirks that might make it unsuitable for some folks. Newcomers might find the interface scary and intimidating, with tons of data being thrown at them everywhere they turn. Perhaps people simply desire a cleaner, fresher interface.

In addition, there are privacy concerns that might be raised. While I personally am not worried about Google taking over the world and enslaving mankind, some people are, and probably want to stray away from giving Google any more information than they already have. Google already has tons of information on users gathered from the client side such as users’ searches, social actions, and other activity on the Web, so who says they should have access to the server side of things as well? This “Skynet factor” might just be enough to keep some webmasters away from Google Analytics if only for the label on the box.

Enter Gaug.es, a shiny new Web app that offers great Web analytics — for a price, of course. Gaug.es offers most of the functionality you could want from Google Analytics and then some. For instance, you can view a list of visitors currently browsing one of your sites’ pages live in real-time. Not only that, but you can pop open a map that displays where these visitors are located, giving you real-time locale demographics.
Gaug.es Vs. Google: a Web Analytics Showdown (Of Sorts)
Gaug.es also provides official Android and iOS applications, making it easy to view the most important stats about your sites on the go. On a side note, its Android application is really well done and is a great reference for anyone looking to make a well-built Android application.

Gaug.es Vs. Google: a Web Analytics Showdown (Of Sorts)In addition, Gaug.es also offers another unique feature: Browser support statistics. Aside from the usual user agent stats that your average Web analytics suite provides, Gaug.es will tell you which features of HTML5, CSS3, JavaScript, etc. are supported by your visitor population. For example, using Gaug.es, you will know how many of your visitors support HTML5 Video (and probably more important, which codecs they support). Another scenario might be how Gaug.es will let you know how many visitors support new CSS3 features like box-shadow and border-radius that can be utilized to replace the images on your site that provide the same effect at the cost of wasteful HTTP requests. This would definitely come in handy for developers of a large Web application wanting to take its platform to the next step by introducing next generation Web technologies without the fear of disrupting or ruining the app’s experience for any of its visitors (or worse yet, paying customers). Knowing which features to roll out and when used to be a tricky ordeal, and you would never know if it would break things on the user-end. No longer is that the case with Gaug.es.

I think the jewel of Gaug.es is its simplicity combined with its more unique offerings. Open it up, and you’re presented with your stats along with a clean interface for delving deeper. The same could possibly be said for Google Analytics, but the latter still feels like it’s so feature-packed that it’s about to explode from bloat. But maybe you like those extra features Google Analytics offers, so it is really all up to your preference (like everything else, luckily).

If you’d like to give Gaug.es a shot, take it for a spin with its seven-day free trial. After the trial period, you’ll have to upgrade to one of its paid plans, but its costs are much less than that of other comparable Web analytics solutions such as Woopra or Clicky.

With that said, what Web analytics platform are you using, assuming you are using one at all?

Five Web Technologies You Should Be Using

I’ve been developing Web applications for a few years now, and the pace at which things are evolving recently is mindblowing. All these new technologies, like HTML5 and WebGL, completely rewrite the book in how and what we can use the Web for.

Developers should be taking note of these technologies and utilizing them whenever possible. Not only that, but users should also be aware about what they could be missing out on if they didn’t know any better.

The following is a list of five Web technologies you probably shouldn’t avoid.

HTML5

Perhaps the most recognized of the new era of Web technologies, HTML5 is a tremendous step up from its predecessors. It introduces new elements that help better coordinate the work flow of your app or site. It also brings with it the video and audio elements, two huge additions that essentially allow you to build a site like YouTube without touching Flash. Aside from those, HTML5 also introduces the Canvas element, which will be discussed later.

Five Web Technologies You Should Be UsingWhy you should use it:

  • Video and audio on webpages without the overhead or complexities of Flash.
  • Cross-document messaging — allows webpages to talk to one another, with a few catches to insure security.
  • Web storage — allows Web applications to store much more data locally than is possible with ordinary cookies.
  • Canvas (discussed later).

How you can use it:

  • Upgrade to a modern browser if you haven’t already.
  • For Developers:

CSS3

CSS is what makes webpages look so darned good. CSS3 adds new features essential to developing shiny websites and Web apps.

Why you should use it:

  • Generate box shadows, rounded corners, and color gradients on the fly.
  • Stray from the average, boring fonts you’d normally use and spice things up with Web fonts.
  • Remove image overhead by performing various effects that would otherwise require images (mentioned above) in CSS.
  • Animate various elements on the page with CSS3 transformations and a little JavaScript magic.

How you can use it:

AJAX

You know that magical moment when the content on a page seems to magically change without navigating to a new location, or when the content on the page updates in real-time? That’s called AJAX. Twitter is an excellent example of using AJAX to make your website feel smooth and polished. There are some drawbacks, however:

  • AJAX sites use JavaScript to load the content. If the user’s browser does not support JavaScript, or if JavaScript fails to find any content, your site is then broken in the eyes of the user.
  • It can be hard to optimize sites that use AJAX for search engines, but Google offers some help in that area.

Why you should use it (it’s up to the developers, of course):

  • Make sites feel smooth and dynamic.
  • Eliminate unnecessary loading times caused by having to reload an entire document, instead loading only the content you need.

How you can use it:

  • Upgrade to a modern browser if you haven’t already (even IE7 supports AJAX, though)!
  • For Developers:
    • Learn about the XMLHttpRequest object.
    • Use a library such as jQuery to make AJAX requests easy and cross-compatible with the slight variations between browsers.

Canvas

Mentioned before, the Canvas element is a new face, brought to us by HTML5. Canvas allows for 2D rendering to a webpage, opening many possibilities in the way of more complex Web apps and even simple(ish) video games in the browser. Browsers have even been busy implementing hardware-acceleration for the Canvas element, making moderately intensive Canvas apps possible.

Why you should use it:

  • Video games in the browser, man!
  • Flash-less, meaning less overhead and much improved performance.

How you can use it:

  • Again, use a modern browser.
  • If you’re planning to go on a dedicated Flash game strike, favoring Canvas instead, perhaps you should consider investing in a decent GPU.
  • For Developers:

WebGL

A big step up from Canvas, WebGL brings some real graphics power to the browser. If you want to build a serious game or graphics-intensive Web app, WebGL is your pal here. For developers familiar with OpenGL, the essentially equivalent API will be appreciated.

Why you should use it:

  • Again, video games in the browser, man!
  • Bring the power of OpenGL to the browser.

How you can use it:

  • For the final time, make sure you’re using a modern browser.
  • Just like Canvas, you should probably have a decent GPU if you want to get serious about WebGL.
  • For Developers:
    • Learning WebGL has decent tutorials and links to lots of cool stuff built using WebGL.
    • Investigate GLGE if you want to dive in creating games in the browser versus learning the specifics of WebGL.

Fin

So there you have it: five Web technologies as well as reasons and links for using them. Perhaps you’re a Web developer and you already knew about these things? Leave a comment to let us know about a technology you think should be worth checking out.

How to Use GitHub to Contribute to Open Source Projects

I have been a fan of open source software for many years now. Not only do I use open source software, but I also develop a bit myself. A few years ago, a version control system by the name of Git wandered out from Linus Torvalds’ workshop. Its popularity boomed, especially when a little start-up known as GitHub sprang up. GitHub is a service that hosts Git projects for you, both public (that is, open source) and private. Over the years, however, it has also expanded to provide users with features such as code review, bug and feature ticketing, and a wiki system for hosted projects. If you have ever wanted to get involved with open source software, but were not quite sure on how to get started, GitHub is a great place to start.

A Quick Guide to Git

Before I go into detail about ways you can contribute with GitHub, I figured many readers would appreciate a brief overview of Git itself. If you would like a more in-depth guide to learn more about Git and how to use it with GitHub, I would suggest visiting GitHub’s excellent Help site. If you just want a quick primer, continue reading this section.

So, Git is a version control system. What’s that? Let’s say you were working on a large project with many developers. If everyone edited the project’s source code at once, there would be tons of conflicts and it would be hard to make sense of things. With version control, specifically Git, each developer makes changes to a local copy of the project, makes a commit, and pushes that change to a remote location if the project is hosted on an external server such as one of GitHub’s. Every change made under a version control system is tracked, so conflicts are greatly reduced and any you do encounter can be sorted out fairly easily.

The basic Git work flow is this:

  • git init will create an empty Git repository in the current directory or a directory you specify. If you want to work on an existing repository that lives at a remote location, use git clone.
  • To make sure you have the latest version of the repository (if you cloned from a remote, upstream location), use git pull.
  • After adding new files or making changes to existing ones, add your changes with git add.
  • Commit and describe your changes with git commit.
  • Use git push to send your changes to a remote location, such as GitHub.

As you can see, I linked each command to a respective area on GitRef.org, another excellent site for learning Git.

One final thing I really recommend is that those aspiring to make their lives easier with Git watch the following talk. It’s roughly an hour long, but it’s got great information. On top of that, it’s given by one of the founding employees of GitHub.

Anyway, it’s time to move on to the real topic at hand here: utilizing GitHub to make your contributions to open source software.

Contribute Code

Know a programming language or two? Fancy solving a problem or creating something awesome? One of the simplest ways you can contribute to open source software is to, of course, hack away on the source code. If you spot a missing feature or a flaw in the program and you have the know-how to fix it, by all means do so.

GitHub makes it easy, albeit with a bit of knowledge with Git, to contribute code to a project. Here’s how:

  • Fork the project in question by clicking the fork button on the repository’s page.How to Use GitHub to Contribute to Open Source Projects
  • Hack away on the code and commit to your forked repository.
  • Send the project owner a pull request by clicking the pull request button on the repository’s page.How to Use GitHub to Contribute to Open Source Projects

And that is really all it takes. After the fact, wait for the project owner to respond to your pull request. You can follow its progress, add additional changes, and comment on your pull request by clicking the repository’s Pull Request tab.

Contribute Documentation

Every good piece of software will have good documentation. After all, software is nothing without its users, and users love things that are well-documented as it makes them easier to use. Depending on how documentation exists for a given project, you might find yourself making commits to text files in the repository itself. However, many projects have begun using GitHub’s wiki system to document their programs.

Don’t undervalue the importance of documentation. Like I said, users love documentation, so anything you can contribute is bound to be appreciated by someone in some shape or form. You could explain how a particular feature works, or document outstanding bugs and provide workarounds for users. You might also decide to write full-blown tutorials specific to a project, helping people get up on their feet and configuring or utilizing the project to best suit their needs.

Contribute Bug Reports and Feature Requests

Perhaps you have a great idea for a feature or you have spotted a bug in a program, but you really do not have the skills necessary to implement or fix it yourself. Do not fret, as you can still help out. Submit an issue to the project’s issue tracker by clicking on the aptly named Issues tab. Explain the problem you are encountering, or the idea you have to make the software better. After you have posted the issue, you will be able to discuss it with the developer to isolate the problem or better flesh out the meat of the feature at hand.

I love getting issue tickets on my projects. Whether they are bugs or features, I know that someone is interested enough to want my creation to expand and improve. Because I am simply one person, I can’t catch every glitch nor can I dream up every situation in which my work might be used. For that reason, I especially enjoy getting feature requests. For example, I develop Hubroid, a GitHub application for Android. When someone posts a feature request, I get to discover different work flows my application could be used for that I might not have even considered before. I enjoy making software better, and even more so when I am making it better for others.

Contribute Socially

So, maybe this project you enjoy is doing fine as far as documentation, bugs, and features go. What could you do to help out? Developers like it when people use their applications, so the best thing you can do is to get the word out that the application exists and show how it improves your life. Hop on your favorite social network and spread the word to your friends and followers. Hopefully you will be making their lives easier as well as giving satisfaction to the developer that their work is not going unnoticed.

I should also point out the fact that GitHub is a social network itself. If you “watch” a repository, you’re basically subscribing to updates from that repository — not only that, but you are also displaying your interest in the project publicly. Generally, the more watchers a repository has, the more popular it is, and henceforth the more support it has. Support the repositories you have an interest in by watching them; it doesn’t cost a thing.

Final Thoughts

While I wrote specifically about GitHub, there are tons of other open source project hosts out there. Each host offers its own specific services, but the ones I outlined above are typically standard across most of the major providers (source code repository, issue tracking, and a documentation system of some sort). In addition to GitHub, there is Google Code, Bitbucket, SourceForge, Gitorious, et al. Some services are tailored to specific types of projects. GitHub is obviously for projects using the Git version control system, but specific services such as RubyForge might target specific languages. There are tons to choose from, and tomorrow there will be even more, of course, as the open source ecosystem is gigantic — growing larger every day.

And I end now with some questions. What open source software do you enjoy the most? Have you contributed to it in any way, shape, or form? If you want to give back, you have the tools to do so at your disposal. I can guarantee quite a few others would appreciate your help. Hop to it.

Open Source TumbleDeck Project Looking for VB and Tumblr API Help

Gnomie Rafal Chmiel is a 13-year-old fellow going to high school in England, but don’t let his youth fool you. He’s ambitiously dedicated to programming Web applications and working on open source projects. (Kids, these days!) Rafal writes:

Hi, Chris!

I’ve been a big fan of yours for the past couple of years, and I noticed that you have a lot of influence on the Internet (with Twitter, YouTube, Google+, Facebook, etc.). A while back, I made some simple Web applications that I never published, but now I make more advanced desktop applications (especially social networking clients) and that’s why I’m writing to you today. One of my first applications was SocialTank, which was an all-in-one social networking client. Now it’s called Yellaboo! Lite. But that doesn’t matter…

A couple of days ago I created an open source project called The TumbleDeck Project. After reading the story about Twitter acquiring TweetDeck, I thought about making a (similarly named, I must admit) Tumblr client, and I did. Of course still being a student, I don’t know VB (the programming language in which I will write TumbleDeck) in full detail, nor the rather complicated Tumblr API. That’s where you come in.

I know that you’re not a programmer (you said so in one of your videos), but there are programmers who follow you. I’m looking for someone to help me with the project and I didn’t want to post on your Web site, geeks.pirillo.com, because I didn’t want to be spammy. So I’m contacting you to see if you might be able to put out the word that might attract some help for my cause; I would be most grateful.

I’ve hosted my project at tumbledeck.codeplex.com if anyone would like to have a look and see if it’s something that might be fun to pursue with me. Thank you so much!