New Home

Welcome loyal reader.

I’m not certain how you arrived here, but mattezell.info has found a new home – https://immatt.com.

All the original content of mattezell.info now resides here at https://archive.immatt.com.

In the coming days, weeks, months and/or years new things will be coming to https://immatt.com.

To get started, head over to the new blog at https://blog.immatt.com – and of course stay tuned for new things coming down the pipe!

-Matt

To be continued?

Good day, reader.

If you’ve stumbled here, it was most surely by accident or to read one of my posts from a year or more ago. The truth is, I’ve not maintained this site like I wish that I had – not just for the last year, but for quite a while longer if we’re being truthful.

As is often times the case in life, lack of time and energy are the generic unquantified excuses for why I’ve failed to check off my many wanted todos as ‘done’. Since we’re being honest, I don’t know when I will find this reserve of time and energy to pick this back up – and so I just wanted to take a moment to come and say as much here.

When I do find this magical reserve of ‘can do attitude’, I hope to come back with a new and improved site for myself – a base requirement of which will be a migration of hosts to increase stability, an archiving of my old content currently housed here, and a new focused body of work for showcasing on the new site (whenever that happens).

In the meantime, feel free to look me up on the various other avenues where I more frequently participate – more often than not, I am just ‘mattezell’ (except when some imposter Matt Ezell has already claimed it)! Lastly, feel free to check back here from time to time for an update – while I am uncertain of the future for each, I intend to eventually have both http://mattezell.info and http://immmatt.com as my homes on the web.

Happy New Year, readers and robots!

-Matt
twitter: https://twitter.com/mattezell
reddit: https://www.reddit.com/user/mattezell
HN: https://news.ycombinator.com/user?id=mattezell
github: https://github.com/mattezell
flickr: https://www.flickr.com/photos/mattezell/

Tab Dump – 03/09/2016

For all of my anxiously awaiting readers – the next installment of tab dump (All two of you bots) ūüėõ

https://www.google.com/foobar/ – Searching for “AngularJS Directive” presented me with a curious UI effect on the search results page – playfully asking if I wanted to play… So far, I’ve done one exercise – just waiting on time to pick it back up ūüėõ

https://www.elastic.co/guide/en/elasticsearch/guide/current/running-elasticsearch.html – ElasticSearch… because it’s always fun to see what the cool kids are playing with now days…

https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md – What’s all this then?

http://ionicframework.com/docs/v2/getting-started/tutorial/ – V2 of my favorite Hybrid Application Development Framework

http://senecajs.org/get-started/ – More reading up on the cool kids…

https://docs.angularjs.org/api/ng/service/$compile – Because who doesn’t need to know $compile… Side note: Actually had this tab open 5x… because I am a habitual abuser of tabs…

https://github.com/angular/material/blob/master/src/components/fabToolbar/fabToolbar.js – Material Design, so hot right now…

https://www.google.com/design/spec/components/buttons-floating-action-button.html#buttons-floating-action-button-transitions – Yup…

http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/ – Mo AngularJS, because erryone needs mo Angular

https://toddmotto.com/no-scope-soup-bind-to-controller-angularjs/ – I’ve not been working with AngularJS a whole lot lately.. totes.. not at all…

http://stackoverflow.com/questions/31861783/angularjs-1-4-directives-scope-two-way-binding-and-bindtocontroller – <- not more angular…

http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html – Information about dogs… Ohh.. Wait.. More AngularJS – drats!

https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md – OK.. The joke is beyond old… AngularJS it is…

https://scotch.io/tutorials/angularjs-best-practices-directory-structure – Let’s just pretend this is something non-AngularJs

https://en.wikipedia.org/wiki/Bit_field – because refreshers are always helpful…

http://stackoverflow.com/questions/28678950/angularjs-routing-not-working-after-site-hosted-into-iis – This one is totes about IIS routing….and not Angular

http://stephenwalther.com/archive/2015/01/16/asp-net-5-and-angularjs-part-3-adding-client-routing – this one too.. totes IIS and not AngularJs… Totes….

http://forums.webosnation.com/hp-touchpad/326055-reset-touchpad-webos-cm10-remove-data.html – Been debating dusting the old HP Touchpad off to see what’s changed… if I can just find the time…

http://forum.xda-developers.com/showthread.php?t=2157010&page=8 – Mo HP Touchpad

http://forum.xda-developers.com/hp-touchpad/help/rom-guide-how-to-install-android-4-4-x-t2912820 – Touchpad

http://forum.xda-developers.com/showpost.php?p=52922166&postcount=64 – Touchpad Touchpad

http://wiki.rootzwiki.com/HP_Touchpad – Touchpad Touchpad Touchpad

Until next year time!
-Matt

2048 2048 2048 2048 – “The Windows PATH Can Be a Source of 2 Tons of Fun”

tl;dr Keep your Windows 7 PATH under 2048 characters and you’ll be good¬†– don’t and you won’t. ¬†In related news, if you already have a lot of dev tools installed on your PC, look at your path length first if it all gets pear shaped after your VS install…

Now the non-tldr…

I recently decided to give Visual Studio 2015 a spin… Having been working a lot with Ionic (Cordova) apps lately, I was interested to see what Microsoft was bringing to the party on that front (See Here¬†and Here)…

The installation seemingly was going smooth enough, but at the end I was greeted with a lot of yellow exclamation marks –¬†“man, that’s no good!”

Naturally, I start reading into the borked install components, one of which is Nuget…¬†I see a lot of people that appear to have been in the same boat as me with previous RC installs… Now, I was installing¬†the official final MSDN ISO release, but just figured it was in the realm of possibility that some of the issues had been carried over… ¬†So I¬†start following some of the processes that worked for those who’d traveled this path before me…

All of which I concluded without positive or desired results…

In addition to the messed up VS install, I began noticing a lot of other issues with my PC that didn’t exist before the attempted install.. ¬†One of the most troubling ones was that none of my environmental variables seemed to properly work anymore – %windir% resulted in a “Windows cannot find”, error as did most every other variable that I tried…

Figuring something surely must be wrong with my path, I start looking there – but nothing jumps out at me and it appears valid… Interestingly enough, from a cmd prompt %path% resulted in a very small substring¬†of my actual PATH value – “definitely sounding like a PATH issue”, I continue to think..

But not knowing what I was looking for, I keep chasing the “VS2015 broke me”¬†assumption via Google… Which keeps me coming up empty handed – after multiple uninstalls and reinstalls.. Keeping in mind that each install/uninstall takes about 2+hr on my quad 3Ghz/16gb dev machine – so not exactly a quick process, nor a resource light one (read: “dev machine very slow”)

After many wasted hours and not being able to shake the feeling that it had more to do¬†with changes made to my PATH during the install more than any other system changes made, I decide to¬†search to see if there is a limit to the PATH length (and if it’s possible to exceed this limit, if such a thing does exist)… It wasn’t until I entered in “Windows 7 path variable length” into the search that I came across this post, which¬†answered everything…

2048 it is… ¬†A number that I probably won’t forget for a long time… ¬†2048….

Now, of course it would have been nice if the VS installer would have warned me of this… It would have been nice if any of the errors that made it into the installer error logs would have even so much as hinted at this… But they didn’t… but in all fairness, I am betting that MS aren’t the only or biggest offenders on this front… Though I do think that if your installer¬†requires PATH updates and then makes them automatically for me, it should probably also¬†ensure that it’s operating within the limits of what’s allowed by the OS… This is¬†especially true when the company behind the installer is also the company behind the 2048 char constraint in place on the OS ūüėČ

-Matt

Tab Dump – 05/03/2015

Tab Dump

It’s been a while since I’ve done one of these and the tab count in my always-running instance of Chrome is showing it…

As you will see, I’ve been playing a bit lately – or at least starting to play, though I never am able to find the time to finish ūüėõ

Learning a little about Polymer and Material Design: https://www.polymer-project.org/0.5/docs/elements/
Wanted to participate, but so far buying a house, traveling for work and life is standing in the way: http://blog.ionic.io/airpair-writing-competition/
I thought this was interesting as I was previously unaware: http://superpowered.com/androidaudiopathlatency/#axzz3XVEjQviD
Reference material for a side project I’ve been tossing around: https://learn.adafruit.com/node-embedded-development/wrapping-things-up
Raspberry Pi GPIO lib I’ve been evaluating for a side project: https://www.npmjs.com/package/onoff
Raspberry Pi GPIO lib I’ve been evaluating for a side project: https://www.npmjs.com/package/pi-gpio
Raspberry Pi GPIO lib I’ve been evaluating for a side project: https://github.com/JamesBarwell/rpi-gpio.js
Trying to get up to speed with KoaJS (having only recently learned of the many changes with Express): https://github.com/koajs/route
Had a need: http://www.webdeveasy.com/service-providers-in-angularjs-and-logger-implementation/
Trying to identify what I do right and what I do wrong with some recently learned stuff: https://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make
Study resource for an ongoing project: http://www.sitepoint.com/build-real-time-signalr-dashboard-angularjs/
Always fun to read about new things on the PI: https://www.voxxed.com/blog/2015/04/fool-proof-recipe-docker-on-the-raspberry-pi/
Seems like a pretty cool project for interfacing with local Chromecasts (3 in my home!): https://github.com/mafintosh/chromecasts
Recently learned of this reference site (I know, I know): http://www.pluralsight.com/
More KOA studying: http://bramanti.me/working-with-koa-js/
Reference project for Ionic: https://github.com/harshitgoel96/DictionaryApp
Really awesome CSS effects! : http://tympanus.net/codrops/2015/03/10/creative-gooey-effects/
Really awesome CSS effects! : https://github.com/codrops/CreativeGooeyEffects

Travel is Fatal

Travel is Fatal¬†Every time that I’ve forced myself to leave my comfort zone in order to experience someplace or something new, this has been my takeaway…

In the¬†wise words of Mr. Twain: “Travel is Fatal”…

My personal experience has shown me that while I’ve evolved to be able to form assumptions about things I know little of, rarely are these assumptions very close to reality…

It’s so easy to form notions about people, places or things before we experience them directly – we have the Interwebs and the boobtoob to give us the high level, with a spin or twist on it… and whether we want it to or not, our indirect exposure shapes our views and opinions – often times, incorrectly so…

Each and every time that I’ve ventured out to try something new – often times scared and with worse-case-scenarios playing on a loop in my mind – I’ve been pleasantly surprised to learn that my assumptions were pretty far off base from reality…

More often than not, the places that I though held nothing for me seemed as if they were formed with me in mind… The thing that I knew I “wouldn’t like” becomes my new favorite thing… The people that I was intimidated by or held negative assumptions about become my new friends as I realized that ‘different’ isn’t intrinsically ‘negative’ nor is it to be avoided…

It’s really easy to have opinions about things – even the things we only know of superficially… On the other hand, it’s very difficult to have opinions that actually line up closely with reality until you’ve been there, done that and experienced it firsthand..

Interesting side note on this: most scientists believe that our ability as a species to make assumptions evolved as a survival mechanism – with the default state being “OH CRAP! SOMETHING NEW AND DIFFERENT! FEAR AND AVOID!!”…

When our ancestors were roaming a younger Earth, this approach to things not familiar made sense and was very much at the heart of ‘survival of the fittest’ – as the cautious ones were the most fit for survival… i.e. Avoiding a Wooly Mammoth entirely most certainly ensures you won’t be crushed by it…

Interestingly, our modern world and our comparatively safe modern existence took a lot less time to come to¬†shape¬†than our evolved survival mechanisms did – something that I feel the modern man is having difficulty coming to terms with at times… This said, it’s our job as modern humans to identify these systems for what they are – and to take advantages from them where we can, but to also cast them off when we’ve seen them to no longer be as relevant or accurate to the realities of the modern world…

This doesn’t go to say that there aren’t dangers or threats out there – just that our gut instincts, assumptions and prejudices aren’t necessarily the best mechanism to identify them with any longer…

While I don’t guess that I’d necessarily try to confront a wooly mammoth were the opportunity to present itself, I’m sure my modern brain reacted instinctually in a similar manner the first time that I boarded an airplane as my ancestors’ brains did as they processed seeing a wooly mammoth… and while this mechanism likely ensured that they survived long enough to breed, in today’s world this mechanism¬†would most likely only¬†ensure that I didn’t get to sample my newest new favorite thing…

My first dance with Cordova + Ionic + Crosswalk + LiveReload… WHITE SCREEN! THINGS BROKE!

tl;dr – Since I am apparently a long winded such-in-such (ex: even my tldr is too long)… If you’re having¬†white screen issues with Ionic + Crosswalk + LiveReload after introducing Crosswalk to your working project, here’s the updated process for introducing Crosswalk to your ionic project:

[code]
npm install ionic -g
cd MySupaAwesomeApp
ionic browser add crosswalk
ionic plugin add https://github.com/apache/cordova-plugin-whitelist
ionic run -lcs android
[/code]

Special note: This is just a work around – this is projected to be ‘fixed’ in the very near future..¬†

First, who (of my imaginary readers (I see the traffic numbers)) knows what framework I’ve been using a lot lately?

Give up?

The supa-awesome one, The Ionic Framework.

Being the frequent deliverer of new and cool things related to the Cordova / Ionic Framework scene that they are, we were recently officially introduced to Crosswalk¬†via their January blogpost ‘Crosswalk Comes to Ionic‘.

Being neck deep in other project related todos and still really just learning my way, I can’t say that I read much into the announcement…¬†I knew the bullet points –¬†¬†I knew that Crosswalk would likely equate to a ‘problem solved for me’ down the road¬†and¬†I knew that I’d have to learn about it when I got down the road…

Admittedly, I didn’t exactly grok how big of a ‘deal’ this ‘problem’ was – for those who also don’t, we’re talking more or less about “an identical application¬†across all <4.4 devices”.. While not ‘as big of a deal’ with native apps (since you kind of just get that), it actually is kind of a big deal when dealing with¬†hybrid applications… ¬†On pre Android 4.4 devices, you’re talking about your¬†app’s rendering engine varying from handset to handset, generally based on the manufacturer’s widely differing preference¬†or¬†implementations for¬†the default Android web browser – Crosswalk removes this widely ranged variable out of your equation and gives you a browser engine¬†based off of various, specific releases of Chromium/Blink.

Well… ¬†As you likely have guessed… ‘Down the road’ arrived… ¬†Time came… I had to learn Crosswalk… ¬†Fortunately, in typical fashion, the Ionic blog¬†post provided an at-the-time working code samples for adding Crosswalk to a new project or an existing project…

I’ll take just a second to toot their horn for them right now – this is something that they really shine at and deserve kudos for… The Ionic Framework team strives to not only inform you of what they’ve added, but to provide you with working code to try out the feature being discussed for yourself – then and there… ¬†Not ‘embedded in a library somewhere on github for you to find‘ code, but ‘copy/paste this‘ code… ¬†A lot of projects don’t do this… And it’s super awesome and greatly appreciated when a project of this size makes the effort.

So… We realized that we *need* <4.4 support and that we don’t have it out of the box – cross device compatibility testing made this crystal¬†clear for us… ¬†I begin¬†tackling adding Crosswalk to our¬†projects… After¬†reading along and pecking¬†in the provided code snippets, I fired off my beloved “ionic run -lcs android” command… As expected, I was greeted with a worki….

Wait…

No. Not a working app… ¬†A white screen – no application¬†loading screen, no remote debugging via Chrome/Chromium, just a shell of an ionic project (viewing in remote debugging mode) without any actual project resources being loaded…

Mind you: this was just working…¬†I’d been working in the app all day without¬†any issue resembling something like this up until moments ago…

I’ve probably messed something up.. I bet if I redo the tutorial, real careful like, that it will work...”

I remove Crosswalk and revert back to the default Android browser… (for brevity (HAHAHAAA… ‘brevity’ from me?! Pffff.) sake, I will link to another issue related to this that we will pretend, in the context of this post, didn’t happen)…

I¬†test the app again – gravy and working mostly as designed (exactly as coded ūüėČ )… Things are looking good again –¬†I’m happy to see my UI again, no matter how ugly it may be…

“Alright, now we’re back on track”, I think to myself.. Re-add Crosswalk – check… Run ‘ionic run -lcs android -t¬†mylegacydeviceid’… App building… good… App installing… good… App running… goooooo…. Noooooo!!!!! WHITE SCREEN!!!!

“This is a huge feature and someone has documented the solution already for me”, I thought… Queue lots of Googling and tail chasing…

Unfortunately, all of my Googling of “stupid¬†things and stuff don’t work crosswalk ionic live reload” yielded little of value…

Accepting my fate -that I must (*gasp*) communicate on the Internets with strangers- I started posting in the Ionic Forums…

*TOOT* Imma do it again… One of the cool things about working with the Ionic Framework as of late hasn’t just been the official¬†team providing¬†a great¬†support infrastructure, but the community doing so as well… Seriously.. I’ve worked with a handful of open source projects over the years, and while a lot¬†are very friendly and helpful,¬†some are very much not friendly nor very¬†helpful – often responding to opened issues or forum posts with something akin to “you fix it.” ¬†(seriously – I¬†was previously told that it was “my responsibility” to fix a project which I was not involved with previously and then I was told to “drop the attitude” when I indicated such…)… ¬†We all have bad days, so I won’t harp on it – especially since it was a project that I **love** and use daily now.

Anywhos…

So I started doing the whole “talking to people” thing to see if it would get me anywhere… In typical-of-the-Ionic-community fashion, it wasn’t long before I had some responses – many sharing their similar pains and others providing pointers on where to look… ¬†Then a kind soul by the name of thebosz came along with the missing awesomesauce –¬†that the Cordova project had decided recently to split out the whitelist functionality into a plugin of its own and so you needed to manually add it to your Ionic project via “ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git” for the time being.

*POOF!* *MAGIC!*

There you have it:

[code]
ionic plugin add https://github.com/apache/cordova-plugin-whitelist
[/code]

You’re still here? ¬†Ok.. I will keep going…

As you may or may not know, the whitelist stuff¬†lies¬†very much central to a lot of the features which I and many of you love and are dependent on within the¬†Ionic Framework – and so it being plucked from¬†‘core Cordova’ “broke” a lot of things previously working in Ionic.

I won’t go too deeply into things that I only understand superficially, but as¬†I’ve gathered,¬†Crosswalk requires a later release of Cordova than Ionic normally uses when you generate a project (3.7.1 at the time of this writing). ¬†When adding Crosswalk to a project, Ionic actually grabs a special 4.0.0+¬†fork¬†of Cordova that they’re currently¬†maintaining…

Someone closer to the source would have to speak in specifics about how/when the disconnect happened, but apparently the¬†whitelist-removed-version of Cordova made it into the Ionic fork some time after the¬†‘Crosswalk Comes to Ionic‘ post was published (disclaimer: this is just a guess of mine, so someone please correct me if wrong)… ¬†People, such as myself, were left scratching their heads after following the blog¬†instructions and then attempting to resume their normal,¬†LiveReload-centric, development process… Now running the beloved “ionic run -lcs android” command resulted in the previously working application simply¬†displaying a white screen instead of the app’s UI (with no debugging info making it to any consoles).

No Bueno.

Thankfully, as is normally the case with the Ionic Ecosystem, the Ionic Team took notice of the activity pretty quickly and have been¬†sharing the work around while waiting on the Whitelist Plugin to make its way into the official Cordova repos – at which time it will be automatically handled by Ionic CLI and so no longer an issue… ¬†You can now find the¬†amended directions in the linked ‘Crosswalk Comes to Ionic’ blog post… ¬†It’s also scattered¬†throughout the forum and github repos¬†now and so turning¬†up more in Google searches on¬†issue a lot more as of late…

Muy Bueno!

Again, as mentioned in the too long tl;dr, this is a temporary work around and likely won’t be required for very much longer.. In all likelihood, this issue will be resolved very soon¬†–¬†once¬†the Whitelist plugin makes its way into the official Cordova plugin repository, Ionic CLI will most likely be updated to pull this new plugin dependency automatically during generation/upgrade processes….

Just wanted to debrief and share in the case that it helped anyone else!

-Matt

It sounds like someone has a case of the Mondays…

Things that went wrong today:
– Spilled cup of coffee in mouse, keyboard and lap
– Router died
– Poked self in eye taking a drink of water
– Poured (a significant amount of) water in my lap
– No towel in the bathroom (discovered post-shower, naturally)
– Got yelled at by a school bus driver in front of my neighbors
– Dog pooped next to my chair while I was out ‚Äėbeing introduced to the neighborhood‚Äô by the friendly neighborhood bus driver

So… Dearest of Mondays.. If you could just go ahead and just die the horribly painful death that you truly deserve, that would be swell…

Here’s the skinny on the angry bus driver if you’re curious and really bored:

(School Bus idling on the road that I am about to take a right onto)
Me (thinking): ‚Äú‚Ķ What‚Äôs that bar on the front of the bus? Oh, cool ‚Äď it kind of looks like a bus rack like the ones on the metro busses‚Ķ That‚Äôs awesome!‚ÄĚ
(take the right hand turn ‚Äď driving past the school bus, which is to my left)
[The school bus driver has his window slid open ‚Äď he has a look that can only be described as equal parts hatred, anger and disgust]
Bus Driver (yelling): ‚ÄúHEY! YOU!!!! ‚Ķ [indistinguishable angry yelling becoming distant]!!!!!‚ÄĚ
Me: ‚ÄúWhat the hell is that dude‚Äôs problem?! Yell at me in my own neighborhood ‚Äď asshat! Why the hell was he yelling at me anywa‚Ķ. Ohhh‚Ķ That‚Äôs wasn‚Äôt a really cool bike-rack wielding school bus‚Ķ That‚Äôs was a school bus with a missing stop sign on their front swinging arm that is unloading children on the opposite side of the bus from me‚Ķ‚ÄĚ

At this moment, I feel it to suddenly be ‘more Monday’ than it was just a mere 5 minutes earlier… Briefly, I contemplated flagging the driver down and letting him know that his bus was in need of repair ‚Äď that from a perpendicular approach, one couldn‚Äôt distinguish him ‚Äėunloading‚Äô from him making a simple left turn and that this was dangerous. That this was ultimately why I failed to stop while he was unloading – that I really did care about the safety of the kids.. I promise, Mr. School Bus Driver, I am a good guy once you get to know me…

But as I started playing through this scenario in my head, I the good fortune to remember something very important:
‚ÄúIt‚Äôs Monday ‚Äď and that means that there is only one way that this can possibly turn out ‚Ķ You lying face down in the street, bleeding from multiple fresh puncture wounds and soaked in your own urine after having been tazed by the local P.D. when your good intentions of notifying them of their need of repair have been misinterpreted as you ‚Äėrunning down a bus full of children to settle a verbal dispute with the concerned bus driver‚Äô‚ÄĚ.

With all of this in mind, I plan to not leave my house again today and hope that the structural integrity of my house holds out until Monday passes once again and Tuesday graces us with its ‚Äúat least it‚Äôs not Monday‚ÄĚ good vibes‚Ķ

Time for a beer ‚Äď you guys pray that I don’t accidentally cut off a finger with the bottle opener.

NTFS File System Tunneling (…is stupid …and wrong)

I will keep this short… I’ve already spent far too much time on this easy to work around peculiarity of NTFS and how it associates file meta information under the hood…

Consider this console app: http://pastebin.com/66QABWS3

If you were to actually read this (don’t feel too bad if you didn’t – the last link will explain it all) and didn’t have knowledge of the magic going on behind the scenes, you may be fooled into thinking that this application would write out “42” at some point in it’s lifetime…

Unfortunately, reasoning such as that would be based in reality – where up is up, down is down and true doesn’t equal false. ¬†I say ‘unfortunately, due to the fact that this is not the reality that your NTFS file system (if you have one) is operating in…

It is actually operating in a place where when one thing dies, another assumes its identity and carries on its life as if it is the original thing – clearly it isn’t, but your NTFS file system assures you that it is…

NTFS is telling you: “This file that you create and then delete every 10 seconds, as you have for the last month and a half… Well, it wasn’t just created 9.9 seconds ago.. No.. It was created a month and half ago… Really it was… I don’t care that you just deleted it and then recreated a COMPLETELY NEW file in it’s place – THIS IS THE FILE CREATED ONE AND A HALF MONTHS AGO. FER-REAL-ZIES!”

Welcome to the nonsensical world of¬†NT File System Tunneling¬†…

-Matt