Friday, December 4, 2015

A banana, held by a gorilla, in the jungle

A friend of mine and I were talking the other day, and he made a comment along these lines: Javascript is so useful because it does exactly what you want, including extensibility, without doing more than you need. In most object-oriented languages, if you just want a banana, you end up with a banana, being held by a gorilla, in the middle of the jungle.

I laughed since it was funny, although completely misguided. the basic point seems to be that object oriented languages are inherently bad. To me, the real meaning here is that all object-oriented languages still allow you to design your object hierarchy poorly and write really bad, bloated code. So does Javascript, for that matter. Put another way, with an analogy I use at the start of every course I teach: You can have a terrific vocabulary, know everything there is to know about grammar, and have memorized every guide on creative writing, but this does not mean you are currently capable of writing the next great American novel.

I don't say that to discourage anyone from being a writer or a programmer, but simply this: know what you know, and know what you don't know. But don't confuse what you don't know for what you can't know.

To quote Dennis Miller, I don't want to go off on a rant here, but since we're talking about Javascript, NodeJS is just a terrible idea to my way of thinking. I get wanting to write your server code in the same language as on your client, and I get wanting to write event-driven server code. These are both valid objectives. But what I just don't get is trying to smash nails with a wrench. Javascript was not designed as an enterprise-strength server language, and so trying to make it fit into that role just doesn't make any sense to me. This is why NodeJS has so many extensions to Javascript, and native-code plugins to do so much of the heavy lifting. But at a certain point, you've redesigned that wrench to be a hammer, so why not just use the hammer you already have? The only reason remaining is to use the same base language on the server as you do on the client, and now to quote Bernie Sanders, at the end of the day it's just not a compelling enough reason.

Saturday, October 3, 2015

Yet Another 3D Cube Demo in CSS!

So I came across Keith Clark's fantastic 3D work in CSS and immediately felt like a complete moron. I thought I knew my stuff, but haven't gotten into CSS transforms much - certainly not to the extent of the incomparable Mr. Clark! (You can do what HE does, you're a Mister!). But seeing his work inspired me to learn more about CSS3 transforms.

Welcome to Yet Another 3D Cube CSS Demo, which I affectionately refer to as YAC! But I wanted to put my own spin on this demo since most demos and tutorials I read had lots of text describing what they were doing, but no real visuals other than the final product. So once I got my cube working, I wanted to know how I could present this new-found knowledge to my Java web development class I teach at Interface Web School?

Animate the building of the cube, of course! By adding a CSS transition for each transform, you can watch the cube being built by those transforms. The YAC demo source code is fully commented, so check that out for full details on the transforms and how they work.

Saturday, July 4, 2015

KAW River Trip at Mom's!

This weekend Nick, Melanie and I came to my mom's in Junction City, KS to upgrade the OS on her old iMac. Nick and I took advantage of the closeness of the Kaw river (20 minutes from my mom's house) to get in some kayaking. Our obvious choices were a 9.5 mile trip or a 23 mile trip. 9.5 miles is for wimps, and even though we did 23 miles on the Missouri last weekend, we did the 23 mile trip.

Man are my arms tired! The current is much slower on the Kaw than on the Missouri, so it was much more paddling on this trip. This trip took about 5.5 hours, while the Missouri trip took 4.75 hours for about the same distance. Average speed on the Kaw was 4.1 mph, on the Missouri it was 4.7.

Shockingly, we had no rain or rollovers on this trip! Of course that also means we just baked under the sun, I know I got a little burned on my legs. It's funny - the insides of my legs are burned a bit, but the outsides aren't even tanned at all due to the way my legs rest normally in the kayak. I also have an awesome tan line that stops where my paddling gloves start. I'm totally the coolest kid on the block, tan-wise.

Overall, this was a good float. It's very similar to the Missouri, but nothing can beat scenic rivers like the Jack's Fork or Current rivers in the Ozarks. What can I say - I miss even tame class I rapids!


Thursday, July 2, 2015

The Muddy Mo Adventure

Following our Jack's Fork river adventure, Nick and I are officially kayak-buddies. I'm thrilled he is enjoying it, because I can't get enough - I'd be out every weekend on some river if I could! Last weekend we traveled up to Sioux City to do a 23 mile stretch of the Missouri River. The forecast was perfect - light winds, mid-80's, and no chance of rain until after 7pm. We got a late start, around 12:30, but I figured we'd be able to average about 5 mph, so we should finish in under 5 hours or so, and still beat even the chance of rain. You can tell where this is going, can't you?!

 Starting out on the Muddy Mo

0 miles down, 23 to go!

The Missouri is muddy, hence its nickname, and doesn't have the clear water of the Jack's Fork. It's also a huge river - very wide most of the way, but nothing like a rapids anywhere. You spend a lot of your time just enjoying the scenery, and looking for barely-submerged sandbars so you don't get hung up.

You also spend a lot of time looking at the sky and worrying about storms. At about the 15 mile point or so, this storm blew in to add some excitement to the otherwise tame trip. It had started sprinkling a bit and the clouds were turning dark, so my eyes turned toward the shoreline to look for a good place to pull our boats out of the water. Most of the shoreline of the Missouri river is just steep banks carved out by the water, and there were simply no place to pull our boats out, so we kept going downriver. The rain picked up, but it was still just a shower and felt nice after baking in the sun for a couple of hours. But then the wind picked up to about 30 miles an hour at the same time the downpour began, and now we were searching for any small spot to get off the river. After just a few minutes a pontoon boat we had passed earlier came by and called out to see if we needed help. I called back that we didn't since we had just come upon some houses along the river with docks. Getting nearer the docks it was clear we could not get out of our tiny kayaks with the waves the storm had created, so continued downriver looking for a bit of shore to pull out on. After a couple of minutes we found some rocks right on the waterline that looked good to pull the boats out, and headed for them. We scrambled out of our kayaks and dragged them onto the rocks, and then we realized how lucky we had just gotten - a small, paved path led down to a few feet short of the rocks, and the bank was climbable. The path led to an covered picnic shelter for one of the houses 50 yards away, and we took our refuge there until the storm passed.

Once the rain and wind had left, we went back down to our boats (above) and emptied the water from them. Now we were back on our way down the river!

Above is a shot of an island just downriver from where we pulled out. You can see the storm clouds and rain that had passed us in the background.

The rest of the trip was uneventful, other than trying to make sure we knew when we were getting close to our take-out point. The smaller put-in and take-out points on the river are not well marked, and can be hard to see if you aren't looking closely. Fortunately, Melanie was right on top of things and was waiting for us on shore.

Here is the Endomondo track of our trip. It was a great trip, and a totally different experience than the smaller rivers of Missouri - the only kind I'd ever been on before. Next spring there is a 72-mile "race" along this same stretch of river - it starts further upriver near Yankton and ends around Sioux City. I'm seriously considering doing that run, and even though it is billed as a two-day trip/race, I wonder if it would be possible to do it in one shot... 72 mi / 5 mph = 14.5 hours, hmmm....

The Kayaking Life

I was born a hillbilly in the Ozarks of southern Missouri. I have many fond childhood memories of "floating" down the Jack's Fork and Current rivers in that area. One particular memory is from the summer between my freshman and sophomore years of high school, which was the summer of 1976. My loosely-organized youth group had mowed lawns, painted houses, picked up walnuts, and picked up trash to raise money for a float trip down the Jack's Fork river. We took a school bus from Louisburg, KS (our town) to the Ozarks, outside of Mountain View, MO (where I was born). We had rented canoes, with two of us per canoe. I was with Bob Fleming, one of my school buddies, who was also a twin, and fellow academic - although he was also quite the jock, which I was not! My twin brother Kevin was with David Coltrain, another really nice jock. The three memories I have most vividly of this trip are these: on the long bus ride there, at some roadside stop for gas, the gas station store had Mountain Dew, which was pretty new to the midwest back then. Of course we all had to try it! I also remember that my great-grandmother met us where we were launching to see us off. As a typical teen, I remember being somewhat embarrassed and didn't speak with her long, and even then off to the side away from all my friends. I don't have many memories of my great-grandmother (my mom's mother's mother), but I can still see her clearly in my mind from that day. Even the awkward, misplaced embarrassment of youth has not obscured this fond memory.

The other great memory I have from this trip is when Kevin (my twin brother) and David, in the canoe in front of Bob and me, overturned on a rapid. As I recall, the rapid was very tame, and David, being the much larger passenger, leaned way too far over and rolled them over. I still see them in the water with some of their gear floating with them by the canoe as Bob and I paddled by - laughing all the way!

In all my years floating on those rivers before and since, I never rolled over. Until this year. Nick and I were kayaking on the Jack's Fork river on Sunday, June 14, following the yearly family reunion for my mom's side of the family. It rained off and on at points during our float, and at one time was just pouring rain so hard we had to pull off and wait it out for half an hour. After that break, we came upon a split in the river - the inside of the bend looked a little shallow, and the outside of the bend has clearly much deeper - and much faster, including a pretty strong current churning in to a "strainer". A strainer is a downed tree in the water, and is so named because if you hit it, it stops you while the water, and typically your boat, keeps going. Nick wisely took that inside bend, while I drifted noncommittally into the outside bend. I thought I could paddle hard and cut across the current enough to miss the strainer, but I was wrong. I hit it at and angle, and over I went, while my Pelican Trailblazer 100 (which is a kayak tub - no bulkheads to help it float) promptly filled with water as it continued downstream.

I still had hold of my paddle, which was caught on the debris under the tree. The water here was about 8 feet deep, and I stayed under after going over, working on freeing the paddle. I'm sure it wasn't longer than 20 seconds, though it seems much longer, but imagine the scene: I'm underwater in the clear waters of the river, quite visible in my bright green shirt, as Nick watches from down river a bit. He has seen me go over, but not yet come up, and can see me a few feet under the surface of the water. For like 20 seconds. He was beginning to get concerned, to say the least!

But all was well, I freed my paddle and came up, while my kayak was stopped a bit down river in another, larger group of downed trees. My nice banana-yellow iPhone 5c was in its waterproof case - somewhere at the bottom of the river, along with my cheap waterproof camcorder - which had been mounted in the rigging at the bow, but which was now missing. So I have no photos from this trip, thinking I was going to have some nice video. Oh well. Here is photo NOT from this trip, but from our next trip a couple of weeks later, on the Missouri river:

In an interesting footnote, while Nick and I were gathering my stuff and emptying the water out of my kayak, we saw a couple of canoes go over at the same spot. The next day, while on the way home, Nick got a surprise text from my phone - someone who had gone over at the same spot had found my phone while looking for their wallet!

Here is the trip as recorded by my iPhone and Endomondo. You can tell where I went over, because that is where the speed goes to 0 at the end of the map plot. :)

Tuesday, March 17, 2015

NaNoWriMo - Blacklight update!

Sunday I had a very productive day working on my NaNoWriMo project, Blacklight. I've been kicking around in my head the concept for this book, and have made some notes on plot points and characters, but haven't set down on paper (well, virtual paper anyway) a proper plot summary for the entire book. That's what I did on Sunday! The summary is 1712 words, which is an interesting number since that is a little more than what I will need to write every day in November to complete the minimum 50,000 words in a month.

It's going to be a struggle to not write any of the book itself until November, I'm so excited I want to start right now! I do have lots of details I can flush out between now and then to be able to write full steam, so I'll just have to content myself with that.

My Acer Chromebook 15

I have really bought into Google's Chromebook philosophy. I do 95% of everything on the web these days, and for the other 5% I use Chrome Remote Desktop to connect back to my iMac running at home - mostly for Adobe Creative Cloud Apps, and for my Java development IDEs NetBeans and Eclipse as well as Tomcat and MySQL. That is, until my Chromebook 15. With its 4 GB of RAM and 32 GB SSD, I can now run comfortably Linux alongside ChromeOS, and that means I now do my Java web development work directly on my Chromebook.

The Chromebook 15 is hands-down the best Chromebook I've used - fast Broadwell CPU, great battery life (I get 7-9 hours depending), full HD screen, and excellent trackpad. Only the keyboard leaves me wanting a bit, but it's by no means a bad keyboard.

For my upcoming NaNoWriMo projects, I'll be using my Chromebook 15 and the app/site Notebook for planning my novel, and Google Docs for the actual novel. I may even experiment with composing chapters directly in Notebook, and then using Google Docs to put it all together when I settle on a final chapter order. With Google Docs ability to script, I might even be able to automate that easily - sounds like more fun!