Shared posts

21 Mar 23:05

Sending Files More Securely with Firefox Send

by Ton Zijlstra

The Mozilla foundation has launched a new service that looks promising, which is why I am bookmarking it here. Firefox Send allows you to send up to 1GB (or 2.5GB if logged in) files to someone else. This is the same as services like Dutch WeTransfer does, except it does so with end-to-end encryption.

Files are encrypted in your browser, before being send to Mozilla’s server until downloaded. The decryption key is contained in the download URL. That download URL is not send to the receiver by Mozilla, but you do that yourself. Files can be locked with an additional password that needs to be conveyed to the receiver by the sender through other means as well. Files are kept 5 minutes, 1 or 24 hours, or 7 days, depending on your choice, and for 1 or up to 100 downloads. This makes it suitable for quick shares during conference calls for instance. Apart from the encrypted file, Mozilla only knows the IP address of the uploader and the downloader(s). Unlike services like WeTransfer where the service also has e-mail addresses for both uploader and intended downloader, and you are dependent on them sending the receivers a confirmation with the download link first.


Firefox Send doesn’t send the download link to the recipient, you do

This is an improvement in terms of data protection, even if not fully water tight (nothing ever really is, especially not if you are a singled out target by a state actor). It does satisfy the need of some of my government clients who are not allowed to use services like WeTransfer currently.

21 Mar 23:05

On Twitter, Pádraig asks a great question, and ...

On Twitter, Pádraig asks a great question, and probably every app developer should read the replies:

What are some of the reasons you would delete an app within a day of installing it?

21 Mar 23:05

Tutorials for Our Entire Ultimate Podcast Bundle

by Paul Kafasis

Hot on the heels of our recent post about videos from Chris Enns, another useful set of helpful videos about Rogue Amoeba’s apps is now available on YouTube. Mike Russell runs Music Radio Creative, an international audio production company, and he’s recently posted videos on:

Loopback

How to Play Music and System Audio Through Skype (Loopback 2 Tutorial)

Audio Hijack

How to Use Audio Hijack to Record Skype (Tutorial)

Farrago

A Podcast Soundboard App for Mac (Introducing Farrago)

Fission

Adding Podcast Metadata and Making Lossless mp3 Edits (Fission Tutorial)

These videos are an excellent way to get started with our apps, and it’s great that Mike is sharing his knowledge and skills. If you’re looking to begin podcasting, folks like Mike and Chris even offer online training to help you get started. And of course, you can save big on the tools mentioned above, by purchasing our Ultimate Podcast Bundle. Happy podcasting!

21 Mar 23:05

Bonjour les enfants !

by Tristan

Ce billet est à l’intention des enfants de Paris, plus particulièrement ceux qui seront présent à l’événement sur la Francophonie à la mairie du XVe arrondissement, à qui je présente le Web. (Pour les autres, je mets une photo de votre serviteur avec son vélo pour que vous ne soyez pas venus pour rien ;-) )

Tristan Tour Eiffel Moustache.jpg

21 Mar 23:00

This is What I Keep Trying to Say…

by Tony Hirst

Small pieces loosely joined…

Last week, I learned that students on a level 3 course were being asked to install Docker so that they could run a particular application (Genie, a climate simulation tool) distributed via a Docker container image.

RESULT :-)

Two things follow from this:

  1. with Docker installed, giving students access to additional software applications also packaged as Docker containers becomes trivial: just tell them to run a different Docker container;
  2. we can start to join small pieces together in more integrated environments.

Here’s an example of joining pieces together:

There are a couple of tricks involved here.

Trick the first is to use the Genie container image distributed to students as the first part of a Docker multistage build. The useful part of the container distributed to students essentially boils down to three parts:

  1. a built application in a specified directory;
  2. a node.js run time to run the application;
  3. a start command to start the application server.

In a multistage build, I can:

  • pull in the original application container;
  • reset the base layer of the container to a base layer from which *I* want to build (for example, a branded notebook server image);
  • copy over the application files from the original application server container into my container;
  • install a node.js runtime required to run the copied application;
  • install nbserverproxy`jupyter-server-proxy`;
  • create a simple server proxy config file to run the application.

Here’s what the Dockerfile for such a multistage build looks like:

#Demo - multistage build

#From a genie application container
#copy the application into an OU customised notebook container
#and use nbserverproxy to run the genie application

FROM $GENIE_APP
# This loads in the original GEnie application image
# that can run on it's own to serve the Genie app

#But we can also copy the application from that image
# into another container...

FROM ousefulcoursecontainers/oubrandednotebook
#Alternatively, use a notebook container seeded with notebooks

#Install node
USER root
RUN apt update \
&& apt-get install -y curl \
&& curl -sL https://deb.nodesource.com/setup_8.x | bash - \
&& apt-get install -y nodejs

USER $NB_USER

WORKDIR $HOME

#Grab the application files from the originally distributed container
COPY --from=0 /home/genie/node_app ./genie/

#Server proxify the application
RUN pip install --no-cache jupyter-server-proxy
RUN mkdir -p $HOME/.jupyter/
ADD jupyter_notebook_config.py $HOME/.jupyter/

Trick the second is in using juputer-server-proxy (e.g. OpenRefine Running in MyBinder, Several Ways…). This allows you to add a start command to the Jupyter notebook New menu and launch a URL proxied application from it.

nbGenie_png

For completeness, the proxy server config is quite straightforward:

# Traitlet configuration file for jupyter-notebook.
#jupyter_notebook_config.py

c.ServerProxy.servers = {
  'Genie': {
    'command': ['node', 'genie/genie_app.js'],
    'port': 3000,
    'timeout': 120,
    'launcher_entry': {
    'title': 'Genie'
    },
  },
}

Rather than just ship the application container, we can ship the application container in a more general “student workbench” context such as the above. Rather than tell the students to run the original application container, we can get them to launch a more general course environment. This is no harder to do — the blockers and hard work required to install in the Docker environment to run the original application container have already been negotiated. The playing field is now wide open to getting arbitrary applications onto student desktops once Docker is installed.

In the above example, I took the liberty of reworking one of the optional course activities as a Juptyer notebook. The original Word file was a simple derivation of the logistic equation (I seem to have oopsed the filename… doh!), but it wasn’t hard to make a simple interactive around that:

If students have the means to access the interactive environment to hand, we might as well use it if it helps support their learning, right?

Poking around the student forums (keeping an eye out for emerging support issues), I noticed one student referring to an issue with another piece of course software. That particular application was a Java application, and required students to install Java on their computer to run the application.

Hmm… so… students have Docker, we can run Java in a Docker, so why should students have to clutter their computer with a Java install? (Note that the release of the docker application has actually appeared for the first time late in the course presentation, so it wasn’t available at the start of the course. I’m not criticising any of the module production team here, just pointing out a little of what’s possible to try to smooth things for students in the next presentation of the course.)

Is there a workaround?

One of the other small pieces I’ve been exploring is how to expose desktops to students. As posted previously, we can do this via a browser using XPRA or we can use RDP.

So suppose we also get students to download and install the cross-platform Microsoft RDP client.

I can download the Java application files from the VLE, and build my own containerised runner for it using a simple Dockerfile like this:

#Grab an XRDP base container
FROM danielguerra/ubuntu-xrdp

#Install Java runtime
RUN apt-get update && apt-get install -y default-jre && apt-get clean

#Make a directory for the app and copy the application files over
RUN mkdir -p /S397/daisyworld
COPY daisy_1/ /S397/daisyworld/

#Optionally create a directory that we can mount onto from the desktop
#so we can share files in from the desktop if we want to.
RUN mkdir -p /S397/share

In case you’re wondering, when folk say: “everyone should learn to code”, I’d say being able to come up with something like that Dockerfile counts as being able to code.

We can now build and run that container, push it to Dockerhub, and again let students run it with a single docker command (possibly hidden in a shortcut, or maybe launched more simply via Kitematic or docker-compose).

docker run --rm -d --name daisyworld --hostname OU-S397 --shm-size 1g -p 3399:3389 --volume ~/S397/daisyshare:/S397/share $DAISYWORLDCONTAINER

I can now create a remote desktop onto that connection:

login with a default username, and launch the application via the remote desktop:

With a bit of fettling, I wonder if I could customise the desktop a little and perhaps autolaunch the application? Or even, rather then expose the whole desktop, autorun the application and automatically run it full window? (I think way back when I explored a small amount of Linux desktop customisation in a VM here?)

Yes, this is at the overhead of running Java in a container, but it also means we don’t require students to install Java and the application itself.

Next on my to do list is a simple notebook container that bundles XPRA so that we can run desktops over http via jupyter-server-proxy. (CoCalc can do this already… Does anyone have a working Jupyter demo that implements something similar?) With that in place, we could ship a single container that would allow students to run notebooks, the Genie web UI application, and the DaisyWorld Java application via a browser viewable desktop from a single container and via a single UI.

That’s the sort of thing I keep trying to talk about…

That’s why we should be doing this…

PS for Docker on the student desktop, students could equally be accessing the browser based services from docker containers running in the cloud, either on institutionally hosted servers or self-service servers. Running your own docker container instances in the cloud is not difficult: Running a Minimal OU Customised Personal Jupyter Notebook Server on Digital Ocean.

21 Mar 22:58

Invoxia Triby :: Ein starker Zwerg

by Volker Weber

9f55c5516b22481871cf8d6cf781f74a

Die häufigste Frage, die ich bekomme: Und wie klingt der denn verglichen mit einem Sonos One? Einfachste Antwort: Komplett anders. Ein Sonos One ist geradezu ein Trumm verglichen mit diesem Gerät. Ich habe mal ein Samsung Galaxy S10 an den Triby gelehnt, damit man man sehen kein, wie klein und schmal er ist. Dabei ist er mit gut 600 Gramm überraschend schwer.

Aktuell nutze ich Triby vor allem als Internet Radio. Fünf Stationen habe ich einprogrammiert: hr-INFO für die Scheffin und für mich eine Auswahl an Stationen, die vorwiegend Instrumental-Musik spielen, darunter Deep Mix Moscow, meine bevorzugte Berieselung beim Schreiben. Und ich schleppe das Triby einfach überall mit hin und betreibe es sehr nahe bei mir, immer in Greifweite. Das heißt zugleich, dass ich es stets sehr leise abspiele, auf ca. 30% der maximalem Lautstärke. Dabei überrascht es mich immer wieder mit einer eher breiten Soundstage im Hochtonbereich. Ich habe auch schon ein paar Podcasts damit gehört, die mich in diesem Soundprofil viel weniger nerven als über Kopfhörer oder ein großes Sonos-Setup.

8923a0380c802eb002f9e7e037b615c3

Am Anfang war ich noch recht unsicher in der Bedienung. Beispiel: Deep Mix Moscow auf 2, Ibiza Sonica auf 3. Drücke auf 2, um Deep Mix zu hören. Drücke dann auf 3, um Ibiza Sonica zu hören? Nein, denn die Buttons werden in jedem Modus anders belegt. 3 heißt jetzt Stop, durch ein kleines Rechteck markiert. Statt Ibiza Sonica abzuspielen, stoppt die Musik. Ist es etwa kaputt? Nein, ich hatte nur noch nicht kapiert, dass ich erst Stop, also 3, drücken muss, um dann Ibiza Sonica zu wählen, also ebenfalls 3. Kling kompliziert, ist es aber gar nicht, wenn man es erst mal kapiert hat. Ein Kind hätte das in drei Minuten raus, ein Senior braucht länger.

58539722fac4d84295df2a7d3611ce00

Das Triby ist mir so angenehm, dass ich es überall hinschleppe. Das Gehäuse ist aus Metall, das in einem weichen Scuba-Case steckt. Es greift sich am Henkel wie ein winziges Kofferradio. Und weil ich damit im Nahbereich meist sehr leise höre, ist die Scheffin nie genervt. Sonst höre ich ab und zu mal die Ermahnung, die Musik doch bitte "ein bisschen leiser" zu machen.

Anders als bei Sonos mache ich nichts über die App. Alles passiert mit Buttons auf dem Triby. Um Podcasts oder ähnliches abzuspielen, benutze ich AirPlay. Unterwegs müsste man wohl Bluetooth nehmen.

More >

21 Mar 22:58

Gestern in der Tagesschau

by Volker Weber
21 Mar 22:58

Neuer Kindle mit Beleuchtung

by Volker Weber

Kindle 02

Amazon stellt heute einen neuen Kindle mit Beleuchtung vor, der für 80 Euro vorbestellt werden kann und ab 10. April geliefert wird. Dieser einfache Kindle hat eine geringere Auflösung von 167 ppi gegenüber dem Kindle Paperwhite mit 300 ppi und ist nicht wasserdicht. Aktuell kostet Paperwhite ab 120 Euro und Oasis ab 230 Euro. Allerdings verkauft Amazon seine Kindles regelmäßig zu reduzierten Preisen. So haben wir den Paperwhite vor sechs Wochen schon für 90 Euro gesehen. Wenn keine Eile besteeht, würde ich das Gerät deshalb nicht vorbestellen, sondern auf so ein Angebot warten.

More >

21 Mar 22:40

Lange erwartet :: Neue AirPods

by Volker Weber

f7c18c1756d55b6da0c0a842fc3ae1ba

AirPods gehören zu den besten Produkten, die Apple je auf den Markt gebracht hat. Am Anfang verspottet ("gehen bestimmt verloren") sind sie mittlerweile so zur Ikone geworden, dass Touristen mit nachgemachten Chinakrachern abgezockt werden. In Mailand kannst Du keinen Meter laufen, ohne dass jemand Dir sowas andrehen Will.

Super ist natürlich nur das Original und nur in Verbindung mit Apple-Geräten. Einmal paaren, danach mit jedem Apple-Gerät benutzen. Besonders elegant: Man kann ein AirPod nutzen, das andere gleichzeitig laden. Beide sind gleichberechtigt. Das ist vor allem nötig, wenn man lange Telefongespräche führt. Genau in dem Bereich legt Apple jetzt nach. Die neuen AirPods sollen 50% länger durchhalten. Apple spricht nur von der Sprechzeit, nicht der Nutzung zum Musikhören. Ein neuer H1-Chip soll es richten. Schneller, besser, weiter, höher usw.

Wer seine AirPods schon lange hat und viel nutzt, der ist sicherlich bald fällig für ein Upgrade. Nach mehr als 1000 Ladezyklen lassen die Akkus rapide nach. Ich habe schon das zweite Paar der Originale.

Heiß erwartet jetzt auch das Case, das sich drahtlos laden lässt. Der Aufpreis scheint heftig, aber eigentlich waren die AirPods stets sehr preiswert. Man hat die Wahl: Neue AirPods mit und ohne "kabellos". Oder nur das neue Case.

Ich würde raten, die Ruhe zu bewahren. Solange die Originale noch gut sind, weiter benutzen. Ich bin ja mal gespannt, ob Apple irgendwann auch sowas wie die Beats Studio 3 mit neuem Chip und modernerem Ladestecker anbietet.

21 Mar 22:40

On Culture

Early this year, during a company retreat, the CEO of a successful startup asked a question: “if we should die today, what would be the cause of our death? It was a rather unexpected question and a puzzling one too.

A lot of people gave varying answers as to what could possibly kill the company. I remember vividly answering that leadership team losing touch with her people could be one surefire way to kill a great company. My answer was largely based on a company’s culture. Culture is at the heart of every successful company. And this culture oftentimes has its roots in the company’s values. And I dare say that culture is one of the hardest thing to build, yet the easiest to destroy.

In the early stage of a company, it’s super easy for the CEO and most people in leadership to keep tabs with almost everything that is happening in the company. This includes memorizing team members names and having a deeper personal connection with them, easy to coordinate all-hands and town hall meetings. But as the company grows bigger, especially for high growth companies, the quest to succeed and dominate begins to take center stage and every other thing takes the back burner.

This is particularly true for companies who are in a highly competitive market. For a few weeks now, I have been reading Onwards, Howard Schultz’ account of How Starbucks fought for its Life Without Losing Its Soul. In Onward, Howard narrates the story of how Starbucks came to be. How a trip abroad brought him in contact with the intimate experience barista had with their customer. How an idea around setting up a café that sold coffee and not merely coffee beans within his former employers business brought around significant growth and profit. But the grow-fast-quick pace of the company — 20% year-on-year — which was largely fueled by the quest to keep Wall Street happy made the company deviate from her core competence — making the best coffee — into uncharted territories; movies, music, snacks, etc.

While this wasn’t necessarily a bad thing, coffee had always and will always be the north star of the company. With this new direction, the company’s culture took a hit and Howard was forced to return as CEO in 2007 after serving as the company’s chairman.

Upon his return, friends and well wishers sent Howard congratulatory messages and in the deluge of messages that came pouring, one stood out. It was from a regional cordinator named Sandi Torrente from South Florida. In Sandi’s message, she wrote: “I am an eight-year partner who started as a barista and this has been a tough year. I have always loved my job, but this year, not so much! I watched tenured partners leave the company and my optimism has been whittling away. I know how hard our partners in the stores work. We would not have a job if it were not for them. But it saddens me when I walk into our stores don’t legendary service or a greeting. It is not the fault of the baristas working behind the counter. It is the responsibility of the leadership team to keep our culture alive, growing and thriving. It will be a long hard road back; I am proud to count myself among those willing to do whatever it takes. Thank you for providing me with an uplifting day!

What I am particularly interested in Sandi’s message is how she acknowledged management’s responsibility to hold the culture together. Culture is subtle, it flows, it informs how staff treat customers’ and it influences customers perception about a brand.

I also believe another thing that can become an existential threat to a company is when the company gets drowned in its own success and stops listening to its own music. Paul McCartney, a member of the one time popular band, The Beatles, attributed the bands decline and eventual failure to a phase in its history. In 1965, the Beatles played in the New York Shea Stadium in the presence of 55,000 screaming fans. The atmosphere was so electrifying they couldn’t even hear their own music. To put it more succinctly, their art was drowned in their popularity. This phenomenon is also what makes companies to stop innovating. They get high on their own supply.

If you take care of the culture, the brand will take care of itself.

21 Mar 22:39

New York to adopt ‘Vancouver tax’ to pay for subway

by Gordon Price

Only they call it the ‘pied-à-terre  tax.  

From the New York Times:

A plan to tax the rich on multimillion-dollar second homes in New York City has rapidly moved closer to reality, as legislative leaders in Albany and Gov. Andrew M. Cuomo have all signed off on the idea as a funding stream for the city’s beleaguered subway system. …

Under the Senate’s bill, a pied-à-terre tax would institute a yearly tax on homes worth $5 million or more, and would apply to homes that do not serve as the buyer’s primary residence.

 

Same arguments too:

Kathryn Wylde, president of the Partnership for New York City, said the tax would not be well received within the business community. She suggested that such a tax … could further push the wealthy to reconsider living here. …

But Moses Gates, a vice president at the Regional Plan Association, disputed the notion that New Yorkers would leave the city. The association believes that most wealthy pied-à-terre owners would pay the tax. If they chose to sell, then the property has the chance of being purchased by a full-time city resident, who would then be subject to income and sales tax.


Actually Governor Cuomo’s first choice was a marijuana tax:

Mr. Cuomo said on Monday that with other potential sources of revenue in question — the possible legalization of marijuana, for example, has been slowed by political and practical concerns — other sources are now needed.

 

And here’s what provoked it all:

The purchase of a $238 million apartment on Central Park South by Kenneth C. Griffin, a hedge fund billionaire with an estimated net worth of $10 billion, may have helped make the legislation more feasible, proponents said.

(It was) a visceral reminder that when wealthy buyers like Mr. Griffin purchase expensive apartments as second homes or investments, New York City and the state get less financial benefit than if the home were owned as a primary residence. If the buyers live out of state, they are not subject to state or city income taxes, and do not pay New York sales tax while outside the state.

Thanks to Dean Alexander.

21 Mar 22:39

Please don’t write a book

by Josh Bernoff

People sometimes come to me with a manuscript of their nonfiction book and ask, “Can you help?” Often, this is the most frustrating conversation I ever have. Please don’t start by writing a book. Start differently. Start first by asking if there is something you know that will change people. It doesn’t have to be … Continued

The post Please don’t write a book appeared first on without bullshit.

21 Mar 22:39

Fragment — Some Rambling Thoughts on Computing Environments in Education

by Tony Hirst

One of the challenges that faces the distance educator, indeed, any educator, in delivering computing related activities is how to provide students with an environment in which they can complete practical computing related teaching and learning activities.

Simply getting the student to a place where the code you want them to work on, and run, is far from trivial.

In a recent post on Creating gentle introductions to coding for journalists… (which for history of ideas folk, and my own narrative development timeline, appeared sometime after most of this post was drafted, but contextualises it nicely), journalism educator Andy (@digidickinson) Dickinson describes how in teaching MA students a little bit of Python he wanted to:

– Avoid where possible, the debates – Should journalists learn to code? Anyone?
– Avoid where possible too much jargon – Is this actually coding or programming or just html
– Avoid the issue of installing development environments – “We’ll do an easy intro but, first lets install R/python/homebrew/jupyter/anaconda…etc.etc.”
– Not put people off – fingers crossed

The post describes how he tried to show a natural equivalence between, and progression from, from Excel formulas to Python code (see my post from yesterday on Diagrams as Graphs, and an Aside on Reading Equations which was in part inspired by that sentiment).

But that’s not what I want to draw on here.

What I do want to draw on is this:

The equation `Tech + Journalists=` is one you don’t need any coding experience to solve. The answer is stress.

Experience has taught me that as soon as you add tech to the mix, you can guarantee that one person will have a screen that looks different or an app that doesn’t work. Things get more complicated when you want people to play and experiment beyond the classroom. Apps that don’t install; or draconian security permissions are only the start. Some of this stuff is quite hardcore for a user who’s never used notepad before let alone fired up the command prompt. All of this can be the hurdle that most people fall at. It can sap your motivation.

Andy declares a preference for Anaconda, but I think that is… I prefer alternatives. Like Docker. This is my latest attempt at explaining why: This is What I Keep Trying to Say….

Docker is also like a friendly way in to the idea of infinite interns.

I first came across this idea — of infinite interns — from @datamineruk (aka Nicola Hughes), developed, I think, in association with Daithí Ó Crualaoich (@twtrdaithi, and by the looks of his Twitter stream, fellow Malta fan:-)

As an idea, I can’t think of anything that has had a deeper or more profound effect on my thinking as regards virtual computing than infinite interns.

Here’s how the concept was originally described, in a blog post that I think is now only viewable via the Internet Archive Wayback Machine — DataMinerUK: What I Do And How:

I specialise in the backend of data journalism: investigations. I work to be the primary source of a story, having found it in data. As such my skills lean less towards design and JavaScript and more towards scraping, databases and statistics.

I work in a virtual world. Literally. The only software I have installed on my machine are VirtualBox and Vagrant. I create a virtual machine inside my machine. I have blueprints for many virtual machines. Each machine has a different function i.e. a different piece of software installed. So to perform a function such as fetching the data or cleaning it or analysing it, I have a brand new environment which can be recreated on any computer.

I call these environments “Infinite Interns“. In order to help journalists see the possibilities of what I do, I tell then to think about what they could accomplish if they had an infinite amount of interns. Because that’s what code is. Here are a couple of slides about my Infinite Interns system:

And here are the slides, used without permission…

Let’s go back to Andy…

There are always going to be snags and, by the time we get to importing libs like pandas [a Python package for working with tabular data], things are going to get complicated – it’s unavoidable. But if the students come away knowing that code isn’t tricky at least in principle, that at a low level the basic structures and ideas are pretty simple and there’s plenty of support out there. Well, that’ll be a win. Fingers crossed.

What you really need is an infinite intern

Which is to say, what you really need is an easy way to tell students how to set up their computing environment.

Which is to say, you really need an easy way for students to tell their computers what sort of environment they’d like to work in.

Want a minimal Jupyter notebook?

docker run --rm -p 8877:8888 -e JUPYTER_TOKEN=letmein jupyter/minimal-notebook

and look to http://localhost:8877 then login with token letmein.

Need a scipy stack in there? Use a different intern…

docker run --rm -p 8877:8888 -e JUPYTER_TOKEN=letmein jupyter/scipy-notebook

And so on…

And if you can’t install Docker on your machine, you can still run (notebook running) containers in the cloud: for example, Running a Minimal OU Customised Personal Jupyter Notebook Server on Digital Ocean.

There’s also tooling to build containers from build specs in Github repos, such as repo2docker. This tool can automatically add in a notebook server for you. That same application is used to build containers that run on the cloud from a Github repo, at a single click: MyBinder (docs).

What this shows, though, is that installing software actually masks a series of issues.

If a student, or a data journalist, is on a low spec computer, or a computer that doesn’t let you install desktop software applications, or a computer that has a different operating system than the one required by the application you want to run, what are you to do?

What is the problem we are actually trying to solve?

I see the computing environment as made up of three components (PLC):

  • a physical component;
  • a logical component;
  • a cultural component.

The Physical Component

The physical component, (physical environment, or physical layer) corresponds to the physical (hardware) resource(s) required to run an activity. This might be a student’s own computer or it might be a remote server. It might include the requirement for a network connection with minimum bandwidth or latency properties. The physical resource maps onto the “compute, storage and network” requirements that must be satisfied in order to complete any given activity.

In some respects, we might be able to abstract completely away from the physical. If I am happy running a “disposable” application where I don’t need to save any files for use later, I can fire up a server, run some code, kill the server.

But if I want to save the files for use an arbitrary amount of time later, I need some persistent physical storage somewhere where I can put those files, and from where I can retrieve them when I need them. Persistence of files is one of the big issues we face when trying to think of how best to support our distance education students. Storage can be problematic.

How individuals connect to resources is another issue. This is the network component. If a student has a low powered computer (poor compute resource) we may need to offer them access to a more powerful remote service. But that requires a network connection. Depending on where files are stored, there are two network considerations we need to make: how does a student access files to edit them, and how do files get to compute so they can be processed.

The Logical Component

The logical component (logical layer; logical environment) might also be referred to as the computational environment. This includes operating system dependencies (for example, the requirement for a particular operating system), application or operating system dependencies (for example, we might require a particular application such as Scratch to be available, or a particular operating system package dependency that is required by a programming language package), programming language dependencies (for example, in a Python environment we might require a particular version of pandas to be installed, or a particular version of Java).

The Cultural Component

The cultural component (cultural layer; cultural environment) incorporates elements of the user environment and workflow. At one extreme, the adoption of a particular programming editor is an example of a cultural component (the choice of editor may actually be irrelevant as far as the teaching except insofar a student needs access to a code editor, not any particular code editor). The workflow element is more complex, covering workflows in both abstract terms (eg using a test driven approach, or using a code differencing and checkin management process) as well as practical terms (for example, using git and Github, or a particular testing framework).

For example, you could imagine a software design project activity in a computing course that instructs students to use a test driven approach and code versioning, but not specify the test framework, version control environment, or even programming language / computational environment.

This cultural element is one that we often ignore when it comes to HE, expecting students to just “pick up” tools and workflows, and one whose deficit makes graduates less than useful when it comes to actually doing some work when they do graduate. It’s also one that is hard to change in an organisation, and one that is hard to change at a personal level.

If you’ve tried getting a new technology into a course created by a course team, and / or into your organisation, you’ll know that one of the biggest blockers is the current culture. Adopting a new technology is really hard because if it really is new, it will lead to, may even require, new workflows — new cultures — for many, indeed any, of the benefits to reveal themselves.

Platform Independent Software Distribution – Physical Layer Agnosticism

Reflecting on the various ways in which we provide computing environments for distance education students on computing courses, one of my motivations is to package computational support for our educational materials in a way that is agnostic to the physical component. Ideally, we should be able to define a single logical environment that can be used across a wide range of physical environments.

Virtualisation has a role to play here: if we package software in virtualised environments, we have great flexibility when it comes to where the virtual machine physically runs. It could be on the student’s own computer, it could be on an OU server, it could be on a “bring your own server” basis.

Virtualisation essentially allows us to abstract away from much of the physical layer considerations because we can always look to provide alternative physical environments on which to run the same logical environment.

However, in looking for alternatives, we need to be mindful that (compute, storage, network) triple provides a set of multi-objective constraints that need to be satisfied and that may lead to certain trade-offs between them being required.

This is particularly true when we think of extrema, such as large data files (large amount of storage and/or large amount of bandwidth/network connectivity) and/or processes that require large amounts of computation (these may be associated with large amounts of data, or they may not; an example of the latter might be running a set of complex equations over multiple iterations, for example).

My preference is also that we should be distributing software environments and services that also allow students to explore, and even bring to bear, their own cultural components (for example, their favourite editor). I’ll have more to say about that in a future post…

Related: Fragment – Programming Privilege. See also This is What I Keep Trying to Say… where a few very short lines of configuration code let me combine / assemble pre-existing packages in new and powerful ways, without really having to understand anything about how the pieces themselves actually work.

21 Mar 22:39

We Built a Collaborative Documentation Site. Deploy Your Own With the Push of a Button.

by The Times Open Team

Library is searchable and renders content from Google Docs

Continue reading on Times Open »

21 Mar 22:39

Encountering our First Amazonians

by peter@rukavina.net (Peter Rukavina)

On the way down to the elevator in our hotel this morning I mentioned to Oliver that we were going to get coffee in a building where Amazon also has offices.

“Be careful what you say,” he said, “and don’t mention the New York situation.”

“You mean if we’re talking to anyone who works for Amazon?”, I asked.

“Yes, if you see any Amazonians,” he replied.

“I’m not sure that’s what they’re called,” I told him.

The woman in front of us in the line for the elevator turned around and said, smiling, “Yes, that’s what we’re called.”

We then had a pleasant chat on the way down about what we should see and do in Seattle.

Once we parted company, and were walking down the street en route to coffee, Oliver exhaled and said “Well, that was awkward.”

Me and Oliver in Seattle, at Victrola Coffee
21 Mar 22:39

Broken Discourse

by peter@rukavina.net (Peter Rukavina)

Public Service Announcement: the CleanTalk service I use to trap comment spam gete is breaking and you will more likely than not encounter protest if you try to comment. I’m on it.

21 Mar 22:38

On the Ferry

by peter@rukavina.net (Peter Rukavina)

Valerie Bang-Jensen and her family are one of the great gifts this blog has given me. As it happened, Valerie’s visit to Seattle overlapped with ours, so we spent a very pleasant afternoon, with her and her daughter Bree, visiting Bainbridge Island.

We had great coffee, a vegan lunch, a visit with my colleagues at Quinn-Brein (complete with projection room tour in their multiplex) and a stunning ferry ride, in sunny 22°C weather, both ways.

Valerie took this photo of our crew.

21 Mar 22:26

Twitter Favorites: [heyrickie] Fired up the grill for the first time this year, and it’s technically still winter! https://t.co/TYOckkO8N6 https://t.co/oIHTBNIcDi

Eric Bucad @heyrickie
Fired up the grill for the first time this year, and it’s technically still winter! ift.tt/2UKbOaZ pic.twitter.com/oIHTBNIcDi
21 Mar 22:24

“Brits don’t quit” – “And then he quit”

by Andrea

Full Frontal with Samantha Bee: A Brief History of Brexit for Americans. (YouTube, 7:05min, 6 March 2019) “Are you an American having a hard time understanding Brexit? Allow Amy Hoggart to translate it for you.”

Bonus episode: The Original Trump Haters (YouTube, 7:11min, 8 February 2017) “We sent Amy Hoggart to Scotland to discuss resisting oppression with people who are born crotchety.”

21 Mar 22:24

“Luring a banker”

by Andrea

The New York Times: A Mar-a-Lago Weekend and an Act of God: Trump’s History With Deutsche Bank.

Link via MetaFilter.

“After Mr. Trump won the election, Deutsche Bank’s board of directors rushed to understand how the bank had become the biggest lender to the president-elect.

A report prepared by the board’s integrity committee concluded that executives in the private-banking division were so determined to win business from big-name clients that they had ignored Mr. Trump’s reputation for demagogy and defaults, according to a person who read the report.

The review also found that Deutsche Bank had produced a number of “exposure reports” that flagged the growing business with Mr. Trump, but that they had not been adequately reviewed by senior executives.

On Deutsche Bank’s trading floor, managers began warning employees not to use the word “Trump” in communications with people outside the bank. Salesmen who violated the edict were scolded by compliance officers who said the bank feared stoking public interest in its ties to the new president.

One reason: If Mr. Trump were to default on his loans, Deutsche Bank would have to choose between seizing his assets or cutting him a lucrative break — a situation the bank would rather resolve in private.

Two years after Mr. Trump was sworn in, Democrats took control of the House of Representatives. The chamber’s financial services and intelligence committees opened investigations into Deutsche Bank’s relationship with Mr. Trump. Those inquiries, as well as the New York attorney general’s investigation, come at a perilous time for Deutsche Bank, which is negotiating to merge with another large German lender.

Next month, Deutsche Bank is likely to start handing over extensive internal documents and communications about Mr. Trump to the congressional committees, according to people briefed on the process.”

21 Mar 22:16

Non-idiomatic F#

Mark Seemann wrote a very fine blog post this week entitled The programmer as decision maker, in which he says (among other things) that trying to do functional programming in C# doesn't work out very well. It's a thought-provoking piece, and worth a read.

I want to respond to the point mentioned above, not to argue with it, but to observe that it is asymmetric: Writing non-functional F# works out WAY better than writing functional C#.

Lately I've been writing F# code that a purist would hate. I've been writing F# with roughly the same approach I would use when writing C#.

It turns out this approach works, and has some real benefits. I want to discuss two of them:

if-then-else

I grumble every time I find myself writing C# code like the following:

string s;
if (condition1)
{
    s = expr1;
}
else if (condition2)
{
    s = expr2;
}
else
{
    s = other;
}
// do something with s

In C#, if statements are not expressions, so I have to declare the variable separately and then put an assignment in each branch. I also dislike how this code structure takes away the privilege of type inference, forcing me to declare s as string instead of var.

(Yes, I know about the conditional expression operator, but that's not quite the same, especially for cases involving "else if". Basically, there are multiple ways to do this in C#, but all of them are disappointing in some way.)

This works out much nicer in F#:

let s =
    if condition1 then
        expr1
    elif condition2 then
        expr2
    else
        other
// do something with s

One assignment, with type inference. Elegant. And I like the fact that s is not mutable. Which reminds me...

mutable

One of my favorite things about F# is that it forces me to take extra steps to make a mutable variable.

I suspect that more than half the local variables I use in C# would actually not need to be mutable. Like this one:

var x = obj.Method();
// code that uses x but doesn't modify it

But the language gives me no way to express that, so the compiler cannot enforce it. Suppose I come back later, having forgotten what was going on, and change x. Suppose somebody else comes in later and changes x. I want the compiler to complain.

The F# equivalent is nearly identical:

let x = obj.Method()
// code that uses x but doesn't modify it

But x is immutable, and if anybody ever tries to violate that rule, the compiler will fuss.

Note that when I am choosing to be in this mode, writing "non-idiomatic F#", I give myself permission to use mutable without guilt.

let mutable total = 0
for s in a do
    // do something with s
 
    // but also keep a running total of the length
    total <- total + s.Length
let total = total // shadow
total <- 5 // error

Yeah, yeah, I like functional folds, but the exercise here is to try writing C#-ish code with F#. So a for loop with mutable variable is a likely way to do this. F# supports this just fine, with the mutable keyword, and with the different syntax for the assignment.

Note that I threw in a little trick. After the loop ends, I added an immutable let binding for total, setting it to the value of "mutable total", thus shadowing the mutable and making it unavailable. So the attempted assignment on the next line will error. In effect, I am celebrating F#'s ability to let me make this variable mutable, but also its ability to specify that the time for mutability has come to an end.

Summary

I'm not claming any of this is the best way to write F#. From a functional programming perspective, these are considered bad practices.

But non-incremental change is hard and scary. You want a really ineffective way to promote F# in the .NET world? Let's tell everybody that they have to retrain all their developers with a completely new paradigm and rewrite all their code (probably twice) with a totally new approach.

I'm a fan of functional programming. I am also a fan of incremental change, and things that have good ROI.

So I find it really cool how easy it is to add a little F# into a C# code base, or to make a gradual, incremental transition from C# to F#. It works, with full interop between the two languages. And adopting F# in this manner starts paying off right away.

21 Mar 20:36

Google’s Stadia Streaming Platform is an All-Out Invasion of Gaming

Michael Crider, ReviewGeek, Mar 20, 2019
Icon

There will no doubt be a flurry of articles from the usual sources talking about how Google's Stadia service may be used in education. To be sure, there's something there - the idea of Stadia is that you can play a game in basically the same way you watch a YouTube video. The game is streaming, live, can be multiplayer, and interactive. So there will no doubt be educational applications - quests, simulations, collaborative co-creation, more. Don't worry about being first out of the gate - it's going to take years for the ecosystem to settle in, for the required bandwidth to be more widely available (25 mbps), and for game (and educational application) development to ramp up.

Web: [Direct Link] [This Post]
21 Mar 20:36

How MOOCs Make Money

Dian Schaffhauser, Campus Technology, Mar 20, 2019
Icon

My MOOCs, of course, don't make money at all, but that's not true of other MOOCs. In this article Class Central founder Dhawal Shah is interviewed on the subject of MOOC business models. Shah reports that " Coursera generated about $140 million in 2018; Udacity earned $90 million for the year; edX took in about $57 million for fiscal year 2017; and UK-based FutureLearn made about £8.2 million." According to Shah, "the market is sort of settled now and the focus is more on the big-ticket items, like online degrees and corporate training." As for the free courses that launched MOOCs into the mainstream a few years ago, Shah is more cautious. "As a student who likes free courses, sometimes I get nervous."

Web: [Direct Link] [This Post]
21 Mar 20:35

This is What I Keep Trying to Say…

Tony Hirst, OUseful Info, Mar 20, 2019
Icon

Tony Hirst outliners how to set up a remote desktop environmnent in a Docker container that can be distributed to students, relieving everybody of the need to do things like install Java for the desktop. "We could ship a single container that would allow students to run notebooks, the Genie web UI application, and the DaisyWorld Java application via a browser viewable desktop from a single container and via a single UI," he writes.

Web: [Direct Link] [This Post]
21 Mar 20:20

Google Will Now Ask Android Users in Europe to Select Their Default Browser and Search Apps

by Rajesh Pandey
Last year, Google was fined a record $5 billion by the European Commission for its illegal Android practices. This included shipping Chrome and Google as the default browser and search engine on all Android devices and not offering users the option to select any other browser as the default one during setup. That original rule led Google to change the way it licenses its apps to OEMs. Now, Google is further making some changes to the way it handles the stock browser/search engine on Android. Continue reading →
21 Mar 20:20

Apple announces new AirPods with H1 chip, wireless charging case

by Igor Bonifacic

Apple’s new AirPods are finally here.

On Wednesday, Apple launched its second-generation AirPods. The new Bluetooth in-ear headphones feature the company’s new H1 chip, hands-free ‘Hey Siri’ support and come with an optional wireless charging case.

According to the company, its new H1 chip allows the refreshed AirPods to deliver 50 percent more talk time than their predecessor. Additionally, Apple claims the second-generation AirPods are twice as fast at switching between devices.

Priced at $219 CAD to start (the same price as the original AirPods), consumers can purchase the second-generation AirPods and wireless charging case for $269 CAD. Alternatively, the wireless charging case by itself costs $99 CAD.

Canadian consumers can order the new AirPods via apple.com/ca starting today. Apple will begin selling the accessory at its physical retail locations beginning next week.

In addition, MobileSyrup has learned that the first-gen AirPods have been discontinued.

The post Apple announces new AirPods with H1 chip, wireless charging case appeared first on MobileSyrup.

21 Mar 20:20

James Bond might drive an electric Aston Martin in next film

by Andrew Mohan

When you think of James Bond car chases, you usually imagine an Aston Martin or another high-performance vehicle with a big engine that guzzles down gas quicker than 007 drinks martinis.

However, it seems like the MI-6 agent could become more eco-friendly and will drive the Aston Martin Rapide E, an electric luxury sports car.

According to The Sun U.K., James Bond film director Cary Joji Fukanaga and lead actor Daniel Craig felt like “the time was right” to go electric.

It’s not like Bond will be driving a slouch, as the Rapide E has 602hp and a top speed of 250km/h.

Even if the famous spy is chased by faster gasoline-powered vehicles, 007’s Rapid E should still have enough gadgets to dispatch any unwanted guests.

Source: Engadget

The post James Bond might drive an electric Aston Martin in next film appeared first on MobileSyrup.

21 Mar 20:19

Facebook’s Oculus reveals Rift S virtual reality headset

by Dean Daley

Facebook’s Oculus division has revealed a new virtual reality (VR) headset called the Oculus Rift S at the Gaming Developers Conference (GDC) in San Francisco.

The headset costs $549.99 in Canada and is set to launch in spring 2019, according to Oculus.

Oculus says that it partnered with Lenovo to design the Rift S. Using Lenovo’s gaming experience in both the VR and the augmented reality space, the company was able to help Oculus design a new headset with better weight distribution, improved light blocking and a single cable experience.

On top of the headset’s improved comfort level, the Facebook-owned company has improved the headset’s display by implementing OLED technology as well as an improved resolution 2,560 x 1,440-pixels (or 1,280 x 1,440 per eye). Oculus has also lowered the screen’s refresh from 90Hz to 80Hz. Further, the Rift S’ field-of-view is improved over other Oculus headsets.

The Rift S also supports five-camera tracking, allowing users to look at their surroundings without taking off the headset through a new Passthrough+ feature. The Rift S does not include on-ear headphones and uses near-ear speakers like the Oculus Go, though users can plug in their own headphone through a 3.5mm headphone jack.

As with Oculus Quest, the Rift S will ship with Touch controllers. Additionally, the Rift S supports the same integrated audio system as the Quest.

Oculus suggests that your PC features at least a NVIDIA GTX 1060 or AMD Radeon RX 480 graphics cards, 8GB of RAM, an Intel i5-4590 or AMD Ryzen 5 1500X processors and Windows 10. The company also also offers a downloadable tool to see if your PC can run the headset.

Source: Oculus

The post Facebook’s Oculus reveals Rift S virtual reality headset appeared first on MobileSyrup.

21 Mar 20:19

Google to let European Android users pick their browser and search engine

by Jonathan Lamont
Google

European Android users will start getting a choice of browsers and search engines, according to Google.

The Mountain View-based search giant made the change following regulatory action last year. The European Commission slapped Google with a record-setting $6.68 billion USD (roughly $8.8 billion CAD) fine for violating antitrust laws with the way it bundled apps like Chrome and Google Search into Android.

At first, Google suggested it would charge manufacturers licensing fees for the Play Store and other apps. On top of that, it would offer Chrome and Search in the package for free.

However, in a recent blog post, Google’s senior vice president of global affairs, Kent Walker, said the company would offer users a direct choice instead.

Android users have always had the freedom to choose services like web browsers and search apps. Walker affirms this in the blog post, noting that the “typical Android phone users will usually install around 50 additional apps.”

It’s not clear when this will happen, not which products Google will highlight when offering users a choice. Walker suggested users would see the change sometime in the next few months.

Unfortunately, users might not have as much choice as they expect. Most browser available on Android rely on the Blink rendering engine — the same that powers Chrome. Mozilla’s Firefox is a notable exception.

With so many browsers across mobile and desktop using the same engine, users are starting to express concern of the Blink monopoly. Other rendering engines might not see the same speeds or render pages correctly because developers are designing for Blink and Chrome above everything else.

Considering Microsoft’s recent decision to replace its Edge browser with a Blink-based counterpart, this problem is only set to get worse.

The EU’s decision is a step in the right direction and should encourage more competition in browsers. Hopefully other regulators follow.

Source: Google

The post Google to let European Android users pick their browser and search engine appeared first on MobileSyrup.

21 Mar 20:19

Is Apple’s AirPower finally coming out later this week?

by Igor Bonifacic
AirPower

It’s been almost two year since Apple first announced its WhereAirPower inductive charging mat.

Since that fateful September day in 2017, minus an errant mention in the iPhone XS’s packaging material, Apple hasn’t spoken an official word about the long-in-development accessory. All of which has led fans of the company to wonder if Apple ever plans to release the device.

Back when Apple vice-president of worldwide marketing Phil Schiller first teased the AirPower, the promise of the inductive charging mat was that it could simultaneously charge three devices.

What’s more, and this is the aspect of the AirPower most reports have said have caused it to go missing in action, Apple promised users could place their devices anywhere on the accessory and it would still charge them. This is something no current in market charging mat can do.

It appears now that Apple may finally release the AirPower.

Let’s take a look at the (mostly circumstantial) evidence.

Exhibit A

On Monday, Apple released the sixth iOS 12.2 developer beta. Sifting through the code of beta, 9to5Mac discovered a snippet that allows the company’s mobile operating system to identify when two devices are on the same charging mat.

Obviously, that type of functionality feeds directly into the AirPower’s own functionality. With the official release of iOS 12.2 right around the corner, the timing seems perfect for Apple to release the AirPower.

Exhibit B

When Apple announced new iPads on Monday, the tech Twitter cabal began speculating that Apple could announce an update on the AirPower later in the week.

At first, the theory that Apple planned to trickle out one product announcement a day for the rest of the week seemed fanciful, but that was Tuesday. It’s now Wednesday and Apple appears to be doing just that.

On Monday, the company announced the new 10.5-inch iPad Air and fifth-generation iPad mini. It then followed up that announcement with its iMac refresh on Tuesday. This morning, the company announced the second-generation AirPods. They feature an optional wireless charging case, which takes us to our next piece of evidence.

Exhibit C

Besides their optional wireless charging case, the new AirPods are the definition of an iterative update.

Sure, there’s hands-free Hey Siri support and the inclusion Apple’s new H1 chip, which the company claims improves the battery life of the new AirPods and makes pairing them with other iOS devices faster, but it’s hard to believe the new AirPods are the culmination of more than two years of development.

Instead, it seems far more likely Apple has been sitting on the second-generation AirPods, waiting to release them alongside the AirPower. After all, it was when Phil Schiller first announced the AirPower that he also said Apple planned to release an optional wireless AirPods charging case.

Exhibit D

Last but not least, this week Apple pulled the AirPower webpage that had been collecting dust on its website since it first announced the accessory in 2017.

To my mind, the fact that Apple removed the webpage could mean two possible: either AirPower is well and truly dead, or, more likely, the company plans to launch a new webpage, with updated information and pictures, when it officially launches the accessory later this week.

What do you think? We will see Apple release the AirPower this week? Let us know what you think in the comments section.

The post Is Apple’s AirPower finally coming out later this week? appeared first on MobileSyrup.