Saturday, November 23, 2013
Selfies. Seriously. What's the Big Deal?
Large parts of the article seemed to make sense, or at least confirm my preexisting biases. Which for me is the same as confirming that large parts of the article are correct.
Selfies seem to be a popular form of validation on social media. I mean, why else would you post a picture of yourself making a stupid duckface?
And there seems to be a particular set of demographics that are more inclined to doing it. Hint; you find them as werewolves in Twilight and fans of Twilight.
Some things I do get; I get the images taken of some kind of accomplishment. Hey, I just graduated! I just passed the Bar! I'm drunk off my ass in a bar!
These are images that are about something more than just yourself; you're trying to convey something of meaning or worth remembering. I can relate to that.
But the image of just yourself sticking your face in a camera lens to put online? What is it trying to say or convey?
"It doesn't have to say or convey anything! I'm just having fun! I'm being MEEEEE!"
That is more along the line of what the article said was narcissism. It's being posted for some kind of validation. "Aren't I pretty?" or "Don't I look great?!" They boil down to, "Look at MEEEE!"
This isn't a direct criticism of the behavior; it's our culture now. We love the idea of being validated by others. It's what social media is largely about. We post things in blogs hoping others will see it and tell us it's useful or great or that we're right, validating our opinions and feelings. We post crap to Facebook looking for likes or positive comments. We post things on Twitter and count retweets as affirmations that people love us.
Selfies are just another way of vying for attention.
So I'm puzzled when people blow up at this article. Sure, I disagree with the notion that selfies are a way to validate the idea that women are living up to a societal norm of what's beautiful; and I disagree with some of the characterization of what is and isn't a selfie. But it's not something to turn into a social cause or stir up righteous indignation.
I'm also puzzled when people say that selfies are "empowering." Empowered to do what? Is this a buzzword hijacked as shorthand for some cause that I've totally missed the point to? Usually empowerment means you have the authority to do something. I don't know how a teenager taking a duck photo of themselves or a guy showing how ripped he is at the gym equals authority to do anything.
There are also people who say they take these pictures because they don't fit social norms and don't care what others think of them. Which is great...but why'd you share the picture? I mean, isn't the purpose of showing something like that to seek feedback? Or are you expressing yourself in a way that elicits feedback while trying to show people you're such a badass you don't want that feedback? I just don't get it.
The only explanation I can come up with to reconcile the amount of ire drawn by this article is that people are overly sensitive to the framing of the idea; they object to the negative connotation of narcissism, or the idea that they're seeking validation in their behavior. Naturally they show how wrong this idea is by posting selfie pictures in droves with others, tagging the pictures so it trends as a Twitter topic with the hundreds of other outraged selfie-takers, in a totally not-ironic group behavior.
It's possible I'm being overly narrow in my definition of a selfie. The article had as an example a group of women in the Marines posting a picture of themselves after completing infantry training. I don't think of it as a selfie; it's a group of friends, or colleagues, or...whatever they consider themselves as a group of people having gone through and successfully overcome a big obstacle as a team. Just because your face is in it doesn't mean it's a "selfie." It's a memory to look back on.
But for people itching for a social issue to fight over, especially if they view something as criticizing something they themselves do, technicalities don't need to stop them from firing up the hate wagon.
This is simply another topic I chalk up to, "I just don't get it..." and I doubt I'm going to get any level headed, rational explanations any time soon. I'm open to explanations. But when it comes to teenagers posting pictures just because "I feel awesome!," you'll have a hard time convincing me the motive isn't a hope to have lots of people chime in and agree that yes, they do indeed look awesome, and anyone moved to disagree is asking to be dismissed as a "hater," another bit of Internet-emergent memedom that is equally vapid in popular meaning.
Do you have a better explanation for the meaning or motives behind a selfie? Is it something more than just begging for attention in a culture that prides itself on shallow attention for the sake of attention? Or is it as the article mentioned from yet another article, a way for women and younger girls to self-promote, seeing as boys are encouraged to self promote while women are being held back from doing so?
Monday, November 11, 2013
Personal Programming Projects, Not Always Simple
My own project, without getting into too many details since it's still embarrassingly amateur, is at a point where it seems to work "well enough" that it could serve as a simple demo. In the process of getting to this point I've made a few observations.
One, if you lack a good spec that maps specifically what features you want and how to use the application, you'll probably end up with cruft that does little more than takes up space. I made a pass at the source code to clear up some test calls and experimental stuff I threw in. One function was called once, and it carried a "test" notation. The function itself described what the function did but not why I put it in there. I think I at one time had an idea for the program to do something that this function would help with later, but at a point after the application took shape the scope of my project kind of changed.
Two, it's probably a good thing to periodically go through and clean up extra crap from the code. It's a lot less to search through and trace when something goes wrong or wonky.
Three, just because it compiles and seems to work doesn't mean the impostor syndrome will fade. I suppose that by acknowledging there's a possibility I am working under the shade of the impostor syndrome umbrella I'm not actually experiencing it, but that's a rabbit hole I don't feel like pursuing here. Lacking experience in the field contributes to the feeling of frustration and inadequacy; I don't know if a problem I run into is similar to something my colleagues would run into or if it's a rookie mistake. In one example I was running a rough bit of approximation math to figure out if a couple of controls overlapped, then felt hugely stupid for not thinking sooner that there would be a method built into the libraries for detecting the collision of the controls.
Google told me there was a collision detection method. I experimented a bit, but it seemed that it didn't work properly, or at least not in the way I expected. Narrowed down Googling suggested that these particular controls don't do collision detection; the proposed solution was the math route I was first pursuing.
Four, keep track of your development work, for a reminder if nothing else. Maybe more experienced developers don't need to bother doing this, but I find a personal journal to be handy sometimes. Nothing too elaborate. I just go back to remind myself of what I've done and how long it's taken to do it. Days blur together over time...the list of what I've managed to do in my sessions helps jog my memory and keep me from thinking I've accomplished nothing.
Five, keep track of your issues and goals. I was keeping paper notes before, but now I've opened a Trello board to create notes. Think of a feature to add? Create a card for it. Find a weird behavior? Create a card for it. I simply created lists to classify the issues...features, quirks, etc...and then shuffle the cards around as tasks are completed.
Trello is a list of lists, not really meant for user as a bug or feature tracker. But for my needs keeping track of issues as a series of handy lists is adequate. Maybe professionals have a better way of achieving these type of tasks, but I'm not working on a team nor working on a giant project. Do other programmers or teams use Trello for tracking software projects, or particular aspects of software development?
Six, there's more than one way to achieve a goal, but figuring the "right" way takes experience. At least, I think it does. I've read conflicting accounts of the "right" way to design the logic flow of a program; what should go into a function? How big should functions be? What should go into a separate file? Are there certain practices that work for a single- or small-team program that others would cringe if they saw it?
I recently read of an analysis of firmware used in an embedded controller that apparently ignores most of what would be considered "best practices," yet was...is...in use in a number of cars on the road. Presumably this code was written by people who are experienced programmers.
I've also read more than one case of coders eviscerating other coders work as inept or incompetent.
Is there a set formula or best practice for doing this? Or is it a learning through experience thing? Or in the end, does it just not matter as long as it all compiles and runs as intended?
Seven, programming can be difficult, and there's a learning curve to even using the tools that makes this more difficult. A very long time ago I created elementary programs by typing line by line into the memory of a Commodore 128, TRS-80 or Apple II. Later on I typed lines into a text editor, creating a single document from which an application would run (or compile, depending on the language.)
Even later on I could create a large text file that contained most of what I needed to compile into an application. Certain libraries or adjunct modules could be created in extra text files and compiled in with includes.
Today's version of Visual Studio is simply overwhelming to the uninitiated. More confusing is the fact that you don't even need to touch three quarters of the features and still create a working elementary program.
Discoverability is remarkably difficult, despite great features like Intellisense to auto-complete what I'm typing, I was unsure how best to figure out if these particular controls were overlapping; there's a method that seemed that it should work, but it doesn't. Despite an integrated environment that looks like it was ripped from a futuristic movie, I am still scouring the Internet for example code to figure out how to do what I'm looking to do.
Some parts of the code seem to work as if by magic; it's most likely a deficiency in experience, but sometimes tracing what is happening at what point in the execution of the application is difficult, despite everything in the IDE meant to help with debugging and tracing the execution path.
That's what I miss from using simpler tools and text editors. There seemed to be less magic involved in debugging as well as understanding how and why things worked in the process; I know that if I were involved day in and day out with Visual Studio things would make more sense, but as someone using it sporadically, it's still amazingly complex. I liken it to being able to make a car start, go, and stop, but having no idea how to use the A/C, stereo or even the cup holders.
Once I can finish the personal project, I'm moving into playing with Rails. Ah...a text editor to create a usable application? Let's see if that suits me better.
Eight, your small project is not immune to feature creep. This may be related to not having a complete spec created beforehand, but as my own project evolved, I find myself not wanting to show it until it has all the side features implemented. Most of them would probably not even be visible to the end user, unless something goes wrong.
It could be argued that some of the items I'm looking to implement aren't really features, but rather bug fixes. "This works well enough, unless the network doesn't exist...it needs to check and throw an error to the user if that's the case" is a little different from adding a way for the user to control what color a font is. In this context I simply have added conditions to check for before being willing to release this as a 1.0 version for the scrutiny of others.
Nine, I'll never be comfortable showing my work. Anyone can come up with excuses for why something sucks. Working around people who are very good at something, and not working in a learning or apprenticeship capacity, makes the prospect of showing something to others quite intimidating. Primarily because I have no illusion that this is great work.
Then again, knowing that this could be ripped apart with questions of, "Why on Earth did you do this?" and, "How did this compile?" as a feared inevitability also implies that there's nothing really to lose, other than ego, in facing the feared inevitable. I'm not a programmer by trade, so it's not a direct insult to my competency. It's also not something I'm paid to do, and the act of creating this means an opportunity for constructive feedback from which to learn, if someone is willing to take the time to explain why something should have been done a different way.
These are the latest rounds of observation for my little project. I don't have a release date yet; my goal is to keep inching towards completion, which I am. Progress is progress, even if it's just in hour-chunks each week...
Wednesday, November 6, 2013
Drones over Manhattan
Perhaps the most blatant illustration of word choice used to play on emotions can be found in the ever-popular abortion issue. "Pro-Choice" and "Pro-Life" are certainly better labels than "Anti-Choice," or "Pro-Murder," right?
Spin doctors want candidates and practitioners to stay on message, and reiterate the short sound bites ad infinitum. Perhaps this works with issues that people don't become invested in personally. Perhaps it works on a spectrum such that the use of these phrases still affects people despite being aware of the verbal trickery and manipulation. Or perhaps the simplest explanation is that too many people unskilled in the actual "art" of spin doctoring become armchair spin doctors, stealing dumbed-down terminology from headlines the way high-schoolers copy and paste online articles to pass off as their own work.
The reason I bring this up is the headline, "New Video: Drone Crash Lands in Manhattan" crossing my news ticker. A drone! In one of the busiest areas of New York City! A DRONE!
Drones have been in the news recently for being used to kill who-knows-how-many civilians in countries somewhere over in Theyhaveouroilistan. These are Predator drones...remotely controlled bomb delivery and video surveillance systems piloted by military personnel miles away from the target area. This is the image that is being ingrained into us both by the "See our nifty toys" division of the military and the humanitarian agencies denouncing their use.
But in New York! Our own soil? The images conjured up when I saw this headline were flashbacks to episodes of Dark Angel, where the police used small autonomous devices that buzzed about the city gathering video footage for surveillance purposes. And there have been headlines hinting that police departments would be interested in testing such technology.
Surely this would be interesting news! So I clicked on the headline.
What I got was more of a lesson in sensationalism.
As it turns out, someone took a radio controlled quadcopter with a video camera and started flying it around Midtown. After taking off from his balcony and bumping into several buildings, the copter finally took enough damage (or ran out of charge) and fell to the sidewalk, "narrowly missing" someone who called the police.
This was their drone. A toy copter with a camera onboard.
I suppose it can be, by strict definition, considered a drone. It flew. It had a camera recording its flight. Maybe it even transmitted the visual information back to a receiver at this guy's apartment, and he was flying it by the camera and not by giggling and randomly moving the control stick.
But this also puts a child's toy on par with a million dollar piece of military hardware. Or at least in the eyes of the news reporters, who in turn sensationalize it for the public, making it seem as if terrorists or big brother are hovering outside of your window to watch you undress.
There was a time when teachers and school librarians scoff at the idea of students using online resources for research; "Anyone can put something on the Internet without making sure it's true!"
They begrudgingly started allowing Internet citations as more news agencies started posting material on websites. The next thing I remember being on the banned list were Wikipedia articles, because "Anyone can post information to Wikipedia!"
Now they begrudgingly allow Wikipedia to be used as a "starting point" for research papers.
There's a taste of irony when I see how the accepted, vetted, trusted sources...such as this news channel...in a bid for ratings, and in an attempt to beat all the non-vetted, untrusted Internet sources, doesn't hesitate to skew news headlines beyond the point of being misleading.
Ratings through word choice. Manipulation of public perception through word choice.
Maybe teachers should re-emphasize the importance of the thesaurus when reviewing the Common Cores.
Wednesday, October 30, 2013
Halloween Fun: Jekyll and Hyde (Club)
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 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 |
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! |
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!
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!
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;
- Log into Twitter.com
- Click the gear icon in the upper right corner
- Click "settings" from the menu
- Click "Apps" from the left-hand menu list
- Review the applications and revoke access from anything you don't recognize
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.)
Tuesday, October 15, 2013
Project Breaks
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?
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.
Friday, September 27, 2013
First Week of Programming Re-Introduction
I'm sneaky like that.
I originally wanted to work on a project using Ruby on Rails. I've been reading Why's Poignant Guide to Ruby during off-time and occasionally during lunch at work, but the practical hands-on project I've been working on is written in Visual Basic .NET.
Yeah, I know, Visual Basic. I already explained why in a previous blog entry.
What have I learned this first week?
I'm still re-familiarizing myself with details of how things work in VB and Visual Studio. I'm no doubt making some tasks harder than they need to be; a side effect of practical inexperience. Re-learning...not as bad as learning, but frustrating when you know you've done something before but just can't remember it.
It doesn't help that I'm not focused for periods of time on the project. I tend to work on it for an hour or two a day, after coming home from the office. I get home a little late, I watch something while having some dinner, then work on the project, go to bed later than I should, wake up, yawn, and wish I had gone to bed sooner. Repeat.
The last thing I really learned was that Joel Spolsky was right; write a spec. Or for a small one-person project, take the time to plan out what you're doing. I have been doing the seat-of-pants approach to this mini-project, primarily focusing on "here's what I want it to do, and to do that, I need it to do X,..." then I tried to create X. Then identify the next obstacle and work on that. I didn't know if I was really going in the right direction so much as I was creating a series of fixes that may or may not repeat functionality or at least overlap.
That's pretty much the project summary. A lot of re-familiarization and a hint of re-planning with a few drops of wishing I could dedicate more than an hour a night to it. Is this how most software projects work if it's not your day job? Because for me it gets just plain frustrating (in addition to the frustrations of running into logic problems and figuring out why something just doesn't work.)


