Digital Research – Pacific Grove, California

Gary Kildall and his company Digital Research played a pivotal part in the history of the development of the IBM PC. IBM approached Bill Gates and Paul Allen to provide a number of programming languages for the original IBM PC, and later returned to Microsoft to ask if they could also provide the operating system. Not having anything available at the time, Gates suggested they talk with Gary Kildall at Digital Research, who had developed the CP/M operating system for 8080 based computers at the time.

The history of exactly what happened during the meeting with IBM and Gary’s wife at Digital Research may never be clear, but for whatever reason, Kildall was unavailable to discuss with IBM. When IBM returned to Gates and Allen, they decided to go talk with Rod Brock and Tim Patterson at Seattle Computer Products (SCP) and licensed their QDOS operating system for the 8086 for $10,000 and $15,000 for each company that licensed the product from Microsoft. This became the basis for MS-DOS, The rest, is history.

(If you’re interested, I highly recommend the book Fire in the Valley, a great book which covers the story of the IBM PC in detail, as well as earlier and later history)

The original location of Digital Research is at 801 Lighthouse Ave, in Pacific Grove, California. The building is now a private residence. On a vacation to Pacific Grove earlier this month, I looked up the location where the office was, and as it was only a couple of blocks from where we were staying, so we stopped by:

 

 

 

This IEEE have installed a plaque on the sidewalk outside the building to commemorate the contributions of Gary Kildall, Digital Research and the CP/M operating system:

 

Remember the Motorola Atrix in 2011 with its Webtop mode?

One of the rumors about Samsung’s upcoming S8 is that they are going to introduce a desktop mode supporting an external monitor and keyboard/mouse.

Not so long ago Microsoft were trying to convince us about Continuum and how we’d all be plugging our phones into desktop monitors and keyboards.

Let’s not forget that Microsoft was not the first to try this – several years before Continuum, Motorola tried out something similar on their Atrix phone back in 2011 (and a number of Motorola phones that followed?) where it supported a dual boot mode that could be booted into a Ubuntu Linux based desktop mode when connected to a monitor, keyboard and mouse.

Motorola apparently discontinued the feature because base features in Android starting supporting HDMI and attaching USB devices such as USB external drives, keyboards, mice etc to your phone via a USB OTG connector. Not many people are aware that your Android phone may already support connecting to a monitor, keyboard and mouse, if you so want to. Take a look on the box or in your manual for the ‘USB on-the-go’ logo and you might have these features already.

Are foldable/flexible phones coming in 2017?

Apple has been criticized in the press from several points of view (for example) that their recent product releases have not been innovative enough, and they’re no longer pushing the boundaries of what’s currently possible. I came across a comment somewhere (I forgot to bookmark it), that the mobile phone industry in general has reached it’s peak of what’s possible, and to continue growth there needs to be a new revolution to innovate beyond the current form factor of the smartphone as we know it today.

I’ve said many times before that each device form factor has unique benefits and limitations according to its size and user interface. For example, a phone that fits in your pocket it a poor replacement for a desktop computer with a large LCD monitor, full size keyboard and mouse, and the reverse holds true too, a desktop computer is hardly a portable computing device.

The recent rumors and articles (in 2015, in 2016 and Lenovo’s concept phone here and here, and more recently: here, here, and here) about new phones from Samsung and LG possibly coming with folding screens starts to blur what’s possible. What if you have a phone that’s small enough and portable to be a phone (as we know it in the current form factor), but it has a screen that unfolds into something larger, say with a 7″ or larger screen that can be used in place of a tablet? That would certainly shake things up, allowing you to carry a device with a large enough screen to sit down and use it at a desk, but still carry it around in your pocket. I’m really curious and hope these come to market soon.

 

Comparing React with ES5 versus React with ES6

Learning React in 2016 seemed like it was stuck halfway transitioning from examples and tutorials using ES5 JavaScript, to the similar but different ES6 JavaScript syntax. If you haven’t done any JavaScript for a while (or at all), it was easy to get confused between the different styles. Even worse, you could easily spend some time reading an article before realizing that it was using ES5 or ES6 syntax and recognizing the differences (or not). As I was learning React, I’m sure I wasn’t the first to paste some ES5 style React syntax into a app using ES6 and get into a complete mess. Once you’ve got to the point of recognizing the differences then it becomes more obvious which is which, and becomes easier to spot an older (and possibly out of date) article with a newer, up to date article.

I like to build example apps to help me understand what’s going on with any new tech or framework, so thought it would be useful to build the same app twice, once using React with ES5 and then rebuild it with React and ES6 as a comparison.

Here’s a rundown of the differences and similarities (I’m sure there’s others too, but these are the ones I’m familiar with).

First up, the entry index.html for each app is mostly the same. The only difference with the ES5 version on the left is that I manually included the webpacked bundle.js, whereas this was done for me from the create-react-app scripts:

Next up, the first index.js to set up the root container component is almost identical. The only difference the JavaScript ES5 using the RequireJS module syntax, versus the ES6 style imports:

Now looking at the AppContainer component. React with ES5 on the left, and ES6 on the right:

Using React with ES5:

  • uses the React.createClass() api
  • defines component state using getInitialState()
  • exports the component as a module using ‘module.exports’

React with ES6:

  • uses the ES6 class
  • defines component state using this.state in the constructor()
  • exports the component as a module using ‘export default’

The render() function is similar in both.

CalculatorComponent – here you’ll notice some more significant differences:

React with ES5:

  • props are implicit
  • implicit binding of ‘this’ to functions

React with ES6:

  • props are passed into the component via the constructor()
  • explicit binding of ‘this’ to functions in the constructor, using this.functionname.bind(this)

And that’s it! Hope this is a useful reference if you’re looking for a side by side comparison. You can clone my example apps from github here: https://github.com/kevinhooke/ReactJavaScriptComparisons

As I’m still learning as I go, if I’ve misunderstood anything or got anything wrong, please leave a comment and let me know!