A few weeks back, we hosted this challenge and knew it would have some really creative results. What we didn't know would happen, was that once again, one of our newest members was going to absolutely crush it on their first ever submission! George (aka georgedyer), who comes to us from Chattanooga Tennessee, teaches High School Spanish at his alma mater, where he is working on the next generation of foreign language instruction tools! He found CloudSpokes while browsing GitHub and stumbled across a fellow CloudSpokers repo and saw a past contest entry. He decided to snoop around our site, and when he found our Kiva challenge with backboneJS, he chose to just go for it! Turns out that was a good choice! We were so impressed with his submission on the challenge, we badly wanted him to write something up about it! Thankfully he accepted! Please welcome George to our blog, and keep an eye out for his name, as I have a feeling we'll all be seeing it frequenting our leader boards in the future!
CloudSpokes and The Cycle of ProgressTeachers are very important to me. A teacher in high school first introduced me to algorithmic problem solving via the Pascal language way back in 1987. It was Mr. Lewis who loaned me reference books and let me watch him program the school's first student administration software. More importantly, he fed me programming challenges regularly and provided access to a computer. I soon discovered that successful skill development followed a certain cyclical pattern that looks something like this:
- Observe the experts. Recognize patterns.
- Mimic those patterns. Practice them. Tweak the patterns to create something new. Make mistakes.
- Analyze and correct mistakes. Improve your creation.
Another teacher in high school helped me become fluent in Spanish. It turns out that the same process applies to foreign language acquisition. Paco (my teacher) and I succeeded where many others in foreign language have failed, and I believe the key lies in this process, which I like to call The Cycle of Progress. Paco spoke in Spanish 99% of every class and was continuously asking us to copy and tweak the patterns he provided us with his speech in order to say something new. Students weren't allowed and didn't have time to speak English, as precious class time was devoted to what might be the most important step in The Cycle of Progress: Rigorous practice.
I was so well-prepared by Mr. Lewis that I started programming straight out of high school, first on physics research and soon after working for startups during the (first) internet boom of the late 90s. It was an exciting and lucrative time for anyone who loves to acquire and apply new skills.
Years later I got the chance to return to my high school to teach Spanish. I seized the opportunity to work alongside many of the teachers who taught me, and that's what I've been doing for close to 10 years now. Along the way, I've achieved the most success when focusing my students on The Cycle of Progress. Here is the rather cheesy representation that I gave my Spanish students every year:
During my experience as an educator, interactive web apps matured and flourished, and I began to see how technology, used in the right ways in the service of skill development, empowered me to achieve great influence on student language acquisition. This, as well as my love for problem solving, eventually drew me back into programming full-time. My current goal is to combine teaching experience with programming skills to create tools for teachers that leverage and multiply their power to transform the minds of students.
I've spent the past year playing technology catch-up, sharpening my skills with the many new web technologies that have matured while I was busy in the classroom. There are plenty of great mentors and heroes out there to learn from, like Alex McCaw, Jeremy Ashkenas, James Halliday, TJ Holowaychuk and the folks at Bocoup in Boston, just to name a few, that have provided me with the opportunity to look over their shoulders via github repos, books, blog entries and screencasts as they do what they do best. These resources alone, however, would not help me achieve my goals.
Finally, this is where Cloudspokes comes in. When I stumbled upon the site for the first time, I knew I had to try one of the challenges. It was a chance to practice the new skills and techologies I've been reading about and watching in screencasts online; to copy programming patterns and tweak them; to make mistakes, refactor and work out the kinks; to measure my performance, analyze mistakes and carry the experience to the next iteration in the Cycle of Progress. Best of all, I had the chance to get paid for my time learning! It was like a teacher giving out cash.
My first CloudSpokes challenge was a BackboneJS Kiva loan organizer. Briefly, here are some of the things I learned how to implement:
- Backbone Models & Views for complex interfaces and backend syncing
- The many uses of UnderscoreJS
- The time-savings, clarity, concision and elegance of Coffee Script
- Twitter Bootstrap as an easy and consistent UI foundation
- "Sticky" UI elements
- Lazy loading
- Separating client-side code into modules
- Making sure that my views only respond to model changes
For my second CS challenge, I designed an embeddable online user-count that links to a chatroom for logged-in users. Along the way I learned how to implement/develop:
- an automated dev and build process with Coffee Script cake files
- Socket.io for instant updates in the browser
- A JSON API using ExpressJS
- Breaking client code into Namespaces/Modules in Coffee Script
Many lines of code later, I feel much wiser, more capable and confident than I was only a month or so ago. CloudSpokes challenges were the perfect opportunities to iron out the implementation of many skills and tools before incorporating them into my own larger projects for language instruction, and I made a little money, too! I've already used some of that money on a yearly subscription to Peepcode! The cycle continues...