| DISABLE AUTO REFRESH
 
SD TIMES BLOG
 
jhildebrand

Teach a kid to program

by J.D. Hildebrand 10/17/2011 10:43 AM EST

Do you remember the sense of wonder you felt when you wrote your first working computer program? I have been programming for more than 30 years, but I recall my first experiences with BASIC as if they were last week. I borrowed my employer's Apple II, I remember, and spent an entire weekend writing a program that conversed with the user, trying to negotiate the purchase of his car or house. With every page of the Applesoft BASIC manual I read, I had a new keyword to incorporate into the program. I don't know that I've ever spent a more exhilarating weekend.

In recent years I have sought to share that exhilaration with members of succeeding generations. What better gift could I pass along to a child than an introduction to the fascinating, rewarding, confounding, frustrating, engaging world of programming?

It turns out that I am not alone. All over the world, programmers, educators, and parents are working to create kid-friendly introductions to programming. I've found four teaching systems that seem particularly promising.

  • Kodu is a visual programming environment from Microsoft. It allows kids to create interactive video games by dragging objects into a workspace and selecting events, properties, and actions. Kodu started as an Xbox app but it's also available for Windows. Most of Microsoft's internal links to the Windows implementation of Kodu are broken, but I did some digging and found that download page here. Fair warning – the app is 183 MB. But the price is right – it's free.

  • Scratch is a game-development environment from the Lifelong Kindergarten Group at the MIT Media Lab. Unlike Kodu, which feels basically unsupported, Scratch is the focus of a lively, active group of children and adults who trade tips and post their applications. The 33MB download is free.

  • Codecademy is a Web site that presents step-by-step lessons for getting started with JavaScript. A tutor guides you as you interact with a JavaScript interpreter. I love this site's gradual approach to teaching programming concepts, but I'm sorry the lesson runs out of gas after eight lessons.

  • Try Ruby is similar to Codecademy, but it's based on Ruby instead of JavaScript. Try Ruby is part of Code School, which offers a variety of fee-based tutorials for adults in addition to the free Try Ruby package.

I hope this short guide helps you get started. Teach your own kid or borrow a kid – surely you have a niece or nephew who's ready to dive into the exciting world of coding. Or volunteer at a local school. I guarantee you'll find the experience as rewarding as your students do.

Web recommendation: I have nothing to add to this news report – I'm just passing it along for your enlightenment...because that is the kind of fellow I am. You're welcome. Contamination of UK mobile phones and hands revealed. J.D. say check it out.

J.D. Hildebrand has written hundreds of articles for dozens of publications and online communities dedicated to software development. He recently relocated to a small town outside Belgrade – stop by if your travels take you through Serbia.

Currently rated 2.2 by 5 people

  • Currently 2.2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1872

Tags:

People | education | software development | ruby

ahandy

Ruby on Rails Debate

by Alex Handy 06/14/2011 01:58 PM EST

Just a quick post to point out a bit of a discussion going on in the blogosphere about Ruby on Rails. Steve Coast points out what he calls a trend towards... to put it in nicer terms than he uses... Ruby on Rails navel gazing. In his posting "What the hell is happening to Rails," Coast points out that the framework and language have gotten more complicated and difficult to use over the years, particularly with the release of version 3.0. He goes on to state that 3.1 continues this trend, and has effectively made Ruby on Rails inaccessible to newcomers. He points out that Rails used to have a default route for catching all exceptions, but that now, you have to add a route for every exception by hand. Other quibbles about changes in the framework are cited in the piece, as well.

As this is, after all, the InterWebs, there are dissenting opinions. Ernie Miller offers up his own take on the trend, and calls Coast out a bit. Miller refers to Rails as "Opinionated software." It's kind of an extension of the thinking that states "If a developer doesn't have strong opinions about development tools and languages, he might not be that good at programming." Certainly, I dont' subscribe to this theory, but I do have to admit that some of the best programmers I've ever met spend an awful lot of time bad mouthing other frameworks/languages/etc. It's more of a stereotype than anything else. Miller dives much deeper, however, so I suggest reading both gentlemens' opinions and forming your own. His contention is that, as Rails evolves, it will should continue to push in very distinct directions, with distinct goals, or "opinions," as these opinions help to remove ambiguity that could trip up a newbie.

And if you want some more info on Rails 3.1, check out this posting at Nodeta about asset pipelines in Rails 3.1.

Update: Yehuda Katz has now weighed in with some excellent insight.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1787

Tags:

ruby

ahandy

Hello Vagrant

by Alex Handy 03/24/2011 05:20 PM EST

I'm evidently quite far out of the loop, as I have only just discovered Vagrant today. When you're done compiling, Vagrant is that missing step between built application and virtual server deployment. Vagrant takes your app, builds a virtual machine image, then fires it up in VirtualBox. Though Vagrant is written in Ruby, it uses Chef, Puppet and VirtualBox, and is thus language agnostic. It sounds like just the thing for the distributed team that's constantly building and testing things on laptops and desktops, far from server farms. So, next time you need to test a simple app in a TomCat container, but you need an Oracle database as well, Vagrant is there for you. Enjoy!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1753

Tags:

ruby

drubinstein

http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-15-67-metablogapi/6471.clip_5F00_image0024_5F00_3CF99F8C.png

The cloud is all about interoperability, right? Microsoft has taken a step in that direction with the recent release of Windows Azure Starter Kit for Java, an Eclipse-based plug-in that enables Java developers to deploy their applications to the .NET-based Microsoft cloud. The community technology preview is available for Java developers to use with the Eclipse IDE; Microsoft is waiting for your feedback. The idea is to give developers writing in Ruby, PHP or Java an Eclipse-based solution for deploying onto the Azure platform. The starter kit includes an Apache Ant build extension that understands Azure configuration options to simplify deployment. Microsoft's goal, of course, is to have more applications running in the Azure cloud, which Microsoft hosts, as part of its all-in bet on cloud computing.

Currently rated 1.9 by 24 people

  • Currently 1.916667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1740

Tags:

cloud computing | Microsoft | php | java | ruby

ahandy

Why did Salesforce.com buy Heroku?

by Alex Handy 12/08/2010 01:12 PM EST

With Dreamforce still going on today, Salesforce.com made its biggest announcement yet: it's buying Ruby hosting company Heroku. Many people may be asking "why?" Even others may be wondering, "Who the heck is Heroku?" I'll see what I can do to figure this out.

First of all, VMware and Salesforce.com are all about bringing Java applications as is, to the cloud. Naturally, VMware is heavily focused on Spring applications, because owns SpringSource. Salesforce has been less emphatic about Spring, and has its own slimmed down Java, called Apex.

Java is basically taken care of for the future on Salesforce.com. The company also offers tools for building with .NET, so it's basically covered on all ends when it comes to enterprise software development. But the dynamic languages that are so popular with Web developers are not so easy for Salesforce.com to deal with. That's because the applications have to run inside Salesforce.com's systems, and it's taken them this long just to make that a safe place to run Java. Imagine the headache of securing an execution environment for Ruby, Python and PHP?

Additionally of interest is the fact that many enterprises jumped on the Ruby bandwagon a few years ago, and are now struggling to scale those applications. Ruby applications for businesses essentially had three choices for hosting their applications: Engine Yard, Heroku or Joyent.

Engine Yard is a widely focused company. Their philosophy is to help Ruby on Rails in general, and in doing so, increase the number of potential customers. Joyent has vaulted itself from a Ruby hosting company to a cloud provider with millions of dollars from Intel as investment capital for expansion.

That leaves Heroku. And, really, it's a perfect fit. Heroku is a platform. It's a pure Ruby hosting business built on top of a simple-to-use layer of Web-based administration tools. Sound like anyone we know? Naturally, that's the sort of company Salesforce.com would buy. My money is now on VMware to grab Engine Yard, but that's been rumored for a while now, and nothing seems ever to happen on it. And the departure of Yehuda Katz from Engine Yard doesn't help their matters much either.

Currently rated 1.9 by 9 people

  • Currently 1.888889/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1716

Tags: , ,

ruby

ahandy

Ruby still growing?

by Alex Handy 04/23/2010 11:25 AM EST

For a time, it seemed as though the bloom was off of the Ruby rose. Developers were all hot and bothered about Ruby on Rails two, even three years ago. And the Rails project, today, continues to grow and improve. But Ruby just seemed as though it was slowly giving way to a general favoritism towards all dynamic languages that offered a half-good Web framework. After all, the real joy of Ruby wasn't the language itself, but the fact that this one really well thought out, fairly easy Web framework was the only game in town for the language. It focused the love in one place, and a garden of innovation flourished.

After all, Java has tons of Web frameworks, but you certainly couldn't call Java the new hotness. And those Web frameworks are generally at odds with one another. 

So it was a surprise to me when I saw this graph on Indeed.com, a site that scrapes job sites. With it, you can also find interesting statistics around what those jobs are asking for.

And according to Indeed's numbers, Ruby is not only still the new hotness, it's also still seeing the most growth in jobs of any language out there. I would have thought, that Python would have been growing at least as much as Ruby, especially now that it's reached that all important "libraries for everything" stage of a language's growth.

But Indeed's numbers do make some sense. It makes perfect sense, after all, that Java wouldn't be growing much, but rather, would have a steady stream of jobs at about the same rate. I threw a bundle of other languages into this graph and found that nothing compares to Python and Ruby when it comes to growth.

.NET and C# are a half-step higher than Java in terms of overall growth, but they show nowhere near the growth of Ruby and Python. Still, C# has seen a doubling of jobs out there since 2005. Java also still accounts for around 3% of all jobs, so it's still your safest bet for languages to know. Ruby, on the other hand, despite meteoric growth, is still well below 1% of all jobs. But it and Python are still rapidly approaching that monumental 1% point.

Perhaps the most humorous revelation was the slight spike in LISP jobs back in January of 2008. I have to wonder if that was at all related to the bank mergers at the time.

Currently rated 1.8 by 13 people

  • Currently 1.769231/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1622

Tags: , , ,

python | ruby

ahandy

Yehuda Katz Talks Rails 3.0

by Alex Handy 02/09/2010 06:32 PM EST

Today, I sat down with Yehuda Katz, Rails Framework Architect. Katz used to be the man behind Merb, but when Merb was merged into Rails last January, Katz became a core Rails contributor and architect. I sat him down to talk about the recent Rails 3.0 beta, and about the new life within the Ruby on Rails community.

How have things been on Rails since the merge with Merb?

It's been good. The interesting thing that's happened since that is a lot of other Ruby projects have done it. There's a tool called Webrat, which is a full stack testing tool; and abstraction around HTML Unit. Someone said I can make it better, they called it Capybara, and they pushed it into Rails.

Also, Micronaut. It's basically guys who said 'we can do rspec better.' This has started to happen in the Ruby community, and it makes me happy. I think there is too much in the open source world of people building software because you want to put your name back out there.

That's been a positive outcome. Also the Rails core team diversity has been very helpful. Rails core, before, was 37Signals and some people doing client work. Now we have people doing custom development around it. We have people working on problems we didn't have before. It's definitely caused us, both people who are new and veteran contributors, to question our assumptions. The conclusions have been almost 100% positive.

The community has gotten a lot healthier since the merge. Like rails was getting stagnant a lot of people who are coming back now who are coming to rails to first contribute. A big chunk of the time I spend every day on rails is cat herding. And trying to balance the need to be involved in the architecture of the thing, and getting things done by real people interested in doing things.

I hear things are being uncoupled, starting with Prototype.

Unobtrusive JavaScript. Rails is no longer coupled to Prototype. That was a community effort. DHH tweeted 'we're running behind,' and a community formed out of the aether. Less than a week later it's all done.

Basically what Rails did before, when you said 'link to remote,' like, I want a link that when you click if makes an AJAX request and when it comes back, put it in a div. In Rails on click, you would have to go through and find all those places where you used Prototype and remove that reference . People made shims they got out of sync. The way it works in Rails 3 it's straight HTML: a href = “actual url” and it uses the HTML 5 data tag. It supports custom attributes. We've created a library that says 'find any links and wire them up.' Anybody else in other libraries like Dojo who want this benefit just have to write JavaScript and not ruby.

Before having someone go and hack in the helpers and such required someone on both sides of the fence at all times.

What are the biggest changes for Rails 3.0?

The biggest thing is security. We went through the known remaining security vulnerabilties based on having spoken to Twitter and having them say 'your security tools are too manual right now.' [To prevent cross-site-scripting vulnerabilities] Almost every framework says if you use user content, just escape it. It's easy to forget to escape it. As an attacker, you have to find the places in Web applications where they forgot to escape. What we've essentially done is made Rails pessimistic by default. If you try to put in a string into HTML at any time, we automatically escape it. We went through all of Rails' internals and marked the form tags as safe, which means that for the vast majority of cases, users won't have to do a lot. But there will be cases where they were relying on content input by the user that was unsafe. But it's now almost impossible to have an accidental XSS attack.

We've also gone into cross-site request forgery (CSRF) protection. We were pretty rock solid before, but there were cases where we were blacklisting things which were not vectors for an attack. We made it less annoying to work with the systems. If there was a form you were submitting with JavaScript, you had to form a token even though that was not a possible vector. This makes it less likely for people to turn [CSRF protection] off.

Tthe second big thing is improving interoperability, mainly with other Ruby libraries. We've gone through Rails systematically, and found where we were coupling ourselves to ourselves and removed those. Rails controller view code is no longer coupled to the models, so you can use any views you want. We also added support other templating languages. We made it a lot easier to support other testing frameworks. TestUnit was standard, and others had to do a lot of work to strip out our support for TestUnit and add their own. Using rspec felt worse than using TestUnit. TestUnit itself is a plug-in now.

How has Jruby been involved in the Rails 3.0 push?

The biggest thing is to be in touch with them and make sure Rails 3 ran on JRuby. We made significant changes, and a lot of the things we added to Rails 3 were shaped a lot by JRuby and Charlie [Nutter, co-creator of JRuby]. Charlie wants to allow existing Hibernate models to work within Rails. That's not going to ship with Rails, but the way we built it, it's possible to swap in something for using Hibernate.

We didn't go in and say 'we're supporting some Java feature.' They have top notch Java integration. Because of the fact that we've made our layers agnostic, it's really easy to work with JRuby. We will see things, Hibernate being the first obvious example that will highlight this interoperability.

It sounds like there's a lot of new monitoring options in 3.0.

We've instrumented the entire framework. Ruby itself is intrinsically insturmentable. You can do something before and after to call the other method first. Then you have people trying to find the appropriate place to insert. For rails 3 we wanted ot make it really easy for New Relic [A new Rails company focused on monitoring] to exist. We rearchitected the logger to, instead of being hardcoded inside parts of Rails, to listen to instrumentation events and do the right thing. Things like, 'started SQL now.' Server did a request and it took this amount of time: that info is collected. If you want to say 'this should be considered model time,' you could do that yourself.

What's going on with Active Record versus DataMapper?

Active record got a big boost in Rails 3. There are a lot of reasons why people might have used DataMapper, before, and it is now in Rails. Active Record has a relational data model, so it is now a lot easier to chain together queries an compose queries. DataMapper is still a great library, with support for multiple databases. We wanted DataMapper to have the same mount of support as Active Record.

Another [area of improvement around DataMapper and Active Record] is that configuration for plug-ins looked different than configuration for top level things. In Rails 3, we just expose the ability for anyone to have just top level configuration. Finally, [we improved] instrumentation. Instead of the logger saying 'how much time is Active Record saving?' Active Record emits a SQL event and the logger listens for a SQL event, collects all the events, and puts them in the log. Anybody else who wants to put in a piece of Rails can do that now. DataMapper doesn't look different from using Active Record in the logs.

Finally initialization. On boot, plug-ins were initialized later. Active Record hooked in early, plug-ins like DataMapper could not. In Rails 3, Active Record is loaded similarly to how DataMapper is loaded. We also added an API for saying 'I would like to run this after that.' I want to run this block after or before this block. This makes it easier for frameworks that look at the built in code.

The default Rails experience is the same.

This sounds like it's mostly a housekeeping release.

I call it the Snow Leopard release. The routers way better; you can route based on sub-domains. Ruby has racks, like portlets were an abstraction, this is a simpler abstraction and Rails is now basically a rack framework. If you want to take a Sinatra application and put it inside a Rails route, it's really easy.

So, what's with Sinatra? It seems to be getting popular.

Sinatra is essentially a nicer wrapper around rack. You receive a request which is a hash and pathinfo, and you return an array of status code, the headers, and the body, and you have to do very specific things. That's not complicated; it's fairly easy, but most of the time you want to say when the user goes to this URL I want you to return this.

Sinatra makes that workflow really easy, especially if you have one big library you want to expose to the Internet. We've been looking at whether or not those abstractions will work in Rails. In general, it would require some work to get working. Our template API is very performant. But the way you set it up is--not horrible--but could be better. We're looking at ways to leverage the ideas of their templating system in Rails and maybe creating handlers. But in order to do that we have to solve some performance problems. We're looking at that for 3.1.

What do you think about other Web frameworks in other languages, like Django in Python?

We're trying to make it so that if people want to build something in other places, you shouldn't have to make a Rails specific version. Django wants people to write Django-specific things, not just Python. What's really cool about Ruby is that there isn't any divide. We pushed a lot of stuff back to rack, a lot to Ruby Gems; we prefer it to have things in a sharable form. People who work on minor frameworks write a disproportionate code. Making it easy to share template stuff with Sinatra, even though there's only 100 users--what good could that be? Well, if we are sharing, we have a much better ecosystem. The Python world has this wrong. Django feels that because they are a big framework, they don't have to share.

Do you even get to code anymore?

I do get to code. Half my time is working with people. Almost all the time I spend working with people is code reviews. It would be fairly difficult for the people who I work with who are not on Rails core to do stuff on their own, but a lot of people are getting pulled in. We have a few people contracted at Engine Yard who have worked their way into being members of the core team. The goal is not to make us [the core team] obsolete, but to make us a big group.ac

 

Currently rated 2.3 by 23 people

  • Currently 2.347826/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1584

Tags: , , , , , , , , ,

ruby

ahandy

Five completely wrong predictions

by Alex Handy 01/03/2010 02:43 AM EST

I'll just get it out of the way: I'm probably wrong on all of these, and sticking them up on the wall for all to see forever is an act that screams for temporal retribution. And retribution there shall be. But first, there must be an affront to the very fabric of time. And here it is:

  1. Google will continue to grow its influence over developers around the world. Their APIs, tools and services will form the beginnings of what could be called the Internet-based stack.
  2. API management will be quite important. Incoming API usage will need governance, and outgoing API services will need formally enforced policies.
  3. Web-based IDEs will start to make big waves. Project Bespin and the forthcoming Atlas will both change developers' perceptions of what a Web-based IDE is capable of. Call it cloud-based development.
  4. Functional languages start making more headway in the United States. Europe has already figured this out.
  5. Remember all that increadible optimization work that went into JVMs over the past 10 years? It will really be appreciated by all the people running Ruby, Clojure, Python and Scala. In a few years, I expect JVMs to be the standard runtime for most non-C-ish languages.

Currently rated 2.0 by 6 people

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1568

Tags: , , ,

python | cloud | web | code | php | java | ruby

ahandy

A controversial Ruby conference

by Alex Handy 04/29/2009 05:09 PM EST

The world of technology conferences is rarely controversial. Sometimes a well-spoken developer can challenge the status quo by presenting something wildly new and different, but it can certainly not be said that technology conferences are akin to awards shows or sporting events when it comes to gossip.

But when Matt Aimonetti gave his talk, "CouchDBPerform Like a Pr0n Star" at the Golden Gate Ruby Conference two weeks ago, he sparked a debate that is still spinning around in the blogosphere and the Twitterati. Long story short, Aimonetti's talk did not leave the pornography references in the title. The talk, linked above via Slide Share, features many border-line images and some crude language to explain why Ruby and CouchDB make a powerful one-two punch for scalability.

Much of the discussion still going on around this whole affair is focused on the fact that there were only six women at this conference, and most of them seem to have been either offended or embarrassed. I think the most unfortunate part of this whole affair is the fact that CouchDB has been swept up in it. There's no need to clutter up Damien's work with this sort of gossip, and it's a shame he had to take time out of his day to address the issue.

Still, this raises the same questions we've all be wondering about since the days of yore: How do we get more women into the software development world? I've heard stories of female developers placing signs with their names on the doors of bathroom stalls, as the female employees outnumbered the toilets in their rest rooms. 

Unfortunately, giving semi-pornographic talks and sticking with the standard gross jokes we've all heard (or thought of quietly) while programming isn't going to help the gender imbalance. Personally, I think the only way to increase the number of women in the industry is to teach programming side-by-side with reading and writing. At least that way if girls are learning this stuff before they realize that many of their soon-to-be coworkers will always be making fart jokes, they might be more likely to stick with it. And they might found their own blue-humor-free companies. Or give their own tasteful talks.

Currently rated 2.3 by 3 people

  • Currently 2.333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1412

Tags: , , , , , , ,

ruby

ahandy

I was shocked to hear this from Yehuda the other day. While I was off on vacation in the great white north, Merb and Rails crossed their roadmaps and aimed for a future together. I know, crazy huh? I'm more miffed that they had the gall to do this on almost exactly Christmas day, ensuring that the news would get burried underneath a mountain of RSS, email, and IM conversations.

The story of the Merb merger is actually fairly interesting. It sounds like the Merb people were really talking smack about Rails and its behaviors, speed, and occasional 30 second restart times.  What began as a real genuine mudslinging contest turned into a group hug, with Yehuda, Lori and Carl turning into Rails core committers. Merb will now begin to mosey off into the sunset, and probably become obsolete by the end of the year.


The best on this subject has been written by DHH, creator of Ruby on Rails. Read his words. Basically,some of the big Merb brains are going to refactor the heck out of Rails.

Currently rated 1.4 by 9 people

  • Currently 1.444444/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Share this link: http://www.sdtimes.com/blog/1244

Tags: , , , , , , ,

ruby

 
 
News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 

Download Current Issue
MAY 2012 PDF ISSUE

Need Back Issues?
DOWNLOAD HERE

Want to subscribe?


 
blogs tab
Why we leave
Ten reasons good workers leave their jobs, plus a few suggestions for retaining them.
05/22/2012 06:14 PM EST

Creation
To write better software, cultivate your ability to be creative.
05/19/2012 07:40 PM EST

Slick...but who needs it?
compilr.com is a well-designed site and the folks behind it seem to have their heart in the right place. But...who needs it?
05/16/2012 12:45 PM EST

How to be a better software developer
Want to be a better developer? You won't get there by mastering an interesting language or learning a new set of APIs.
05/14/2012 12:18 PM EST

Wooing Galatea
Do yourself a favor and check out Galatea 2.2, a wonderful book by novelist Richard Powers.
05/12/2012 07:05 PM EST

The world as story
An artificial-intelligence system at Carnegie Mellon seeks to understand the world by making statements about it.
05/10/2012 06:39 AM EST

 

Events calendar tab
6/3/2012 to 6/7/2012
Orlando
IBM Rational

6/10/2012 to 6/15/2012
Las Vegas
SQE

6/10/2012 to 6/15/2012
Las Vegas
SQE

6/11/2012 to 6/14/2012
Bellevue, Wash.
AMD

6/11/2012 to 6/14/2012
Orlando
Microsoft