Thursday, March 22, 2012

SSL certificate issues resolved

So after a bit of back-and-forth with Jumpline support (which was as supportive as hoped if not quite as responsive as hoped), I now have SSL certificates on my website (click here to see). This is cool, but the solution was not as obvious as hoped.
Apparently, the VDS manager (the software that manages my virtual domain) has some, well, quirks about how it expects things to behave. In particular, it requires that the certificate be actually named "server.crt" rather than whatever I defined in the httpd.conf file. Thanks to Andrew and Geoff at Jumpline, who went in and actually modified my server config to make this work, things seem to be working correctly now. It took 2 days of their futzing around to actually make it work, but it does seem to be working.
The other main problem is that I can't use multiple certificates as I'd hoped to do. I could do a wildcard certificate but that costs in the $400/yr price range - something I can't swing financially. So I wasted $12.99, which is sad but at least not an expensive object lesson. Still disappointing.
Now, though, I can begin to work again on OttoJotts for Facebook. I'll have to see how well it goes. I'm putting in a breakpoint, though - if I don't make progress for more than a day that I actually work on things, I'm going to punt and work on the web version instead.
Let's see what the next several days holds in store for OttoJotts...

Tuesday, March 20, 2012

SSL certificates and my web host provider

The past few days have been proven quite difficult - unexpectedly and disappointingly so. Here's the general gist of what's been happening.

I decided that rather than write a full front-end web interface for OttoJotts that I would be sneaky and do it for Facebook, creating a back-end for beta testing. This would give me a leg up on the FB version of the game and would still let me write most of the code needed for things without doing web development directly (I would be able to leverage some of my other efforts to help). I kept getting a failure from FB, though, and found out that it was likely based on secure browsing and a lack of SSL support from my game.
So I went online, found a cheap solution from NetworkSolutions ($12.99/yr for an SSL certificate - that's a good deal) and bought one for my FB subdomain. Installing it has been quite the exercise in frustration, though. For some reason, adding OpenSSL to the Apache service is simple. I just had to click on something, fill out a form, and bam! Installed. The certificates, though, are a different beast.
First, none of the documentation I've found match my configuration. I've been searching for, literally, days trying to find out what arcane incantation I'm missing to make this thing work. There are two separate configuration files - httpd.conf and ssl.conf. In different directories. Which one do I edit? What changes do I need to make to them? The information online seems scattered and confused - and doesn't match the configuration I have.
I've submitted a ticket with my hosting company to enlist their help, but some of the documentation now has me concerned that I won't be able to add a separate SSL certificate for my main site (the WWW one) and one for my subdomain (the one I'm using for the FB game) because of how OpenSSL is configured. Overall what I would have expected to be something that should be bog simple (because of the need for secure connections in an increasingly-connected world) has turned out to be the epitome of legacy manual entry. The only thing that would make it worse if I had to submit it on Hollerith (punch) cards! As it is, it's fortunate that I know vi as well as I do and can navigate my way around a Linux system.
I will update as things progress but for now I can just say that someone (not me) needs to figure out how to make this a lot simpler than it currently is.

Off-topic: "Microsoft" questions in interviews

I've been seeing a bit of traffic around the net these days about the so-called "Microsoft questions" and whether they provide any value (most recently I think I saw this on a blog). The questions most often raised is "shouldn't my code speak for itself?" and "what could this possibly tell you about me?". The answers are - "no" and "a lot". Let me elaborate.
I've been on the hiring side of the table for over 15 years. I've interviewed several dozens of people and hired only a handful of that total number. Did I pass up very qualified individuals? Yes. Did I make what I think, even in retrospect, were good decisions? Yes. The reason is that I picked individuals who answered those "Microsoft" questions well. Not always correctly, but well.
The reason behind the "Microsoft question" is to find out how someone thinks. I couldn't have cared less if the candidate got the right answer. Rather, I was looking to see how that person thought and approached the question. One of my favorites was the following:
Sherlock Holmes is looking for a new Dr. Watson. You are placed in a room with 3 light switches. Down the hall is another room where Holmes is sitting with a single lamp. One of the 3 switches controls the lamp. You can't disassemble the switch and can't see or hear anything outside of the room.You can play with the switches as long as you want but when you enter the room with Holmes you must tell him, with 100% certainty, which of the switches operates the lamp. How do determine which switch controls the lamp?
I love this question. But why? Because it requires the person to think creatively and "outside the box". I don't really care if you get the right answer. I want to know how you think. I always ask my candidates to think out loud so I can understand what their thought process is. How are they attacking the problem? Are they finding the obvious and hidden information in the question?
I was a Windows developer for several years and one thing that I learned pretty quickly was that if you didn't want to just make another version of Word with the Microsoft Foundation Classes (MFC), you really needed to find alternative solutions. MFC didn't always do things in ways that you thought it would. It often required some creative solutions to make the MFC do what you wanted. If someone approached the problem above with a straight-forward approach they'll fail. Same thing with MFC (or any other technology for that matter). Which means they'll get stuck easily and need some help. Which means that I or one of my leads would be spending a lot of time trying to teach this person how to solve problems, not just work through the hard problems of architecture and design. Just today I was talking with a friend about his experience in Drupal and the same thing came up. You can't always rely that things will work as advertised and sometimes you need to get your hands dirty to solve the problem.
The hardest thing I ever did on Windows was override a common dialog. If you're not familiar with these, suffice it to say that they are provided by the framework at a very low level in the system and that, while they provide some override functionality, what I got asked to do was not part of the traditional customization flow. I got some of the problem solved with some straight-forward work but it took some pointers from a senior developer to lead me to the final solution which required not one but two different class overrides. It wasn't just something I could Google (even though Google didn't exist yet). The final result was a small thing but it made the product manager happy and I learned quite a bit about how Windows messaging worked. Would someone unable to approach that problem above have been able to solve it? Possibly, but it have been far more challenging - and time-consuming. And for those people who just give up on the Sherlock Holmes problem they would have come back to me saying it was impossible (even though it apparently wasn't).
My wife's workplace has something of a mantra that there was one qualification you had to have and the rest they could just teach you (theirs was financially-based). I follow that same kind of mantra, but it's around creative thinking. If you can think creatively, you can usually work your way through or around almost any obstacle that pops up from a development perspective. Sometimes the answer is "can't be done" but if you have more than a hammer in your tool bag you'll have a lot of options to try before you come up with that answer. And that's what I like to see - meeting needs creatively and growing my developers.
So are the "Microsoft questions" important? The answer has to be "yes". They show that while you may not have the skills, you have the mindset to attack problems from a variety of directions. It shows you're tenacious and don't give up. That you have a variety of ways of framing a problem. To me, they're not just important - they are pretty much the entire interview.

PS - If you're interested in the answer the Sherlock Holmes problem, just post a comment and I'll vet your solution or send you the correct answer.

Monday, March 12, 2012

More updates

I don't want to sound like a broken record, so thankfully this post avoids that. I've been working on cleaning up the back-end PHP code for OttoJotts so I can create a basic web interface that will exercise the two-player game. One of the concerns at this stage is that I'm going to spend too much time on the iOS front end and less on the actual game play. By working on the back-end I'm focusing my attention on the actual play. This also has the benefit of being the basis for a web interface for other things.
I've almost completed moving all of the actual working code into functions that can be called from either the iOS-supporting PHP code or from an HTML page directly. Given my (relatively) intermediate skills in web development, I'm hoping I can get something written up without killing myself to provide access. Some things, like creating an account and such, I'll pass on as that will require some effort. Rather, I'll just do that manually for now and then later work on getting something coded up that's pretty and usable.
Overall I'm pretty happy with how things have been going. I know that there's an added security benefit to what I'm doing, which is definitely a good thing. PHP has had a reputation for being somewhat "security lax" but there are things that you can do to harden it. Part of this work is doing that hardening.
So, things are progressing even if not visibly. I'm hopeful that I'll be able to get this hammered out in the next few days and then I can work on the web interface. Then I'll be able to test the two player game code and, if everything's working well, be good to go. This does make me wonder, though, whether I should just do a web interface iOS app for the two player game and get the single player game out there. So do an OttoJotts solitaire version now-ish, get the web version working and then write a web UI wrapper app for the two-player game since I'm finding the two versions are radically different. Need to think this one over a little bit...
Until next time...

Wednesday, January 4, 2012

2012 Updates and Such

So I totally suck at updating this thing in any reasonable sense. It was a very busy period since February of last year through the end of the year. My son, Andrew, was born in April and a lot cascaded from that event, as you'd expect. Summer vacation was then upon us and a lot of things cropped up meaning that nothing happened with OttoJotts. Then the new school year was upon us and then Halloween and then Turkey Day and then Christmas (holy crap where did December go?!) and then New Year's. Wow.
So now it's 2012. The end of the world will be upon us in 352 days so I better get cracking on this game. What's on tap for right now is finishing up the two-player games which are started (mostly it's just friend management right now) and getting out Alpha 4 with those and then getting the rest of the functionality into Alpha 5 so I can get Beta 1 polished and out the door. The goal for Alpha 4 is to be out to testers by the end of February, Alpha 5 by Memorial Day, and the final game by Independence Day. What? You don't measure your year by holidays?
So that's the plan. It looks good on paper and may actually be do-able. We'll have to see. I just feel that there's an awful lot left to do and this really, sadly, isn't my full-time job. It's not even really a part-time job what with playing dad with the kiddos and stuff. Hopefully I'll be able to devote some more time to getting this project done. I've only got like 5 other ideas I want to get working on before the world ends in, *checking* yup, 352 days.

Sunday, February 27, 2011

New OttoJotts UI Ideas

I was in the shower today getting ready to pick up Cathy from a birthday party (no, not that one - we unfortunately missed that one *headdesk*). This was not her cousin Zavi's party in Laramie but my best friend Dan's son Matthew's 6th birthday. It was at Chuck E Cheese's and now that I've wasted far too much time with off-topic over-explanation, let me get back to the point of this post - user interface ideas for OttoJotts.
So while I was in the shower I began thinking back to the days when I used to play Jotto and what usually had to suffice for Jotto sheets when we'd exhausted our supply. We opted for legal pads, a ruler, and a pen. So this made me wonder - what if I made the UI look like a legal pad (or at least just lined paper) and then had all of the buttons and letters be handwritten? I think it might be "retro", but I think retro is hip these days (it's so hard to tell sometimes). PLUS, it's something that I, with my limited graphic artist skills could likely pull off. That was a definite benefit.
I think it would be very cool to have a slick UI like, say, Words with Friends, but I'm just NOT a graphic artist. Been there, done that, got my wrist slapped. I may just need to accept my limitations on this particular point (not that I ever thought I was a graphic artist). What does this mean for Alpha 4? Absolutely nothing. I'm sure I'll find ways to try to derail myself from actually working on code and work on the cool new UI, but it needs to wait until Beta 1. The alphas are all about functionality; betas are about polish. So that's kind of the thinking for, say, April. And I've got a cool idea for the badges, but that's later as well.
I guess we'll see how well I can keep this "shiny new toy" on the back burner. I've actually managed to get most of the friend and game creation code done and in, which was surprisingly smooth. There's still a lot of hardening that needs to happen, but I think that once I get into that mode it will be straightforward to do pretty much the same thing to every file. Plus, I need to make the code a little harder to exploit, which I hope I can get done with a minimum of fuss. Let's just hope I can keep up some of the focus here to make this project FINALLY successful.

Saturday, February 26, 2011

Decisions, decisions

So after sleeping on it last night, I have a plan. Scary, I know. I've always planned on integrating OttoJotts into Facebook as well and, since I'm going to do that, I think I need to release the game with 2 player games. First, as I mentioned in my previous post, I don't think there's really enough solitaire content to make the game compelling for 1 player. The 2 player game is really where it's at and, when I honestly think about why I did the 1 player game version, it was mostly to vet the concept and test the subsystems. Now that the 1 player game is mostly complete (sans hardening) it's time to really get into the 2 player game. I need to remind myself about the success that Words with Friends had and it's only a 2 player game - there is no solitaire game available.
So, with that said, I've recommitted myself to finishing the bloody thing with 2 player games available. I've been a bit down about the lack of progress and I'm sure that's what's going on (plus it's been a bit tight financially at Chez DeVoe). I think the need to make a bigger, better splash with OttoJotts is far more important than trying to get just something out the door. If I put out a piece of crap (fart apps, anyone?) then people are less likely to trust that my follow-up games are going to be any good. As the first app from the "studio", I need to make sure that it's a good one that people will think is good quality and good value for the money (if not excellent). Then, as my other apps come online, they'll be more inclined to get something else from me.
What this all means, I guess, is that I'm back on the initial track. After a reasonable night's sleep, I actually have some ideas for handling the game creation. Yes, it will take a little time to get it sorted, but I think it will be cleaner in the end, re-use some code (which is always good), and still meet the needs that the 2 player games require. So, back to the salt mines.

Friday, February 25, 2011

What to do?

So I've been having a bit of crisis of faith on OttoJotts. I think the game is pretty fun and should be enjoyable for total word geeks like me. The concern I'm having, though, is that as I get further and further into the two player games, the more things crop up that need to be addressed. For example, most recently I realized that in order to do two player games I need to revamp how the games are set up - and that they'll be different for 2 player than for solitaire. This, in and of itself, isn't what's causing the crisis, but rather it's the whole process. I've been working on 2 player games all this year. I haven't been doing it full time, but I've spent upwards of 2 weeks of actual time (80 hrs) working on it and I keep finding whole new sets of things I need to do before I can move forward. So now the question is - should I keep moving forward with the 2 player games and have them available at launch or should I launch the single player (solitaire) games and then, in an update, add the 2 player games?
I'd say that a fair portion of the games in the App Store are single player. You might be able to challenge someone to beat your score or something, but in general the two player/multiplayer market isn't quite as prevalent. So having 2 player, competitive gaming would be a differentiator for my game, but the time it's taking (or at least seems to be taking) is making me wonder if it will EVER get out.
Currently I'm still torn on what to do. I'm not sure that the single player/solitaire game is going to be compelling enough to keep someone playing. There's not enough there yet (achievements, etc) to make it something that a player would come back to over and over again. The graphics need to be redone to make it look a bit more professional (any graphic artists willing to work on a royalty basis out there?) and the game play needs to be cleaned up and the app hardened overall (error handling, etc). So I've still got at least 2 weeks of work left to do all of that, even if I dump 2 player games for now.
So, what to do?

Saturday, February 19, 2011

Been WAAAAAY Too Long

Well, it's been a LONG time since I've posted, but we've had a LOT going on here. To give a quick run-down:
  • The 9-5 got interesting at the end of the year as my contract may have ended abruptly. Thankfully it didn't, but it was still quite a bit of shock that it might have happened.
  • The spousal unit got REALLY sick. Sick to the point where she's still on short-term disability from HER job trying to recover. And when she does recover, she likely won't have said job. *sigh* She's been overly prone to illness lately because...
  • The spousal unit is PREGNANT! Yeah, trust me - it was a surprise. A wonderful one, no doubt, but a surprise nonetheless. SO much to do and so little time. Due date is May 2nd and his name is going to be Andrew Ximun William. Yeah, we're sort of into two middle names. His big sister is just thrilled that she's going to be a big sister. :)
Other than that, the work I've decided to tackle for Alpha 4 is the meat of the project - two player, server-based games. That's requiring a lot of doing both PHP and Objective-C, but things are progressing. I've gotten a lot accomplished over the past few days, getting friends lists into the database and retrievable. I just finished creating accounts/logging into an existing account code. Took longer than I'd hoped but it came together nicely at the end. I'm storing hashed passwords (obviously) in the DB, but when I looked at the size of the hash I calculated half the size it really was, so I couldn't log in (because the two hashes didn't match - I wonder why?). I finally got that sorted out and things have progressed wonderfully since then.
Today has been a day about friends and creating games. I've got code in there to randomly find an opponent who's similarly rated (I'm using a modified Elo system for rankings). The idea is that you'll play someone who won't completely blow you away - unless you choose a friend who so far-outclasses you that it's ridiculous. Good thing is that Elo takes that into account and more than 400 point ratings differences tend to result in no change (as the result is practically guaranteed).
Searching for an opponent by their email is almost there as well. I just need to hook up the iOS code to do the query, but the PHP is solid on the back-end. One thing that I haven't done yet and I really need to make sure happens before release is to bullet-proof the PHP back-end. PHP is generally derided for being not-as-security-rich as some other technologies. If you've got pretty confined entry/exit points, though, I think it can be pretty solid. Regardless, in the interest of getting Alpha 4 done and out to testers I've neglected that, but it will need to happen for Alpha 5/Beta 1.
Also thrown into the mix is a new website design. I think I'm getting a lot closer to actually finishing this bloody project and I thought the old design (while state of the art in 2001) has not aged well and was in sore need of replacement. I've gone with a Wordpress front end, but I need to tweak the hell out of it to make it more aligned with my ideas. There are some things that I'm not grokking from the posting/pages side of things with WP, but I'll beat up on it once I'm done with Alpha 3.
So, that's it from here for now. LOTS happening, but hopefully this will be done by May and I can take my paternity leave in the knowledge that I've got my game in the App Store paying for at least some of the diapers we'll need to get.

Saturday, October 2, 2010

Alpha 3 Release

The announcement on Facebook!
It's official - I just sent out Alpha 3 tonight. I wish it were a little more solid, but I've been testing it for a while and it seems stable. I've had a couple of bugs that I haven't been able to reproduce, so I'm going to spend a little time this next build working on using the Build and Analyze functionality. The next version is going to be HUGE, so it's important to get it all working solidly.
As I posted previously, the UI and game play changes for Alpha 3 are pretty good. I've added difficulty levels (making the game a lot easier to actually play), and the UI is cleaner. I've also captured some things and sent it over to a designer friend I'm hoping will be able to help with the graphics and the layout. I feel like there are places where it's pretty good but that there are far more places where it's just clunky and not working at all.
Of course the big thing is that this should let people play a little more frequently as the game won't be quite as impossible as the original. Jotto was a pretty niche product (and my mom and I were firmly centered in that niche), but I think it just couldn't really excel as a game because of it's difficulty. I expect that the game will be much more approachable now and to a wider variety of people.
There is still one thing I need to sort out with the word list, though, which is creating a simple word evaluation page so that people can rate words as Easy, Medium, or Hard. That should help segment some of the much harder words from casual players. I'm hoping that some of my Facebook friends will be able to help parse the list (it's pretty extensive) and provide a basic clumping of words by difficulty. It should be a quick change to the code to enable that in the code.
The next big step (and the next Alpha) will be to have two player games, which entails a TON. I need to get user accounts set up, figure out how to deal with people who change phones but want to keep their information, creating friend lists, getting multiple games working, and, of course, manage the basics of having a server-based game as opposed to a device-based one. Definitely a big challenge, especially the back-end piece. Still, I'm hoping that I'll be able to get it done in time for Christmas - that's my big goal. Hopefully before Thanksgiving - that would be awesome.
So, now that Alpha 3 is out the door, I guess I better get working on Alpha 4!