Education in Victoria is succeeding in some areas, but failing in many others – we have new school buildings, but they are overflowing and the school rolls climbing so quickly that teachers and principals have no bandwidth left for improving educational outcomes.  Schools are adapting to technology, but failing to handle the wide range of ability and rates of learning our kids have. The system is not flexible enough to handle the needs of low achievers and high achievers in specific areas.

Every couple of months there is a new study showing how badly Australia is doing compared to other countries in areas such as Math.  We know there are approaches that have worked elsewhere but we seem unwilling or unable to change and adopt them.

Homeschooling is an important right for Victorians – in many cases it is the only way to solve problems with bullying, with low achieving students and with high achieving students.  Homeschooling is a rising demographic which serves as an important barometer of how well our schools are serving students and parents.

If the government understands this, then it will understand the value in Homeschooling, and will preserve that  right as a legal option, and keep the current registration regulations intact.   Homeschooling also serves the Dept of Education – it relieves pressure form a strained system, and gives a flexible way of educating students who are not well served by schools.  It is part of the solution, not part of the problem.

It is so important that the Department of Education _listen_ to Homeschoolers, not try to tell them how to educate, or punish them – rather use it as important feedback.  I was surprised to find many ex-teachers among Homeschool parents, and other parents had studied education theories in some depth.  Homeschoolers as a rule are those who value education highly – they are pro-education, not anti-education.

I can say personally, it is heart rending to make the decision to take your child from school, you would only do it if there was a real problem to solve, or a clear benefit in doing so.

My son has just turned 13yo, he is by some accounts gifted – but the reality is simply that he was read to a lot from an early age, and had some opportunities for books and learning and discussion, and excelled because of normal healthy genes and a supportive environment.   He has attended public schools in inner Melbourne for 3 years, the other years being Homeschooled – so I have some basis on which to compare the good and bad of each approach.

Early this year he was accepted into the SEAL program at a very good new school in inner Melbourne.  The SEAL program is great for many kids because they immediately skip a year and jump ahead closer to their current level.  I’m in favor of the SEAL program, its a good thing – but its not the complete answer.  In my sons case he was repeating material he had done a couple years earlier in Math, so the homework was ‘busy work’.

I tried him out on year 10 questions and he worked through them well, so it seemed he was at that level.  I asked the teacher if he could work ahead in Math, then asked the year coordinator and finally the deputy principal – and was surprised that this request was politely ignored in every case.  At first I was angry, but then I realized that they probably just saw my request as “more work” for them, and they are already straining to keep up with massive expansion in student numbers.   The roll is growing at a massive rate, and I think this is why they just don’t have bandwidth to gather a real focus on learning outcomes, let alone catering flexibly to students who fall outside the norm.

As an aside, there are ways to teach and learn math that are vastly better for all students than the approach we have in most Australian schools now.  You don’t have to invent new methods, they are tried and work well overseas – you can read about Jo Boaler, ProofSchool, MathCircles, KhanAcademy, AoPS.com, Australian Math Competition etc. You can read any review of our current math texts by university mathematicians, or look at any comparison study with other countries to know we are doing it badly.   The system needs to be flexible enough to accommodate and experiment with these new methods.  Its not the curricula per-se, it is the way its communicated – it is not visual enough, it is too topic-centric and should be more problem-centric, it is not interactively explored.

Id like to see schools adopt these approaches – but right now they are too busy handling roll growth alone, and in moving from paper books to ipads.

This means the only solution, for now, is to Homeschool your child if they excel in Math – school is a hostile environment towards learning math deeply.

We need to change the way we think about Homeschooling – it is valuable for mainstream education in Australia, it is a place to see how new methods work and take the needed risks in new approaches to learning.  It is a pressure valve for a school system experiencing the stress of rapid growth, and it is the only way to accommodate that small minority of students who will not excel at schools, no matter how good those schools become in future.

To this end I propose that the Victorian Government / Department of Education Victoria consider supporting Homeschooling in the following practical ways :

  • Preserve the current lite-touch Homeschool registration regulations in Victoria [ realise that making regulations tighter will likely result in mass non-registration ]
  • Fund a fulltime Homeschool liaison specialist educator in DETV  [ to support homeschoolers, not police them ! ]
  • Establish an open registry of public school events that Homeschoolers can join in with
  • Fund several masters/phd opt-in studies on Homeschool education approaches and attainments
  • Fund Math and Science specific programs for both schools and homeschoolers, eg: [ alternative curriculum materials, such as AoPS.com books,  Math Circles and Robot workshops ]
  • Establish a yearly tax deduction for extra costs associated with homeschooling your child [ taken from the money that homeschooling saves the government on schooling ]

Just made a couple of videos explaining multiplication in a visual way, using the ‘Box Method’

Playlist on youtube, here

gridmaths_mult_36x27_calcs

A MathCircle is where a group of young people get together and work on some interesting Math-related topics introduced by a mentor.

The topics are sometimes problems like you find on ArtOfProblemSolving.com or Math Competitions [ vis AMC Sample Questions ].  They can cover quirky topics that aren’t normally seen in the school curriculum, such as Catalan Numbers.

The idea sounds geeky, and is un-apologetically so, yet has the potential to engage students who might be bored with the traditional material.   It preps interested students for careers in science / finance / medicine / engineering and helps the school do well in math and science competitions.  Math Circle meets can also be a lot of fun.

Why

Question : “Why do we need more math.. we already do that in school, right?”

Answer : “yeah..but you don’t learn enough Tennis in PE class to become a club player, and you don’t get enough Instrument practice in Music class to get into music school .. you really need to train, to play in an ensemble and have dedicated practice for that.”

MathCircle takes the same approach of intensive practice which you find in Basketball practice, Dance club, Swim meet or musical instrument group … except focused on math-related skills.

Practice with Duration + Intensity

One important aspect that both Math problem solving and programming share is the sustained concentration on one task – in my opinion we have gone too far in the direction of byte size chunks of learning.  Sometimes you need to chew on things for a while.

We can look at how Basketball and Music are learnt, and apply what works to math.   Training sessions often last for 2 hours, and this is accepted as a social norm – it is well understood it takes time to get into the zone.. repeat the basics, introduce a new skill, practice it, and integrate and perfect it over time thru a range of scenarios.

Its also not about the one or two elite players – the whole team improves and transfer skills around and offer peer-support thru the shared activity.  It can help develop individual qualities that are useful for success in other areas of life, namely ‘character’.

With Code

MathCircle is something most parents haven’t heard of .. but teaching young people how to program is an easy sell – it has had a lot of positive marketing over the last year or so, and its a clear pathway to a good salary.

I also think that writing small programs is a great way to introduce and discover math ideas .. its tactile, interactive, hands on, iterative, experimental.  Your also working with the real concepts – a lot of educational apps and games seem to win in terms of engaging and entertaining, but lose in terms of conveying deeper ideas.  When your making a program you are really tinkering under the hood with the engine, not just zooming around the racetrack.  So a MathCircle with an emphasis on making your own programs to investigate math topics, and using tools like Geogebra, might work really well.

Example Topics

A MathCircle which has a code-things-up emphasis, we could call a MathCodeCircle.

Here are some topics that might be covered in such a MathCodeCircle :

  • find prime number factors, use for solving lcm/gcf problems
  • pong game variant – balls bounce around and collide
  • adding waves together – beats, square waves
  • simulate jumpy stock prices, compare with compound interest
  • planets orbiting / solar system simulator
  • circle inversion using GeoGebra

Most of these would be developed in javascript, and run in the browser – using the canvas api to render 2D graphics – its real programming.

More

Some links if your interested :

 

 

 

Setting the scene

  • the database is 30 Million rows and performance is getting slower
  • users want to search for stuff.. but don’t know what they want to search for
  • the web experience needs to be fast enough to feel “interactive
  • it needs to have an api which the mobile app developers can use.. so json

Questions / Observations

  • Do we even have ‘Big Data’ ?
    • 9GB data as CSV
    • 2.5GB when zipped
  • We could actually fit the data all into 16GB RAM ..
    • why doesn’t the database do that ?
  • What if we fully “invert” the data, so tag searches are fast :
    • data  : id -> tags   [ in named fields ]
    • index : tag -> ids
    • “inverted” when all tags are indexed
    • so, given a tag we can quickly get all the record ids it appears in

Stategy / Plan

  • RAM is fast, use plenty : enough for :
    • cached rows and
    • the full index
  • keep the index fully in RAM : all the time
  • vertical scaling might work

The pain, oh the pain

  • cassandra OK
    • but we don’t have a cluster.. + its 150MB java bloat/dependencies install
  • mysql innodb OK ..
    • but weak sql support + a large csv import died
  • redis OK .. but
    • hit 25GB RAM before dying
    • too much space to store long sets of integers
  • new respect for postgres :
    • great sql support
    • csv import “copy” : nice, simple, fast, reliable
    • up the buffers, and warm the cache with some queries
      • will bring in linux virtual ram, based on most recently used
      • directive to hold index or table in RAM would be nice
  • linux utils, ftw :
    • head tail sed split sort uniq wc
    • csvkit
    • perl -pe ‘s///g’ [ and regexes generally in vim, node.js, perl ]
    • bash shell

The epiphany

  • keep the fully inverted index in RAM, all the time
  • save space with a binary format
  • develop custom “index server”
    • custom binary file format
    • node.js is nice to work with : buffers, streams

Partial Enlightenment

  • SSDs are incredible
    • seek SSD ~0.1ms vs  HDD ~10ms  [ 100x ]
    • read SSD  150MB/s vs ~500MB/s [ 4x ]
    • readable comparison here
  • a middle way :
    • custom index held in RAM
    • data in a sturdy RDB [ postgres ]
    • trust SSD performance
  • json result set compresses well
    • 256 rows ~ 170k json ~ 25k gzipped [ 7x ! ]

Good Performance Numbers

  • running on a linode host with 2GB RAM
    • 1GB for postgres cache
    • 1GB for index tag table :
      • first 700 MB of the 2.3 GB binary index file
      • rest is blocks of ids [ per each tag ]
  • tag search on 30 Million records :
    • 25ms to get the first 1000 ids from the index table and index file
    • 150ms to fetch the records with those ids !
  • web front end :
    • search is fast enough to be “interactive
    • user sees 450ms roundtrip [ including 200ms ping ]
    • gzip the json brings 2.3s fetch down to 0.45s
    • feels nearly instantaneous

Moral of the story

  • SSDs are FAST.. but they are NEW and DB software will need time to catch up
  • NoSQL vs SQL just means more options, and more hybrid approaches
  • You can still scale vertical
    • if your data is big [100M rows | 50GB ]
    • but not BIG big [ 1Bn rows | 1TB ]
  • RAM is expensive on the server
    • because hosting companies can share it over many users
    • 64GB linode = $ 640/m vs 2GB linode = $20/mo
    • potentially save $600 per month
  • we will see more soft realtime web sites .. web with data will feel more interactive

ca_catalog_001

click Melbourne Graffiti item above , drills down to this page :

ca_catalog_002

Handy for nested Product Catalog style apps … or a scrapbook

To build this app in CollabAPI I just defined a Creative item as :

  • blurb text
  • photo
  • more [ a list of Creative items ]

so its like a set of folders … recursion : “its turtles all the way down”

collabapi_infographic_20141108.v3

collabapi_infographic_20141105.v2

Builders Invoice Mobile App

Lets say we want to create an app for a home Builder / Carpenter – they need to quickly make up an invoice on their mobile tablet, while onsite at a job.

The different things to keep track of are :

  • Customer
  • Job / Invoice
  • Invoice Line Item
  • Product

 

Step 1 : Define the ‘DataModel’

We define all the properties for each of these :

  • Customer : Name, Address, Phone
  • JobInvoice : Date, Description, link to a Customer, list of InvoiceLines
  • InvoiceLine : a Product, an Amount, a Cost Total
  • Product : Name, Description, CostPerUnit, Units, Photo

I’ve shown the relations in bold, where one item refers to another item.

 

Step 2 : Run the App

So you just click thru and define the ‘DataModel’ above, and then you can run the app and try it out immediately.

For this Builders Invoice datamodel, the app looks like this :

 

Screenshot from 2014-09-02 19:51:34

 

Screenshot from 2014-09-02 19:51:53

Screenshot from 2014-09-02 19:52:27

 

Quick and Iterative

The immediate feedback is really useful.  You can show a user, get them to try it and give feedback.  You can try out different models and see which fits their business better.

This iterative approach really helps to reduce risk and cost in developing an app.

 

Any Datamodel

We could have picked any domain and modeled it in the same way with CollabAPI.  Its not about Invoices .. its about making an app to fit your particular business : quickly and iteratively.

If your business finds it helpful to have a photo in each InvoiceLine, to give the customer more insight into the Job .. so be it.

When you business changes, you can change the datamodel to fit the new circumstance.

I hope you’ll agree, CollabAPI takes a pretty radical, and yet very practical approach.

gocanvas.com is great : you can create form apps for your business without programming.

Replacing paper with mobile touchscreen and having your data in the cloud is such a big win… BUT there are a couple of crucial missing pieces that are vital to business  :

  • more than one kind of thing !
  • relationships between things

 

The Problem

In real life and in business, there are a few different kinds of things, such as :

  • Customer
  • Address
  • Vehicle
  • Branch
  • Product
  • Invoice
  • Event
  • Group
  • Project
  • Property
  • Contract
  • Supplier
  • Shipment
  • Task

And these things have important relationships between them : A Customer may have several site Addresses.  A Job may have several different kinds of Checklist attached.  An Invoice will have several Products for each Job for a Customer .. and so it goes.

 

Relations

A good app [ mobile or otherwise ] will have a data-model that reflects the REALITY of your business, and it will be flexible enough to handle the relationships between the data items.

diagram_consult

This is the old-school database stuff they figured out in 1940, which has been the staple of business IT for the past 60 years – they call them ‘Relational’ databases for a reason.

These days we want more flexible data, there is the whole NoSQL movement, key-value stores, XML and JSON.  To model reality and business we need natural tree and graph structures, not everything is a table.  Just dont throw away the baby with the bathwater : we need relations.

If you don’t have Relations you cant do the fun stuff :

  • one to many [ Comment Wall can have many Posts ]
  • trees and heirarchies [ Deep Product Catalog, Organization chart ]
  • graphs and social networks [ facebook, linkedin, crm, sales ]
  • people interacting [ messaging ]

This lack of relationships is killer for IT departments – they cant run a retail business or a supply chain or a sales organisation or a manufacturing plant without this flexibility.  Its also killer for startups exploring new business models who need an app to manage their operations or customer needs accurately and in a flexible way.

 

The Solution : Relations

The solution is to have a tool that is great for making forms… but is also great for handling relations between different kinds of things.

We need some deeper engineering that allows you to link things together,  so you can build these kinds of real apps for business :

  • Product Catalog
  • Topic Wall with Comments
  • Invoices where you can select existing products, or add a new one
  • Jobs that can be assigned to different stakeholders
  • Flexible forms with multiple sub-clauses [ Property report with any number of rooms ]
  • Social Network features …

 

Its early days, but this part we got right from the start – CollabAPI does support relations.

This means we can create apps for real business scenarios :

  • a custom CRM
  • sales business social network
  • a manufacturing process workflow
  • a real-estate property management system

 CollabAPI Beta

If you’d like to be on the beta list to try CollabAPI App Builder tool for your business mobile app… get in touch.

The more Things and Relations your app has, the better !

gord

justgord at gmail dotcom

Havent posted for a good while.. been incredibly busy working on a side project which seems to have a life of its own.

Collabapi.com is not quite ready for release, but I’ve been using it to get real work done for a while.  Its basically a much quicker way to develop data centric apps.  This kind of app is useful for tracking all the information you need to run a business well – the stuff that goes on paper / word / excel forms.  It would be great if there was a quick way to make it mobile / web and have the data in electronic format from the get-go so you could search it more easily and so on.

Example App :  Gym Membership Sales Pipeline

We can start by making a form each for our Salespeople, and our potential Customers.  I configure up the data model in the App Designer for these, save those changes… then the app comes up on web and tablet straight away :

ca_quicksales_salesperson

ca_quicksales_customer_profile

I did this by configuring the fields, checkbox items etc, and the app reflects this ‘datamodel’  : 

ca_designer_quicksales_cust_profile

Apparently there’s a sales-cycle thing we want to keep track of –

  • initial contact
  • see if the customers interested
  • what are their goals
  • book a meeting
  • get them to signup
  • success! happiness! cash!

So here’s a go at modeling up a sales call…


ca_quicksales_sales_call

… hmm, promising and a good place to start, I can actually put that in front of the Gym Owner and her Chief Sales Maven, and they can try it out on the web or on their tablet device.

so.. collabapi.com

The point of this article is not to say ‘you can do apps real quick in Collabapi’ … which is kinda true.

The coolness is really just the way we can iterate and experiment : get something out there quickly and get the users to make suggestions.  

Its more of a GSD or MVP / lean-startup approach to making apps.  Its not just for business apps, but I think it will be really handy for business … putting the love back into the ‘small-data’ that’s important to most people.

I’ll talk a bit about the technology under the hood at some stage – and there is a lot of tech under the hood – but for now, that’s a good place to pause and have a cup of tea :]

cheers,  gord.

justgord at gmail dotcom