Critical Thinking Assessment

Often, in the context of large scale testing programs, “critical thinking assessment” is represented more by “information synthesis“, “reading comprehension“, “problem solving” or other exercises that require an examinee to make a claim and cite evidence and reasoning to support it.


In some contexts this is also called “Argumentative Writing” — much as the “analyze and argument” question on the GMAT was once a common “analytical writing” task, but only one program that comes to mind — the CAE’s Collegiate Learning Exam Plus (or Minus or Pro of whatever the marketing types want to call it this year) — does or did (at one point) break out “problem solving” and “analytic reasoning & evaluation” as dimensions on a rubric for a performance task, although they may have moved toward generalize “analysis and problem solving” dimension in current exams.


In any event, the big news today is that I have discovered EXACTLY the self-paced, student-centric, topic-organized critical thinking product and platform I have long envisioned that would replace the beloved “SRA Reading Cards” of my youth.  A group in Chicago has created a modern, digital version of this tool — organized as a set of subject mater-organized topics, grade / difficulty sequenced, that (hopefully) are as interesting and “teachful” as the SRA reading card stories and articles were. Only here, students WRITE about what they read, not just answer MCQs.  And they are taught to cite evidence, make claims, explain reasoning — even identify counter-arguments!  Great stuff.

Read more about them at



TensorFlow is released: Google Machine Learning for Everyone

2FNLTensorFlow_logoGoogle posted information about TensorFlow —  the release of as open source of a key bunch of machine learning tools on their Google research blog here.

Given the great piles of multi-dimensional tables (or arrays) of data machine learning typically involves, and (at least for us primitive users) the tremendous shovel work involved in massaging and pushing around these giant piles of data file (and sorting out the arcane naming schemes devised to try to help with this problem is almost a worse problem itself),

the appellation of “Tensor Flow” as a tool to help with this is at first blush very promising. That is, rather than just a library of mathmatical algorithm implementations, I am expecting something that can help make the machine learning work itself more manageable.

I suspect that just figuring out what this is will cost me a few days… but I have much to learn.



Modern Application Architecture (again!)

After this post, I have continued to get more input and find more articles.

Here are two:

Berlin Startup Languages - circa - 150901

Berlin Startups – Implementation Languages


Berlin Startup Web Frameworks

Berlin Startups Databases - 150901

Berlin Startups Databases – 150901







And lots of other interesting graphs…

In the article noted above, I linked here for graphs like this one (where venture funded startups are rated on an “okay”, “good” and “great” scale (grade inflation?) using blue / red / yellow) as reflected in standings.

Here are just three (of many many) samples:

Angle List Programming Language by Startup Rating

Angle List Programming Language by Startup Rating

Angle List Front End by Startup Rating

Angle List Front End by Startup Rating

Angle List Database / Storage by Startup Rating

Angle List Database / Storage by Startup Rating


And lastly, I saw this piece has is called:

Which web technology should I use?

A handy guide for non-technical founders

Interesting at least as far as learning how some folks see the world, including very rough shorthand impressions of the “pros and cons” of using different tool sets.  The primary starting point advocated is ‘do something fast and cheap to prove your concept and that you are willing to throw away” — not something I’ve ever been a big fan of (since using a technology I know best is usually fastest, and building “throw away” code is a bad habit I never developed) but might be right for some people / situations (e.g. when using mid-level or junior people who only write throw-away code…).



Fault Tolerance in Distributed Systems

Perhaps we are nearly at the point where saying “distributed systems” is as redundant as “software program” always has been, but for the moment I want to consider how a specific issue is heightened by the nature of modern, asynchronous systems, and that issue is “fault tolerance” generally as well as “cascading failures” specifically.

More and more such issues arise — and I was please to read a particularly lucid explanation of a popular and important design pattern used in many solutions: the Circuit Breaker pattern.  On Martin Fowler’s blog — haha. I was kind of surprised by that — but only because I don’t google interesting problems in architecture and design nearly as often as I’d like.

I can’t add any value to what he’s written here, so instead i will just quote briefly:

The basic idea behind the circuit breaker is very simple. You wrap a protected function call in a circuit breaker object, which monitors for failures. Once the failures reach a certain threshold, the circuit breaker trips, and all further calls to the circuit breaker return with an error, without the protected call being made at all. Usually you’ll also want some kind of monitor alert if the circuit breaker trips.

There are added bits about adding a capability to attempt automatic reset (at some specified interval) and discussions of other real-world refinements (e.g. different thresholds for different sorts of errors), but a hallmark of this sort of writing is that, at least for most of its intended audience, a simple example provided in detail, and pointers to additional kinds of flourishes and add-ons, is really all that is needed.

Courtesy of Martin Flower

Check it out!  And if you googled this topic, doubtless you have read or seen something about NetFlix’ Hystrix, which says on that getHub landing page:

Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

It is a java implementation; there are other articles linked here and links to alternative Circuit-breaker patterns in RubyJavaGrails PluginC#AspectJ, and Scala listed at the bottom of the Fowler blog post.

Web App Development Frameworks: too many to shake a stick at…

I almost decided to simply add a series of “update” links to my prior post on my quest to understand the current state of “modern web app development”, and in particular, tools, frameworks and environments of choice.  Now as ever, many technologists live in their silos, and while the best and most enlighten attempt to glance across at what others are doing, keep up with new ideas and tool kits, the reality is that most top-tier, hard working, delivering-in-a-crunch developer / architects are almost always too busy to do as much of this sort of thing as they’d like.  And while I am not one of those, I am also a busy person with many balls in the air, ideas kicking around, prototypes-in-process, apps-in-process, with a real job and various research projects…

My prior post focused on the relative popularity of various “platforms” and javascript frameworks, without any real regard for which things work together, which compete, or many other factors.  In short, it is a “dog’s breakfast” of random observations with a good link or two to more coherent material.   Arguably, not very useful.

I will rectify this with future posts about specific combinations of web app development tools and platforms, where there are available tutorials and low barriers to adoption.  And after about five of these, i hope to have come up with a more coherent scheme for comparison.

So How Are Modern Online Services / Communities / Properties / Products Getting Built Now?

If you have deluded yourself you have a great idea and a solid plan for its realization, and it involves “the web” — and how could it not? — How to start, and what to use?

Sometime it is obvious.  You need AWS. You need a back end. You need a front end… and of course things start getting tricky.   Devices or Browsers?  Do-most-everything tools (Adobe this, Oracle that, Dot-net-whatever, etc.) or best of bread (mix iOS with RoR, or run with Java/Grails and Some javascript framework on the back end? Good o’l LAMPP??? Cold fusion anyone? Is Haht still around?

At some point you might actually be thinking “which JS Framework is the one to bet on?

Other than my sympathy, i can also offer this neat URL to tell you so much you didn’t already know about who is using what:    click here to see the google trends view of Js frameworks… now.

Is this fair? is it right? is it that simple? I stared at this for quite a while, before realizing what was missing (I think — this is not an area I know much about!) Node.JS anyone? Then change the timeframe, change the regions, etc etc. Does it really mean anything? I suspect it does… but then, not really so much that is useful in the particular even if interesting in the general case.

Now back to those other big questions — RoR? Python for everything? Go?  It seems Django / Phython or RoR coupled with JS framework might be good if, say, your UI needed to show markup language effects in a WYSIWYG editor for some reason…

So much to investigate… I think I will just ask the experts!


Update:  Some interesting data on what high growth startups are using:  here  (based on Anglelist data, so…).

iPads for Assessment – update

Mobile software, EdTech and the world of assessment are all fairly dynamic, 150301-Apple_Asseesment_with_iPad_coverand two years is almost two generations of change in some of these realms.

Smarter Balanced / SmarterApp just released an update on their technology considerations for iPad based testing, and it includes some good information as well as links to Apple resources that are helpful too.

For high-stakes testing, using iPads in “single app mode” has many obvious advantages, and tools are available to make using the devices in this mode relatively simple and easy.  Deployment tools for getting the devices into, and out of, single app mode, including by allowing programs to enter / exit SAM directly, have been implemented (as of iOS 8.1.3?) in a way that requires minimal overhead and administrative burden.

SmarterApp’s post, entitled Guidelines for the Configuration of iPads During Smarter Balanced Testing, is available here.  In particular, having test devices managed under “supervision” by Apple’s own “Apple Configurator”, or third party “MDM” (mobile device management) software, enable flexible control over access to features like the spell-check, dictionary and auto-correction that can be granular based on the specific section of an assessment. As of iOS 8.1.3, control of these features can be managed on managed iPad devices via customizable profiles — see more about that here.

SmarterApp also included a link to more detailed information on creating “custom profiles” to control specific features (please note: in “Single App Mode” features like the home button and task switching are already locked out from the user experience) for those already familiar with MDM, and a link to this Apple document entitled “Assessment with iPad”  that provides up-to-the-minute (March 2015) information that probably provides a better starting point that past information on this blog that has long since been overtaken by events.