Showing articles with the tag(s): 'teaching'

Finishing 2013 classes for Polycademy

It has been a while since our last blog post, but we've had quite a bit of activity here for the last several months.

When we finished term 1, our students created various MVP versions of their ideas. Two of them can be seen online: Buhloon and ChessDimensions. The students found out that learning software development is an arduous process. But it's something that can be learned with commitment, and also something that allows you to create original applications in a short amount of time. It's also a life long learning process, since they've only scratched the surface of application development.

After and during term 1, we learned new development techniques. We wanted to streamline some of the course content, since during term 1 we transitioned between static web applications to more dynamic interactive applications, facilitated by single page frameworks such as AngularJS.

Term 2 unfortunately didn't run, since I was finishing up University examinations as I was about to graduate from the Australian National University. Once I had graduated, I decided to move Polycademy to Sydney.

So Polycademy is now located at the Vibewire co working place. It's in the heart of Sydney, close to Fishburners and Central station. This place is designed for social enterprises and organisations, so we're in good company.

Just before I launch into talking about what's happening in term 3, I want to point that we finished building an application for a client. It's called Dream it App (http://dreamitapp.com/). It's a platform for people to generate and discuss ideas for new web, mobile and desktop applications. If you have an idea for a cool application or if you already have built applications, add it on Dream it App and try get people talking about it.

It took about 2 and half months from start to finish, and it's a full single page application built on top of PHP, AngularJS, and Bootstrap. We learned that building large scale single page applications is much more difficult than static web applications. Static web applications refer to when the "view" (what you're seeing) is pretty much generated completely by the server side environment. Then people generally use jQuery to spice things up and make a few things dynamic. It was difficult because the javascript development practices haven't really been standardised, so we are often juggling competing best case practices. Every development company has their own opinion on javascript architecture and workflow. For example there are 5 different package managers for client side javascript: bower, ender, volo, component or jamjs. Of course there's the problem of browser incompatibility. Every browser has their own idiosyncrasies that you have to shim or monkey patch. These problems are being flattened with the introduction of Yeoman, RequireJS and Grunt, but JS development is still quite fractured. Regardless, it was great experience. One thing that tends to happen after producing something new is that you experience overruns that produce new code that can be reused in other projects. Some of these are on my gists, such as Masonry with AngularJS, Disqus with AngularJS.

Now in term 3, Polycademy has been working with Mustafa Sharara a student from Qatar on creating a new service coined SnapSearch. SnapSearch will help developers and site owners make their dynamic, interactive and HTML5 web applications indexable by search engines. Currently major search engines such as Google, Bing, Yahoo cannot index or get incorrect results from their index when they send their robot to index dynamic sites, SnapSearch will prevent that problem, and remove any economic disadvantages when using single page application frameworks. Hopefully this will usher in a world of web 3.0, where every site can dynamic and interactive. More news on SnapSearch will be posted here in the future.

In preparation for 2014, we are going to be redesigning Polycademy.com. For now, we've updated the course page with new content regarding the course content. Some of the major things include: Asynchronous Programming, Automated Development Environment Deployment using Vagrant and Chef, Build Automation using Grunt, Polyglot programming involving PHP, JS, and Ruby, Behaviour Driven Development with Codeception, Concurrrent Programming using Gearman and Redis Message Queues, and Authentication and Authorisation with PolyAuth.

But of course with so much course content, we have to be flexible depending on what kind of technology stack is suitable for the application that students want to build!

Upcoming blog posts should be more regular as I can talk about various technologies and what we're doing with them.

Posted by CMCDragonkai on 2013-10-02 09:15:25 Tags: teaching coding business coworking events Want to Comment?

Bootcamps also teach you how to learn

Recently ComputerWorld in NZ published 2 articles ("Bootcamp approach won't create IT professionals" & "http://computerworld.co.nz/news.nsf/news/developer-bootcamps-good-or-bad") comparing a 3 year university degree versus a 3 month bootcamp. They asked the question would a bootcamp work in New Zealand?

One of the commentator's opinions is that in university you learn how to learn, but in bootcamps you simply get technical training and that's it. I beg to differ.

I decided to explain in the comment section just how bootcamps teach you how to learn as well:

The best developers I find are the ones that are self-taught. It doesn't matter whether they are university trained or bootcamp trained or both. In the end everybody has to commit to life long learning, especially in the development world when technology changes so fast and your current skills become outdated in 5 years or so.

Therefore my bootcamp endeavours to teach how to learn. The students of Polycademy "learn how to learn" as well. While we may focus on a particular technology stack, that stack is simply used in order to illustrate or demonstrate a concept. Yes the students of a bootcamp hit the ground running. But they hit the ground with the understanding that there is so much more to learn, we don't teach them everything in 3 months. It's impossible. I doubt a university teaches them everything in 3 years either. However the 3 months gives them confidence, an overview, and skills to take themselves forward in their career, startup or whatever life goals they want to pursue.

I think the comparison between a 3 month bootcamp and a 3 year uni degree is somewhat unfair and apples vs oranges. In a 3 year uni degree, you do not spend 24/7 studying. A lot of that time is spent partying, working, procrastinating, daily life stuff and finally a bit of studying. In our 3 months, there's a reason why it's called a bootcamp. It's intensive. In that 3 months time, I've calculated myself that it was worth (in terms of just contact hours) more than 4 uni 6unit courses (Australian terminology). We don't have the advantages of time that university has. We have barely the kind of funding a university has. We only have 3 months, so we focus on what we do best. Teaching and learning and collaborating. I'm sure if our students spent 3 years with us, they would learn more if not comparably with a university. Think about in this way. After those 3 months, they can pursue other paths, perhaps more learning, perhaps on the job learning. But we have definitely condensed their learning time and made them a lot more productive and confident versus spending 3 months at university.

Posted by CMCDragonkai on 2013-05-11 08:22:29 Tags: teaching coding business Want to Comment?

Final Pitches and Canberra Tech Startup Demo Day

We're very excited to say that our first cohort of students have finished their intensive 11 week course just one week ago. In line with our vision of entrepreneurship, we practiced our final pitches and had a successful event on the 19th April where we invited startups from around Canberra to join Polycademy's students and show case their web applications.

Tim Wee practicing his pitch before the big event!

While we were practicing, we kept in mind a few points that I'd like to share. One important thing I learned while being in Sydstart last year, was that you should (almost) always start by sharing a story to define the problem, and then how your solution effectively solves it. It took practice, but the students sometimes forgot that they had to be able to link their solution back to the original problem they mentioned, this brings back the focus and keeps the pitch cohesive.

When they were providing their story, it was important to help the audience visualise not only the problem, so they can identify with it, but also the solution. If it was too detail oriented, people forgot the big picture. This means juggling between big purposeful claims, and down to earth insights. They had to put people into the shoes of the end user, which meant illustrating the context of usage and the differentiating factor, what made people want to use your solution instead of another solution?

Of course depending on the audience, you can then focus on the market opportunity, how you're meant to monetise the service, and what you will be focusing on in the future, such what kind of help you need, financial or otherwise. For our audience, it was general, so at the final event, we decided to show case the actual implementation.

The students focused most of their time on finishing their application and trying to learn as much as possible in their last week. In fact we ended up having a couple of almost all nighters with the stereotypical pizzas and drinks!

On the day, we managed to get a wide variety of audience members and speakers:

  1. ChessDimensions - Tim Wee talked about his progress at Polycademy and his plans for building ChessDimensions. On the day he was able to show case the preliminary user interface, an actual HTML5 canvas based Chessboard with all the pieces moving. All he needs to do now is connect his server side chess rule checking to the front end, and implement web sockets for multiplayer matches.
  2. ReasonWell - Ben Williamson talked about his startup and web/mobile app called ReasonWell, a service to facilitate structured online debate.
  3. SwapSpot - Phuong Lan Trinh talked about her experience at Polycademy, and her plans for building SwapSpot, a service to help car owners swap time limited parking spots. It still needs more work, but she's planning to finish it in a few months.
  4. Unbox Your Gift - Rita Joyan talked about her business Unbox Your Gift, a step by step system designed to get you to identify your Gift/purpose and to use it to exit the rat race.
  5. Coseats.com - Torsten Herbst showcased the largest ridesharing service in Australia.
  6. Buhloon - Matt Maher showcased his web application Buhloon that he built through Polycademy. It is a service to help manage rewards and chores for parents and children. In the long term this will teach the children delayed gratification.
  7. ManageOut - Ross Mullen one of Polycademy's mentors talked about his a startup he was working called ManageOut in order to help event organisers handle their audience members.
  8. TripleThink - Joshua Young talked about his latest human machine interaction solution.
Matt Maher Pitching Ben Williamson Pitching Tim Wee Pitching

The students are still free to come and hangout at the office to finish off their apps and we'll be having regular meetups to go over their progress and discuss opportunities at the meetup group ACT Web Application Development & Entrepreneurship Group. We welcome you to join if you're interested in discussing the latest web technology and enjoy hackathons.

The next cohort is scheduled in 1 week from now, however I'll be spending some time consolidating our goals and progress. The wiki (online textbook) will need some cleaning up due to changes we made in the 11 weeks. Some of our technology stack changed halfway due to the nature of our goals. I'll also be redesigning the Polycademy website and bringing in an alumni page with links to the hosted demos and some video interviews! Stay tuned to check out their web application demos, and for up coming events!

Posted by CMCDragonkai on 2013-04-27 20:38:29 Tags: teaching events coding Want to Comment?

Week 10 of Polycademy (T1, 2013)

The students have almost finished their 11 week journey in building their web application and potential startup. It has been an amazing experience seeing people with no prior programming experience get used to using third party libraries, gluing them together to solve a domain problem, thinking about the RESTful architecture of their web application, and debating the merits and performance of different algorithms or methods in solving the same problem.

The course has evolved since Polycademy first started up, my philosophy in teaching has always went with hands on deployment, and instant practicality of the theories and practices to their own web application. However at first the focus was on basic CRUD (create read update and delete) applications, I've discovered every student's web application requires a customised nurturing, as they face different problems and have different design/development requirements. The perspective of the developer was also important, as that affected what they thought was important to the completion of their web application. This course therefore focused on the commonality between software development theory/practice, but also provided exploration in specialised APIs or libraries (application programming interfaces) that solved a particular domain problem. The architectures of each student's web application hence followed a RESTful style server sink that provided CRUD interfaces and data processing, but on the client side, we used AngularJS and jQuery in order to create single page application user experience. A single page application (SPA) is a client side javascript heavy application, that has two main properties. The first is that it interfaces with a server API to provide data dynamically through AJAX or WebSockets, and secondly all templating, page state transitions or animations take place on the client side. What this means for the end consumer is instant page transition or loading, real time updates, collaboration and synchronisation between the multiple clients through a Pub/Sub pattern. Overall it's a better user experience, it grants more power and flexibility to the developer to craft experiences closer to a desktop application while retaining all the advantages of distribution in a web application. But I am digressing on the technical details. Just check out this demo of AngularJS with animation combined with AJAX loaded data. In user experience, people use motion as way to detect life. When you look at a dog, if the dog isn't moving, it's either dead, or a statue. Extrapolating to web applications, animations make an application come to life (real life things don't just appear and disappear), and that's why we marry the front end with the back end. (BTW I'm currently working on Polycademy V2 which will incorporate a number of new features and user experience aspects of SPAs.)

In order to achieve these results, students had to master two programming languages, build tools, solution stacks, libraries, external APIs, markup languages such as HTML/CSS, preprocessors such as LESS, frameworks such as Codeigniter and AngularJS and of course computer science and software engineering theory. One of the students mentioned that he wanted to get to the stage, where he could look at any new library or programming language or third party API and know where to start to apply it. With regards to this, two problems always exist when a developer finds something new, firstly that there is often assumed knowledge even in the documentation, and secondly where to find the assumed knowledge. To overcome these two problems, the students had to learn a couple lessons not so much in technical programming, but an outlook on life. Firstly to not be afraid to dive into the rabbit hole of the documentation or wikified knowledge base. It is a learning experience in itself and a rewarding one, which leads us to life long learning. Often the answers are hidden under several layers of links, however along the way you'll discover nuggets of knowledge. There is of course a large amount of noise on the internet, so I've had to help them locate the signal, but it takes time to be able to quickly filter out the noise from the signal. Secondly was not to be afraid of errors. That is to understand that the computer uses errors to tell you what is wrong, and it is also how they lead you the right solution (a philosophy subscribed by TDD practitioners!). A silent error is the worse error.

It's been a hard-won journey for the students. Some were grappling high level abstraction, functional programming, object orientation, event driven programming, state management, communication architecture, design patterns and spherical trigonometry all while studying full time at university or having full time jobs. There is a quality to the satisfaction, when you start to see connections form between different software stacks and have it all work in front of you. Yet their journey has not finished. Their applications will require polish after the course, and of course there is always more to learn, more technologies to discover, and more lives to change.

We had a meetup last week with all the mentors and advisors, current students and potential future students. It was good to catchup and discuss the future of Polycademy. One thing that came up was an end of course demo day event for the students.

Mentor Meetup with Polycademy

We decided to organise two events, a practice pitching session for the Polycademy students on Saturday 13th April, which is open for anyone to participate. Anyone who's interested in attending Polycademy should also come and check out the work.

Secondly is the big demo day event, and this is basically for all entrepreneurs who are working on their technology startups to pitch and showcase to an audience of other entrepreneurs and people who are interested in tech startups (I'll also be inviting potential employers). This is of course open to all people, it will be an unconference where the audience can act as lightning speakers or have full presentations on the web application or other projects they have been working on. This big event is scheduled for Friday 19th April last day of the course for cohort 1. And food will be provided.

Oh and lastly, Polycademy is setting up a meetup group dedicated to web, mobile and desktop application development. So join up to the meetups to discuss interesting developments in technology!

Don't forget about the blogs of the students! They'll be up on an alumni page.

Posted by CMCDragonkai on 2013-04-10 04:59:28 Tags: teaching events coding Want to Comment?

Week 1 of Polycademy (T1, 2013)

We've finished our first week of Polycademy. During this time the students completed envisioning their grand plan and architecture of not only their web/mobile application, but also their business model. It took some time to iterate through the various ideas, because there were so many opportunities, but limited time to do all of them.

In class we went through the details of web design theory involving aesthetic foundations, user experience design (including psychology and gamification), user interface design (including typography and AJAX) and the ways web designers wireframe, mockup and prototype their applications.

At home (and during after hours in the office) they had to get stuck into the online materials (it's a wiki, kinda of like an online textbook) written by Polycademy, they had to finish approximately 23,000 words of reading, 125 minutes of video tutorials, and that's not counting exploratory research involving external resources and their own domain technology stack.

Furthermore, they had to install their solution stack (development environment) onto their laptops but also on the cloud. In doing so, we got acquainted with the command line and used it to manipulate the filesystem install software, composer, link up databases.

Throughout these 5 days, half of the class time was taken up as lectures and the other half was taken up as practical work. This was mainly due to the heavy theory involved in web design, and understanding how to apply it to their own user interfaces in a practical sense. They had to balance reward to effort. One example would be the incorporation of accessibility. Would disabled people use their web applications?

We set the milestones for the next 3 weeks. Week 1 - Web Design Theory, Solution Stack & Finished User Interface Iterations and Wireframes (either on paper or using an online tool). Week 2 - Photoshop, creating a concrete Mockup and getting started on HTML/CSS. Week 3 - Finish the HTML/CSS prototype. Each day we're doing the agile scrum, and each week, we have a short review.

Tonight the students will be meeting the mentors and advisors of Polycademy, the ones in Canberra of course.

Oh and here are the student blogs if you wish to keep up with their progress:

Photo from the mentor meetup!

Posted by CMCDragonkai on 2013-02-09 15:42:15 Tags: teaching events coding Want to Comment?