husband, dad, steelers fan and software engineer

I recently went on a bit of a Twitter rant with a friend over the release of Star Trek Beyond. This is the third installment in the reboot, and unequivocally the worst. My original tweet which sparked the discussion read, “Beyond was a good action movie, but it wasn’t Star Trek.”

I’ve not been shy with my friends that I am NOT a fan of the reboots. It’s not because they erased the timeline of four shows and ten movies. I actually thought that was a clever way of rebooting the franchise. I’m just not sure it needed to do that. I personally would have been fine if they rebooted it the same way that Christopher Nolan did Batman out of the ashes of George Clooney and Val Kilmer. Nonetheless, I could live with erasing the timeline if the story had been capable of standing on its own without the assistance of Old Spock. Now, let’s say for a minute I could live with this story resting on the laurels of Old Spock. And let’s say I could even stomach JJ Abrams throwing the camera all over every scene while flooding my eyes with lens flares. Even if we write off all these things, the reboots still lost all credibility because of the second movie.

The second reboot took what is, in my estimation, the unequivocal best Star Trek movie ever and plagarized the story in a gross abuse of the franchise. I didn’t like Star Trek Into Darkness at all. This was not a new movie, but it was presented that way. The decision to kill off Kirk, and then to resurrect him in the way they did seemed overly forced. Rather than be an homage to the Wrath of Khan it felt more like an insult to it. It was at this point that I realized the franchise might actually be in worse hands than when Rick Berman took over after Roddenberry’s death.

Now let me be clear about something. I’m a green blooded Trekkie. I grew up on TOS reruns and then watched Star Trek The Next Generation as it was syndicated on UPN in Chicago (anyone still remember WPWR?). Every Christmas, Easter, Birthday and even one Hanukah was marked with Star Trek action figures. I actually look back and think, oh yeah Christmas 94 that was Sarek’s year. Oh and by the way, my son’s middle name is Tiberius and my dog’s name is Dax.

Back to the third reboot. It was terrible, for a Star Trek movie. It might have made a decent action flick, but I went into a preshow intending to judge it as a Star Trek movie and it came up short. Spoiler Alert: This film is incapable of standing on its own merits. Old Spock again has to be dragged into the story in order to give New Spock any depth, even though Leonard Nimoy has passed away and all they can do is show his picture. (My wife thinks they were trying to give Nimoy a nod here, I think the dedication at the end was sufficient). Krall’s backstory was hollow and Jaylah’s was absent from the story line altogether. The story of the Franklin is never really answered for us, and yet that seems important. Worse yet is we’re left wondering, how did all these other people make it to a planet that we’re told is unable to be reached by anything less than the navigation systems of the Enterprise. Yorktown is like something out of an MC Escher drawing, except Yorktown would never be confused for art. Where was the utopianism Star Trek is known for? Where was the moral discussion of right and wrong as some crew member faces an impossible decision? The closest thing we had to any character inflection in this movie was Kirk debating whether or not he wanted to take a job that he actually applied for. Lastly, would it have been possible to write the third Star Trek movie in a series without blowing up the Enterprise? I guess we’ll never know.

As I’ve been debating the merits, or really the lack thereof, of Star Trek Beyond I find myself questioning whether or not these people can really be considered Trekkies. You may think that’s harsh, but this is scifi and I take it very very seriously. Thus, I’ve done what any true Trekkie would naturally do: I came up with a Litmus test. Here’s my formula for evaluating whether or not your friends, family, and adversaries alike are honest Trekkies.

First, if they have not actually seen every episode of TOS and TNG they are immediately disqualified. I think you can make a case that you must have seen DS9, sufferred through the misery of Voyager and survived Enterprise, but I’m feeling generous today so we’ll keep it to TOS and TNG. I should qualify this; if they have to think about it they’ve failed. I only lose track of Star Trek episodes after I’ve seen them more than 30 times. I once wore out a VHS recording of Relics.

Second, it should be a given they’ve seen every Star Trek movie ever made, period. There’s no room to budge on this. Do not accept excuses that they skipped out on Insurrection or the Motion Picture as if that’s tolerable. The line must be drawn here! This far, no further!

Third, ask them what the best Star Trek movie is? Any pause before saying Wrath of Khan should be treated with suspicion. There’s not much more I can say about this. If for some reason you disagree, I recommend you stick to Dr. Who.

Fourth, ask them what the best Star Trek The Next Generation movie is. First Contact. If you think I need to explain this, I hear the 1998 Lost in Space was fantastic. So fantastic in fact that neither Amazon or Netflix could get the licensing to offer it over their streaming services.

Five, ask them what their favorite TOS episode is. On this one I personally accept three answers. Sidebar: Top 10, 20, 25, 42 episode lists of Star Trek seem to be universally awful. Reject any list that attempts to order all the series together. Especially reject any list that actually includes a Voyager episode. For me the three TOS options I accept are:

  • Space Speed
  • Trouble with Tribbles
  • The Tholian Web

I’ve long debated adding Mirror, Mirror. In my old age I’ve become more generous so I’d take this one as an honorable mention and give the Trek-anidate a second shot to name one of my three.

Six, ask them what their favorite TNG episode is. Again, I accept three answers for this one:

  • Best of Both Worlds pt. 1 & 2 (There are times when I really think this should be the only answer I accept)
  • Unification (Reboot should have watched this and taken notes. This is how you tie in an old cast with style!)
  • Chain of Command (How many lights are there?)

Seventh, ask them what their favorite DS9 episode is. Did you think that because I didn’t require watching all of DS9 in the first test you wouldn’t be on the hook for it? Nice try. Any answer that’s not from Season 6 is wrong. Period. My go-tos are Sacrifice of Angels and In the Pale Moonlight. This is arguably some of the best Star Trek ever written.

Eighth, and this is the last one, what’s the worst episode of Enterprise? A Night in Sickbay. Sometimes I think this is the episode where Berman killed Star Trek. But hey it could have been worse, it could have been Voyager’s Threshold!

Judge the Trekkies around you. Impersonators will not be tolerated, resistance is futile!

I am a strong believer that the power of the internet is best leveraged when it is used for funny memes, pictures of cats, and that really amazing video about Tom Brady’s balls. However, I feel that I need to break from my strong belief about the internet for a moment and instead bend it to my will and rant.

Recently while chatting with a friend I regurgitated a sentiment from a tweet I saw, or maybe it was on a blog I read or quite possibly a Podcast I heard. Honestly the source doesn’t matter, this is the internet and attribution died along with academic citations. Long live Wikipedia! I digress. So this sentiment was mine, despite having found it elsewhere. What was this profound sentiment you ask? Simply that while we have all this awesome technology that resembles the Science Fiction of my youth, I do not recall there ever being so many cords… Did you ever see someone charge Data? Or plug a tricorder into the wall? Where was Luke’s light saber docking station? At the time I was reflecting I considered this as a weakness of the evolution of technology. I believed that we had not yet achieved that synergistic point where real life and Science Fiction merged in an amazingly beautiful union where neither was distinguishable from one another.

Then I was driving today and I realized that if the evolution of humanity is determined by the survival of the fittest it’s actually those still yielding cords in their vehicles that will survive. It will be the heavily corded souls ruling the road that will define future generations. Which means Science Fiction is all a lie.

Bear with me while I explain. We are all worried about teen drivers (and some half brained adults like myself) texting while on the road with their mobile devices. This fear does not seem misplaced, especially when people are carrying devices so large that they must use two hands with them. Many states have even gone so far as to pass laws prohibiting using your mobile devices while in moving vehicles. As I’m sure you know, these laws are religiously followed and obeyed by all of man kind - at least any God-fearing Patriot. I postulate that texting while driving is hardly the thing we should fear most about today’s roads. It’s actually bluetooth!!! Years from now we will look back and realize that the rollout of bluetooth was actually a genocide stunting the growth of the population! There is nothing more perilous than to be in a moving vehicle whimsically believing in the dream that your car and some other device will communicate in perfect harmony. When this fails, and it always does, you find yourself speeding down a highway (or as in my case a far too narrow country road with steep ditches on either side) trying to reconcile why two devices which say they can talk to each other simply will not work! The rage builds up inside, you dismiss the heavily federally regulated dialog that says only passengers should pair devices in moving vehicles, and you fight the never-ending battle of bluetooth hell that rages all about the vehicle you reside in. And may God have mercy on your soul if there are more than one device involved in this awful union of technology.

Bluetooth will kill us. One by one we will succumb to stupidity on the road. Only the cord bearers will survive this awful twist of human evolution. Science fiction was all a lie. Wireless and charger-less devices have no basis in our technological future. They are simply a figment of a wonderful play of fantasy that is less likely to be realized than an ice queen who sings on mountain tops. Give up, just plug your damn device in.

Congratulations if you’ve made it this far. You are part of the few, the proud, those that can read more than 140 characters on the internet. Go buy yourself a beer!

Apr 7, 2015

LemonRestBundle 0.8.0 has been released. The theme for this version is compatibility. While several significant bugs have been fixed since the last release, the focus has been primarily on ensuring that the bundle is compatible with a wide range of versions of PHP, Symfony and Doctrine. Additionally the bundle now comes with support for MongoDB and better support for other implementations of Doctrine.

Compatibility with PHP

LemonRestBundle now supports PHP 5.3, 5.4, 5.5, 5.6. Additionally the primary ORM test suite passes when using Doctrine 2.5 on HHVM and HHVM nightlies. Tests are also actively being run against PHP 7, though compatibility will not be guaranteed until after it is stable.

Compatibility with Symfony

LemonRestBundle now supports Symfony versions 2.3, 2.4, 2.5 and 2.6. Additionally, preliminary support has been made for 2.7. While 2.7 is not currently running in Travis CI, if you use it in your projects it will work.

Compatibility with Doctrine ORM

LemonRestBundle now support Doctrine ORM 2.3, 2.4 and 2.5 In general it is recommended you use 2.5 whenever possible.

Compatibility with Doctrine MongoDB ODM

LemonRestBundle now works with Doctrine MongoDB ODM! There are tests specifically for the mongo implementation and they are running in TravisCI.

Except where indidcated, all of these versions and combinations of these versions are being tested against automatically in TravisCI. You can always check the builds out here.

Update to the latest version of LemonRestBundle and let me know what you think!

Work on LemonRestBundle continues, last night I merged in support for PATCH. This is an interesting beast because there are some strong opinions on the proper way to implement PATCH in a REST API. Initially I assumed I would just avoid it rather than subject myself to the judgment of poor implementation. However, the more I researched PATCH the more I realized that I wanted to add it, and furthermore the strong opinions were largely academic in nature. The JSON Patch specification is rather powerful but also complex, I've yet to find a consuming client that actually supports this standard. What I see a lot of is more akin to the JSON Merge Patch specification, and this is exactly what I've decided to add. Truthfully the bulk of the work in my implementation happens in JMS Serializer. I need to do more extensive testing on object nesting but the basic implementation works right now. One issue to keep in mind is the current setup requires you to specify the object id when in the PATCH request. I hope to fix this in the future, but for now that's the requirement.

I've also recently added the ability to customize the Criteria object for searches.  The Criteria object is basically a collection of the query parameters and it gets used by the ObjectManager to add filtering to the findBy() command used for making collections of a given resource. Out of a set of query parameters the default implementation separates out some data for limit, offset, order by and order direction and then provides those in a standard way to the ObjectManager. The limiting factor in the initial implementation is that you might not have liked the fields I was using for limit, offset, etc. Customizing the Criteria object gives you full control over how this is handled. You can read more about how to configure this in the bundle's documentation.

I've been experimenting with generating Swagger docs within my bundle. I would expect this to materialize in the next week or so.  The technical details are already available to generate the docs, it's the descriptive data that isn't there yet and I'm still evaluating the best way to make that possible. Ultimately I'd love to have the bundle help it's users generate documentation for their APIs, eliminating yet one more detail in the management of a REST API.

Last but not least there I think it's safe to expect support for versioning, again this will largely be driven off of JMS Serializer's version exclusion groups.

Work on the bundle continues to move forward. Several folks have made contributions, all of which I am really grateful for! If you have a suggestion, recommendation or spotted a bug of any sort please open an issue over on GitHub.

tl;dr You can try out LemonRestBundle with ng-admin here.

Last week I shared that I was working on a Symfony 2 bundle that would create REST end points from Doctrine entities. I've been continuing to work on that bundle, adding features and flexibility and I decided to re-evaluate the way I was demoing it. The truth is that I didn't want to sink a lot of time into writing a demo, but I also want to do a show more functionality than just pulling down some objects from and dumping them to a page. What I want is to show the full REST life cycle, getting, searching and saving objects to an api. Fortunately there's a really great tool out there that plugs into a REST api and does just that! It’s called ng-admin and it’s from the folks over at Marmelab.

For those that aren't familiar with ng-admin, it's a tool written using Angular and it allows you to easily wire up a "stock" UI for a REST API. Like my own project, it's opinionated and convention oriented. Quite honestly it's a pretty cool tool. So I’ve hooked it up to a symfony standard application with the LemonRestBundle and configured some entities to match Marmelab’s own demo. I also pulled the sample data down that Marmelab was using and stuck it in a sqlite database. The database resets every minute, but it’s enough time to create a post and edit some comments and see LemonRestBundle in action. The really cool part is when you take a look at the demo app’s GitHub repository and realize it took three Entity classes to make the whole thing happen.

I’ve deployed the demo over at OpenShift so you can take a look and try it out for yourself. You can also clone the demo app from GitHub, run composer.phar install and try it yourself!

Links to check out: