Monday, February 20, 2012

Fringe-tastic

Fringe is really in high gear it seems.
And I'm always trying to get caught up with the week-delay on Hulu.
So much happening lately on the show and its all good.
So that even an episode like the recent s04e12 welcome to westfield that could have been just a fun mystery/monster-of-the-week was still driving the larger story.

What I really liked was how it reminded me of other stories I've enjoyed (twilight zone, scifi/horror/zombie films, supernatural, etc)
Being trapped in an apparently deserted small town
People are going insane, "infected", looking like zombie/mutant, raid the sheriff station for guns
Effects occurring in cycle (i thought of silent hill)
Surroundings disappearing, approaching closer (reminded me of langoliers)
Even the beginning of the episode had an X-files feeling with cars suddenly dying on a backroad with radio interference and lights above similar to a UFO

So I enjoyed the classic scifi themes while also building the main story of Fringe this season (david robery jones, the timelines/universes, different versions of olivia and walter)

Friday, January 27, 2012

Downtime continued

It's frustrating to not be able to keep a production app live without restart/redeploy for very long.
And so the saga of the last 6 months or so continues...

First with slowdown and constant garbage collection, memory dumps revealing mostly JSF objects and session data containing it.
Restarts of app server did not help, shortly after going back into constant full GC.
Similar behavior was seen in the past with a JSF bug causing threads to hang on Hashmap.get with full GC but these threads were not observed this time.

Then intermittent page rendering issues were found across multiple apps (funcionality not working, pages showing sections multiple times, javascript and page syntax errors).
Also logs showed frequent new unexpected errors from page actions missing data.

Able to replicate rendering issues externally and not directly from the app server.
Investigation of page html source showed the same html content delivered multiple times partially and becoming jumbled at the end.
This may explain the unusually large session/JSF objects storing bad page state data.

Further investigation and testing found the problem to lie in the network, specifically recent security updates.

It was a long process to find the cause and solve.
I can only guess what the fallout will be from the downtime and possibly junk/incorrect data flowing to/from the servers.
But I'm just glad it wasn't another bug in the app code for once.

Thursday, January 26, 2012

I Hate JavaScript Frameworks

Or specifically I hate JavaScript framework debates.

To start, I wouldn't call myself a JavaScript developer.
I've used it for years, especially with great libraries like JQuery.
And I've learned what I needed to make some nice UI look/feel.

But when it comes to debates on MVC JavaScript frameworks, I'm not sure what to think.
I'm thinking non-JS, especially non-JQuery, devs are the ones pushing toward frameworks.
I've done fine with JQuery.
Yes, building JS heavy web leads to JS bloat and custom JS for each page/section/function.
And yes there are lots of options/libs/plugins (as with any lang) and it's nice to standardize.
But I need to see the use cases/dev time/readability/maintainability etc improvements to buy into a JS framework.
I can guess the benefits, but at the same time I can also picture the downsides.
The web is changing constantly, and will the JS framework you lock into still be in dev in a few years.

And then there is the push for everything-as-a-service.
I get this too, especially useful to avoid duplicate functions across teams.
Do I want to just split up the backend into web services with just html/css/js on the front end?
Do I want to walk away from webapps? Well I'm a Java dev after all.
Not to say that I couldn't, but would I enjoy it the same?
To be continued...

Monday, January 23, 2012

Reading

Started two new books from the library,
Outlander (which I haven't gotten far in but so far it made me guess the title could be Pride and Prejudice and Portals)
and an Asimov collection including Pebble in the Sky and short stories (from 1950)
After making my way through the robot series, I'm moving onto the empire series and this was the only one at the library, would need to request others

TV return

So good to have shows returning, epecially Fringe and the podcast
And what a comeback!
It returned with what should have been the season break finale s04e08,
and it was worth the wait.
A return to classic fringe (like a best-of mix)
With crossing universes, shapeshifters, the bad guy (david robert jones), the observer.
And we saw almost all the characters return in one episode, however different they are in this timeline.

Deploy Woes

Another all-day-deploy with a list of issues to learn from.
I was mostly in a consulting role for this dev work other than some cleanup, but I should have taken more thorough code reviews.

1. Not commit testing/debug changes, such as removing a needed config or adding a debug dialog
2. Re-releasing during deploy should not happen. This means the new code changes have not been through QA at this point.
3. Make sure all resources are ready to be deployed, to avoid spending hours during the deploy
all day deploy
4. Make sure you have test data needed for proper post-deploy testing (that is not defective/false-positive). For example, an account that fails internally but external users can access the service fine.

Most of this is about preparation, like having the QA dry run be as close to production as possible. And having someone to organize/push for this.

Friday, January 6, 2012

Zambie new year

I have a ton to catch up on, as usual, in the months I've been away
Mostly I've been in the coding cave, with my head down, working away

But I was gifted Dead Island over the holidays and I've been playing it a lot
Definitely fun, lots to do and enjoy
Picked up both Killing Floor and Trapped Dead recently, but haven't much on those yet

Besides some Dead Island on New Years, also watched the start of Season 2 of the Walking Dead
I'm sure I'll have plenty more to discuss on it as I get through the season (especially compared to the comic). I was actually surprised when Carl was shot, I completely forgot about that in the comic. Such a good show.

And to round out the zombie new year, I was surprised to see that there are still games available for Zombie Master (and it can still be played on this POS comp)

Saturday, December 10, 2011

Backlog 3: DB, JS, Bad Code

I'm not a DB admin or DB anything, I'm just a dev
So it's no shock I have tons to learn about databases, especially Oracle
And so I was surprised to hear when Oracle would ignore indexes
Based on stats/sampling of data to determine if the index would be useful. But the sample picked might not be representative, leading to a bad plan and a SLOW query.

Recent converting of Richfaces to JQuery, attempting to use a newer JQuery than the version packaged with Richfaces. Found it needed to be loaded before Prototype but couldn't change the JS load ordering with older Richfaces version. So solution was to just remove Richfaces components which removed dependency on Prototype (so it wasn't loaded anymore).
Then multiple JQuery versions could be loaded properly using no conflict.
And the Richfaces components, like a modal, could be replaced by JQuery plugins.
In the end it worked out, but after many attempts to fix the script load order.

Another pain point that has persisted is rounded corners and being restricted to CSS2 (using flying saucer and meeting older browsers). Also annoying are browser optional display of background images on printing (seen in IE/Firefox and needed to be configured in page setup).
A nice feature I was able to use with Flying saucer for PDF rendering was image caching by url. Instead of fetching images remotely, load them from a cache by url. Especially useful for generated images (not stored to file - my use case).

I've mentioned it before, but the lone developer is dangerous,
especially without unit tests or code reviews or good sample data for testing.
How bad can it be? How about killing a production server with an endless loop?
Not just a slowdown, I mean dead and out of use.
How about causing an all day investigation taking up tons of resources?
And what is the cause? A simple condition not checked for.
It just took the right set of data to break the algorithm.
But I guess the lesson is to expect the edge cases/bad input since people are messy and defensive coding is important. And unit tests!

Backlog 2: PAX, TV

Finally catching up on some PATV and DnD.
Watched the PATV s03e01 on PAX.
Also watched the DnD videos on youtube from PAX prime 2011 with the always great Chris Perkins from Wizards of the coast. It was entertaining, but overall not as great as previous. Lots of talking with less action and the music was distracting.

Also finally signed up for PAX East in Boston and booked a hotel room.

Enjoying Fringe and the Fringe podcast.
With only 1 episode left before the 2 month break.

Also watched Supernatural (on Hulu!)
and what? no more Castiel?!
The Leviathan and black ooze reminded me of Venom or XFiles (both alien references).
Also the body duplicates / dopplegangers reminded me of earlier episodes (covered in this wiki)

Backlog 1: Computer Bug

Another bug on the computer referenced in this older blog post

To review,
It caused ping.exe traffic on port 18504, repeating sometimes every 20 seconds, and requests random IPs with the browser sometimes opening random pages as well.

Anti-virus was dead for many tried. Existing was AVG but also failed for Symantec. Sophos and MSE found nothing. Malware bytes found some leftover/trace malware (defender.exe/svchost.exe). Super anti-spyware found a rogue dll.
None of these helped, the problem persisted, with the ping exe running whenever the network was connected.

I researched and found some references that sounded familiar related to Java.blacole. And although there was an older Java JDK/JRE on the system, the browser plugins were up to date.

In the end, I just formatted and reinstalled. It was long overdue anyway from the last rebuild.
And now it is back, cleaner, up to date, and working (using MSE now).