Teaching a Semester of D3.js
blogger.ghostweather.com
blogger.ghostweather.com
This is not a direct criticism of the Author, but what is it with the penchant these days to use absolutely minimalistic, flat interfaces with zero help on how to use the interface?
I blame Google for starting this and all the other sheep who blindly follow them without actually asking what an interface is really meant to do. They have this insane desire to trend towards an interface which ultimately will consist of a slightly beige-grey background with not a single other thing on it. Google et al, seem to be on a never ending quest for an interface that is both so simple, it is practically brain dead and yet requires advanced degrees in "find the hidden button that does something" and "try separate the interface from the data being presented".
Microsoft have picked up the torch and are running with it with unbridled enthusiasm. Their new Office interface is a master class on how to make it as difficult as possible to determine where my data ends and the interface starts. All done in a tasteful shade of death-bed grey.
They did it several years before Google with the Lumia UI.
It has dragged graphics design costs to lows that have never been seen before.
It used to take weeks to design a proper icon set for an application, especially on OS X or iOS, where users were particularly wary of how applications looked. This is a drag, especially on mobile, where most people don't want to pay a real artist too much to build them a good-looking UI. The trend towards flat and simple is a blessing. You can pay a few dimes to someone who can Photoshop, and he won't screw it up too hard.
I'm not deriding minimalism. Rendering, in a work of art, only that which is essential, is so hard and so beautiful that only few artists manage to do it.
This crap is just cargo cult minimalism.
I'm not sure who started it. I used to work in a place where people thought flat, white and grey and no indication on how to use it was the epitome of design, and they worshiped the ghost of Steve Jobs.
If you are talking about the latter, I think it's from reveal.js
If you hit "?", it will give you shortcuts.
How much of an interface do you want on your presentation app?
It's a slideshow. It is intended to be operated by the presenter (who knows the shortcuts) and for those watching it to be able to focus on the content, not the UI.
There are legitimate complaints to be made about minimalistic interfaces, but IMO this is not one. It's a situation where you want to deliberately hide the interface.
The way that Periscope.io works is probably indicative of the direction of a JS based analytics/prototyping framework.
I suppose the first step needs to be a Jupyter notebook in ES6.
You import your records, define dimensions, and can then slice and dice your datasets to your liking.
Very impressive is dc.js, which adds some magic on top of crossfilter and d3 to build interactive charts.
Incidentally, it seems my entire tech stack is running on Square these days. Retrofit, Picasso, okhttp, dagger, some rxjava libs.... and now crossfilter.
Dunno, but right now, today, you can use Plotly (which itself uses D3.js) with R, Shiny and RStudio. It's pretty awesome :)
https://github.com/software-engineering-amsterdam/MLitB
https://github.com/software-engineering-amsterdam/MLitB/issu...
http://apps.axibase.com/chartlab/14cf1974/3/ - Basic example
http://apps.axibase.com/chartlab/2111a2b7/2/ - Inheritance and Iterator
http://apps.axibase.com/chartlab/e8635882/10/ - Time series Transformations
http://apps.axibase.com/chartlab/2ef08f32/1/ - Composite
html/js/d3.js is prominent but not exposed. Users still have to learn some basic syntax but we really wanted to give them an alternative to UI controls (select drop-down, click) and GUI editors which I find restrictive and limiting.
So the best way to do this was to teach journalism students how to program, how to program for the web, how to program with javascript, how to program with third party libraries, and finally how to program with the third-party library d3.js?
I feel like this is just an extension of the thought process "everyone should learn to program because learning to program makes your life better".
I sincerely appreciate the write-up and will definitely be coming back to this blog next week to see the students work.
However I believe infographics and data visualization specifically are important when trying to convey densely-packed information so it has to be taught journalists in some form. They should know that given some data they can pick certain type of visualization that would work well within the article.
I think some general course on data visualization without jumping into programming would work fine - explain what data visualization is, how it is done, what kinds of data could be used with it, what kinds of representations of data are available and so on. Plus share some resources where people can view various visualization samples.
I think this is something that goes beyond the combination of journalism and visualization. It's literally like learning a common language.
I like this one a lot. When I am teaching data science, I often use data which some errors I do know.
I think that we need more of learning on real examples, not polished ones.
With Beaker you can program your client and server all on one page in one document. It makes working with D3 really easy. Here are some examples:
D3 JS and Python: https://pub.beakernotebook.com/#/publications/560c9f9b-14e6-...
node client and server: https://pub.beakernotebook.com/#/publications/560b4be1-2d91-...
I usually take the opportunity to explain what's going on when students think their iOS app has crashed after inadvertently setting a breakpoint (it's very easy in XCode to put one in) to show them that they can now see the state of the running app.