Spherical Fish 012 - An Even Dozen

Well, a dozen if you count the Lost Episode of 2016. Which I do.

We talk about Star Wars some more; my preliminary dieroller webapp can be found here. Warning: it looks terrible. I was mainly messing around with some new frameworks and libraries. In general, I think Angular 2 (now 4, actually) is pretty magical, but there's room to grow in there - I found myself fighting the framework at times. My goal was to do the entire thing with observable streams. This is something that Angular hypothetically supports, but there ends up being a lot of duplication, as getting @Input and @Output streams to line up ends up requiring the creation of a Subject (since that can be created and subscribed to in the object constructor) instead of just passing streams around (the control stream doesn't exist until ngAfterViewInit, since it does an Observable.fromEvent() on the roll button's click event, but that means it's not available for the child components during their creation, since the app's ngAfterViewInit doesn't fire until too late.

But I digress. I'll figure that bit out soon enough. Also? Angular-Material (the beta version 2.0 that's out for Angular 2/4 which has some serious numbering and naming issues), angular-material is not fun. Documentation was lacking, and I was unable to do something as simple as saying, "this svg icon that I registered with the nice icon library? I want to render it here 48 pixels high" (so I could have the difficulty die look like an actual die). Can't do it - any icons you register with their service render at the same size. There's even a sass variable (which would set the preference system-wide, but wev), but it's ignored. And the style is statically injected into the document head. It's fugly. Instead, I played around a bit with material design lite, which is a different google-supported material design reference implementation. It's also kinda meh - you can't use the behaviors that it ships with unless you do a lot of work registering them with the angular system (because the javascript behaviors don't get attached to new DOM elements that angular puts in with any of its own stuff).

In the end, I am rewriting the whole thing in ionic. Version 3 has some really nice support for desktop-size interfaces (I previewed it in v1.0 days, and it was good back then, but you'd have to do a completely different parallel interface for your desktop web client). It also has tooling that's pretty rad (although the angular-cli package is great too).

The real version, once I'm ready to show it off, will have svg for die shapes and maybe a few more useful features like saving die roll types (I rolled a lot of 2a1p vs 1d or 2d in combat).

Oh also? I am digressing. We talk about the button men kickstarter, and ... um, actually also get side-tracked into talking about politics for a while.

Three words this time were:

  • concept
  • signal
  • avoid

Music credits for the show can be found here.

download audio