Thursday, March 11, 2010

Steve needs a job

I attend a couple of job clubs.  Monday night I met a guy named Steve.  Steve needs a job.  Lots of people need jobs, but Steve's need is a little more urgent than most.  Please look over his background and ping me if you have any leads for him.  I can send you his resume and put you in contact with him.

Steve has a BS in Aviation Management from Tarleton State.  He worked in aviation for a number of years before that industry started shrinking.  He's done several things since then.  He has a strong background in media relations and production.  He managed a planetarium.  He's done substitute teaching.  And he's been a customer service rep--managing relationships with long-term customers.

Steve is smart and very well spoken.  He is very personable.  I think he would do a great job in meeting and talking with people, and maintaining long-term client relationships.  I also think he would excel in managing small and medium teams of workers--in pretty much any environment.

Steve loves the outdoors.  He is a hands-on guy.  He's a nice guy.  It would be very hard to not like him.

He just moved to town from Colorado.  He was only there for a few weeks.  Before that he was in North Carolina.  The unemployment rate is much worse in NC, and he has had some significant periods of unemployment.  That's depleted his savings pretty badly.  He needs to get to work soon.

He is in Austin right now, but he would move again if necessary.

Do you know of any position that could use a friendly and attentive manager, or manager-in-training?  Customer service manager?  Customer relationship manager?

Please let me know.

Wednesday, March 10, 2010

Adblocker and the death of web content providers

ArsTechnica recently ran an experiment to block content from users who were blocking their ads.  They wrote up a nice article explaining their experiment and why they ended it.  It's worth a read, if you are interested in the internet at all.  Go ahead, I'll be here.

C-Net posted a well-reasoned response/editorial that is also worth a read.

I'm a technical guy.  I have a patent on a web marketing technique (it's a little out of date now, but it drove fantastic SEO for my company for a long time.)  I'm trying to get interviewed for an IT position that would be responsible for managing the advertising platform for a major company.

Several years ago I converted to Firefox full-time and installed Adblock and NoScript permanently on all computers that I have influence over.  I'm glad to see that we are finally having a public dialog about this.  I'm surprised this has taken so long.  But from what I'm reading it appears that ArsTechnica and C-Net do not fully understand the problem.  I'd like to explain the problem to you and offer a way forward for the web-content industry.

The tipping point for me was the day my antivirus software alerted on a banner ad that was attempting to install a trojan program on my computer.  I was on CNN.com.  I decided that if CNN.com couldn't be trusted to keep their advertising partners in line then I was going to have to just block the advertisers.

ArsTechnica, C-Net, and CNN, your advertisers are serving viruses and other malicious code.  Not all the time.  Not every day.  But too often.

The internet is much like sex.  Your content is being inserted into my computer.  I shouldn't have to draw the pictures for you.  I'm responsible for protecting myself.  You've proven to be untrustworthy, and blocking your advertisers is the only way that I can protect myself.  Adblock is the condom that I'm putting on you, in order to protect myself.

That's not quite an accurate description.  The ads you display are not hosted by you.  They are hosted by an endless array of ever-changing advertising companies.  These companies go to great lengths to hide their identity with false domain names and other tricks.  So your readers have no way of knowing who you are bringing to bed.

Thank you, but I have no interest in participating in your orgy.  I'm interested in your content, and I know who you are, so I will allow you to run your content on my computer.  But your buddies lurking in the shadows do not get a turn.  Understand?

We are currently on a trajectory for this to continue to escalate.  That will get ugly.  Good content providers will go out of business.  Good people will have to resort to ever-more nefarious tactics to safely get the content that they want.  I would like to suggest that there is another course.

I'm not turning off Adblock until you prove that you, and everyone you bring to bed, can be trusted.  No one speaks for the Adblock user community, but I believe that many others feel like I do.  Trust is the fundamental problem here.

In a practical sense, the problems are:

  • Advertisers are hidden and unknown on your site.
  • Advertisers have too much latitude in what code they run in their ads.
  • No one is monitoring the advertisers' IT practices to make sure that they are not hacked.
  • There is no feedback mechanism for when accidents do happen--and we can't pretend that hackers won't get in once in a while.

This flies in the face of conventional internet wisdom, but the best solution I see is for you to move the advertisement servers into your domain.  You take responsibility for the servers (security and content scanning.)  You actively scan and limit the types of code that your advertisers can run before you run it.  You establish a webmark or legend to show people that you are taking responsibility for the code that you run on your readers' computers.  And you establish a full-disclosure policy to alert readers when there are security breaches.  That full disclosure policy needs to name the advertisers, who have to come out of the shadows.

Technical people will need to meet and discuss what types of content are allowed in web ads.  I want tracking cookies banned, for instance, but that might be negotiable.  But the experts should talk it through and agree on a language/function by language/function basis and establish a permissible standard.

We could work together to establish an open-source project for software to scan advertisements before they were approved for serving.  I'm sure that many volunteers would show up to help code that for free for you.  That could be part of the webmark, or whatever.

You guys, ArsTechnica and C-Net, are technical thought leaders.  You can reach out to the various leaders and help establish these standards.  If you don't, then no one will.

(Update: CNET is now running an article discussing the precise numbers of malware exposures being served in the advertisements on several major sites.  My read of the chart is hundreds of thousands of malware infestations through the advertisement platforms on the New York Times, DrudgeReport, and other stalwart sites--over a period of SIX DAYS.  The major advertising platforms are all compromised.)

Good luck.

Tuesday, March 9, 2010

Pray with Friends status update and questions

PwF is coming along nicely.  I've discussed it with a few people.  I know a few people who are worried about my progress, so here's a status update for you.  And I have a few design questions that I would like some feedback on.

PwF has three main pages:
  • Journal
  • Pray
  • Messages
Each person will log their prayer requests and praises on the Journal page.  Then they will click through to the Pray page, where they will be prompted to pray for a few of their own praises and requests, and many of their friends' requests and praises.  Then after they finish praying they will click through to a page where they can easily send messages (public or private) to the friends that they prayed for.

There is also a Settings area that will probably be just an expand-collapse box on the Journal page.  And there might be a Donations and/or Membership page--that's a significant part of my questions, below.

All of this has to be coded in several different languages/technologies:

  • HTML
  • CSS 
  • FBML
  • Javascript
  • PHP
  • Ajax (using either XML or JSON)
  • MySQL 

I know HTML and CSS pretty well.  I understand how Javascript works, and I can get along very well just by searching through various web help sites.

FBML is Facebook's propietary version of HTML/CSS, and I've heard it is easy (I've ordered a book on it, but it hasn't arrived yet.)

I've picked up a lot of PHP in the last week or so.  I succeeded in writing some relatively complex PHP functions late last week.

I won't have to do a whole lot of direct MySQL programming, and there are lots of good books and websites that can give me what I need.

The last technology left is Ajax.  Yesterday I picked up a book on using Ajax and PHP together.  I worked through the first tutorials and read the heavy theory sections, and I get it.  I have some working sample code to adapt, and I'm quite confident that I can work out the rest.

The three main pages of PwF each use a different technologies:


  • Journal - Lots of Ajax and FBML, with some simple MySQL

  • Pray - PHP, with a little bit of complex MySQL

  • Messages - Almost exclusively FBML



  • I have a working prototype of the Pray page.  It is wicked fast and very clean.  I'm using some simple MySQL in the prototype, because I haven't designed the final database table structure yet.  I need to build the Journal page before I finalize that.  But the MySQL is modularized and will be easy to update.

    I'm working on the Journal page now.  I have it laid out in my head.  I know how I want it to work.  Now I just have to find the right Ajax code to build my first prototype.  I'm going to start that after I finish this blog post.

    I have employed Christy to do some of the non-technical writing for me.  She is looking up verses that praise God, and verses that reference common sins.  These will be semi-randomized and included in the prayer.  She's doing a good job of getting that stuff together.

    I have reached out to a couple of artists and asked them if they would be willing to draw a logo and some little images for me.  They have been busy, and I need to follow up with them on that.

    The basic application could be ready for me to start integrating into Facebook (writing the FBML and running in a sandbox on Facebook's servers) and starting testing on in 2-3 weeks.  There is only one significant issue that I don't have resolved: the revenue model.

    Questions
    All of these questions are assuming that you would be interested in keeping a prayer journal in Facebook, praying for your friends and having them pray for you, and sending them appropriate messages of encouragement or offers of assistance after you pray.....
    1. The application has to have some way to cover costs to pay for the web hosting and other expenses (and, yes, I would like to make some money, too.)  I have thought of four different ways that people could help fund this application.  Which would you prefer, if you were using this application?:

    A. A 'Donation' page.  Some kind of reminder would probably appear on the Journal page asking you to donate.  The donation would probably be through a PayPal 'Donate' button (because I already have a PayPal 'Donate' button that I could easily slap in there in 2 minutes.)

    B. Buy little images to go with the messages you send after you pray.  I'm not sure how much the images would cost, but somewhere in between 5 cents and 25 cents each.  You wouldn't have to buy an image every time, or at all, even.  This would work like the birthday greetings images and songs that everyone sees but almost never sends...  Except these would be more inspirational looking original artworks.

    C. An annual membership fee.  Probably you would get to use the application for free for some period of time, and then you would get prompted to pay.  I really don't like making this mandatory, but if it were mandatory I would keep it very low.  Like $5 per year.

    D. A combination of images and a membership fee.  So the images would be there and the membership fee would be optional.  You could choose to buy the images one at a time.  Or you could pay the annual membership and get to use any of the images for free.  In this case the membership fee would have to be more, to cover for the many people who don't pay.  Maybe $12 per year.


    2. If you prayed for Johnny's hip replacement on Monday, how important would it be for you to follow Johnny's progress next week?  Can I expect you to just click over to Johnny's profile page in Facebook to see how he is doing?  Or do I need to somehow make sure that you get updates from Johnny about his hip?  Would you want the updates on some items but not others?


    3. Only people who are friends of yours and who have the application installed will see your prayer requests and praises.  But that list will probably include some close friends and some not-so-close friends.  You won't want your mother reading about your boyfriend getting arrested.  You won't want a co-worker reading about your upcoming job interview.

    I have thought of two ways to deal with this issue.  Can you think of any others?  Or which of these would you feel comfortable with?  Which option would not be more work than it was worth?

    A. Every prayer request or praise item in your list has a Public Description and a Private Description.  Everyone (your Facebook friends who also use the application) would see only the Public Descriptions.  The Private Descriptions would be private.  You could choose how much information to share in the Public Descriptions.  You could leave a Public Description blank, and it would only show up for everyone else as a "private concern."  Or you could leave the Private Description blank if you said it all in the Public Description.

    B. Or I could code a way for you to identify which of your Facebook friends could see all of your praises and prayer requests.  So you could create little prayer groups that included only some of your Facebook friends.

    C. Or I could code a way for you to form multiple prayer groups to join.  Everyone in all of your prayer groups would see all of your requests.

    D. Or I could code a way for you to form multiple prayer groups to join, and then let you specify for each prayer request or praise which prayer group could see it.  Or maybe even joining this idea with the Public and Private Descriptions idea, let you pick which prayer groups see the Public, which see the Private, and which see nothing at all.

    4. How often would you want to pray like this (assuming that it was well-written and easy to follow)?

    5. How long would you want to spend in prayer each time you prayed?

    6. How many different prayer request items would you keep on your list?

    7. Would you need some way to signify which prayer requests were urgent, to get them prayed for more often?

    And, finally....

    8. Would you like to use an application like this?

    Please feel free to comment in the comments here, or message me on Facebook, or send me an email to william.randy.miller (at) gmail.com.

    Thanks.

    Throw out both parties

    Harry Markopolos on the Daily Show.  I haven't read the book, but it promises to be amusing.  This guy doesn't pull his punches and he seems to know all of the games.  I particularly liked the quote (around 5:10) that we have to vote both parties out of power.

    Monday, March 8, 2010

    Jesus was an introvert

    I was at a job seekers' meeting at church tonight, and the Bible lesson was about prayer.  Specifically it was an overview of the most pivotal periods of Jesus' life, with emphasis on the fact that He was regularly praying before those moments.

    As is often the case when someone is talking, and I get it, and they keep talking....  My mind was racing ahead and analyzing what else I can see in this set of versus.

    And besides praying, Jesus was constantly going away by Himself before and after the biggest events in His ministry.  He recharged His batteries by spending time alone.

    Lots of other teachers and preachers are introverts.  There's nothing wrong with it.  But maybe I just feel a little better about being an introvert now.

    Sunday, March 7, 2010

    It's all a matter of perspective

    The Time Online UK is reporting that Russian scientists are warning about a dangerous new environmental threat.

    As I've noted before, we don't understand Earth's natural temperature cycles.  This is one of those things that we don't know.  But it makes a bit of logical sense that something like this must be a big part of the puzzle.  Large amounts of something must build up and then eventually escape to cause significant change.  In this case it is methane.

    But, wait a second, isn't methane also a fuel?  Yes.  Yes it is.  We normally call it natural gas.

    So climate change scientists find this leaky permafrost full of methane and cry that we are all about to die.  I've got an easy solution for you, fellows.  Send in some natural gas extraction companies.  Let's bottle and burn that stuff.

    Burning natural gas generates CO2, a greenhouse gas.  But, as the Times article says, methane is 25 times more damaging than CO2.  It's not a perfectly clean win, but it is a big win, nonetheless.

    We might have to subsidize the extraction.  Or subsidize the insurance on the extraction.  But surely it would be worth it to save the planet from methane catastrophe.

    Friday, March 5, 2010

    Adventures in programming: database query times

    As I mentioned yesterday, I am learning PHP.  I'm working my way through tutorials and reading all sorts of stuff.  At the same time I am refining and adjusting my design of Pray with Friends as I learn stuff.

    Part of Pray with Friends will be a page where you actually read off a prayer.  The prayer will have lots of parts, like an opening, a closing, and some transitional statements.  I intend to have many different openings and closings, and just randomize them.  That way the prayers will seem new and different each time.

    One of the things I have to do is handle the list of openings, closings, etc.  I have several lists that will exist somewhere.  I was thinking that they belong in the database.  I'm still learning, and so this is subject to change, but the test I just did indicates that I need to just build the lists as hard-coded arrays in an included PHP file.

    Here's what I did.  I wrote a simple PHP page that includes (PHP-speak for 'connects to') a PHP file and connects to a database.  The main PHP page declares a start_time variable and then runs a counting do...while loop.  Each iteration of the loop prints a row that contains the counter number and a sentence.  The sentence is either pulled from the database or the hard-coded PHP array in my included PHP file.  The page also declares an end_time variable and subtracts the start_time variable from it to display an elapsed time.

    The included PHP file's array and the database table were identical.

    I just comment and uncomment the rows with the calls to either the database or included PHP file to run the tests different ways.

    The database is on the same box where I am running everything else.  So there is no network latency in this test.

    I ran the file both ways for 10,000 rows.  Care to guess the performance difference between the two methods?

    Pulling 10,000 records from the database took 10 seconds.

    Pulling 10,000 records from the hard-coded array in the included PHP file took 0.3 seconds.

    All of this was processing on my local desktop.  The database query was overall much more processor intensive, too.  My quad core processors spiked to about 20% utilization for several of the 10 seconds during the database query (yes, all four of them.)  My processor monitor didn't even register the query to the hard-coded PHP array (not even a skinny little point.)

    Thursday, March 4, 2010

    Adventures in coding

    For those of you who haven't heard, I'm working on writing the Pray with Friends Facebook app that I blogged about months ago.

    I have installed all of this on my Windows desktop:
    MySQL
    Apache
    PHP
    PEAR
    About a dozen PHP-PEAR extensions for things like connecting to Facebook and Paypal.

    I have a little test database going.  I have an HTML (PHP) file that lets you enter records into the database.  It validates that you filled in all of the fields and that what you entered isn't too big for the database fields.  If you made an error it leaves what you entered in the fields.  And after the data passes the validator, it gets posted to the database.  The page also shows you all of the records in the database.

    I have actually spent more time troubleshooting craziness with PHP and PEAR on Windows 7 than anything else.  The newest release of PHP simply would not run--after I installed it Apache would not start.  I opened a defect with the PHP crew over that, and it seems that others can reproduce my problems.

    I also found that Windows 7 is more picky than previous versions of Windows about case sensitivity and file/folder permissions.  I had to hack Windows some and then hack PEAR's configuration some in order to get PEAR to operate without constantly throwing errors.  And I had to move all of the PEAR-PHP extensions out of their normal directories and into a new directory structure that I created--and then go through every file to re-path all of the connections between files.

    I feel like I've made a ton of progress in my first 3 days of learning PHP.  I understand enough, and have gotten enough of other people's code to work, that I am confident that I can actually code this app.  I can't promise that it will be any good.  But I can code up my idea and make it work basically the way that I want.

    Next up is updating records in the database (calling them up into editable fields in the form and then chancing what is in the database.  After that is adding another layer of validation to ensure that hostile code is not getting saved to the database.  After that I start converting my page from full page submissions into discrete AJAX calls.

    Once I have those three steps mastered I will build my first version of the PwF database structure and start building the prototype pages for the actual application.

    I have already employed Christy to write some of the content for the application--the prayer prompts.  I've looked over what she is doing, and it looks great.  I'm really excited.

    4 minutes of merriment

    Enjoy


    Quick, define the word "skinput"

    Is this what you guessed?

    I'm a technology geek, and I love this stuff.  I would really enjoy working in a lab to design and test this stuff.

    So...  Your next mobile device may be worn strapped to your upper arm and have no screen other than the pico projector that beams an interface onto your arm or hand.

    My only concern is how well it does with clothes under the receiver on your arm, or on your lower arm.  Or gloves, for that matter.

    The projector and camera setup is significantly more flexible (gloves are ok), but not nearly as accurate.

    Wednesday, March 3, 2010

    The benefits of having money

    Everybody has needs.  Food, shelter, etc.

    Everybody has wants.  People with money get to have more of their wants.

    I know money won't buy happiness.  But this would make me pretty darn happy.  I'm grinning from ear-to-ear just thinking about it.

    Tuesday, March 2, 2010

    The value of obstructionism

    Senator Jim Bunning of Kentucky is obstructing a 10 billion dollar bill.  That bill includes unemployment extensions.  Let me be more specific, that bill includes my federal unemployment benefits extension.

    Every story has many sides.  And the MSM often misses the nuances of the situation.

    Bunning is getting run through the ringer, personally, for this.

    Bunning is just trying to make a point.  And it is an important point.  The sponsors of this bill are just piling on more unfunded debt.  The Senate could pass the bill if they would just vote.

    What Bunning is blocking is a procedural event.  Normally bills get passed here without a vote.  The problem is that no one wants to vote for this bill, because they don't want to be called out for voting for unfunded spending. They will have to vote for it sometime, but they want to wait and do it later when no one is watching.  Everyone is watching right now.

    Bunning is trying to get the other Senators to amend the bill to make this spending part of the huge stimulus package that they passed last year, presumably by cutting some of the unspent money from that bill.  But that bill is full of earmarks and pork that no Senator wants to see cut.

    I hate that my family is going to suffer for this.  But Bunning is right.  We can't just spend like drunken sailors.

    This bill, or another like it, will get passed soon.  I hope that it is funded with cuts from somewhere else.