Category Archives: Rant

Background

I was just thinking about things… and I came to realize a few things.

To start, I want to give you a background on me.

In the Beginning

I first used a computer when I was about 8 years old. My mom brought home a computer from work, which was DOS based. She taught me some basic commands, and suddenly I was able to navigate my way around DOS… sort of.

Then she brought home a pile of floppy disks and said something like “someone at work gave me these disks and said they have games on them. Plug them in and see what’s on there.” So I did… and to my disappointment, most of the disks were password protected. But that didn’t stop me. I spent some time guessing passwords. They were educated guesses, but guesses. Don’t ask me what my exact process was… I was 8, and I don’t remember those details. Eventually I figured out one of the passwords, and was able to play the games on that disk. So I tried the password on all the other protected disks, and it worked on roughly half of them.

That day I fell in love with computers. I knew that I wanted to do something with computers “when I grew up”. As time progressed I got more and more into video games, both console and PC, and wanted to be a programmer. Specifically, a game programmer (like so many other kids in my generation.)

High School

There wasn’t much in the way of Computer Science classes in my high school… we had a Visual Basic class and a C++ class, but most of the time they never happened because not enough people signed up for them. One of those years though, I took the C++ class. Unfortunately, it did nothing for me because my teacher was “learning as we were” and I spent most of my time copying code from “the smart kid”.

Community College

So I went to community college and started as a CS major. I took “Introduction to Object Oriented Programming using Java” – the first programming class in the major – and I hated it. Again, a big part was my teacher. She could barely speak English, she actually spent 1 entire class writing Visual Basic code on the board, just to erase it and tell us “Oh, forget all of that, that was the wrong programming language.” I failed that class and retook the class the next semester with a different teacher. That second semester, I also took Calculus 2. I still hated Java, and I got a 22 on my first calc 2 test… so I switched majors to Computer Technology – a hardware major. (The highest level math required for CT was calc 1, so I didn’t have to pass that calc 2 class for the new major.)

College

I stuck with that major until the end of MCC, and transferred to RIT. The major there was Computer Engineering Technology – still a hardware major, but we did out fair share of software too. At RIT I finally started to grasp the concept of Object Oriented Programming, because I finally had a good teacher. It was C++ that finally got me to understand, but I was only doing command line (DOS) programs. I took some of those programs above and beyond, as I finally understood what I was doing (one project eventually turned into my tic-tac-toe game for android.)

After doing tic-tac-toe, I decided to really challenge myself and make a Euchre game. For those who don’t know the game of Euchre, it’s a card game with a TON of logic involved. The game was 1 human player and 3 computer players (Euchre is most often played as a 4-player game, although variations exist for anywhere from 3 to 7 players.) I got Euchre working as a playable game, and started adding more options to it – like some of the regional rules or “house rules” that exist in variations of the game.

Beyond College

After college, I decided to make Euchre into a Windows program instead of a DOS program. Doing my first GUI was interesting. There was definitely a learning curve, especially considering I was learning from the internet and sample code. I decided to use C# instead of C++ because it seemed to have a lot more options for GUI programming. This meant that some of my code needed to be changed slightly for the new language. Since C# is based on C++, most of the changes were minor. The hard part was converting the command line output to a GUI. I played with a few other programs for a while, nothing else really got too far.

Android

Then I got into Android. I got my first Android phone in 2010, and got REALLY into the modding community – rooting, ROMs – and basically everything Android. I paid for Tasker, and eventually made some profiles in there for responding to text messages while my phone was in a car dock. (I was taking an hour and a half drive to Buffalo once a week for work, so it helped for that trip.) Then Tasker released App Factory, which allowed you to use “scenes”, which were basically GUI elements, together with profiles to create an actual app and an apk file which other people could install on their phones. This is where the first ever version of Auto Respond came from.

After realizing the visual limitations of the “scenes” created in Tasker, I decided to learn to write actual code and recreate this “app” that I created in Tasker with my own code. About a year later, Auto Respond is what it is now. Plus I’ve created tic-tac-toe, started to convert Euchre to Android, started on a countdown widget app, and have begun work on a super-secret project – which is going to be HUGE when it’s finally released. (I’ve told a few of my close friends and family about this project, and they all LOVE the idea.)

Conclusion

So today I was thinking about this journey… from computer enthusiast, to wanna-be game designer, to failure of a programmer, to writing basic command line programs, to learning on my own, to semi-successful Android developer, and hopefully in the future to successful entrepreneur and app developer.

And through all of this, I’ve been working as an IT professional for 10 years… and I’m glad. I wouldn’t want to code all day every day. I enjoy it too much. A lot of people out there say that you should never turn a hobby into a job, because you’ll end up not enjoying it as much – I agree with them.

I LOVE programming, but I would hate it if I did it 40 hours a week. Plus, if I did programming as a job, I wouldn’t want to come home and program my own stuff later. I want to program what I decide to program, not what someone tells me to program. And that’s exactly what I do right now.

Now, I know what some of you might be thinking… “Well if this idea of yours does become big, then won’t you be programming for a living?” …Yes and no. Yes, I will most likely be doing a lot of programming to keep this whole thing going. But I will still be doing what I want to do, not what someone else wants me to do. I’ve always dreamed of being my own boss, and I hope that one day that dream will come true.

Euchre Conversion to Android

I just started converting my Windows Euchre game to an Android app, and there’s already some things I miss about C#.

  1. Operator overloading
    1. In C# I can create functions to overload the =, ==, <, >, and other operators, so that I can do things like if(card1 < card2)
    2. In Java I have to create functions like .set, .equals, .lessThan, .greaterThan, etc. So I have to now change all of the == to .equals in my code, and so on with the other operators. Now I have to do if(card1.lessThan(card2))
  2. set/get Functions
    1. In C# I can do something like this:
      public string name
      {
          set
          {
               this.m_name = value;
           }
           get
           {
               return this.m_name;
            }
       }

      Then access the variable like this:

      player1.name = “Randy”;
      and
      name = player1.name;

    2. In Java, I have to create 2 functions, setName, and getName, then have to access like this: player1.setName(“Randy”); and name = player1.getName();
  3. Native Data Types: This one I’ve run into before while programming with Android/Java… native data types have different names in C# and Java. And I’m so used to using C/C++/C# that I often find myself using the wrong name.
    1. In C#, true/false values are bool, and text values are string
    2. In Java, true/false values are boolean, and text values are String (capital S)
      1. This is because (as I explain in more detail in #5) strings in Java are objects, whereas they are a native data type in C#.
  4. Naming Convention
    1. In C#, generally variables start with lowercase letters, and functions and classes start with uppercase letters
    2. In Java, generally variable and functions start with lowercase, and only classes start with uppercase.
  5. String comparison: Because there is no operator overloading in Java, and strings in Java are actually objects not a native data type, this is different too
    1. In C#, I can say if(string1 == string2) and it will compare them.
      1. This is partly because strings are a native data type in C#. But even if they weren’t, you would have the ability to override the == operator.
    2. In Java, I have to say if(string1.equals(string2)) to compare them
      1. This may not seem like a big deal, but doing string1==string2 is legal, and a valid statement, but it likely will not return the result you are looking for. This will check to see if the two variables are in the same memory location, NOT whether or not they contain the same information.
These things may not seem like a big deal to someone who is not doing the programming. A few extra letters here or there, some difference in lowercase vs uppercase, some extra functions here or there… 
But when you’re dealing with literally thousands of lines of code which need to be translated from one language to another, this is a big deal. And testing is going to be a big deal too, because I’m sure that I’m going to make some translation mistakes somewhere. 
Luckily the IDE I’m working with is VERY good at pointing out possible logic errors as warnings (like the string1==string2 thing) so that will definitely help. But this may take a while, as I expected.
And although the IDE is good with logical warnings, #4 becomes a problem with this IDE because the auto fill function in the IDE is case sensitive. So if I am looking for player1.getName() and start typing player1.GetName(), the auto fill will not find getName(). (Or if it does find it, it will take a while to find it.)
Sorry for the rant, I’m just not a fan of Java and never have been.

Airpush: no thanks!

Today I got an email from Airpush, advising me that I can use their ad network to monetize my apps. My response: NO WAY!

For those of you who don’t know what Airpush is, you may have seen it and not realized it. It’s an ad network which displays ads in your notification panel. It’s the most intrusive and annoying way EVER to display ads. I have actually stopped using a few apps because they had Airpush ads.

The biggest problem: most of the time you don’t even know what app is displaying the ad! You see this ad in your notifications and think “Oh man, what malware did I download unknowingly?”

As a piece of advice to anyone who has run into this situation: download “Lookout Ad Network Detector”. https://play.google.com/store/apps/details?id=com.lookout.addetector

It’s a free app on the Play store, and it will tell you what advertising technique is used by each app on your phone. It does not constantly scan for apps that use intrusive ad techniques, but you can run a manual scan at any time and figure out what apps are using something like Airpush. And once you find the offending app, you can uninstall the detector if you wish.

In case you haven’t realized from the rest of this rant, I will NEVER put ads like this in my apps. Any practices that have driven me away from apps in the past will surely drive users away from my apps as well, and I don’t want that. I want to make some money off of my free apps, but there are a lot of user friendly ways to do it. Airpush is not in that list.

Nexus 10 Replacement – An underdog story

In case you don’t want to read all of this, I’ll start with the bottom line: honesty is NOT always the best policy.

As most of you know from my previous post(s), I purchased a Nexus 10 from Walmart on Christmas eve. It was the normal $499.99, same as the Play Store would charge. I was having fun with it, playing Grand Theft Auto Vice City, looking at what ROMs are available, etc.

A few days after buying it, I walked in the door to my apartment with the tablet in hand, bent over to take my shoes off, and the tablet slipped out of my hand. The screen basically shattered. The tablet fell maybe 2 feet, but the problem is that it landed on its side then crashed face down onto a hard floor.

I didn’t do anything immediately, figured I’d take care of it in a few days…. fast forward “a few days”. This past Friday, I wasn’t feeling well. Called into work, called the doctor, made an appointment, and figured “while I’m out, might as well take my tablet back to Walmart and get a replacement.” I was sadly mistaken with that assumption.

Went to the doc, did some tests, found nothing. she said I probably had a virus that starts with a sore throat and ends with a cold, since that’s what’s been going around. OK cool, not totally sick, just not feeling well. Went to Walmart.

Walked into Walmart, told them what happened, it wasn’t the store I had originally purchased it from and I didn’t have the receipt, they claimed it was out of the 15 day return period, so they told me to go through the manufacturer.

When I get home, I go onto the play store to call Google. They say they don’t fix N10s, Samsung does. They gave me a number to call Samsung. Their tech support says, we don’t do replacements. Let me transfer you. He transfers me.
“This department only handles phones. Let me transfer you to tablets.”
“Oh, this is carrier tablets, let me transfer you to wifi tablets.”
“We don’t support the Nexus, Google does, let me transfer you.”
“That’s a Samsung device, they handle that.”
…I think you see about how this went.

I did this for 2 hours until I got “OK, let me make a repair ticket for you. You will be charged for this repair, because it’s a non-warranty repair.”
I said “That’s fine, I just want it fixed. I’ll pay if I need to.”
“OK, the ticket is created, here’s the ticket number, let me transfer you. Give them your ticket number when they answer and they’ll go from there. *transfer*
*give ticket number* “Oh, this is a wifi tablet, this is the carrier tablet department”…. guess what comes next…. “Let me transfer you.”
*transfer*
*robotic voice* “Please wait.” *15 second pause* “Please wait” *few more seconds* *click*

Now I’m beyond upset. Walmart won’t help, Google won’t help, Samsung won’t help.
Back to Walmart. They say go to the store I got it from, they may be able to do something. On the way to the other store, I realized the receipt is in the bag… which happens to be in my back seat.

I then go into Walmart #2, tell them what happened, show them the receipt, we realize it’s only been 11 days, not 15… they’re about to exchange it! Until they realize the charger is not in the box. I say “We can just pull the charger out of the other box and you can send me home without a charger”
“I have to check with my manager before I do that”
A bunch of arguing between me and managers… turns out they won’t replace it because it’s “neglect” and their return policy won’t cover that. I offer to buy the replacement plan that they offer. (That nobody offered me with my original purchase, but had been mentioned at this point)
“I’ll even buy it on THIS tablet, do the exchange, and buy it again on THE NEW tablet. That’s $90 in your pocket to do an exchange.” ($45 per plan)
Come to find out, the replacement policy doesn’t cover neglect for items over $150. It’s only an extension of the manufacturer’s warranty, and doesn’t even take effect until AFTER the end of the manufacturer’s warranty. So basically, it’s useless to me.

Went home, bothered Samsung and their support team on Twitter, they asked me for a ticket number, I gave it to them.

ADDENDUM: another customer at Walmart told me to take it to another Walmart and claim that I received it broken, so I went home, flashed a factory image and relocked the bootloader. So if I do make that claim, it appears as if I had never even turned on the tablet.

Saturday – I reached out to Samsung Support via Twitter again, they say “That ticket was closed. Your warranty does not cover physical damage but you can call 1-888-987-4357 to discuss repair options.” Awesome. Did some more back and forth with them and got nowhere.

Called the number, told the guy I want to speak with a supervisor. Told him I am willing to pay for a repair, I just want this issue taken care of. Of course, there is no supervisor available, so I’m stuck. Eventually the guy tells me about their repair place, gives me their number, tells me how to get Google to work with me (he tried contacting Google multiple times, but their phone number continually hangs up after the “Please wait”) and he was actually more helpful than anyone else up to this point.

Call it quits for the day.

Sunday morning – (This is where the honesty part comes in)
Went up to Walmart #3. Took the tablet to Customer Service, told them “I opened the box, and it was cracked like this.” roughly 5 minutes later, walk out with a gift card (WOO HOO! About time!)

Went back to Walmart #2 (original place of purchase) use gift card to get the last N10 in stock.

(I’m sure there’s a few small and semi-important details that I left out, but that’s the majority of the story.)

Lessons learned:

  1. Buying a Nexus device from anywhere other than the play store seems to be a bad idea. Nobody wants to support it. (If I had a Google Play order number I could have done the replacement on-line from the Play Store.)
  2. Samsung support does not know what they are talking about, and enjoys tossing people around their phone support like a hot potato
  3. If you’re going to buy a Nexus 10, buy a case. (I have one on the way from Amazon.)
  4. Walmart’s “replacement plan” is useless on items over $150
  5. And most importantly – honesty is NOT always the best policy. A return policy is the best policy. (I tried being honest and it got me nowhere.)
ADDENDUM: For the record, I will refuse to buy another Samsung product in the future, and will no longer be pushing for others to purchase ANY Samsung device. The lack of customer service that they provided was staggering, and I would not wish that experience upon anyone.
Prior to this experience, I was the main reason that friends and family purchased items such as the SGS3 (my brother, his girlfriend AND a college friend all bought this on my recommendation) and the Nexus 10 (my mom bought one because of my recommendation) and I’m sure there are other examples. Samsung has lost a powerful ally in this battle, and have turned me into a powerful enemy.

Don’t buy a Nexus 10

Just don’t do it. I dropped mine, cracked the screen and have now spent over 2 hours on the phone trying to get the right department to repair/replace the thing.

I first went to Walmart where I bought it. They wouldn’t replace it because it’s been 15 days, and their return policy is 14. Then called Google, but they wouldn’t help me because I bought it at Walmart, not on the Play Store. Then I called Samsung… about 10 times. Transfer, promise to get it taken care of, transfer, promise, transfer, promise, transfer, promise, over and over again.

I have NEVER been this upset about trying to get a product replaced IN MY LIFE. I have LITERALLY lost count of how many people I have spoken to on the phone between Google and Samsung. (I lost count somewhere around 10.)

It has been FIFTEEN DAYS! I should be able to quickly get a replacement for this, or at least quickly get approved for one if there are no replacements immediately available.

Sorry Samsung, I LOVE my Galaxy Nexus, I LOVED my Nexus 10 (for the 10 days or so before the screen cracked) but I will NEVER buy another device from you after this Customer Service fiasco.

UPDATE:
A couple things:
1) Walmart ALMOST replaced it for me, after going there 4 times and realizing somewhere in there that it had only been 11 days, not 15. But in the end they decided not to because I caused the damage.
2) I reached out to Samsung support on Twitter, and THEY responded so maybe they will do something. We’ll see.

At this point I’ll be glad to even PAY to have it repaired, but Samsung pushed me around so much… I ALMOST got a service ticket to pay to get it fixed, but not quite.

Still developing…