Tuesday 1 November 2016

Finding Balance Between Inherent and Instrumental Complexity

One of the most progressive frameworks to come along in a long time is Vuejs (also known as Vue2). It has exploded onto the stage of the JavaScript framework world just when there has been a lot of talk about a phenomena called "JavaScript Fatigue", read How it feels to learn JavaScript in 2016 to learn more.

The screenshot of the Vuejs component below is elegant and very clean. The component structure is aligned with the W3C Web Component Specification and includes sections for CSS, Template and JavaScript.

In addition to this nice encapsulation the developer is also free to use the CSS pre-processor, template engine and script language they prefer. The build tools don't really care if components built by different developers use the same options or not, it handles them all.



Vuejs is an answer for two overall issues that modern developers wrestle with, inherent complexity and instrumental complexity. Inherent complexity is the degree of engineering naturally required by the innovation you what to achieve, while instrumental complexity is introduced by the tools, framework and process you end up using to achieve your product.

It would be reasonable to not introduce more instrumental complexity than warranted, nothing should slow you down and take your focus off the inherent complexity you want to solve. Striking the balance between these two complexities is what Vuejs has realized.

When compared to other frameworks like Reactjs and Angularjs this certainly seems to be the verdict and can be heard in the many happy reactions to Vuejs from developers in the Twitter sphere. This same essential complexity division is also addressed in Steve Jobs on Process over Content.

It certainly is an exciting time to be a dreamer, innovator and actualizer. It has been my experience that it is paramount to develop the skills necessary to realize your creativity and business, whatever that may be. In this brave new world the developer is king and leads the way forward.



At the same time the speed to realization can move real fast yet seem to take forever. It really depends on what your shooting for, the beach or the stars. Time is elastic and not constant in this way for any worthwhile endeavor. If you have a passion for what you do you'll feel the rush whenever you look back as you keep going.



The past summer has closed the gap in a big way and I continue to catapult on with increased focus. Sandwiched between are many guitar compositions and also some entertaining insights into the state of our planet, courtesy of a colorful palette of philosophy and cosmology on YouTube. Joy to you from us!



Friday 1 January 2016

Time Through the Eyes of an Exponential Entrepreneur

I'm super excited for 2016 and how all things on the development front are accelerating forward at an exponential rate, making bold ambitions possible. The past year has sped by with increasing excitement and I found myself coding and drinking coffee doing what I enjoy most days, actualizing my software product.

Because my product solution is an answer to market demands there is a strong sense of purpose to my engineering and development. All in good humor, I experience a motivation that is somewhat similar to the following clip from the movie Bruce Almighty, where Bruce is answering prayers.



For Christmas my beautiful wife Sandra got me an awesome book called BOLD, which she of course wanted to read first. The book perfectly describes the world as we see it and provides a strategic roadmap to realizing great ambitions in our modern digital age.



To sum up a progressive 2015 and to get this post to you I'll highlight some of the events representing the more monumental pivot points I have navigated. Continual learning has been super important to drive progress forward into the exponential future.



Exponential Devices

The product I'm developing has always been about us humans interacting with computers in natural ways. It is good then to see fantastic new devices come to the market to facilitate such interaction and also increase the potential market share for my product.

Mobile platforms continue to rapidly expand with many more Android devices than iOS devices and it is also very good to see Apple finally release the iPad Pro, which features a natural hand held pen-cil. I'm sure more tablets with pens from other vendors will follow suit.

Then there is HoloLens, a mind blowing device from Microsoft that is going to radically change the way we interact with computers within our everyday environments. The HoloLens is a smart blend of Virtual and Augmented Reality that is super practical for many industries.

Exponential Apps

The product I'm developing is aimed at both the mass and professional markets so it will be deployed to as many target devices as possible. This is made much easier by new tools like React Native from Facebook and Electron from Github. Using only one codebase we are now able to deliver products to all the leading mobile and desktop platforms.

It's a well known fact that the greater portion of apps out there are useless and that users download and forget them in most cases. Quality apps are the next wave and having the means to have them quickly updated and authenticated is ultra important.

The growth of technology is in the throes of outpacing the limiting app-store model of business. Strong web standards together with a fully reactive framework like Cycle.js plus robust client and server interaction has made this possible. For further information on this important turning point read, The App-ocalypse: Can Web standards make mobile apps obsolete?

Exponential Coding

The product I'm developing requires the best foundation. It has been great to see ES6 arrive as the next very robust version of JavaScript. Also, the app frameworks, functional libraries and buzzwords have been churning out at a ridiculous rate. This rate of change is causing developer fatigue and frustration throughout the industry and after the noise is cleared there are only a few novel innovations that truly help the developer.



One paradigm that is here to stay is Reactive Programming. This is simply the realization that the user interface is the product of data, expressed as UI=ƒ(data). This has become popularized by Facebook's React although the idea behind it is similar to how spreadsheets have always worked, where as the state of data changes it is immediately reflected.

The more important paradigm to emerge is Functional Programming. This is a strict programming discipline where functions are expected to be pure, meaning that given the same inputs they will always return the same output without introducing side-effects.

There are many important implications of this and it is very good that this sound mathematical approach is finding it's way out of university labs and languages like Haskell to modern day JavaScript.

Next, these two paradigms have been brought together in a revolutionary approach to programming called Functional Reactive Programming (FRP). This new way of engineering and developing code is replacing long established practices like Object-Oriented Programming (OOP) or in the very least moving in as an equal part of the way development is done.

FRP also facilitates an all around better methodology of development than some of the practices that have stood in it's absence, for an enlightening experience watch the following video.



The leading FRP solution is ReactiveX, which was started and open sourced by Microsoft. RxJS is the JavaScript version of ReactiveX and it is now being adopted as an integral part by all the major frameworks, including: Angular2, React, Ember and to the greatest extent by Cycle. RxJS conforms to the Observable protocol that will soon become part of the ES7 version of JavaScript.

To complete the foundation for modern FRP apps on the backend there is Firebase, the Google service that acts as a FRP collaborative database in the cloud. Firebase provides robust security, authentication, storage and collaboration making it the premier solution for a product like ours that needs to scale rapidly across all devices.

Living the Dream

Having all this exponential growth across the internet, device, app, and coding spaces gets us excited and ignited. While we work like busy elves to ready our product we also had a great camping holiday this past summer and Sandra has enjoyed playing in a soccer league, singing in a classical choir and keeping me fed with great home cooking.

To off load after the days of coding I very much enjoy the physicality of playing my guitar, having a good neo-classical shred workout harmonizes the senses. Music is an awesome thing and we are happy to have it permeate our lives. We also know that living the dream can be tough at times but the outcome will be exponentia!