Swim Team v1.42-beta-7 available

This evening I posted beta-7 of Swim Team v1.42.  This build addresses a problem reported earlier today.  This bug manifested itself when there isn’t an active season which would be the case when the plugin is first installed.  It is also possible to set all seasons inactive in which case, the same problem was present.

[download id=’14’]

Swim Team v1.42-beta-6 available

This morning I have posted a new build, v1.42 beta-6 of the Swim Team plugin.  This beta release makes a major change to how the plugin includes the various files the plugin uses.  Historically, Swim Team modified the PHP include_path as part of the initialization to include the paths where included files are expected.  In newer versions of PHP this seems to cause some problems for some users.

I have changed the plugin to eliminate the need to modify the PHP include_path however the process of doing so required touching almost 100 files within the plugin.  I have been through all of the menus and tabs and believe I found accounted for every file which included but there is always a chance I have missed something.

Please report any problems and I will do my best to fix it quickly.

wp-SwimTeam Beta (2187 downloads )

Email Users v4.6.10-beta-6 available

Email Users v4.6.10 beta-6 is now available.  This update addresses a bug report in the Email Users support forum where using the Omit Display Name option resulted in a malformed emailed header.

I am still looking for some help and/or feedback on Base64 encoding.

Email Users Beta (4828 downloads )

Email Users v4.6.10-beta-5 available

This evening I uploaded beta-5 of Email Users v4.6.10.  I am trying to add Base64 encoding support which was recently requested in the Support Forum.

I could use some help with this as I cannot get it work and am hoping someone familiar with Base64 encoding can see what I am doing wrong.

I have added a new option on the Settings Page to allow encoding email in Base64 format.  In my test environment, when I enable this, email is never received so I assume it was never sent properly.

The code in question is in the mailusers_send_mail() function which appears in the email-users.php file starting at line 1445.

Email Users Beta (4828 downloads )

I can’t stand people who recline their seats on airplanes

I haven’t had a good travel rant in a while.  However the recent debate over the Knee Defender and the incident on a flight from Newark to Denver which has been in the news, reminded of a situation I was personally involved in back in February.

For the most part travel is what it is.  A necessary evil.  Maybe I am jaded having flown so much over the years but there isn’t anything glamorous about it.  Full flights, competition for overhead bin space, delays, minimal service – I am not sure why anyone would think flying is glamorous.

There was an opinion piece in today’s Raleigh News and Observer from Froma Harrop that caught my eye.  As I read Ms. Harrop’s opinion piece I sat there and shook my head and concluded Ms. Harrop must not travel much.  If she does, she and I are 180 degrees out of phase.

In my opinion, Ms. Harrop couldn’t be more wrong.  After reading her article I wondered who she is (a syndicated columnist) and found her web site where she had another post about the Knee Defender.  This post contained a link to the story in the NY Times by Josh Barro.  Ms. Harrop had stated in her post that Mr. Barro defended the Knee Defender user but that isn’t how I read his article but that is besides the point.

Maybe Ms. Harrop would have a different opinion of seat recliners had her computer been damaged by an over zealous seat recliner like mine was on a US Air flight back in February.

I’ve read a bunch of articles and comments I am squarely on the side of the Knee Defender user and firmly believe that people who reline their seats to the max and/or without consideration are simply rude.  Particularly those who do it without concern to who or what might be behind them.

My job requires me to travel.  Over the 20+ years of doing what I do for a living, I have flown in excess of 3,000,000  (yes million) air miles.  Most of it is on American Airlines (by far my favorite airline) but for the past 5-6 years I’ve mostly flown on United  (starting with Continental until the merger).  USAir had been part of the Star Alliance (their participation ended at the ended of March due to the AA merger) so I also had quite a few flights on USAir.  USAir via Charlotte is by far the best (and cheapest) way for me to get to Phoenix from Raleigh which I’ve been doing 8-10 times a year for the past few years.

I get a lot of work done on the plane.  I find it very productive time and actually look forward to being disconnected from my phone and the Internet for an extended period to work on something without interruption.  For me time on the plane isn’t down time and it isn’t fun time.  It is work time just like if I were in the office.

About the only time I recline my seat is when flying on the red-eye.  Why?  Because I think it is rude and discourteous to lean my seat back into someone’s face.  I am also fully aware that a lot of people, particularly those who don’t travel much, feel it is their birth right to recline their seat.

Some people are fairly reasonable – if you ask them if if it is really necessary to fully recline their seat, most will accommodate the request and recline partially.  Of course some won’t.  I’ve dealt with obnoxious people over the years.

Yes, it is your right to lean your seat back but if you must do it, and I really don’t think you do, at least be courteous about it.  Look before you lean back.  Lean back slowly.  Ask if it is ok.  I’m fairly tall, 6’2″, so on some flights a reclined seat results in my knees in the back of the seat.  Does that bother you Mr. or Ms. Seat Recliner?  Too bad.  I don’t like it either but you are the one who chose to recline your seat.

So what happened to my computer?  As I was working away on a flight from Charlotte to Phoenix, the woman in front of me reclined her seat very quickly and very forcefully.  I am usually aware of seat recliners because I am worried about my laptop.  However this woman surprised me and I wasn’t ready.  When she leaned her seat back, the corner of her seat where the tray table sites caught the corner of my laptop and stopped the seat from reclining.  I guess I had my laptop at just the right angle because instead of moving the lid one way or other, the force of the seat coming back compressed the screen and hinge to point where it broke.  Because her seat recline was temporarily impeded by my laptop screen, she began really pushing it back almost as if she were bouncing against it.  This caused the screen to bend and an audible crack was heard as part of it broke.

This all happened in a matter of seconds and I immediately yelled “stop it” and put my hand on the back of the seat and pushed it back forward.  This made the woman very upset and resulted in a minor scene.  Needless to say I was upset – the damage to my laptop was obvious and the screen immediately showed a entire area of dead pixels and vertical lines.  The woman kept going on about how she was “entitled” to recline her seat.

She wasn’t the least bit sorry that her recline had damaged my laptop.  She was offended that I was upset.  I was dumbfounded as to how she could be so selfish as I would (a) never had done what she did and (b) if I were involved in a similar incident, I would have apologized for being negligent.

Accidents happen and had this woman shown any remorse what so ever, I would have chalked it up to one of those things which happens if you fly enough.  The only thing she was worried about was her right to recline her seat which she was “entitled” to.  She then said to me “you must not travel much” which left me almost speechless.  Almost.  I told her I travel plenty and I would never do anything as rude and inconsiderate as what she had done.  Ever.

The flight attendant was actually pretty helpful as he told the woman to calm down and be reasonable.  He also gave me some information to take to US Air customer service once I got to Phoenix.  He dodn’t know what they would do but he said it was worth a shot to make a claim.

In Phoenix I visited customer service and even though it took a while, the woman I spoke to said there was a chance US Air would do something.  After several weeks of phone calls, faxes, and emails, I actually got in touch with someone at US Air who seemed to have the authority to do something.  Much to my surprise, US Air paid to have my laptop repaired although it took a lot of my time to chase it down.  The repair costs was about $350.

Personally I’d like to see all seats be fixed so they can’t recline like the seats in front of the emergency exit row.  I think it it would prevent quite a bit of in flight aggravation and eliminate the need for devices like the Knee Defender.

So Ms. Harrop, you’re absolutely entitled to your opinion.  I just think you’re wrong.  I felt that way years ago and I definitely reaffirmed my opinion back in February dealing with the “entitled” seat recliner.  I hope the hour of recline that woman had was worth it – her selfish act probably resulted in 20 hours of legwork and follow up for me with US Air to get my computer fixed.

When do you Start over?

About a month ago I posted that I had started on a Ruby on Rails project.  It was my first RoR project and I spent a couple weeks working on it, learning as I went.  One of the things I had deferred working on was User registration.  I had some done some reading and it looked like there were several viable Gems I could integrate fairly easily.

I have gotten into the habbit of taking my iPad to the gym in the morning and reading up on whatever project I am noodling on.  So I’ve done a lot of RoR reading while on the elliptical machine and came to the conclusion that AuthLogic would suit my rather simple needs.  So I kept working on the functionality I needed for the App, deferring User management for a later day.

I had to put my RoR project aside for 3-4 weeks while working on a Tcl based project for work but got back to it over the weekend.  I decided it was time to tackle the User login module.  Initially everything seemed to be ok, I could follow the examples and make things work but I kept running into little issues and I never got it to work reliably.  The lack of Rails 4 examples to use as a reference got me thinking (and concerned).  Maybe I should have picked Devise (the other Gem which seems pretty popular).

I created a simple RoR App solely to test Devise and it will very simple to setup and configure.  Great, let me fold it into the App I am working on.  Uh-oh.  Not so easy.  I am not sure if it was because Authlogic also defines a User model and there were some leftover pieces of it that were confusing Devise or it was something else in my App but after a couple hours of playing with it, I concluded what I was trying to do was a fool’s errand.

This got me thinking – was it time to start over?  Should I consider all of the work I’ve done to date a “learning experience”?  The more I thought about it the more I knew starting again was the right answer.  But I had so much other functionality already working I hated to throw it away.  Decisions, decisions.

In the end I decided to start over and being with the Devise user module.   I decided to make use of the Rails-Devise example application as a starting point as it will walk through a configuration processs where by answering questions it will generate the basis for a Rails App.  It is pretty slick.  I ran it a couple times to understand the impact of some of the choices but settled on a final configuration which has become my starting point.

I was very quickly able to add some of the functionality I had worked out previously so as painful as it was, I am pretty sure that starting over was the right answer in this situation.  Granted my problem was much smaller in scope than many projects and more importantly, it hadn’t been deployed yet so other than a release delay, my decision has not impacted the end user at all.  That isn’t always the case.

Buying a SIM Card in Germany was harder than it SHould Be

A while ago I gave up my AT&T unlimited international data plan (you did what?) to move my family to a Mobile Share plan.  We have 8 phones on a 10GB Mobile Share plan and have only exceeded our limit once so objectively it was the right decision for us.  Having a Verizon MiFi from work certainly helps although it does mean that I need to actually think when I travel internationally.

I am in Munich this week for work and even though work will pay for the international add-on I have to turn on now when I travel out of the US, I decided I would buy a prepaid SIM card for data and put it in an unlocked Moto G which I have (having an unlocked phone comes in handy from time to time) and see if it would be a viable alternative to the $50 I paid AT&T for 500M of international data.

When I went to Poland a couple months ago I connected via Heathrow and picking up a SIM card was trivial.  You put your credit card in a vending machine, picked the SIM plan you wanted and and it was dropped out like a candy bar.  Simple.  Two minute transaction, if that.

I expected the same in Germany if not even easier, because if there is one thing Germany is good at, it is automating processes.  My experience was pretty much the opposite.  Not a SIM card vending machine in site at the Munich airport.  No big deal, there are several stores that appear to be selling them so I stopped in one.  The person in front of me wanted two SIM cards for their iPhones.  I waited at least 10 minutes before I gave up to go meet some co-workers and the cashier hadn’t   even gotten one working.  Odd.

I ventured out from my hotel having seen a number of stores in the general vicinity – Vodafone, O2, T-Mobile, and several independent stores.  I thought I was looking for something relatively simple.  I was looking for 1GB of data for about 20 Euros, less would be better.  It seemed that every store I went into had a different story.  From two different T-Mobile stores I got different answers.  At one I was told 10 Euros for 500MB but I couldn’t add to it if I went over.  At another store I was told that I could get 200MB per day for 10Euros up to 1GB during a week and  it would cut off after 200MB until the next day.  Odd.

Other vendors had variations of similar things.  I settled on an O2 card of 1GB which was good for a week.  Great, sound just like what I am looking for.  I’ll take it. Give  the clerk my Visa card – uh-oh, only cash for pre-paid SIM cards.  WTF?  I usually have some Euros with me but not an hour earlier I had dropped about 60 Euros for lunch for myself and three co-workers because the restaurant didn’t take credit cards.  That would have been helpful to know before we ate!

So out I go in quest of Euros from an ATM.  While I was out getting Euros I realized the cashier at the cell phone shop still had my passport!  Major panic.  If there is one thing that I worry about traveling it is losing my passport.  I have copies of it but I really don’t want to have to go through that experience.  Fortunately the cashier realized it as soon as I left the shop and put it in a safe place.  Yikes!  Back to find Euros.  For whatever reason the only credit card I can get Euros with is my PayPal debit card. 

So now I have  Euros to pay for the SIM card and this whole experiment is taking way longer than it should but with this much time invested, I press on.  Besides, I need something to keep me occupied until I meet up with my co-workers later this evening.  I need to stay away from the hotel room where it would be too easy to take a nap and be out of sync time wise all week.

As the cashier, a young guy – maybe 20 years old, is completing my transaction three young women come into the shop asking for unlimited Internet SIM cards in English.  After conversing with them in English for a bit he asks if they are Russian and switches to speaking Russian.  At that point his attention is on them and he fails to give me a critical piece of information with my SIM card packet.  The registration number.

I leave the store ready to try my experiment.  The instructions are in German, which I don’t speak but how hard can it be?  It is a SIM card and it has been paid for.  Put it in the phone and it should work.  Right?

Nope.  I have the SIM installed and the phone asks for a SIM activation pin code which is on the package and I enter.  So far so good.  Can I browse the web?  Nope.  An O2 web site comes up, in German of course, which I am clueless as what to do with.  It wants some sort of registration number.  Great.  After futzing around with it for 10 minutes I head back to the O2 store, which fortunately is next door to the hotel, I go back for the third time.

The woman helping me this time asks if I registered it?  No, how would I know what to do or how?  She pulls a scratch card out of the package which apparently my original clerk should have alerted me to and probably would have had he not been distracted by the Russian girls.  10 minutes later I am online and headed back to my hotel.  Oh yeah, one other little caveat.  Prepaid plans only support 3G.  No LTE and no HSUPA.  Bummer.

So in the end was it worth it?  I don’t know.  It was a good learning experience and it kept me busy for a couple hours.  I know a lot more should I or someone in my family, ever need to do this again.  I’ll play with it some more over the course of the week but in summary, it is waaaaaaay harder than it should be and quite a bit harder than in the UK.

Working with Rails

Last fall I had written a post where I noted that I had a problem to solve at work which I thought might be well suited for Ruby on Rails.  Like a lot of side projects, this one never went anywhere but I did end up playing around with RoR enough to get an idea of how it works and how quickly things can be developed with it.

I do some volunteer work with our High School Booster Club and last year built them a WordPress based site which is largely used to facilitate the purchase of memberships.  While it seems like overkill, the plan is to use the web site to host more content relevant to the various athletic teams.

A couple months ago I was approached about how the Booster Club’s mobile app could be improved or replaced as the currently technology is being withdrawn and no longer supported.  I learned that the back end for the mobile app was extremely cumbersome to use and was a source of frustration for the people who maintain rosters, schedules, results, etc.

I am now working on a replacement for the Mobile App and the backend infrastructure.  Because we already have a WordPress site, I had considered using the WordPress site to host all of the data and leverage the WordPress JSON REST API plugin to serve content up to a Mobile App.  But I had some reservations.

jQueryMobileBookI’ve never done Mobile App development and in the interest of time, am not sure I want to take that on right now.  Based on my jQuery experience with WordPress, I thought a jQueryMobile web app might be a reasonable compromise.  I picked up a copy of jQuery Mobile Up and Running a while back when I had heard it referenced on a Podcast.  At the time I didn’t have an immediate application for it but it was interesting reading.  I dusted it off and realized jQuery Mobile would be a good solution for building a prototype mobile web app.

So now I have some thought in my head of a mobile web app I want to build but wasn’t sure about how to feed it.  While I could see putting all of the data in WordPress, I was worried about maintaining it.  I need something dead simple to enter rosters, teams, schedules, results, etc. into a system.  Ideally it should be accessible from a phone so scores can be quickly entered by unsophisticated users.

What I’ve decided to do is build a mobile first (maybe only) application using Ruby on Rails.  I have made all of my HTML views based on jQuery Mobile.  Within a week or so of working on it for a few hours a day, I have the basic application up and running on my Ubuntu VM.  I can set up teams, coaches, and athletes, and assign coaches and athletes to teams.  I have started on venues.  There is a ton left to do – events, schedules, user login, Google Maps, and a lot more.

While I am excited about how much progress I have made in a relatively short time frame, I am worried I am “doing it wrong” or have made a decision that will be difficult to unwind.  I’ve learned a fair amount about Rails in the past two weeks and much to my surprise, have not had to learn a whole lot of Ruby yet.

The ability to quickly add database columns and connections in RoR is pretty slick.  During my first couple of scaffold generations I was worried about getting the database “right” but having dropped some columns and added others, I’ve found it relatively painless.

While I am impressed with RoR, I am really impressed with jQuery Mobile.  It is pretty amazing how quickly a mobile web app can be assembled.  I’ve been using a regular web browser for developing my app and even using jQuery Mobile with a regular browser is pretty nice.  I had forgotten that the laptop I borrowed while my Vaio was being repaired has a touchscreen.  Using the app on Chrome with a touch screen is pretty effective at mimicking a mobile device.

I still have tons more to learn as I get ready to deploy the first build for some people to play with and populate with dummy data but I can already see other uses for Ruby on Rails.  I am still not a big fan of the Ruby syntax but I can live with it for the benefits and development efficiency I am seeing with Rails.

Email Users v4.6.10-beta-4 available

This morning I released beta-2 and very quickly afterward, because I found a bugs, beta-3, then beta-4 of Email Users v4.6.10.  This beta-4 build addresses a couple enhancements that were recently raised in the Support Forum.

  1. Templates – while not exactly templates per se, the Post/Page notification email will now allow the user to change the email subject and body content.  It will still be initially populated based on the default template.
  2. Hooks – there are now two hooks which other plugins and themes can use to modify the behavior of wp_mail().  The two hooks are mailusers_before_wp_mail and mailusers_after_wp_mail.  The primary use for this is to account for other plugins which modify the sender address.

Additionally, the Notification email process now has a preview of what the email will look like based on the current settings.  The preview will not reflect any changes made to the subject or email content until it is submitted.

EU_SS_36

Email Users Beta (4828 downloads )

 

Email Users v4.6.10-beta-1 available

This afternoon I released beta-1 of Email Users v4.6.10.  This build fixes a problem reported in the Support Forum today.  I will likely try and address some of the recent enhancement requests before making a formal release.  It is likely that most users would not have seen this problem unless their PHP error reporting level was more strict than typical settings.

Email Users Beta (4828 downloads )