Apple iOS / OS-X vs. Windows 8 / RT == OS Goulash & Predictions

All These Thoughts Derived at Seattle Coffee Works in Downtown Seattle

All These Thoughts Derived at Seattle Coffee Works in Downtown Seattle, a good place to enjoy the use of an iPad or Windows RT Tablet.

Ok, I’ll admit it, I have a soft spot in my heart for Windows 8. At least in the tablet form. I honestly prefer it over the iPad model of little icons displayed in a grid over a background with the bar of app icons at the bottom. Don’t get me wrong, I find the iPad remarkably usable and will have one for many years to come. I have sketching, drawing, movie making, picture taking, code writing, code pushing, deployment, comic books, books and other applications that I’m not about to just give up. But Windows 8 is very compelling.

I really hope it pushes Apple to make some change with their own UI to update it a bit. The icon placement and icon bar at the bottom is fine, but I’d really like to have more information available to me at a glance, which is something that Windows 8 on a tablet (or phone for that matter) enables in an extremely easy way.

In addition to that information, the stark design colors of Windows 8 are definitely better than the “we’re Apple and make futuristic devices that disrupt the markets but simulate every physical traditional thing we can”. Matter of fact I find Apple’s inane obsession with making accurate recreations of wood, notebooks, calendars, file cabinets and all that absurdly stupid. It’s great that some graphic artist can do that, but jeez, I’d like my interface to be as futuristic and disruptive as my device.

Overall, the two operating systems for tablet devices – iOS and Windows 8 (or RT, whatever they’re going to call it) – are pretty amazing in their own right. As of this moment though, I’ve come to the conclusion that I will very likely be getting at least one Windows 8 device. Emphasis though, on device – singular. If Microsoft has finally cracked that nut (their other hardware isn’t bad) than I might just start buying some Microsoft “device(s)” in the future that would obviously be running Windows OS. If they haven’t cracked the device nut, then it might be a short lived experiment.

I’m wondering, if you’re really not an Apple or Windows fan and you’re going to give either device an honest kicking in the coming months, I’d love to hear your input on the device. I’m sure I’ll hear a whole bunch of arbitrary ad hominem nonsense from the fans of either platform over the next few months. There will surely be a lot of FUD and propaganda thrown out of every media outlet either corporation can get their money funneled into too, I’m however keeping a close eye on blogs and real people providing feedback that have used both. That notice this or that difference, all those little things.

Being that we’re so flippin’ close to the release of Microsoft’s new flagship OS, Windows 8 and Apple, no doubt, will come back kicking with something this competitive cycle is starting to get interesting again!

Meanwhile, the wild card of Android is sitting in the sidelines. Will someone actually make a move and kick it into the fray? It seems to be the lethargic thing with zero marketing budget and zero existence. It’s sad even though it is such a massively robust environment and ecosystem compared to Windows RT/8 and much more open and capable than the iOS ecosystem.

With all that said, those thoughts thought, here’s my prediction. Yes, I’m going to be one of those guys and make a silly prediction. I’m not taking bets but this is it, this is the SWAG. Along with this SWAG though, I’m throwing out a hope. Because I honestly don’t want them to overtake Apple because I’d be absolutely sick if the absurd hubris of Microsoft came back. Nothing was worse during the 90s and 00s than Microsoft’s hubris (yeah, Apple’s was easy to ignore, Microsoft’s was just annoying)

My Windows 8 / Windows RT Tablet Prediction

  • Prediction: 90 million devices in about 2-3 years.
  • My Hope: 45 million devices in 2-3 years, 90 million in 3-4 years.

…and I leave this blog entry with a single question. What is your opinion and what device have you found that peaks your interest the most? Is it Samsung’s devices, Dell’s or simply the Microsoft Surface?

Changes & Awesome People

Warning, if you’re looking for tech, this isn’t the article. I’m writing this up in relation to the people in the industry.

Geoloqi goes ESRI!

Geoloqi and ESRI are the same force now, if anyone was watching Geoloqi they already know this. But I just wanted to follow up since I know personally – as good friends – the team over there and a new member of their team.

Amber Case

Amber Case, CEO and brain stormer, thinker and all around great person has lead the Geoloqi crew on a great path to acquisition. She kept the VC vultures at bay, helped to maintain the integrity of building a real platform versus a quick buck “dine and dash” type of company. I commend her on a job well done! I can’t wait until I get to chat with her again about all the great things they’ve been working on and what’s in store for the team now! Follow Amber on twitter, Cyborg Anthropology and her site.

Aaron Parecki & Kyle Drake

These guys are great. The coders, hackers, architects and implementers of Geoloqi from the beginning. I wrote about Kyle before when we had a chance to have him speak at Node PDX (a few words here and here) earlier this year. Kyle & Aaron have worked diligently on building out the real time nature of the high I/O systems of Geoloqi. Follow Aaron on twitter, blog and code and flickr. Follow Kyle on twitter, and code.

Jerry Sievert

My friend and also a Node PDX Speaker, has joined to lead the development efforts of Geoloqi in the new ESRI Structure. I’m super excited for Jerry and what this will bring for hacking endeavors next time we get to hang out. He also blogs, tweets and of course codes nonstop – see Github.

Warner Media Group (WMG) gets Brian McClain

I’m jealous, another person I’d love to work with. With this change I might get to do just that in some ways. Brian has been an active contributor and instigator in the Cloud Foundry Community and is now kicking off what I can only imagine as some awesome projects at WMG! I’m on pins and needles waiting to hear about what they’re working on. Congratulations to Brian, Dave McCrory (who has a twitter & blog too) and the whole team over there. WMG just got a great new team member! Follow Brian on twitter or via his code on Github.

…and that’s it for today. I’ll have more news on some key people at key companies in the very near future. Keep on guessing, cheers!

JavaScript Libraries Spilled EVERYWHERE! Series #002

In the last blog entry I wrote up vows.js for testing JavaScript, in this I’ve tried out another testing framework called mocha. This framework is pretty extensive as you can do the things you do with vows.js as well as a lot of other techniques. In addition to mocha I’ve added a few other things to the mix. As well as a few obvious points where I need to RTFM still about how mocha works.

mocha.js

Before falling off into a conversation about reading the manual, I’ll dive into a bit about mocha. Mocha is a project, hosted on github as you might expect, that aims to provide a very feature rich test framework that can run via node or the browser. It also enables asynchronous and synchronous testing with some pretty sweet reporting.

The installation is the standard simplicity of a beautiful and elegant package from npm for node.js.

$ npm install -g mocha

Of course, depending on the way you’ve setup your machine, you may need to hit that command with sudo. The sample test on the main documentation & project page is pretty straight forward, I’ve copied it below for easy reference.

$ npm install -g mocha
$ mkdir test
$ $EDITOR test/test.js

Note that above, where “$EDITOR” is whatever editor you’re using, such as Sublime 2, Textmate, Webstorm or whatever.

var assert = require("assert")
describe('Array', function(){
  describe('#indexOf()', function(){
    it('should return -1 when the value is not present', function(){
      assert.equal(-1, [1,2,3].indexOf(5));
      assert.equal(-1, [1,2,3].indexOf(0));
    })
  })
})

Then run the test.

$  mocha

  .

  ✔ 1 test complete (1ms)

Overall, pretty sweet and simple. There are ways to setup mocha to do TDD or BDD style also. What I’ve done for my basic name generator I’m building has started of super simple. One of the other additions that I’ve added below is the should.js library. I’ll add more about this library, and the intent behind using it in the next blog article I write up.

My first tests I’ve put together I’ve entered below.

require('should');
var factory = require('./../lib/NameFactory').nameFactory;

describe('when working with names using NameFactory', function(){
  var generateThisManyNames = 3;

  describe('generating names', function(){
    it('should return a name between 3 and 20 characters', function(){
        factory.generate_names().length.should.be.approximately(3,20);
    });
    it('should return correct number of names', function(){
        factory.generate_names(generateThisManyNames).length.should.equal(generateThisManyNames);
    });
  })
});

…and then I’ve implemented the absolute basic to get those tests to pass. You JavaScripters that have been at it for a while can likely detect my massive newbism among this code. I’d love feedback btw. 🙂 So here’s my basic implementation so far.

module.exports.nameFactory = {
    generate_names: function (count) {
        if (count > 1){
            return [",","];
        }
        else{
            return 'stuff';
        }
    }
};

I’m still sketch on best practices around a number of object uses and creation in JavaScript. For instance in my code above, I’m creating a module, and setting up properties with functions, which leads to a number of questions… (maybe it is stack overflow time)

  • Is this an efficient way to create a JavaScript function for returning randomly created names?
  • What would your first tests be when creating a name generator? Any suggestions on some tests to add?
  • This shows some of my intent, such as returning a single result if no count is entered or it is less than 2, any suggestions on doing a kind of overloaded factory pattern method like that?
  • Now that I’ve gotten what I do above, I need some more tests to add to confirm that the returned content isn’t [”,”,”] <- cuz’ obviously that’s useless and not random, just returns the 3 string array that would prospectively have generated (or randomly selected) names. Ideas?
  • Is there another way to create a class or namespace that isn’t “module.export…” like I have above with “module.exports.nameFactory”? I’d love to just have a “NameFactory” or something. Not sure how or what way would be best in JavaScript land to put something like that together.

I’ve already moved past just this, but would love any feedback on the above questions and code snippets. I’ll post my results and the changes and additions from any body that posts feedback and suggestions in a subsequent post.  🙂

Cheers!

ETLs and APIs – A Thought Stream on the Matter, Are Things Really Changing That Much?

Often the tendency has been, and largely still is in Enterprises, to build things really large. Doing big design up front (BDUF) all the way to creating massive JavaScript libraries for generating JavaScript from non-JavaScript langauges, leading to a huge case of analysis paralysis and other such keywords that all point to the mythic man month or software death march. In the end, building big is building to fail – in a non-learning, non-useful, big bank, financial collapse type of failure. So mumbo jumbo aside, what am I saying?

I recently read the article by Anant Jhingran over at apigee titled “From ETL to API A Changed Landscape for Enterprise Data Integration“. In the article Anant points out a number of things around this movement to APIs versus ETL efforts in leading enterprises. I couldn’t help but notice this is a recurring theme in software development and with humans in general.

Observation

With Governments: Central planning through attempting to dictate order (i.e. Soviet Union) will eventually fail  for a less dictatorial plan around keeping things simple and organizing around communities to plan large efforts.

Translation to Tech: Having mainframe/server that dictates order will eventually fail for a less controlled Internet of systems that maintain simplicity and organize around communities of people to create large efforts.

Translation to Software: Building homogenous massive systems of record that dictate order will eventually fail for less controlled service orientation that can maintain their own system of record around departmental domains of people to create and operate large efforts, like enterprises.

Of course, the concern I have is, we humans tend to do things in a cyclic nature, as with Governments we move toward freedom and liberty, then the other direction, then back again. Big control to little control to big control again.

Summary

I see the point in the article, bringing the ETL massiveness under control of the smaller services, but in the end what we all need to do is to keep things in perspective. The extraction, transformation and loading of ETL still needs to occur along with the usage of application programmer interfaces ala the APIs. So where does this really get us, this acknowledged shift? It really just brings into focus a desire to simplify and bring things into a manageable state in the Enterprise. It makes sense that the leading enterprises are doing this, simply because they’ve reached that maturity level. Of course there will still be thousands upon thousands that haven’t reached this maturity point and will have to go through the pain of large scale centrally managed and planned ETL systems.

In the end, we’ll always have to return to the simple things to get true understanding.

Portlanders Going to Cascadia.js? Ride the “Geek Train to Cascadia”

We’ll be boarding Amtrak Cascades #508 to Seattle departing Portland at 6:15pm from Union Station. If you’re interested in doing a bulk ticket purchase let me know ASAP and I’ll work with you to organize that. Otherwise if you just want to pick up a ticket and meet us on the train let us know that too.

Logistics

Make sure to let me know if you want to join the riders & we’ll join up to be boarded together in the same car, this way we can get tables, seats and code together or at least have a good convo, a beer or three (or wine or juice or whatever you’d prefer) while sitting back, relaxing and enjoying the ride to Seattle.

So RSVP me here & we’ll get this moose LIT UP!