Category Archives: Education

Behind the Code : LastWave

Behind the Code we talk about open source software, discuss challenges in developing, or in contributing to the code. celebrates a community member’s technical or business accomplishment and offers the opportunity for insightful discussion into the challenges in achieving it.

Date: 6:00pm – 7:30pm, Tuesday, November 25th
Presenter: Niko Savas (McMaster Software Engineering)
Demo: LastWave
Website: http://savas.ca/lastwave/
Technologies: JavaScript, SVG, Last.fm API
Format: 10-15 minute presentation, 20-30 minute discussion
Location: Applivy HQ (Westdale), 901 King Street W, Unit B

Applivy’s mission is to bring highschool, university students and Hamilton professionals together in a mixed learning environment. Topics include coding, technology, business, liberty, startups, and more.

Special Appucations workshop for parents and educators

Editor’s Note: The below was originally posted on SpecialAppucations.com.

 

Special Appucations is super excited to announce that we will be conducting a series of workshops for parents and educators who have, or work with children with autism, and/or special needs. The first workshop we will be presenting is “Street Smarts: Keeping your child with special needs safe!

Woman hugging a child

In this 2 hour interactive, and pragmatic workshop you will learn:

  • how to teach your child what to do if lost
  • how to know if your child is ready to learn this important skill
  • strategies that you can use to go and practice this skill
  • considerations for individualizing how to teach this skill to your unique child

This workshop will be led by Sarah Kupferschmidt, MA, BCBA. Sarah has conducted a variety of workshops, is a professor, parent coach, and co-founder of Special Appucations. Her mission is to empower parents and educators with practical tools to teach his/her child with special needs skills that will improve his/her quality of life.

Sarah

If you would like to learn more about clinically proven strategies that can be used to teach your child what to do if they are lost rsvp for this workshop at info@specialappucations.com.

Where: McMaster Innovation Park, 175 Longwood Road South, Hamilton, Ontario.

When: November 19, 2014 7:00 PM – 9:00 PM

Cost: $25.00

Sign up to our newsletter for updates on future workshops and get in touch if there is a topic you would like to see us cover! We hope to see you on November 19, 2014!

 

Sarah Kupferschmidt, MA, BCBA

Difficulty by design

tower_of_hanoi

 

Good design is all about making things easier, right? Simplifying the complicated? Well, it depends. One instance where this doesn’t hold true is edtech.

My favourite example of this is a paper by Gunnvald Svendsen called “The influence of interface design on problem solving” [pdf]. Svendsen showed that study participants who tried to solve the Tower of Hanoi problem using a more cumbersome command-line interface were able to learn the principles governing the solution better than participants who tried to solve the problem using an easier direct manipulation interface.

It goes beyond edtech. The idea of “desirable difficulties” extends into education more broadly speaking:

“In fact, when teachers try to facilitate learning by making it as easy as possible, this may increase the immediately observable short-term performance, but it decreases the more important long-term retention.”

That’s not an excuse for crappy edtech (or teaching). But it’s a reason to search for empirically supported instances of difficulties that are desirable because they produce superior learning results, and then to implement those difficulties in edtech (and in the classsroom).

Because of the short-term user performance/satisfaction hit, it takes some nerve to implement desired difficulty. It’s like the plutonium of design, one wrong step and you’ve long-term pissed off your users – so you have to be careful with this stuff! The promise of good results followed by their realization is what provides the confidence to use desired difficulty.

 

Current edtech still fails too many students

In recent years we’ve seen waves of really cool edtech – Coursera, MOOCs, Codecademy, etc. I’d even include privately run for-profit conferences and workshops sold through online ticketing platforms as a form of edtech disruption.

As an educator, I like seeing innovation happen. A lot of these disruptions exist because they are successfully capturing some previously unserved niche. Many of these disruptions are displacing other forms of educational materials, like textbooks.

What I’m not crazy about is the over inflated hype surrounding some of these technologies. In particular, the idea that they have the ability to make schools themselves obsolete or irrelevant. These hype cycles around new technologies are pretty normal. But if the printing press didn’t make schools obsolete – as much as I love them, these edtech solutions won’t either.

 

hypecycle

 

One of the fundamental problems with a lot of this tech is that education is an inherently social activity.

No matter how much material you make more technically accessible in terms of ease-of-access or economically accessible in terms of cost-of-access, the material can still be educationally inaccessible to the recipient (for lack of a better term). We haven’t invented the brain-to-computer interface yet – the recipient still has to be able to process and make sense of whatever material they experience.

 

matrix

 

Take Wikipedia for example. It’s free, open, contains much of the world’s important information, and it’s physically accessible to everyone. But the readability scores on wikipedia articles indicate they are too challenging for a majority of their readership. So even though the information is all there free online, that’s not truly enough to make it accessible.

Or as another example, how much is a good MOOC really disrupting education? If you can get 10,000 people to go through an Intro to Calculus class, great, but how many of them would have previously just opened a textbook instead? How many of them are already formally educated and are adding an additional skill in a quicker, cheaper, more fun way than they could have done so before? How many of them are somehow marginalized vs. in a good socioeconomic situation?

To me the potential with a lot of these new technologies is to integrate them alongside traditional instruction – much like how textbooks, TVs, and projectors/slides have been used to compliment traditional instruction.

The real long term dream of edtech – freely available high quality education that is accessible to everyone in the world – is going to require more than MOOCs, badge-level gamification, and open repositories of information.

I’d love to see more edtech that is focused on helping the marginalized, though I realize (through first-hand experience) that it’s hard to sell apps, or anything, to people with little money. Maybe that’s where governments will step up, I don’t know. I’d also love to see more edtech that’s built with a view towards complimenting traditional instruction rather than misguidedly trying to replace it. Initiatives like this ESL pilot project that integrate the inherently social nature of education get two thumbs up in my books.

Most of all though I’d love to see a new breed of edtech that can handle situations where the student doesn’t get it, perhaps because they can’t get it for some reason (e.g. lack of background knowledge, mental health issue), and correctively responds to the situation in an effective manner. That’s where there is a chance for truly massive disruption and ROI – and I don’t think it needs to be done via a silver bullet, more like a “next-generation approach” to edtech.

I realize it’s much easier said than done. So in the meantime, I’ll let the Vulcans give me hope…

 

 

Interview with Teachably creator Vince Angeloni

Check out the interview below with Vince Angeloni (@vince_angeloni) about his new edtech startup Teachably. You’ll be able to see a live demo + Q&A of Teachably at DemoCampHamilton17 on June 17th inside The Art Gallery of Hamilton!

 

vinceTell me about yourself.

My name is Vince Angeloni, I’m from Hamilton, Ontario and I am a User Interface Designer, Web Developer and entrepreneur. I have been in the industry for almost 10 years collaborating and building products for startups in Southern Ontario. During this time I have helped design applications for KFC, PizzaHut and FlightNetwork.

 

What is Teachably all about?

Teachably is a cloud based all-in-one management suite for teachers that allow them to manage everything from their students, class timetables, and create lesson plans. It’s main goal is to provide simplicity and organization into teachers’ lives.

 

Why did you decide to create Teachably?

Teachers are some of the hardest workers I have ever met. Their passion and drive is inspiring. They have an incredible amount of work load when not in the classroom, not to mention being an inspiration and role model for students on a daily basis. In the education technology industry there seems to be a lack of focus on how humans use software. With my years of experience creating products around how human beings use them I decided to create a product focused primarily around using modern development technologies along with modern approach to interaction design to create a much simpler product to not only save teachers time but reduce the amount of tasks and workload they have.

 

stayorganized

 

Why should teachers use Teachably?

Every teacher works differently, not one does the same thing in terms of organizing their lessons and keeping track of their students. With that said, we are dedicated to building a product that everyone can use. You don’t need to be a computer expert to use Teachably or be part of a long introductory keynote on how to use it. It’s simple user interface allows teachers to get started using it quickly and easily. We have a growing set of features that teachers are actively involved in developing. In the next month we plan on releasing more features like interactive whiteboards that can be used right from the web browser that can plug into any SmartBoard reducing the need of any extra software.

 

What is your monetization plan for Teachably?

As of current we haven’t finalized a monetization plan but it will be a monthly fee for accessing all of the features of the product. Special discounts will be available for group membership purchases (for faculties) and of course we will always have a demo membership that will allow you to preview all of the great features for a limited time.

 

lessonplan

 

Where do you see Teachably going in the future?

Teachably is just getting started. With my heavy background in mobile design and development, there is no doubt we will want to get the product not only on desktops and tablets but allow teachers to seamlessly manage everything on their account through their mobile phone.

We also are using the latest web technologies to build in some features that will make it more interactive not only to teachers but to parents, students and faculty.

 

What tools did you use to build Teachably?

Teachably is built primarily on Ruby on Rails with front-end being managed by jQuery, HTML5 and SCSS. It is running on a Heroku server and a PostgreSQL database. In the coming months we hope to continue to ramp up on using all the latest, modern web development technology.

 

students

 

Do you see any particular trends happening in edtech? How does Teachably fit into these?

Education Tech is right now heavily focused on building products that allow interaction with students to help them learn. While Teachably’s main focus is the teachers and helping them stay organized we can’t ignore the fact that the students are a big part of the workload. That’s why we will be building in features in the future that will allow teachers to use Teachably to interact with students and help them learn while also staying organized.

 

How can the community help you make Teachably a success?

Teachably is focused and built around the teachers. Without them it would not be possible to continue, so the more input we get from them we can build out the product to their liking. We listen to our members as a sort of crowdsourcing tool. We are not fans of companies that build products for themselves and not their users, we want to break that tradition with Teachably.

 

New CoderDojo sessions in June

scratch

 

Hammertown CoderDojo (@HammertownCDojo) is the Hamilton branch of CoderDojo. CoderDojos are free, not-for-profit coding clubs for young people ages 7 to 17. At a CoderDojo, young people learn how to code, develop websites, apps, programs, games and more. Dojos are set up, run by and taught at by volunteers.

HammerTown CoderDojo will be running a series of sessions called “Scratch at the Library” in June, check out the details below:

 


Scratch is a fun, easy-to-use language that you can use to make games and animations. It’s a great way for new coders to learn many techniques of programming as they modify a huge variety of online games or create their own. Scratch is a visual language; instead of typing in syntax, you drag and link together icons that let you build images, move them around in various ways and respond to user input.

Ages: 8–14, Perfect for beginners, please bring a parent or caregiver with you.

Where: Terryberry Branch, 100 Mohawk Rd W.

Time: 2:00-3:00 p.m.,

Dates: June 7th, 14th, and June 21

Registration required – Contact the Terryberry Branch at 905-546-3921 to register.


 

Details were originally posted here: www.eventbrite.ca/e/coder-dojo-presents-scratch-at-the-library-tickets-11663998333

 

Self-learning is not enough

Last month I wrote an article about how years of development experience is a poor metric for evaluating software developer quality. I concluded that…

If I had to pick one trait to filter for, it would be self-learning, i.e. evidence that the developer actively chooses to self-learn offline and online and then applies that learning to their own side projects.

Lately I can’t stop thinking about ‘what makes a developer a great developer’. Something’s been bugging me about choosing self-learning as the most important trait. I don’t take back that self-learning is the most important trait mind you. I’ve just had a gnawing suspicion that the statement needs a (few) caveat(s).

So, what’s the fundamental problem with self-learning?

You don’t know what you don’t know.

This is a critical obstacle to growth as a developer.

 

flintstone

 

In a two part blog series (part 1, part 2) Erik Dietrich (@daedtech) talks about the “rise of the expert beginner”. He introduces the concept of the expert beginner through a bowling analogy.

He says that in his early days as a bowler, he developed a technique that didn’t involve putting his fingers in the bowling ball. This technique worked well – to a point. He was able to improve to a certain level in the league that he played, scoring up to 160 a game. Until he stopped improving. An old manager eventually told him what it would take to improve:

“There’s nothing you can do to improve as long as you keep bowling like that. You’ve maxed out. If you want to get better, you’re going to have to learn to bowl properly. You need a different ball, a different style of throwing it, and you need to put your fingers in it like a big boy. And the worst part is that you’re going to get way worse before you get better, and it will be a good bit of time before you get back to and surpass your current average.”

 

expertbeginner

 

The concept of an expert beginner is elaborated from this observation:

The Expert Beginner has perfected the craft of bowling a 160 out of 300 possible points by doing exactly the same thing week in and week out with no significant deviations from routine or desire to experiment.

The self-learning expert beginner can find themselves in a position where they do ‘good enough’ and even ‘better than most’ but not ‘truly great’. By not knowing and/or actively avoiding their own knowledge gaps, the expert beginner misses out on discovering what they don’t know. This is a huge inhibitor to growth.

It’s not unusual to see expert beginners inheriting positions of authority. After all, they perform stronger than pure beginners, creating a perception of expertise.

How do you avoid the expert beginner trap?

Recognize that self-learning doesn’t mean learning by yourself.

Self-learning means actively seeking out and exposing yourself to different knowledge and beliefs than your own.

Attend events in your local software development community. Attend national and international events in the software development community (and bring that knowledge back to your local community!). Complete College and University level diploma and degree programs in your field, maybe even do a masters part-time, as these programs by definition ’round out your knowledge and diversify your experience’. Identify good mentors online and offline. Keep working on your mathematics background. Try to understand technical opinions held by developers that you might (at least initially) disagree with for whatever reason.

Actively try to seek out what you don’t know yet, and especially why those things may be important.

 

Build your own lightsaber

Our industry is booming, not just in Silicon Valley, but all over the place. The job outlook for software developers is great as a result. However a lot of these jobs aren’t the “computer programmer” jobs of the 1980s and 1990s. A lot of these jobs are front-end web development work for example, jobs that often require additional skills (graphic design, ability to communicate effectively with clients, etc.) not typically associated with the old school hacker stereotype.

 

supported_features

 

There’s a lot of debate and articles out there trying to define the differences between a developer, designer, programmer, coder, computer scientist, computer programmer, software engineer, software developer etc. I don’t really want to get into that too much. The truth is it’s a mess to try to define. So few people agree on any particular arrangement of labels.

There’s also the problem that people turn labels into unnecessary hierarchies, when it’s really just a matter of differences. There’s a lot of great front-end developers who have no interest to learn theoretical computer science and there’s a lot of great back-end developers that don’t have a knack for graphic design, but often times you need a balanced team to create something great. Suggesting one is better than the other is like suggesting a defenceman is more important than a forward in hockey – both are required to win, so it doesn’t really make much sense.

 

vendiagram

 

That said, we’ve seen a lot of innovative efforts to crank out more people that “know how to code” to meet the demand for these new job openings:

Going back to the hockey analogy… we’re doing a great job developing talent at the “forward” position let’s say, but what about the other positions on the tech team?

Lately I’ve noticed an uptick in people contacting me or asking me about things like scalability issues, code generation, and analytics. There are some problems out there where no matter how brilliant a manager leads however many great people that “know how to code”, it’s not going to be enough to solve the problem. There’s some problems that just necessarily require some “hardcore” mathematics and computer science to properly and economically solve them. Solving these hard technical problems is critically important to the success or failure of many startup businesses. Look at what happened to Friendster (founded by McMaster computer science alumni Jonathan Abrams):

 

…it basically came down to failed execution on the technology side — we had millions of Friendster members begging us to get the site working faster so they could log in and spend hours social networking with their friends. I remember coming in to the office for months reading thousands of customer service emails telling us that if we didn’t get our site working better soon, they’d be ‘forced to join’ a new social networking site that had just launched called MySpace… the rest is history.

 

So I worry a bit that in our industry’s rush to “teach everyone to code” or “just build an MVP” we’re neglecting the importance of the mathematics and computer science behind a lot of great products. I wouldn’t even just limit it to mathematical computer science, I’d add other computer science subtopics to the mix too like software testing, design and usability. I’m sure supply and demand will correct any imbalance over the long run, if indeed there is an actual problem.

But to newcomers who are learning to code for the first time and finding that they enjoy it very much, I’d encourage you to keep going. If you’ve gone through a Codacademy, learn to code workshop or coding Bootcamp and have “caught the bug” (no pun intended) and find yourself thirsty for more technical problems, there’s a lot more out there you should know about.

If you find you love creating and modifying WordPress themes, try building a plug-in next. If you get that far, try building an actual content management system next. Yes, those are some pretty big leaps, but if you find yourself loving it, why not make the jump? You’ll be opening yourself up to positions that let you build more complicated software systems. A huge amount if not the vast majority of work in our industry is at this technical level too, and it tends to be better paid.

 

 

What if you want to keep going even further? Some people will tell you to “re-build an existing popular web app”. For example, try to make a Twitter-clone. That’s not a bad idea.

But I think an even better idea is to build a compiler and/or operating system. Why? Because Jedis know how to build their own lightsabers, that’s why! Like a Jedi’s lighsaber, compilers and operating systems are your most foundational tools as a software developer. Understanding them enough to be able to build your own isn’t directly essential to your career, but it will make you a stronger developer.

 

nerd

 

But also because compilers and operating systems are where a lot of more foundational computer science concepts “come together” in an interesting way. Building a compiler and an operating system forces you to put together different areas of computer science in an interesting and practical way, knowledge of everything from the registers in the CPU to formal grammars is required. It’s the thought process of having to put those different areas together that matters.

Building a compiler and operating system will also force you to learn about how the programs you write execute on a more fundamental level. Because unless you are writing assembly code some form of compilation or code transformation is happening to your programs at some point, and the program is operating in some form of operating system/environment.

Chances are you will never have to build a compiler or operating system on the job, the employment in these fields is practically a niche area in the field. It’s just not a skill that everybody needs to have. But if you can build these tools yourself chances are you’ll have obtained enough experience at figuring things like this out that you’ll be able to tackle other problems where their solutions require piecing together knowledge from otherwise unrelated areas of computer science.

 

know

 

Want to give it a try? Here are some resources…

 

Compiler

Basics of Compiler Design – free PDF book
Dragon Book and related course notes
Let’s Build a Compiler by Jack Crenshaw

Recommended:
Coursera / Stanford compiler course – includes an optional project where you build an actual compiler

 

Operating System

The Dinosaur Book
Nachos
Minix3

Recommended:
PintOS – Nice and simple educational OS project out of Standford

 

 

Interestingly, I’m not the first to make the (very nerdy) argument about Jedis building their own lightsabers in relation to compilers.

 

« Older Entries