Saturday, March 21, 2015

Musical Keyboard in JavaScript

Pure JavaScript, no external files, and graphics without even SVG, just divs.
Could be a useful learning tool. Works in Chrome and Firefox, not on IE and Android.

Musical Keyboard - JS Dynamic Audio Synth
This is a an emulated keyboard (a synthesizer!) that spans three musical octaves (C3-B5).
keithwhor/audiosynth @ GitHub
"Dynamic waveform audio synthesizer, written in Javascript.
Generate musical notes dynamically and play them in your browser using the HTML5 Audio Element. No static files required!"

This could be combined with simple text notation for music notes to also record and play music from web.
GUIDO music notation - Wikipedia, the free encyclopedia
Guido Music Notation - CCARH Wiki

O'Reilly Software Architecture Conference 2015

Signals from the O'Reilly Software Architecture Conference 2015 - O'Reilly Radar
"Experts from across the software architecture world came together in Boston for theO’Reilly Software Architecture Conference 2015."

playlist: O'Reilly Software Architecture Conference 2015 - YouTube 

"Agile Architecture" - Molly Dishman & Martin Fowler Keynote - YouTube

Neal Ford of ThoughtWorks on the growing role of software architects - YouTube

"Monitoring Microservices: A Challenge" - Adrian Cockcroft Keynote - YouTube

videos from the conference:
The shape of software architecture - O'Reilly Radar

ASP.NET 5; dotnetConf 2015

ASP.NET 5 (used to be vNext codename) is getting closer to prime time,
with significant changes in the way it works and web projects are organized.
XML is out, JSON is in. JavaScript is everywhere, and .NET tools are recreated.

K. Scott Allen has prepared another excellent introduction:
ASP.NET 5: First Look – Pluralsight Training

To stay relevant and competitive in "cloud" environment, ASP.NET is transforming
to become open source, and embracing many other open source tools.
This creates another "steep learning curve" for server side web development,
in addition to client-side single-page web apps with tools like Angular.

dotnetConf 2015 | Channel 9

ASP.NET 5 - A Deep Dive into the ASP.NET 5 Runtime @ MSDN magazine
The main objective of ASP.NET transformation it to improve performance and reduce dependencies to make it portable and more memory-efficient.

Imran Baloch's Blog - K (dnx), KVM (dnvm), KPM (nuget), KLR, KRE (DNX) in ASP.NET 5 (vNext)
"Project K" was most likely named based on Microsoft's Katana web server, that started this transition to open source; here are a few key new tools:
  • DNX (used to be KRE: K Runtime EngineKLR: K Language RuntimeK command)
    bootstraping ASP.NET 5 application, using various versions of .NET
    self-hosting command line, running build tasks
  • KPM: K Package Manager, being merged to NuGet
    download, restore and install dependencies defined in project.json
  • KVMPowershell script used to get the runtime and manage multiple versions of it being on the machine at the same time.
In addition to .NET based tools, Visual Studio 2015 includes many popular web development tools. 

Introducing Gulp, Grunt, Bower, and npm support for Visual Studio - Scott Hanselman
  • NuGet is now used only for distribution of .NET based packages.
  • npm: node.js package manager
    node.js is integrated in Visual Studio 2015, and is used to run other JavaScript based tools
    there is very large number of tools packaged to be used with node.js, available with npm
  • Bower
    package manager for client-side JavaScript tools
  • Grunt
    JavaScript task-runner, for automating build tasks
  • Gulp
    alternative tool for automating tasks
At the same time .NET core runtime is changed, C# and VB compilers are re-written, open sourced and run as a service, MVC and WebAPI are merged to use common controller, Entity Framework for database access is being re-written and also open sourced... 
There are also "classic" pre-packaged web dev libraries, such as
The actual web scripting code could be written in JavaScript (ES5), but also in TypeScript and ES6, and then cross-compiled and compressed for deployment. 

Besides ASP.NET there are many choices of tools for web development now...
  • node.js Express is using same JavaScript on server and client side. It is all single-threaded, event driven. Simple for simple tasks, could get complicated for bigger projects
  • Ruby on Rails, dynamic and elegant, flexible but could be slow
  • Java, Scala, Clojure and others JVM based frameworks
  • Nancy and other .NET based web frameworks
  • GO: super-simple language, functional, with object but no inheritance

Web started and become hugely popular and useful because it was created simple.
For a good reason: it was created by a single person. That was a major advantage, to keep it simple.

Times have changed, with large teams of smart people trying to out-compete in making
ever more complex systems, to do essentially a simple thing: HTML with some scripting.
Tools are powerful, there are just too many of them now, producing ever more complex systems...
Another round of web simplification may be needed (web components?)
In the meantime, here are some great tools to explore and use...