Monday, March 6, 2017

Angular 2 and ecosystem: dislikes?

Ok, so Angular 2 generates a good amount of attention with lots of great things touted about it.  That is fine but what matters to me is whether it is like the medications advertised on TV - "Cures you <insert condition here>" but in tiny print has "side effects of nausea, vomiting and sometimes death".  Angular is still pretty new to me - typically I work mostly on back-end Java development. I'm not doing new Angular coding right this second but for a couple months I have been doing automated builds for Angular 2 projects and just started to work on converting some Angular 2 projects from Gulp based to mainly just NPM with Webpack2 which is resulting in some coding along the way.

Ok, so let me start off by saying that I don't think Angular 2 will have 'death' as a side effect.  Maybe headaches though.

My list of issues - some not directly Angular issues but related in various ways through tooling or general ecosystem.
  • Documentation is poor.  I find myself asking questions like 'what about this or that' and official docs for what seems like most stuff in the NPN repository don't have the answers.  I waste too much time looking for answers at Stackoverflow or elsewhere for usage/API questions rather than working on the actual functionality. This isn't an Angular (2) specific issue but they didn't improve things.
  • Searching for Angular 2 documentation, etc results in many links to Angular 1 stuff or to items which a beginner can't easily identify as Angular 1 or 2.  Just "Angular" everywhere. I wish that those blogging or writing examples, documentation, etc would consistently include a version in the content or at least a date when something was written so there is a better chance of figuring it out.  I'll admit that I don't always think about this aspect either until I'm on the receiving end of new technology but when breaking changes are very common this is more important.
  • Seed projects drive me a bit crazy when they use beta software.  As of the date I am writing this (3/5/17), what appears to be a common seed project here is using webpack 2.1.0-beta.27. I have never worked where we would rely on beta software - especially well after non-beta software was available. I spent some time already looking into the non-beta webpack 2 and I see how the particular seed we used pushed the developers into using the beta initially.  I just wish that they would put time into converting to non-beta software even if it will take some effort.  It seems odd and unwise to expect further beta updates after a stable release so good luck with bug fixes or security issues. And just so no one thinks I am talking about just Webpack2, in this instance rxjs 5.0.0-beta.12 is also in this seed.
  • NPM is so slow I feel like my hair will be totally grey before most 'npm install' processes finish. I did see there is at least one attempt at an alternative (Yarn) but I had problems with an app with just a moderate number of dependencies and it was still pretty slow for me. By version # terms, Yarn is still really young and I hope it makes major improvements. 
  • NPM version? I've yet to see any nice documentation stating when/where particular NPM versions should be used. I've read some information listing some of the differences but nothing really saying 'hey, version 4 is where you should be now because..' or making it clear what the impact is of using various versions in different contexts.  Is it s difference of works versus not or simply efficiency differences? Does it depend on other considerations?
  • Many 3rd party libraries are not using semantic versioning yet.  If people are creating apps/libs and passing them on to you for further work before deploying to production many times the build is dysfunctional by time I even try the build process. To many packages making breaking changes with no way of knowing by the version number. An example issue with ng2-bootstrap can be viewed here.  I think the main contributor to the issue is the extensive/default use of "^' and '~' to modify the process of selecting compatible dependency versions.  The default should be to NOT use them(^ or ~) in my opinion. It is a huge time waster trying to get a build working which was just handed to you that won't build because 'some' component got upgraded to an incompatible version which must be tracked down. [edit 2017/04/20] You have probably heard of Perl being referred to as a "write once" language - I sometimes think about Angular as a "build once" technology since each and every build of the same code has the potential to fail.
  • Private NPM registry?  I found the 'blessed way' of handling this to be underwhelming. If you search for other free/open source options you will likely end up at Sinopia which is a dead project last I checked this issue. Note that nothing at the Sinopia link indicates it isn't maintained.  I would recommend Verdaccio at this moment. I find it crazy that you must expend a good amount of time just to figure out a reasonable open source private registry solution.  There are several non-open source solutions available.
  • I've run into a number of odd and possibly random issues during 'npm install'. At this point, I'm trying to keep up with npm updates hoping to reduce the number of days where repeatable builds seem impossible.  Tools or infrastructure - who knows?
  • Module systems - CommonJS vs AMD vs ES6 vs .... And people complain about the complexity of languages such as C++..  
  • Typescript and integrating 3rd party JS based modules - I'm still working through a situation where a 3rd party module has only a single anonymous function exported and there is no definition file. This is another productivity killer. This may be more of an experience issue (lack of on my part related to Typescript) than a true technical issue but googling for "best solutions" is slow in this case.
  • Throw in some technology such as an API generator targeting Angular 2 and other technology such as an API proxy and you get some unwanted complexity.  What was initially a quick (and good) way to stand up simple applications turns into something much higher in complexity.  How how I can't say. 
  • Arg.  Renames of packages and/or packages of similar names make thinks difficult to sort out when looking for useful components and/or tying to use them.  Too much change and little maturity.
[Edit 2017/04/20 - feeling the need to add some positives to my analysis] 
+ It sounds like Angular 4 is a step toward better versioning (semantically speaking). I don't know that it is a total fix in itself since there are still many libraries/frameworks that need to fall in line regarding versioning.  
+ The dependency injection in Angular has been somewhat useful.  
+ The overall "feeling" of development isn't too bad - given enough time and maturity it may be "very good or great".

So should you dump your applications / user interfaces that are rooted in JEE type technology? I don't think so. At least not yet. It is probably worth keeping an eye on technology such as this.  I would certainly evaluate the risk for the type of use you expect along with the productivity differences between this and whatever you were doing.

Thanks for reading!
May Jesus bless your day!

Scott

Monday, February 20, 2017

Attitude adjustment - A truck and a Muscovy duck


Ever had a day where you wake up on the wrong side of the bed and just feel cranky.  That was me earlier this week (or maybe more often and earlier than that according to my family). I'm being kind to myself with that description, I was way more than cranky.  There are so many people around Tampa who drive like complete jerks and by time I got about 4 miles from work I recognized my attitude was so wrong I couldn't even stand myself.  I was driving our F250 truck this day because I thought it might rain and I try to avoid to motorcycle when I'm just feeling off.  I took a mental pause and spoke a simple prayer to Jesus - "please help me improve my attitude".  I had no idea how Jesus might answer that prayer but I really didn't expect what happened next.

I had just gotten through a 4-way stop near some apartments and a golf course where the road has some wonderful trees that hang over the road.  It can pretty at times - probably more so once some of the construction near the corner is complete.  At this moment though, I suddenly saw a large duck flying straight down between the trees like it was heading for a landing. I immediately realized that I was directly in its path and it realized the same. I had no time to react and I think it tried to go into a climb but it was too little too late.  There was a very large bang and the windshield turned into a mess.  I was in shock but alert enough to keep myself on the road without any panic reaction.

"Ok Jesus, you have my attention.  Yes, my attitude is still bad and I know it.  Thanks for showing me you are listening and thanks for your forgiveness."

I didn't stop the truck right away - I thought about it but I didn't figure there was much use and there wasn't really a good place to pull over.  I was pretty sure the duck didn't make it - even now, although I have yet to see it laying along the road. It wasn't super easy but I was able to make it the last 3 or so miles to work where I was able to take a breather.


Anyways here is the formula.

1 Muscovy duck 
HTML BBCode HTML/BBCode: Muscovy drake Graniteville SC USA

1 truck 
 = 



If you look carefully above you will see feathers stuck in the windshield near the top...




Plus all the fun and jokes that are coming out of it.
  1. The truck, originally nicknamed 'Herbie Jr' is now 'The Duckinator'.
  2. My wife really wants me to admit that I screamed like a girl when it happened.  I didn't since I saw it coming - but if I hadn't.. well.. I won't speculate.
  3. The day after this I ended up working from home since I couldn't drive the truck and there was a 60% chance of rain and the days after that I was driving the motorcycle.  On the way to work I kept looking for a duck with an odd waddle to no avail but there were plenty of them along the road and I could visualize one big one strutting along telling his friends "Yeah, I'm bad - I might be in pain but that big white thing didn't come back for more.. Oh yeah."
  4. Some duck duck goose jokes..
  5. Some comments on doing a better job 'ducking'
  6. Comments on how dinner got away from me..
  7. More comments on 'waddle home'.
  8. etc etc.. a family of real comedians we are..
  9. [edit 2017/3/3] How could I forget 'No harm, no fowl'

I have a lot to be thankful for.  I didn't get hit by this duck while riding my motorcycle.  That would have been more dangerous, probably very painful and even more embarrassing.  I would NEVER hear the end of it if I came home with feathers stuck in my riding gear or helmet.  It was a duck and not a large goose which might have gotten through the window to a higher degree.  It wasn't a person and no people were injured.  And of course, I am thankful for the opportunity to fix my attitude a bit. As much as I don't want to admit it, I almost always could use a little bit of an attitude adjustment but a future prayer may have to stress the 'little' aspect. 

Hope God blesses your day!
Scott

Tuesday, January 10, 2017

Sena 20S Bluetooth Headset - quick review

I bought a Sena 20S bluetooth headset for my (fairly old) HJC helmet about 6 weeks ago.  Now that we moved and have a lot of things going on I thought it was important to maintain my ability to talk with the family while I commute for work and it can be used with my phone for navigation use.  I did a little research and this headset seemed like a good solution.  The Bluetooth 4.1 is a bit newer, has some good features and the runtime is a bit better than others I saw.

You can find the headset at places like Revzilla.

The attachment to the helmet wasn't too hard to make - it just clamps.  My helmet lining wasn't as easy to work with as some of the newer helmets out there but it seems solid enough.  I will say that the location I have the speakers isn't perfect and squeezes on the ears a bit.  I might be able to adjust it a bit better or a different helmet may have a little bit more room in the ear area.

I tend to try to avoid talking while commuting (traffic is very heavy) so I have only made/taken calls a dozen or so times.  The voice quality and volume is pretty good.  The difficult part is that I still feel the need to adjust the volume when stopped versus travelling 35-55mph.  I usually end up being too loud when stopped.

The controls are basically a rotating dial (that depresses in the center too) and a couple buttons.  They are pretty easy to operate but the buttons I tend to have to hunt for a little bit.  It might be a bit challenging with thicker winter gloves for the smaller buttons but thin gloves still allow enough feeling to operate.

I don't use it enough (and haven't reread the documentation recently) to remember how to access most of the features while riding - just answering the phone taxes my memory some days. 

To program the speed dials or change other settings you can either use a smart phone app or a PC based application.  I've done both and it was pretty straight forward.  I do wish I had 4 speed dials instead of just 3 but that isn't a deal breaker.

I did use this with my phone (Android based) once or twice for navigation purposes and it worked well.  I bought a handle bar mount phone holder to allow easy use for this - this is pretty much a requirement. I'm also tempted to get a double USB charger and cables that I can use from the bike in case I get lax on keeping things charged on a day I really need it.  Would I ever get lax on charging?  Um, yeah.. (sheepish look)..

Overall this was a good purchase.  If we end up doing a bunch of dirt biking it might be worth getting more so we can communicate easily.

This is a view of the overall external attachment.  The mic is easily adjustable back into the correct position once you get the helmet on.

 

This shows where I detached the portion that contains the battery. I tend to detach it to charge but I could charge it while on the helmet if I have a convenient wall socket and place to sit the helmet.


The round blob on the lower part of the pic in the cheek area is one of the speakers. The kit comes with some Velcro type attachments which hold pretty well.




This pick shows the other speaker at the top of the strap.




Thanks for reading and I pray for safe travels for all the other riders out there.
Scott