v 0.1.42

That’s the version in the footer right now, not defined explicitly by me, but by my pushes to Heroku where the pett.io app is hosted. I ought to take a respite from it. I’ve worked far less on it the last three weeks than I did the first three weeks, but that’s still amounted to a significant chunk of time that could be better spent on a smaller project or two of more manageable scope. But the massive list of improvements will weigh on me, so I imagine I’ll try to spend a little bit of time on it everyday. I do want it to be used. I think it can still serve a purpose, even as I’ll still put that “proof-of-concept” label on it.

The project continues to serve as a teaching device for me, and the a-ha moments I get remain rewarding. I’m going to rattle off some things I’ve been working on of late. I know they won’t sound like a big deal, but I’m generally pleased to have figured some stuff out.

For instance, I’ve been grappling with the Masonry framework for displaying elements. One ongoing issue had been that the pet page montage would leave a margin on the right if the display width weren’t wide enough to accommodate another image. The usual centering techniques weren’t working. It turned out I had simply missed a simple method in the documentation.

But this was a minor issue compared to the actual loading of the images. I’m not restricting the size of images uploaded, but I was rendering the images back on the montage pages much-scaled down. I needed to store much-smaller images on the server, which for me, means on the Parse cloud. A couple of weeks ago, I figured out how to make a smaller copy via a canvas at upload time, and this helped, but I knew I needed a server-side solution. I spent a good deal of time last weekend on that, and now I’ve got a trigger on Parse that generates the smaller image. A pet page with a lot of images or the browse view of all the pets will render in a couple of seconds, instead of twenty. And the thumbnails can be clicked on to view the original image. I haven’t put any sort of elegant slider or carousel up yet because I honestly haven’t even begun to think of exactly what I want. I don’t want to just throw up some jQuery plugin, nor do I think it’s worth the time for me to come up with original code (there’s are some very nice wheels out there; I’m not going to invent anything half as nice.)

One goal for the app I had at the start was for one to be able to provide a link to a pet’s page that would not require a login. This is a single-page app, so even though I may have had an aremid.html page 10 years on my old website, having such a link to send wasn’t initially a simple task. The Backbone.js framework is still something I need to work at, and getting all routes and views to behave as desired has required some work. I believe with some fairly routine server-side routing, I could have a pett.io/aremid link that works (maybe, perhaps I’m being naive, and I’d do it right now if I thought I knew how to do it quickly). But for now, I’m happy that I can give out pett.io/#/pet/aremid or pett.io/#/pet/moksha

Major areas of focus as I move forward, at whatever rate that may be: mobile views, especially for account set-up and profile entry; profile editing; profile rendering; image slideshow. This will never be boring.

JetBlue’s baffling account security quesitons

This is a bit random. I was creating an account on the JetBlue website. They prompt for four security questions. That’s already excessive, but then they’ve got very few viable choices for me, personally. Yes, I know I can make stuff up, but answers to these type of questions aren’t things I should have to write down. Yes, I know I can make up some system so that I remember what the answers are, but…anyway…first-world problem…but this isn’t so much of a gripe as just an expression of bemusement.

  • What is the name of your favorite pet? Whoever came up with this has never had several pets. For first pet, I always put this rabbit we cruelly kept in the basement for a few months when I was 6 or 7 years old. But favorite pet? That’s a cruel question.
  • What is your preferred musical genre? How many people have one preferred music genre, with an assigned label that they would remember to-the-letter? I’m never going to remember “adult contemporary circa 1992″.
  • What is the street number of the house you grew up on? 14. But all responses must have at least three characters. 0-for-3, so far. Need to fill in 4 answers.
  • What time of the day were you born? Gosh, my memory isn’t what it used to be. How many people would know a time that they would be able to enter and recall verbatim? 0-for-4.
  • What is the name of your favorite childhood friend? I don’t know. Manischewitz. I kid. 0-for-5
  • What’s your favorite sport to watch Regardless of your level of interest in sports, how many people can reliably recall what they would have put as a security answer? With all of these questions, I would say that if one can reliably recall an definitive answer 90% of the time, it’s a horrible security question. But I don’t anything about best practices here. I just can’t image that a customer failing to find ANY of the first six security questions easy to answer is what JetBlue or any business wants.
  • What’s the name of the company of your first job?Yay, a question with an answer I can reliably recall, well, assuming I am going with my first post-undergrad job as opposed to my first job when I was 13. So, really, another question that a lot of people might have trouble answering. But I’m 1-for-7 now.
  • What year did you graduate from high school? Yes. Standard stuff there. I’d say it fits that 90% threshold. 2-for-8. I only need 2 for answers to create an account!
  • What is the name of your oldest sibling? Yes. Easy for me. 3-for-9. But how many people have an older sibling? “80 percent of Americans have at least one brother or sister’ according to numerous internet sources. So this question doesn’t meet the 90% threshold, because the percentage of of people without an older sibling is probably somewhere between 40 and 60%.
  • What is the middle name of your oldest child?Does me no good, nor for the quarter of American adults who don’t have children.
  • What was your childhood nickname?Seriously, how many people had one that they could pick? I don’t. I’m 3-for-11 with one question left
  • What is your spouse’s mother’s maiden name?Well, &#($. That leaves me and HALF of all Americans out.

JetBlue, these questions are lousy. Who came up with this? Shame on them for having a normal life, with a spouse and kids, a childhood friend, and a definitive favorite genre of music.

Contrast: Delta

I needed to change my password.

Security Question 1: What was the name of the first school you attended?
Security Question 2: What is your father’s middle name?

Two questions. Quick recall of answers. Done.

Some unfocused metablogging

The era of metablogging is deadApparently, metablogging has been dead for a decade. I hadn’t even started a public blog yet, a decade ago. I came across that image because I thought it was important to determine, once and for all, if I should be writing metablogging or meta-blogging. I’ll go with the former. A metablogging I also just came across this an 11-year-old post that outlines the following person blog categories: the introvert blog, the extrovert blog, the job blog, the specialist blog, and the advocacy blog. Guess which one I am?

One of the striking aspects of this genre is the author’s denigration of himself…

Even the author of that posts says one shouldn’t take those categories and definitions too seriously. I do have to wonder if I’d better off without this blog, or, at least, if I weren’t publicizing it. If you’re reading this, and you’re not arriving from Facebook, then you’ve seen a link on my public Twitter feed, which I link to from my website, which, itself, also links to this blog. “I have a blog, here it is.” I suppose my ideal workflow goes something like this:


var x = whatIWillThink(dave,afterReadingBlog);
if ((x.indexOf("creative") > -1) || (x.indexOf("brave") > -1) || (x.indexOf("funny") > -1)) {
console.log("Read Dave's blog");
}
else {
console.log("Maybe don't read Dave's blog");
}

I spent way too long coming up with that. I don’t want to care what you think, but, because I haven’t filtered what I’ve carried over from years ago or even the recent past, you could easily stumble upon entry #WXYZ, and that presents me in the worst possible light. And you may be thinking about hiring me. I tell myself that authenticity is valuable to me, but, perhaps, I go too far.

Perhaps, what’s worse is my unfocused metablogging in itself.

I wish I could write about what it’s like to be looking for a job right now, but I think that crosses a line. I wish I could write about what it’s like to wonder if I have a severe case of impostor syndrome or simply don’t know very much, but that crosses a line. I wish I could write about how there are three to five areas I should learn as much as I can about but have been more focused on implementing fixes and enhancements on my pet project that use technologies that don’t seem to be in demand.

I’m proud of myself. I dug in deep to figure out how to generate pett.io image thumbnails so that pages load in two seconds instead of twenty. But is that worth anything to anyone else? Again, I actually shouldn’t care.

I should change the subject.

Moksha vines. I keep recording lots of them.

Purrfect is the enemy of good

Terrible pun. And the actual aphorism isn’t even that appropriate here. I thought of titling this entry Bad is the enemy of good, but that would be a tad too self-critical.

When I was a week into developing pett.io, I hoped to have a couple of people try it out. I wasn’t looking for testers. I was well aware of what didn’t work, and I knew I’d be working non-stop to try to maximize functionality, usability, and design. I had tackled too large of a solo project for something I was going to need to present to an audience. If I care about what I’m developing, and even when I don’t, every aspect that doesn’t function or look like I ideally want it to is a source of internal strife. So I admit I suffer from Perfect Is the Enemy of Good Syndrome in my work. I deal with it by being blunt about my awareness of the shortcomings of what I’m delivering. I imagine that you would be hard-pressed to find one of the tens of thousands of project-advice-dolers (a new phrase I’ve just coined…PAD’s…Project-Advice-Dolers) who would recommend this strategy. But it’s not a strategy; it’s just my instinctive behavior.

Aside coming…I am certainly walking a tightrope here, blogging about my work process when I’m seeking to present my best self while I go through the process of finding work. Plenty of PAD’s do advise practicing authenticity, but they haven’t necessary met me. (I think I’ve just expanded the definition of PAD to include all advice-dolers. Let’s just call them professional advice dolers.)

So, I’ve got my long preface…I’ve been afraid to tell people, even just close friends, to try out pett.io For weeks, you have been able to create an account, create a pet, upload photos, and link in Flickr photos. And simply having a bunch of real data would have served–and will serve–to motivate me to keep working hard on this project. I get tired of just seeing my pets and my test data.

It’s now ten days post-Demo-Day, and this project serves as my vehicle for continuing learning while I search for paying (and non-paying) work. It would be wonderful if a few people created accounts and added a pet and a photo. I will invite people to do just that.

Speaking of Demo Day, I will toss a link to my presentation here, just for the record. Honestly, I cannot watch or listen to myself, so I offer it with no further comment.

Iron Yard-pett.io from TheIronYard on Vimeo.

Ok, one comment. I’m sufficiently embarrassed just from looking at the Vimeo still, and, yet, I obviously hope someone will see something of value you, or else, I wouldn’t be following through with this whole self-indulgent blogging exercise. Second comment–the app looks and functions a tad better than it did ten days ago, and it should continue to evolve towards the good.

Making muck out of nothing at all

That’s the best Air Supply headline I could come up with with limited brain power remaining and no time to blog.

I just spend valuable time I could be working on presentation preparation–or at least working to fix actual bugs–trying to figure out why an “Add a pet” button wouldn’t center. Obsessively. And I didn’t figure it out.

Must I remind myself…this was from last August? Time flying way too quickly at the macro and micro levels.

On a related note, I just found documentation how to create thumbnail images when saving a new image to Parse. It kills me that I don’t have time to implement that. Perhaps I do, but I have approximately 49 things that would take about an hour or two apiece that I would like to do before Friday.

The Comeback

Not a deep post about rebooting one’s self. Just a confession that I’ve become addicted to Lisa Kudrow’s overlooked 2005 gem “The Comeback” during my final, furious code marathon. If you haven’t seen it, it’s a treat you can see via Amazon Prime.

Code error fixed #7: Returning Parse database class query data via Underscore template

Haven’t had time to note #5 and #6 but skipped to #7 in the hope that I’ll revisit those. But compelled to record #7, because it epitomizes my perseverance in learning this stuff. My project must have a browse feature. The splash page has had one prominent button that says “Browse”, after all. But it was starting to look like it might not, because my attempts at rendering Parse data via an Underscore template were failing, and I got sidetracked by design issues. (I needed to focus on some design issues, yes. But this browse feature got tossed aside along with this unresolved programming dilemma.)

So, I won’t rationalize why I tried each of these, and this is just a sampling. I can’t recall. But I only had so many prior working examples in projects, and the internet doesn’t have a whole lot of examples. And I’m pulling from a Parse database, for whatever that’s worth.

$('#browse-container').append(_.template(browseView),results[i]);

Result:
No error, but no data returned.

$('#browse-container').append(_.template(browseView),results[i].attributes);

Result:
(where petname is one of the properties I’m trying to return from a class called Pet)

ReferenceError: petname is not defined

$('#browse-container').append(_.template(browseView),JSON.stringify(results[i]));

Result:
ReferenceError: petname is not defined

$('#browse-container').append(_.template(browseView),JSON.stringify(results[i].attributes));

Result:
ReferenceError: petname is not defined

$('#browse-container').append(_.template(browseView,JSON.stringify(results[i].attributes)));

Result:
ReferenceError: petname is not defined

Finally…what worked
$('#browse-container').append(_.template(browseView,results[i].attributes));

I never would have went astray with the JSON.stringify syntax had I, days ago, simply realized what was essentially a typo of an errant parenthesis, but it was one of those errors where the parenthesis wasn’t what was throwing any error.

Anyway, moving on…

meta-blogging note: I must get off of this theme and wordpress.com or pay to be able to customize. This looks horrible.

Let’s put this puppy to bed

I don’t want any design critiques. It’s not finished yet. Demo Day is Friday. But I’ve got to say for the record that I’ve never worked so hard on anything. And 70% of my time has been spent on Javascript code, things like figuring out how to get dates to save to Parse and arrays to render directly to the page without loops but just a simple space after commas…and promises to deal with asynchronous events…I didn’t really get the latter working as I’d like. Keep mind I’m just team of one, so I’ve been dealing with:

  • Parse database
  • CSS/Sass styling
  • Bourbon/Bitter/Neas styling
  • Javascript
  • jQuery
  • Underscore/templates
  • Masonry/layout
  • Account management view
  • Splash screen
  • Parse pic list mgmt
  • Flickr pic list mgmt
  • Vine list
  • Backbone framework
  • Responsive design
  • Presentation TBD, somehow encapsulating all of this, and my overall background in coding and in life, in 5 minutes, this coming Friday

So…not quite done yet. But I need to at least put myself to bed. Moksha has already gone to bed.

pett.io for the soul

Despite what I posted last night, I am really bleeping proud of myself. Every bit of code I write that works immediately or works three days after I got suck, is a bit I feel good about. If you detect some dissonance here compared to what I’ve previously written, perhaps there is, but there is plenty of room for both immense self-doubt and exuberant confidence to co-exist. Exuberant confidence? There are moments, and I’ll live-blog it right now, that think, even if no one else does, that it is remarkable that I have an app, which I could use to:

Upon seeing the following page in Flickr…

Within 60 seconds…

2. Create a pett.io account

3. Add the pet’s name

4. Add the user’s Flickr accont

5. Add the tag the user uses to tag their pet

6. Click View Page and

I’m not finished yet by a long shot. But I can do this…look at the kitty!