Wednesday, October 30, 2013

Halloween Fun: Jekyll and Hyde (Club)

My family (and by family I mean not only my wife and son, but my parents as well) came to the city for an early birthday celebration, and part of that visit was a "dinner wherever you want."

This of course leads to a series of minor hijinks in its own right, as is typical for the way life moves along. I thoroughly enjoy Halloween, horrors, and general spookiness, and my Mom is not a fan of many of the places my wife and I typically enjoy, so I thought I'd finally try the haunted scary house themed restaurant near the Port Authority (with the conveniently located A-C-E subway line only a short walk away...like, across the street from the restaurant) that I'd been eyeballing whenever I happened by that area.

I thought it was called the Jekyll and Hyde Club. I'd even seen a vehicle driving around Manhattan with skeletons and zombies, making it seem like it could be a cool experience. My parents, as part of my birthday, sent some money along with a note to get in their club membership so we could get seated more quickly.

I don't often go to Times Square. It seems most New Yorkers don't need to elaborate on this explanation, but for those who aren't living here, I'll just say that my idea of fun isn't having to shove through a mass of shambling tourists and leave it at that. I kept putting off getting the membership until my wife came to visit over Comic Con weekend, when I knew we'd probably, at some point, end up going through Times Square.

My wife looked up the restaurant for some information. This was when Google said the restaurant was permanently closed.

"That doesn't seem right," I said. "There were people soliciting guests outside not long ago."

She noted the address and said, "We could take a look and see, just to make sure."

We started heading to the address when I realized this was not the restaurant I thought it was. I was actually thinking of Times Scare, and the Jekyll and Hyde Club was something totally different. Whoopsie.

When we arrived, we discovered that no, it was not closed permanently. It was quite busy, as a matter of fact, with a very, very long line to get in. We weren't looking to have a meal; we just wanted a membership. We talked to the guy controlling the line at the entrance, and he pointed us to another door that led to their gift shop/exit.

It was at this point that we found a contrast to another restaurant that offered memberships; when we first went to Bubba Gump's in Times Square, we were offered their membership; one of the bonuses was to get early seating. We pay extra for the membership, we get to jump line.

Both the doorman and the girl at the front desk said we could get a membership, but it would not allow for us to jump line that night. "It wouldn't go over well with the people in the line," said the doorman.

We assured them that wasn't our goal, but rather we were preparing for a return trip in a week or two. It was a little off-putting to be reminded that we were paying for a privilege that was essentially worthless upon joining, however. I suspected they wouldn't have minded us using the membership card for discounted and members-only purchases in the gift shop, though.

Upon joining, we got a few items to designate our membership status. One, a cardboard membership card; I'll admit, I was a little disappointed that it was cardboard since that meant it would be less resistant to damage in the wallet. I was hoping for a plastic card. But as long as it serves its purpose, I suppose that's good enough for me.

In addition to the card we received a pin and a huge certificate of membership; like, posterboard sized. The pin was a nice touch; but I don't normally wear pins. The giant certificate was puzzling to me because it was rather impractical. Theatrical flourish, perhaps? If so, it fits with the theme of the restaurant.

Fast forward to the dinner. True to the promise of the membership club, we showed the doorman our membership card and he pointed us back to the same door leading to the gift area, instructing us to show the clerk the card. We were then pointed up a set of stairs to be seated by the hostess.

The skeletons seemed to be a nice touch.
The restaurant is filled with various statues and knicknacks that at a glance seem to be for gloomy ambiance.

The case has skulls and heads. The Pharaoh's mask reminded me of Stargate.  

Turns out many of these objects are animatronic.

And the ancient dead king spoke English pretty well, too
A giant elephant's head, a mermaid, an organ-playing skeleton, a gargoyle, even a werewolf took turns doling jokes and birthday wishes. There were also a few announcements over the loudspeaker from the security department warning people not to eat floor meat, as it was a trick from the people living under the stairs to lure club members to their death.

In addition to the speaking knicknacks and statues were costumed actors engaging the diners in character. We talked to an assistant to Dr. Hyde and a "social director" for the club. I can only imagine how awkward it must be for them to have uncooperative guests, and imagine they often do encounter them. I don't envy their jobs at all, but they do add to the ambiance.

After a few rounds of the talking statues a live show was performed on a stage below us.

Rise! Rise! And shine!
The restaurant was definitely geared for a spectacle, like a Gothic dinner theater. The food was decent; not outstanding, but definitely not bad. My son actually ate most of his fried chicken and mashed potatoes, as did my father with the same order. The tomato-based sauce with my cheese tortellini (pomodoro?) wasn't my favorite, but overall not bad at all. We also had nachos as an appetizer, which were also good but not great (MORE CHEESE PLEASE!) in my opinion.

Oh, and I got a signature glass with an order of a Zombie. I like getting signature glasses at themed restaurants.

The theatrical display, the ambiance, and the actors were pluses. The biggest drawbacks were the prices and our waitress.

Don't get me wrong; this was only slightly more than Manhattan expensive in terms of restaurants, and there were five of us at the table bringing a bill to around $200. This was quite a splurge, one I don't anticipate repeating for a very long time! But it was to be a special birthday dinner and apparently my parents had been saving up for the occasion. The menu had a note warning customers that the bill adds an extra $3 per person as an entertainment fee, on top of the Times Square food tax (read: tourists tend to pay extra to eat in Times Square.) For most people from my home area, this would be quite a sticker shock. On the other hand you have to think of this as not just dinner, but dinner and a show. Then the pricing makes a little more sense.

Plus I got to keep the signature glass.

I should also note that the desserts my mother and wife ordered were, from what I was told, "Awesome!"

The other drawback was our waitress. Service was beyond slow. The actors talked to us before the waitress. We at first thought another table was being a pain, as we thought we saw her taking several plates back to the kitchen. But even factoring that in, it really was taking too long for her to get to us, and another waitress (hostess?) came to take a drink order for our table to "help her out."

When she did come to our table, she didn't really pay much attention to our table. Rushing, perhaps? Distracted? Uninterested? Even when she asked about dessert, my mom said what she wanted, and the waitress replied with, "I'll get a dessert menu."

I can understand the menu may be for others at the table to look at and opt to order from, but the way she said it came off sounding like she ignored my mother's order. I found this annoying at best.

I prefer to think of incidents like this being isolated one-offs; the waitress could have been overloaded, perhaps it was a bad night, perhaps the kitchen was causing problems. I don't know. My opinion usually goes full-anger if there's a repeated pattern, and since this was a one-time visit I can't tell if there's a pattern against which to judge. So this one visit marks the service as "annoyingly slow."

The last thing to mention would be the gift shop. It, too, carries the Gothic horror theme, decorated with items such as traveling trunks stamped with the White Star line (Titanic history, anyone?) and Dr. Jekyll's name. The walls had bookshelves that doubled as hidden doors, probably to the haunted house attraction we didn't buy tickets to. There were a number of interesting Halloween-esque trinkets available, with discounts for members and some items marked for purchase by members-only.

Overall it was a good experience; I'd have to say that the entire meal was meant to be an experience, rather than just a meal. It was definitely a fitting prep to the days leading up to Halloween.

Friday, October 25, 2013

I Made a Podcast!

I've been experimenting with a few creative outlets.

The blog is one obvious endeavor. I get to express myself into the great nothing; sure, few people will see it, but it still exists. It is something that in a way affirms I was here. And I had opinions. I'm very full of those. And what are blogs for if not to tell the world what you think and why you think you're right?

Another side project is programming. I've always had a partial attraction to it; I want to create applications, websites, things that are useful. Yet I've been held back, ironically, by my lack of knowledge. I end up feeling inadequate, and quite frankly, too stupid to actually accomplish something. I've been making tiny steps with my current skunkworks application project but keep questioning myself the entire time, feeling that if a "professional" programmer saw it he or she would wonder what kind of neophyte baboon could have created such spaghettified crud, let alone something that looked like that and still compiled.

Which re-reading I suppose is somewhat ironic, since the project I plan to take up after this one is going to be based on Ruby, which doesn't compile. But that's besides the point.

A third project I've toyed with starting is podcasting. There was a time I thought of trying my hand at being on radio; after all, I'm opinionated, I'd like to think I'm reasonably articulate, and if you look at pinheads like Sean Hannity and Bill O'Reilly, they're proof that intelligence is not actually required to do well when broadcasting your opinion.

But like so many projects, this was kind of a daydream. The company I'm working for puts out a podcast on an irregular schedule, but I eagerly listen to it as it's being recorded. I had a vague idea of what was involved in creating a podcast and setting it up to distribute, but never fully dove into the steps.

My manager periodically checks in asking how the job is going and what is on my mind. One day I brought up the idea of podcasting, and he said he'd help out.

Rather than keep waiting until the "perfect moment" to do it, I borrowed a page from the "how to write a book" podcasts I've listened to in the past. I just did it.

I set a time to record with Pete, he set up some software to record a Google Hangout, we came up with a topic...a theme, really...presentations. Because part of the goal of doing the podcasts was to improve public speaking skills. And we talked for about half an hour about presentations.

A little cleaning, adding some intro and outro music, and after much fiddling with establishing accounts, I managed to get uploaded and configured as a podcast!

There's not much of an audience. You can count the downloads on two hands, actually. But that's kind of freeing at the moment because there's not much chance of anyone complaining about how offended they are. And at the moment we're trying to establish what kind of podcast it is. Geeking After Dark is basically "geeks discussing their lives," which could be about just about anything. Because we're geeks. And we're talking about our lives and stuff that interests us.

In addition I'll be working to get some of our coworkers recorded, to hone interview skills. There's room for improvement...but to be honest, as first shows go, I think the first one wasn't all that bad.

I'm a little nervous about advertising it with only one episode on the feed. This one episode doesn't really define the whole planned series; it's...well, just one episode. Things are going to change, things will hopefully improve.

In the end, I did it. That's the important thing. It's not perfect. But I did it.

Like my blog...I'm not a great writer, but I'd like to think I'm improving. And for a long time, I didn't do this because I was afraid. I was afraid it wasn't good enough. That I wasn't good enough. After many months of blogging, I still have hardly any audience, and maybe that's a sign of my lack of skill. Or it's a sign of my lack of marketing prowess. But the important thing is I did it.

And my programming project. I have an almost crippling sense of inadequacy when it comes to m programming skill. And I'm a green newbie when it comes to programming...all the time I could have been creating things as a hobby were squandered on other things. Until I finally decided I should do something about it. And I did it. Well, I started it. It's a work in progress. The important thing is there is a project file on my hard drive that compiles. I did it.

And now I have a podcast. I don't have much in the way of validation that I'm doing something right. Or wrong. I just decided I wanted to market myself and my opinions. I wanted to do it. And now...I did it.

Cross something else off the bucket list.

If someone reading this blog happens to be curious, the podcast is Geeking After Dark. You can read about it at the Geeking After Dark blog, and follow us on Twitter. Or search for Geeking After Dark on iTunes.

Listen to us and leave comments on the blog! Constructive feedback is welcome!

Sunday, October 20, 2013

Hi! I Recommend This Site, Twitter!

I recently had a few emails pop into my inbox from Twitter; notifications from my Mom direct messaging me. That in itself was strange since she rarely uses Twitter.

The message consisted solely of, "Hi! I recommend this site <link>"

Of course that had an actual link embedded.

My first thought was that malware was hijacking her system or my parents had given permission to a third-party website or application to post to Twitter on their behalf. She's using a Macintosh, so while it is less common, it is still possible her system had malware hiding on it.

I emailed instructions to check and revoke third-party application access to my parent's Twitter account;

  1. Log into Twitter.com
  2. Click the gear icon in the upper right corner
  3. Click "settings" from the menu
  4. Click "Apps" from the left-hand menu list
  5. Review the applications and revoke access from anything you don't recognize
She emailed back that she followed the directions and nothing was listed. That sounded plausible given that she rarely used Twitter in the first place.

I verified with her that she had antivirus running (she did) and told her to run a check on her system.

A few hours later another Twitter DM appeared. "I advise to visit the link <link>"

This was followed by another link a few hours after that, the text of which more closely resembled the first message. It was at this point that it occurred to me my reflex was to assume the system was compromised; I had grown up in a computing period where the home computer ran applications, not "the cloud."

It appears that we've given up control of many of our services and accounts; we trust companies to keep our information safe. This was an example of when this trust goes awry.

The messages must have been originating from someone logged into the account from an unauthorized location; I emailed my parents and told them they needed to change the password on their Twitter account. I got an email back a relatively short time later that they were going to change it, and I haven't had another DM from their Twitter account.

I started searching around the Internet. Surely, if this is a spammer attack of significant size there must be some mention on the Internet about it, right? Maybe Twitter is even doing some work to isolate and block the spammers?

The results were disappointing. I found little, if anything, to go on. I actually found only one article that directly addressed the wave of spammer DM's and advised changing your password as a post-discovery fix.

Another article made mention in passing of this particular spammer attack, but primarily made reference that Twitter had changed something preventing DM's from using links to non-authorized URLS. The article went on to say that the URL blocks were actually acknowledged by Twitter to be a bug. Even so, the spammers were working around it by linking to other tweets (apparently that was working for them.)

Indeed, monitoring a search for the phrase "I recommend to visit the link" on Twitter didn't take long to surpass 1,000 found instances. 

Seeing as the popularity of the Twitter platform isn't about to go away soon, it would be nice if they had more options in place to protect your account. I tried searching for 2-factor authentication, a feature I use on Google already and while it can be annoying, it definitely adds a layer of security that not only keeps others from breaking into the account but also notifies you when someone attempts to break into the account. When I try to access my GMail account (or other Google service) from a computer or application not already authorized for access, Google sends a verification code to my phone. I must enter that code within a certain period of time or the token expires.

Twitter kind of hides this feature. Once you log in and click on the gear, then settings, click on Security and Privacy. From there, select "Send login verification requests to <phone number>". They already had my phone number entered from another setting change I had entered so I would assume that if you never set it up before it will ask you to enter the phone number. In my case it simply sent a text message to my phone saying that it could send messages to that number and the website asked me to click yes or no as to whether the message arrived (why didn't it send a verification code? I don't know...) before asking me to re-enter my password to verify that I wanted to make this change.

I know 2-factor can seem like a pain; I myself was hesitant to use it until I was pushed by policy implemented at work. But once it was in place we began to get reports of people having attempted break-ins on their accounts; these attempts would not have been known if it weren't for 2-factor being implemented, or at least not known until the damage was already done. It was then that I started using it on my personal accounts.

In this age of outsourcing the storage of personal information to social media I've come to see that it is imperative we take measures to protect our online identities. That includes the use of the annoying but useful 2-factor authentication.


Tuesday, October 15, 2013

Project Breaks

Sometimes life gets the better of you. I knew time was passing without having put any blog posts in the queue, but I didn't realize how much time had passed. It was one of those, "It's been awhile since I wrote something into the blog...I should do that," type of deals. It was easy to put off since I didn't have an audience clamoring for fresh posts to read.

But still, I didn't like leaving it too long.

The truth is I've had a couple other things going on. This past weekend my wife came to the city and we spent three exhausting days running around New York Comic Con. Panels, cosplay, panels, shopping, and of course, some more panels. My wife went home with some gifts for my son, like a recent issue of Nightwing signed by Kyle Higgins and some t-shirts to show off at school.

She was ecstatic about having seen the cast of Walking Dead; it was probably the only TV-show panel that had the majority of the cast on stage, and they really seemed like awesome people.

This week the office is hosting our remote employees in the community, developer and systems administrator groups. That's a lot of people in our office space, pushing us to capacity and then some.

In yet another bit of news, just before my wife came to town, a coworker and I started recording a podcast. We had been discussing it and coming up with topics to use in the program, but kept putting it off. Finally I kind of made the decision to just up and do it; we recorded the day of our company town hall, held bi-weekly, so we could use that as a kind of reminder of when to record. It's not perfect by any means; we recorded on the cheap, using headset mics and recording over Google Hangouts (since we were remote and couldn't work in the same room.) We definitely could use better microphones, and we may have to experiment with audio processors to properly clean things up. But if we waited to get things just right we never would have ended up actually getting it done.

We recorded, he cleaned up the audio, and when I could sneak in some time here and there I worked on the album artwork and configuring a blog, the hosting account and the iTunes feed after doing some tiny post-editing on the MP3 file. I just got these things working; as I told my coworker, the programming side project I've been talking about was put on hiatus and I was hoping to get the podcast posted within a week of the recording, which I miraculously did, despite also telling him that I was going to try to get the podcast worked on over the weekend but realistically I wouldn't get much done over Comic Con weekend, as I knew it would be exhausting.

All of this comes down to the point of the post title...the need for breaks. Sometimes things come up and priorities shift. We all get the same 24 hours in a day, but there are times where the things we want to get done have to take a back burner.

The Month of the Busies isn't over yet. I have family coming next weekend in preparation for my birthday-when-it's-not-my-birthday. I'm not sure how much I can get done in that time. And of course this happens to be a birthday where I need to get my license renewed, meaning another trip back home in the near future. All of which tends to interfere with getting things done.

On the other hand, taking a break from my projects may mean returning to them with a renewed sense of purpose and energy. Plus, I'm experimenting with podcasting as an outlet for creativity. I'm not sure where it'll lead but it might feel rewarding. Breaks in routine can be both a source of anxiety ("I'm not getting anything done!") and source of perspective ("The world didn't end despite not having finished XYZ when I wanted to...and look what I made instead!")

I suppose I can chalk up several "me-time" projects now. The personal blog. The podcast. And the program. The biggest challenge will be scheduling them to fit into the same 24 hours that up until now I've been complaining about fitting only two projects into!

Tuesday, October 8, 2013

What Makes You a Better Programmer?

I wrote previously about my dip into the pond of programming after taking a bit of a hiatus.

Every time I look at the lines of code I've written I question whether there was another way I should have done it a different way. Should this be in a subroutine by itself? Is there an easier way to do this? Am I missing something that would be obvious to an experienced programmer?

I'm not sure if the second-guessing is a symptom of learning or a symptom of my own lack of confidence. Perhaps it's a little bit of both.

What I've generally been doing is pushing the application to do what I want it to do, to a minimal degree, while making some small notes about things I should do later. Little things like actually checking if a network connection was made rather than assuming it got the expected responses the applicatoin needed, and not overwriting a file of cached data with an error message from the servers. Better error checking. Wiping test assertion and debug message boxes sprinkled into the code.

I'm trying to make something functional to the point of demonstration.

I'm trying to make scaffolding, a facade; something good enough that I can go back to smooth the rough edges.

This also means that I'm cutting corners. I didn't write a spec. Only after making significant progress to a working application did I stop and create a pseudo-spec of how I wanted it to work. By not putting in the planning I'm creating things on the fly, and so the application logic probably isn't as clean as it could be.

It feels like it's close do the "demonstration" status. But doing it the way I have...feels amateurish. I think I pictured a "true programmer" as not going through stages like this, just whipping out functional code from the get-go. They get an idea in mind of what they want, sit down, and just keep ripping through function after function until a shiny, properly functional application pops out of the compiler.

So how do I become better?

I've heard some say that you just get better by doing. Want to become a better programmer? Program!

I never really believed that. Not fully; I think it has merit to keep in practice by doing something, but only if you do it correctly. If you are doing something incorrectly, you're simply reinforcing doing it incorrectly.

I told my manager that I was working on a project to enhance my programming awesomeness and he seemed glad I was working on it. I didn't get into much detail on the project...I wanted to wait until I had something to show. I brought up looking at my old projects and being appalled at the sloppy coding.

"I hadn't even sanitized the input! Sure, it was an internal project, internal network, and the chances of something bad happening were slim, and I put the whole thing together in four months, but still...even in the notes for the project I acknowledged these shortcomings."

"Well, at least you knew of the problems."

Maybe part of being a better programmer is realizing the shortcomings in your program.

What are the hallmarks of becoming a better programmer? Recognizing issues with your programs? Being able to sling lines of code without a second thought and have it compile the first try? Simply spending time programming, programming, and programming some more? Or are there other things that make you better (and how do you measure the baseline for improvement?)

Wednesday, October 2, 2013

So You Resell Your Software, But Don't Support It?

I ran into an interesting problem recently that left me with a rather poor impression of a company. I won't name them...simply because you have to be on my "burn that ridge with napalm" list...but perhaps there are others that have run into similar situations.

This particular software is one we use every few weeks for a rather important company function. Upon launch, it checks for an update; this tale begins with one such update. The most important machine in the chain ran the update. The application launched.

Then it crashed.

Relaunch. Crash.

Restart. Log in. Launched, crashed.

Uninstalled the application. Re-ran the install. Launched, crashed.

Well, dammit.

Dual-booting saved us at this particular point, but afterwards I tasked myself with getting it working again as it should. After running through logs and searching for leftover cruft from previous install attempts, I was stymied.

Next step; Google. I was mildly surprised when searching for the product by name I had barely any appropriate hits. I should have realized this was a sign.

Next I went to the vendor's site and searched for their knowledge base. Instead of a repository of repair information, it was documentation for how-to's and tutorials. In fact I don't think I ever found a "solve your problems" list.

Maybe it was a corrupt installer. I looked for their downloads page, which only had a couple miscellaneous plugins available and were of absolutely zero use to me. At this point I'm thinking, "What the hell?"

Okay, next step, contact support. I despise phone use; email gives me a reference to go back to, and I can easily share what's transpired if I need someone else to take over. I located an email address and sent details of my issue. For some reason this was met with a reply from what looked like an out of office auto-reply from a company trainer. Are their tech people also the trainers?

Fortunately someone else replied from their company fairly soon after. We traded some messages before he said that there was an issue they were now tracking with that version, and asked if we could install the previous version.

"Sure! Where can I download it?"

He sent a link. I clicked it. "You must log in." Dammit.

Ummm..."register"...click.

Name...email...why do they require my mail address and phone number? I just want to download this bloody installer and be done with it!

Submitted the request, but instead of the usual "Check your email, hosebag" reply I got a page telling me they had to review my request. Wha?!

I emailed the tech what I ran into, and he replied that he asked that team to expedite the request but they couldn't find that we were eligible for support.

...wha? Keep in mind the software was put in to control a system in our new office that had literally just celebrated...that day...it's six month anniversary. We were actively using this system. I doubt we'd be out of any reasonable support window.

"Are you a reseller or did you get our software through a reseller? If so you'll need to contact them."

I was surprised. YOUR company name is on this. You have a potential fix for a release of software that looks like YOU broke. What exactly is the harm in giving me this solution?

I sent messages to the person that did the original installation and found that yes, we had acquired the software through a reseller. I contacted their support, summarizing my previous exchange. I got a message back with the older client attached along with a note that they were changing something on their side to revert to an older version of the software when updates were polled.

I installed the older client...and it worked.

So the original company apparently resells their software without rebranding, and the reseller acts as a gatekeeper for their clients' updates. I wonder how many requests they get when someone is trying to troubleshoot a problem and wasn't aware the install came from a reseller?

More to the point, why is their support information and client software behind a registration wall? As far as I know the software is useless without extra server sauce. It's certainly not important enough to lock it away. I just need a problem solved, and your name is attached. If you're doing it for marketing purposes, congratulations, you ticked me off enough to not want to talk to your salespeople because I just wanted to solve a pressing problem. Did I mention I hate arbitrary roadblocks to getting an otherwise simple task accomplished?

Here's the thing. When I have a problem, I just want it solved with minimum hassle. At the time of the original failure, I was pushing a critical deadline. Asking for more information for your spam list was not winning points with me (good luck sending mail to that office that may or may not exist at that address, by the way. It's a jerk thing to do, but it kept me from getting more irritated.) What a reasonable company would have done is worked to make the customer...who already associates your name with what was becoming a growing irritation...happy. Because, presumably, it was your code in the first place. Otherwise you're outsourcing your reputation.

Which is fine, I suppose, if the resellers are stellar in the first place. And the reseller here was minimal hassle, fortunately. It was just that I, coming into the situation, didn't realize I had to contact a third party to handle the issue.

"But what if the reseller had custom settings in their deployments, so the original company couldn't give you their Clint without breaking things?"

That's a reasonable reply. If I were in charge of that project, though, I'd still look for ways to protect my brand and make it easier on the end client. For example, skin the program with a theme for the reseller while relegating your software to a plugin or codec. If possible, register the software in a way that you know XYZ uses the software but it was purchased through reseller ABC - use a version code somewhere that you'll know that is from a particular reseller. I'd still be irritated, but it could save some time instead of tricking me into trying to register for another absurd paywall.

Last thought: I really hope while you're outsourcing your reputation, you at least have a lot of active communication between your tech support and the support departments of your resellers. I'd hate to imagine how irritating it would have been to be forced to have a drawn out back and forth with a third party reseller only to eventually discover your code was broken at the originating vendor.

I'd probably have named you in this post if that happened.