Web tools: semantic-release and npm organizations

I like continuous-integration, Travis and semantic-release. They make new code available immediately, after automated testing. I'm working on VeraInView, and I hit a snag I wanted to note.

Normally, if you set up Travis and end with 'npm run semantic-release', it will publish your new module to NPM. However, with this project I got a 'forbidden' error returned from NPM. I am using an Org for this project, so its package name is @doe-casl/verain-view. That namespace means that the package is by default private, and as a result 'npm publish' defaults to private - which requires a paid npm account.

The solution is to publish your package manually the first time:

npm publish --access public --tag 1.0.0I left off the --tag argument, and ended up with the first version being '0.0.0-semantic-release', which is why I added it above.
Hope that helps!

Followup: Ubuntu persistent USB console boot, or why won't my car read this USB stick?

I finished my project using Ubuntu, and went to recycle one of those 32Gb USB stick for playing music in my car. The 2011 Honda Accord and 2014 Honda Odyssey both said nope "device incompatible" or "device unreadable" or something similar. Reformatting didn't help.

I discovered that the live-USB stick formatting program I used had increased the default offset of the partition from 1K to 4K, I think. I actually had to use "diskpart" to delete the partition and create a new one to reset the offset to the default value. I didn't see how to do that in Disk Manager's GUI.

Now I have my 32 Gb of music.

Review: Javascript, The Good Parts, by Douglas Crockford

I'm convinced  "JavaScript, The Good Parts" is one of the best JavaScript books for JavaScript doubters, especially those coming from a traditional object-oriented language like me. It really addresses whether JavaScript is just a mess (it definitely has messy parts) or whether there is something good in there. I'm convinced that by avoiding some problematic parts of the language, there is a very useful, functional language core that can express some interesting use-patterns.

One of the cool concepts emphasized is that JavaScript has object-inheritance, not class-inheritance. There are no classes. Instead, you can inherit from an object. Something that looks like a class is actually just an object that you essentially make copies of and use in a consistent way.

One of the implications is there are mixin/inheritance patterns that can't be expressed in Java/C++ that you can do in JavaScript. I haven't gotten my head around when they might be the best way to do …

Review: Learning Javascript, by Shelley Powers

I read the 2nd edition, but it's been updated recently to the 3rd edition by a different author.

This is a basic programming book, that tries to be fairly complete in covering all the features and pieces of Javascript. It includes an intro to the DOM and AJAX. It's not a reference like "The Definitive Guide", but it's still quite easy to find specific information.

It's a bit boring, and feels encyclopedic. I was wondering about some of Javascript's quirks and corners, but I didn't get much help or explanation in this book. I'd say "eh, it's ok" for a recommendation.

Then I was pointed to  "Javascript, The Good Parts." Now there's the book I wanted to read. Review forthcoming...

Locking web-page screen orientation on Android

Basically, I can't. I've found several references to the old and new standards, and this is perhaps the best:
No matter which version I try, or even if I'm in fullscreen, the orientation of my page doesn't stay locked to 'landscape'. I'm not sure I've completely investigated 'promises', so I'll check that, but for now I'm going to resort to simply telling my tablet not to rotate, in Settings .. Display.


Review: Build an HTML5 Game

Build and HTML5 Game, A Developer's Guild with CSS and Javascript, by Karl Bunyan. 2015.
On Amazon

This book walks through creating a 'bubble shooter' browser game, similar to Puzzle Bobble or Snood. It uses jQuery and Modernizr script libraries to avoid browser-specific concerns, and Modernizr for loading scripts. The first version uses the DOM to position and animate game elements (bubble), and shows custom animation in jQuery. It discusses which animations are possible in pure CSS3, as well.

I found it interesting that the book moves on to a second version, where the game board is completely contained in an HTML5 Canvas, and all animation is handled inside the canvas, using calls that are compatible with the DOM version - so the older version can run on old browsers that don't properly support Canvas. That structure seems useful to think about.

I would have liked to see a more complex game, like a platformer or side-scroller, but that would have swelled the book and …