This blog is intended to document the development process of the Laxstats.me website which is software for recording live statistics during Lacrosse games.
Thursday, November 21, 2013
Version 2.0 et.al.
Since the Spring season won't start until March, I have until the first of February to get 2.0 done and then put it through its paces in early February to shake the bugs out. That means that I'll be a coding fool between now and January.
Additionally, I changed day jobs, which delayed me a bit. But now I can dedicate some time each day to the forward progress of LaxStats.
On to the feature list!
First and foremost is the game screen. Although the LaxStats game screen is highly advanced and literally allows for a statkeeper to know exactly where a person is at anytime on the field, it isn't wanted. One of my new statkeepers was extremely enthusiastic about the flow, and then within 5 minutes of her first game, couldn't keep up with the substitutions on the field and gave it up. Other statkeepers who had spent many seasons with the Pencil and Paper method were hesitant to use something that didn't look familiar. And LaxStats does have an issue with deleting bad recordings, something that also turned off others. I have one statkeeper who just doesn't trust technology in that setting (although she herself is extremely tech savvy) and would rather have just a pure offline version that she could enter the data in at her leisure at a later date. Regardless of my intentions with the software, these are my customers and if that is what they want then I need to provide.
That means that I'll retain the advanced game screen, but signify it as such and not turn it on by default. A new, simplified version of the game screen will replace the default, looking as much like the Pencil and Paper method as possible, while still retaining some of the advanced functionality (such as the FaceOff Win/Loss dialog and the Assist Dialog). This simplified screen can also be used a the offline data entry method, although there will be no way to capture WHEN something was done with this method so games recorded offline will have NO ability to also have a GameCast. Again, small price to pay.
The game screen was mostly hard coded to work on the iPad, especially since we had not had any users on anything else up until that point. Lucky me got a couple of customers using Android and that means that we need to adjust the new game screen to be completely responsive. For that I'm updating the entire site to be Bootstrap 3.0 compliant (everything but the game screen was already 2.0 compliant).
By making a more simple version, many of the stats that were on the board to be reported on (Time Played, Time Per Position, Points per Minute, etc) won't be possible, but the consensus is that no one at the Youth level needs or wants so it won't be a loss and will actually free up some time.
One the Home screen, it needs to become more User centric and focused on what the user can do. Also, we need the ability to find Organizations, Teams, Games in your area so that you can choose to become involved or not. It tends to be a bit of a Black Box currently (although that was on purpose) and it needs to get opened up a bit more. Also, Social Media sharing needs to get incorporated (previously planned but never completed).
On the list is also the completion of the Virtual Game Clock/Game Keeper that will allow clock keepers and fans stay in sync while on the field.
I had planned on converting everything into REST based API's to be a bit more robust and could actually be used by other developers. However, as I planned it out, I realized that my time frame would be pushing March just to do the conversion and not add any new functionality. So instead I'll be organizing into more API like functionality in preparation and will be incorporating AngularJS to start to serve as the front end MVC like application. Converting the PHP to MVC is just too large at this point.
That's it for now. I've got to get back to coding while I have a window today. If you have any suggestions for what you might want to see in the 2.0 Version, feel free to drop me a line.
Tuesday, August 27, 2013
Men's Fitted T-Shirt (dark) LaxStats Swag
Our first shirt at CafePress. We are working on using the CafePress API so that Players can order shirts with their season stats on the back. Now that will be cool.
Wednesday, August 21, 2013
Version 1.5 and Other Topics
I am very excited about the changes. As the primary user of the software last season, I got to see all of the "flow" issues first hand. Sometimes it would take 7-10 clicks just to record the FaceOff actions. This has been eliminated and I expect that the speed of the software is in step with the speed of the game.
I will now turn my attention to the girl's version so that it is ready by the second week of September. If you need it before then, please let me know and I'll work faster! :)
Since the deployment this morning, I turned my attention back to some of the marketing issues. Many thanks to Dan Wilson who has provided some great information on marketing in general. I regret that I haven't found time to do any of it however. In the meantime, I've been working on increasing the Facebook Fan page. At this point we are at 96 likes. I would like to see that grow 10 fold over the next few weeks as the season progresses. Our Twitter account is growing much faster. We got to 100 followers at the point where we were following 1000, but since then it has taken off and we are close to 300 followers now. Again, I would like to see that number jump exponentially.
I've got to go design my marketing T-shirts to wear at all the games. I feel bad not wearing the North Paulding shirt during games, but I really want this to take off and I need all of the business that I can get. I'm also going to print a shirt for my son with his season stats on it. I'm certain that will take off if any of the boys see it.
I've also spent today connecting up the blog with feeders so that it gets noticed more. I've also set up an auto publisher to Facebook and Twitter (hope you don't get this twice) and connected up with NetworkedBlogs, etc. Need more eyeballs!
That's all of the news for now. See you next time!
Monday, August 5, 2013
Fall Ball
Yay! The kids are back in school and I can get back to a normal routine. It was much harder over the summer to keep up the momentum that I had during the fall. In hindsight, I coded about 90% of the site in a month's time and spent the next 4 months with the other 10%. Details are always the hardest and once the heavy lifting was coded that was all that was left.
For the fall I've revamped the Event screen, or the Game screen as some have called it. I modified the core to be Bootstrap compliant, and fixed some of the zooming/scrolling issues that plagued me the first season. I've also increased the speed at which statistics can be gathered. I've simplified the menu to be purely graphical in a wheel shape with key activities along the circumference. I need to add a "Undo" in case the speed gets to fast and the user makes an error. I've decided on this method because the speed gains are very nice indeed.
Also with routines, comes my regular blog posts. I'll continue my discussion of what goes into the software and when using this blog. As always, your questions and comments are encouraged so that I can make sure that I'm addressing the issues that are foremost in your mind.
I'll be back in a few minutes with an updated priority list.
Thursday, June 13, 2013
Development Priorities
Feature | Priority | SP | Release |
Assist Modal | A | 5 | 1.5 |
Man UP/Down | A | 13 | 1.5 |
Wire up Team Buttons | A | 20 | 1.5 |
SEO - Part 3: Rich Snippets | A | 8 | |
Activity Stream | A | 8 | |
Add Team Data recording to the Game Screen | A | 8 | 1.5 |
Team Reports (once data is being recorded) | A | 8 | |
FaceOff Modal | A | 5 | 1.5 |
Shot Location Modal | A | 5 | |
Add Feedback system | A | 8 | |
Eliminate Blank records in datatables - give zeros instead | A | 8 | |
TeamPlayer Page needs works | A | 8 | |
SEO - Lacrosse Link Pages, link up all lacrosse sites in one location | A | 8 | |
SEO - Create Amazon Lists for all Lacrosse items drive back to site | A | 8 | |
SEO - Alexa | A | 8 | |
SEO - Squidoo | A | 8 | |
SEO - Yahoo Answers | A | 8 | |
SEO - Google Groups | A | 8 | |
SEO - ePinions | A | 8 | |
Add StatKeeper code to team | B | 1 | |
Link Team to Org so can see full org | B | 1 | |
Offline Data Entry | A | 13 | |
Add Timer to Game | A | 13 | 1.5 |
Add Forums/Community | B | 13 | |
News - better AdSense coverage | B | 3 | |
Offline Storage - return when internet exists | A | 20 | |
SEO Friendly URL's | A | 20 | |
Time Played for Person/by Position | B | 5 | |
Recap/Boxscore - Scoring Activities only | B | 5 | |
TeamPlayer Page - redesign | B | 5 | |
Links to Resources - Modal with all links | B | 5 | |
Google+ Follow widget | B | 8 | |
GameCast - refresh | B | 8 | |
"Borrow" Player | B | 8 | |
Allow Comments on Pages | B | 13 | |
Competition Comparison | B | 13 | |
Realtime Facebook Posts - mix with Twitter | B | 13 | |
Game - Middie Lines | B | 13 | |
Game Variations - Box, 3v3, etc. | B | 40 | |
Unavailable Players | B | 13 | |
Flickr or other Photo Service | B | 13 | |
YouTube - demo the software | B | 13 | |
Lax Wiki | B | 13 | |
Girls variations | A | 40 | |
FAQ | B | 20 | |
News Feeds 2.0 | B | 20 | |
Help | B | 20 | |
Club Payments - Paypal | A | 5 | 1.5 |
Custom CSS for Orgs | B | 20 | |
ADMIN Tools - Dashboard | B | 40 | |
FeedBurner | C | 8 | |
Social Links (other than Twitter and Facebook) | C | 8 |
Release Notes
- Added new FaceOff dialog
1.080113 -
- New Game UI
1.061413 -
- SEO - Part 1: Title Names and Meta Description
- Create Team - Match US Lacrosse
- SEO - Part 2: Sitemap
- Add Privacy Policy Page
- Examine Stripe as a replacement for PayPal - examined, will require SSL key, future enhancement
- Identify additional SEO needs and prioritize
- Remove ShareThis code from footer
- Remove ShareThis code from News
- BUG - No Up on Goalie Stats
- About Us Page
Tuesday, June 11, 2013
Feature Updates - June 6
Feature | Priority | SP | Release |
Remove ShareThis code from bottom template | A | 1 | 1.061013 |
Remove ShareThis code from News | A | 1 | 1.061013 |
BUG - No Up on Goalie Stats | A | 3 | 1.061013 |
About LaxStats Page | A | 5 | 1.061013 |
LaxStats Team Page - (incorporated into About page) | A | 5 | N/A |
Create Team - Match US Lacrosse | A | 5 | |
Activity Stream | A | 8 | |
Add Team Data recording to the Game Screen | A | 8 | |
Team Reports (once data is being recorded) | A | 8 | |
Add Privacy Policy Page | A | 8 | |
Examine Stripe as a replacement for PayPal | A | 8 | |
Add Feedback system | A | 8 | |
Eliminate Blank records in datatables - give zeros instead | A | 8 | |
TeamPlayer Page needs works | A | 8 | |
Add StatKeeper code to team | B | 1 | |
Link Team to Org so can see full org | B | 1 | |
Offline Data Entry | A | 13 | |
Add Timer to Game | A | 13 | |
Add Forums/Community | A | 13 | |
News - if not logged in, only get headlines (and news) | B | 2 | |
News - better AdSense coverage | B | 3 | |
Offline Storage - return when internet exists | A | 20 | |
Time Played for Person/by Position | B | 5 | |
Recap/Boxscore - Scoring Activities only | B | 5 | |
Links to Resources - Modal with all links | B | 5 | |
Google+ Follow widget | B | 8 | |
GameCast - refresh | B | 8 | |
"Borrow" Player | B | 8 | |
Allow Comments on Pages | B | 13 | |
Competition Comparison | B | 13 | |
Realtime Facebook Posts - mix with Twitter | B | 13 | |
Game - Middie Lines | B | 13 | |
Man UP/Down | B | 13 | |
Unavailable Players | B | 13 | |
Flickr or other Photo Service | B | 13 | |
YouTube - demo the software | B | 13 | |
Lax Wiki | B | 13 | |
Girls variations | A | 40 | |
FAQ | B | 20 | |
News Feeds 2.0 | B | 20 | |
Help | B | 20 | |
Wire up Team Buttons | B | 20 | |
Custom CSS for Orgs | B | 20 | |
ADMIN Tools - Dashboard | B | 40 | |
FeedBurner | C | 8 | |
Social Links (other than Twitter and Facebook) | C | 8 |
Sunday, June 9, 2013
Feature Focus - June 9 - June 19
We made it to the beach just fine, although we had some hiccups before we left. The kids killed the car battery before we left by playing Mindcraft on the inverter. Half way to the beach I get an email from LB3 that my LAX player had won a free clinic with LB3 and Trinity Lacrosse before the MLL game on Friday evening. Unfortunately we were already 3 hours away from Atlanta and the event started in 2 hours. He would have been able to see the MLL game for free as well. Oh well, life does that some times. He was over it as soon as he saw the beach :)
So while the kids are having a good time with their grandfather this week, I'll be able to get some work done and still be able to relax as well. The list below will be worked on over the next two weeks. I've changed the format to better reflect an Agile methodology and I'll work on items that meet the proper priority and return leaving those that are not as important until later.
Feature | Priority | SP | Release |
Remove ShareThis code from bottom template | A | 1 | |
Remove ShareThis code from News | A | 1 | |
Eliminate Blank records in datatables - give zeros instead | A | 2 | |
BUG - No Up on Goalie Stats | A | 3 | |
About LaxStats Page | A | 5 | |
LaxStats Team Page | A | 5 | |
Create Team - Match US Lacrosse | A | 5 | |
Activity Stream | A | 8 | |
Add Team Data recording to the Game Screen | A | 8 | |
Team Reports (once data is being recorded) | A | 8 | |
Add Privacy Policy Page | A | 8 | |
Examine Stripe as a replacement for PayPal | A | 8 | |
Add Feedback system | A | 8 | |
Add StatKeeper code to team | B | 1 | |
Link Team to Org so can see full org | B | 1 | |
Offline Data Entry | A | 13 | |
Add Timer to Game | A | 13 | |
Add Forums/Community | A | 13 | |
News - if not logged in, only get headlines (and news) | B | 2 | |
News - better AdSense coverage | B | 3 | |
Offline Storage - return when internet exists | A | 20 | |
Time Played for Person/by Position | B | 5 | |
Recap/Boxscore - Scoring Activities only | B | 5 | |
Links to Resources - Modal with all links | B | 5 | |
Google+ Follow widget | B | 8 | |
GameCast - refresh | B | 8 | |
"Borrow" Player | B | 8 | |
Allow Comments on Pages | B | 13 | |
Competition Comparison | B | 13 | |
Realtime Facebook Posts - mix with Twitter | B | 13 | |
Game - Middie Lines | B | 13 | |
Man UP/Down | B | 13 | |
Unavailable Players | B | 13 | |
Flickr or other Photo Service | B | 13 | |
YouTube - demo the software | B | 13 | |
Lax Wiki | B | 13 | |
Girls variations | A | 40 | |
FAQ | B | 20 | |
News Feeds 2.0 | B | 20 | |
Help | B | 20 | |
Wire up Team Buttons | B | 20 | |
Custom CSS for Orgs | B | 20 | |
ADMIN Tools - Dashboard | B | 40 | |
FeedBurner | C | 8 | |
Social Links (other than Twitter and Facebook) | C | 8 |
Thursday, June 6, 2013
Post Launch
My first inclination is to email everyone that I know, including large lists of organizations that I have. Unfortunately that would get me labeled as a spammer and that avenue would be shut off pretty quick. So at least initially, I'm having to pick and choose who I contact and how. Its a no brainer to start in my own backyard, and fortunately, I have a friend willing to help get me in front of Mayla (Metro Atlanta Youth Lacrosse Association).
I have about 2 months before the fall season kicks into high gear and another month after that before the first games, so I still have a lot of time for new features and functionality. I've just got to figure out a good balance between the two. With social media on my side, I should get in the habit of deploying at least one change a day and then posting it to the world.
I'm heading out for vacation tomorrow and will be doing this from the beach for the next two weeks. I know, tough job, but someone has to do it. My priorities over the next few days are as follows:
1. Identify all bugs
2. Identify new features
3. Prioritize them using my Scrum approach (effort vs ROI)
4. Post the list on the site
5. Determine a marketing plan of action
6. Document that on the site as well
I've fallen off of my weekly updates here on the blog. Partly that was due to the loss of my main machine, and partly because I was so heads down trying to finish up the registration. I do see this as a valuable part of my marketing and will get back on track of posting here at least once a week.
Sunday, May 19, 2013
Houston, we have a problem.
So for the past 5 days I've been climbing the walls. I was so close to finalizing the last of the registration and getting this launched for real. Regardless, the last push was on Friday before the failure, so even if I can't get it all back, I'm only a few days behind.
In the meantime, I've been on an Ubuntu kick. I've spent the past several days rebuilding a couple of laptops and a desktop that I had lying around the house. On my Mac, I've been building the site using MAMP and it occurred to me that I need to be my SVN server up and running so that if something happens in the future that I should be able to pick up where I left off on any of the LAMP computers instead.
I admit that I really like Ubuntu. Linux has come a long way in the past 2 years. I try to like it every few years and I always come away wanting to beat the machine with a sledge hammer. Not this time. I like it so much that I'm attempting to rebuild my old Windows XP Media Center machine into my primary Development server. I always anticipated that at some point that I would have to put this into a traditional software development environment and now is as good a time as any while I sit around waiting on my Mac.
So those of you waiting for the official launch, I'm at least a week behind now. I should be ready to go early June now.
On an off topic. I was looking at my Twitter followers and noticed that the Atlanta LB3 starting following me. That is awesome. My Son will be in their summer camp at KSU. Hopefully I'll get a chance to show off the software during that week. Look forward to meeting you guys! In the meantime, keep up with my progress here.
That's it for now. I will be posting a new Feature Focus and Bug list in the morning. Its almost time for Game of Thrones now, so time to close down for now.
Wednesday, May 8, 2013
Site Testing
I also have to incorporate PayPal into the site. I really like Square, but PayPal still has a better cost structure and every dime is critical. Sorry Square!
Once the Register feature is in place, I can actually officially launch and worry about the bugs as we go. The Spring season is over, and only Summer Select teams are playing. A bunch of boys from the 2 teams that I used as a beta are playing Select and I'd love for them to have their stats continue, but I can't market it until the register is done. That shouldn't take long as I've had a register in place already. But tying it to PayPal may take me a little time.
Ok, back to testing.
Wednesday, May 1, 2013
Game Track
Tuesday, April 30, 2013
Features Completed in April
- Offline Storage
- Get back to server
- Home Page
- Start Marketing - 90%
- Game Screen
- Lines?
- Timer
- Hook up new Team buttons
- Determine how to handle man up/down situations. With a modifier to main action???
- Game Info
- Set players to unavailable
- Set players to be "borrowed"
Team Screen -Bugs- COMPLETED- Stats
- Game Stats
- need more of the team data (clears, turnover, etc).
- Time line report
- Time played report
Game Leaders- COMPLETED- Team Stats
Create based on game, but do rollup for entire season- COMPLETED- Allow break down by game?
Team Leaders- COMPLETEDAdditional statsshots per game- COMPLETEDsaves per game- COMPLETEDavg FOW percentage- COMPLETED- Player stats
- Combine with player page - put more player data on, similar treatment as what I did for Teams
- Organization
Repeat reports for the Org- COMPLETEDOrg Leaders / per age/gender group- COMPLETED- Organization/Program Screen
- Match US Lax types
- Custom CSS for Orgs - start looking into CMS tools for organizations
Better layout - ala ESPN or CBSSports- COMPLETED- Following
Add team follow- COMPLETED- Post to facebook when following has action?
- Offline Stats
- Add offline entry of stats - important for those who can't get a live tablet and for players/teams to have a running record in a single location
- Girls variations - get with a girl's coach to be sure I understand the primary differences.
TemplateHeader doesn't work for iPad- COMPLETEDSwitch to Bootstrap - eventually- COMPLETED
- News
- Added Lacrosse News for all levels
- Twitter Feed
- Created LaxStatsLive twitter account
- Created lists for all levels
- tied to news page for live twitter feed
- Created Pinterest Account
- Created Flickr Account
- Created basic default Logo
- Created CafePress account
Monday, April 29, 2013
May Flowers
My approach to this all along has been an extremely agile methodology (something I advocate and teach in my day job). Building software in that methodology helps to eliminate over thinking it up front and allows it to organically grow. If you were to build your house this way you would start with just the framing and then address each room individually. The rooms may start out with only curtains for walls and as you become more comfortable with the house, you might add sheetrock or other wall material. You would have the opportunity to change your mind as much as you like and eventually have a room that fit you exactly. You would be able to change the elevation of the house many times until you settled on the style and colors. Unfortunately, you might not be able to live in the house for a while, but it would be exactly what you wanted when you got to the end, or if it wasn't you could keep making changes to your hearts content.
This application has been similar to that. I've made sweeping design changes and completely removed or added functionality based on where I thought the site was going. Now I'm at the point where I'm nitpicking details about colors and placement (not the fun stuff) getting it ready to launch. Finishing is always the most time consuming part and I have to catch myself from not adding another feature until I finish the ones that are already there.
Regardless, the software has performed wonderfully. I completed the Organization comparison and used it to identify the players who were leading in all of the categories across multiple teams. It was very cool!
I missed an opportunity this week however. This coming Saturday and Sunday is the end of year Mayla tournament where dozens of local teams will be present. Had I been more marketing savvy, I would have been ready to show off the software during the tournament. At this late date the all I'll be able to have ready would be business cards and flyers, neither which excite me. So if anyone has any ideas about how to show off the software during the tournament, please drop me a note!
This week, I'll be working on the small details, trying to polish up the areas that still have a need. I have a few features that I would like to add, but I won't until the polishing is complete.
Monday, April 22, 2013
Launch Prep
For the past week, I've been working on the marketing pages, creating explanations of the software. I'm still going to have to create a sample Organization and let folks in to play around in, but I can easily use one that I've already created for my own use. I'll just have to make sure that it is PC before I open it up.
I'll be creating a comparison for all known competitors and put that into a matrix. I was very concerned with pricing. Ultimately, I would like to make money on this. Frankly I would rather take this from hobby status to career status. I have the skills to make it happen, I've been in the Software Engineering industry for over 15 years now. And I would rather do this than working for someone else. Right now, my costs are minimal, but when it grows, so will the cost and I have to be sure everything is covered. I finally settled on $1 per player per season. One, $1 is not a lot of money for anyone involved. It makes it very easy for an Organization to add LaxStats without breaking the bank. They could (and likely will) pass the amount on to the player. I agonized about charging parents/fans for access and eventually came to the conclusion to charge for that access as well. The primary reason is that parents and fans who want to follow their childs career won't hesitate paying a few dollars, especially after they've already shelled out hundreds to get them into it. Plus is a personalized view into a players career, protected from the general population. You just can't find that anywhere else.
As a whole, its taking more time to come up with the marketing than it did with the other parts of the site. Mainly that's because I'm a programmer, not a marketeer.
For those of you that have been following this closely, thanks for your support and encouragement. I've been having a ball. For those of you who have just joined are are reading this as a historical perspective, I hope it gives you some insight into how this all started and evolved.
Monday, April 15, 2013
Build .904152013
First, the original template I used, while responsive, just didn't give me as much control as I would like for the site. It was very hard to create a template with it, and I found that I just kept overriding the CSS to make it work and realized that would be a nightmare to maintain long term. That's when I discovered bootstrap. I had planned on moving to it someday and was only going to use it for new pages, but once I put it into use I was hooked. I would say that it was a distraction going back to each page to clean up the site so that it worked with bootstrap, but actually it was a cleanup that needed to happen.
Not every page is bootstrap ready, I ran out of time for them all and felt that the longer I waited for a deployment, the greater my risk that something would go wrong. Sure enough I broke the site last night while watching Game of Thrones and I'm still working on getting it right. For those that want to know, PHP is tricky when using includes, especially includes inside includes. Ultimately, its a path issue and I have the fix, I just have to get it in place. The second issue was with a new feature. I am creating a Lacrosse Only News Reader since one doesn't exist. I'm using SimplePie as the aggregator, but its documentation needs work. I used it exactly as the documentation suggested and it worked great locally, but when I deployed it started throwing "deprecated" errors. Deep in the support I found the solution. I love you SimplePie, just clean up your documentation a bit.
The following are the changes to the site for this build:
- Bootstrap.js
- global navigation - better user authentication/bread crumbs
- iPad - navigation works with it
- Marketing
- started pages to explain what the site does and why you can't live without it
- Stats
- Limit game results to only those with stats (fixed bug in table sort)
- Added additional reports
- Player career works better (still has more work)
- Team
- completely redesigned
- Org graphic
- sub navigation for team info/coaches
- sub navigation for games
- Org
- redesign started (not complete)
- Org graphic
- Home Page
- RSS of this blog
- Twitter feed for NCAA teams (will complete others, see below)
- RSS of Lacrosse news
- Social Integration
- Corporate
- email/calendar
- Phone number (Google Apps for biz now costs money so they are no longer an option [BOO HISS], props to Zoho!!!)
Thursday, April 4, 2013
Feature Focus: April 1-15
Sorry for the limited communication over the past week. I got a bit distracted with Taxes. I also got distracted looking at all of the Lacrosse software that exists out there and mapping out the deficiencies in each. At some point I'll talk about them all here, but now isn't the time. It was distracting mainly in that I saw myself creating an all in one software package that had everything that would be needed to completely manage a team or organization.
However, that isn't my first and foremost focus. The thing that drove me to do this in the first place was that there was no good way to record statistics (at least not real time) and get them where Followers could see (mostly proud parents to begin with). Honestly I became concerned that I wouldn't have enough time to complete even that goal as my job situation stabilizes over the next few weeks. I feel that what I have is unique, and is commercially viable. I just have to have it ready by the Fall season in order to start making something with it.
Ideally, I would love to just focus on this and over the next few years build that all in one system. I will just need to get enough sales to make that dream a reality. That means that I need a stable version working in the next month so that I can focus on the marketing side of it so that I can make some sales for fall. Otherwise, this is at best a hobby. So, for the next week, the family and I will be on Spring break, which means that I'll be working from the beach to knock out a lot of these issues.
Thus far the beta tests have been working great. I'm grateful that I was able to pick up 2 teams from the same Organization and within the same age group. That way I can complete the comparison tools that will allow coaches to see who the leaders are for the whole age group. There is a third team in the age group with a really good hand keeper and I want to get his stats so that I can test offline entry as well.
- Offline Storage
- Get back to server
- Home Page
- Start Marketing
- Game Screen
- Lines?
- Timer
- Hook up new Team buttons
- Determine how to handle man up/down situations. With a modifier to main action???
- Game Info
- Set players to unavailable
- Set players to be "borrowed"
- Team Screen -
- Bugs
- Stats
- Game Stats
- need more of the team data (clears, turnover, etc).
- Time line report
- Time played report
- Game Leaders
- Team Stats
- Create based on game, but do rollup for entire season
- Allow break down by game?
- Team Leaders
- Additional stats
- shots per game
- saves per game
- avg FOW percentage
- Player stats
- Combine with player page - put more player data on, similar treatment as what I did for Teams
- Organization
- Repeat reports for the Org
- Org Leaders / per age/gender group
- Organization/Program Screen
- Match US Lax types
- Custom CSS for Orgs - start looking into CMS tools for organizations
- Better layout - ala ESPN or CBSSports
- Following
- Add team follow
- Post to facebook when following has action?
- Offline Stats
- Add offline entry of stats - important for those who can't get a live tablet and for players/teams to have a running record in a single location
- Girls variations - get with a girl's coach to be sure I understand the primary differences.
- Template
- Header doesn't work for iPad
- Switch to Bootstrap - eventually
Friday, March 29, 2013
Build .9032913
Wednesday, March 27, 2013
Build .9032713
- New Team Page
- Schedule moved to top and made prominent ala ESPN. Calculates record on the fly.
- Team Info and Coaches moved to top of page beside Schedule.
- Edit Team Info now a Dialog box that pops up instead of going to another page.
- Bug - New team info is broken
- New Tab System for Players
- Default tab is for Player info (still needs a bit more work to include all player data. I may put this into an editable table structure.
- Player Season Statistics - gives full stats for all players who have played on a team during the season with full counts for all games completed.
- Player Game Average - calculates the X per game stat for all players.
- Played Time - tab is there, report is not complete
Monday, March 25, 2013
Feature Focus - March 25 - 29
- Offline Storage
- Get back to server
- Home Page
- Start Marketing
- Game Screen
- Lines?
- Timer
- Hook up new Team buttons
- Determine how to handle man up/down situations. With a modifier to main action???
- Game Info
- Set players to unavailable
- Set players to be "borrowed"
- Team Screen - major overhaul needed, want this page to look like it came from ESPN
- W/L
- Team Stats for the Season
- Player link should go to master player page with stats
- Stats
- Game Stats
- need more of the team data (clears, turnover, etc).
- Time line report
- Team Stats
- Create based on game, but do rollup for entire season
- Allow break down by game?
- Additional stats
- shots per game
- saves per game
- avg FOW percentage
- Player stats
- Fix bug
- Combine with player page
- Organization/Program Screen
- Match US Lax types
- Custom CSS for Orgs
- Better layout - ala ESPN or CBSSports
- Following
- Add team follow
- Post to facebook when following has action?
- Offline Stats
- Add offline entry of stats - important for those who can't get a live tablet and for players/teams to have a running record in a single location
- Girls variations - get with a girl's coach to be sure I understand the primary differences.
Build .9032213
- Offline Storage
- If the application loses connection or has an error for any reason, it will store the data local on the device. Eventually I'll change to keep a full copy locally with an asynchronous push to the server and have an offline app, but that is a summer project. I still don't have the method of getting lost data back to the server just yet.
- Game Screen changes
- Roster now has tabs, one each for Attack, Defense, and Middies. Being on the list doesn't preclude a player from switching positions, it only helps me organize them better and minimize scroll.
- Added Primary Position
- Modified Team to reflect
- Modified Player to reflect
- New Team buttons (not completely implemented)
- Clear
- Team Goal
- Team Turnover
- Man Up
- Man Down
- Specialized buttons for Face Off Middie and Goalie
- Faceoff won
- Faceoff attempt
- Goalie Save
- Scored Upon
- Template
- Broke apart pages into commonality's and created a master template. I didn't do this early on because I wanted them to organically find its design and it mostly has at this point.
- Stats
- Game Stats
- Added Percentages for Scoring, Faceoff's and Goalie Saves
- Added Team Totals for individual stats
- Added Penalty report
- Fixed calculation for Shot on Goal to also include actual Goals.
- Player Stats
- All stats that exist for a team exist for player as a roll-up for the season (currently). Seems to be missing data for players who have played for a second team.
- Action Screen
- Removed Goalie Actions (save and scored) and Middie only actions (faceoffs)
- General
- I had several versions of the JQuery library listed throughout the application. With the template they are all on the latest version now.
- Removed some orphan pages
- Added a Favicon - sorta looks like a lacrosse head.
Monday, March 18, 2013
Feature Focus - March 18-22
- Offline Storage
- Save copy locally
- When game finishes, compare the two results, update local to server at that time.
- Home Page
- Start creating a marketing version of the home page
- Game Screen
- Better Roster organization
- Lines/grouping of players
- Timer (still looking into longer term solution)
- Better user feedback for Clears
- Man Up/Down button
- Team Activities - Goal, Turnover
- Better way to record Face Offs
- Better way to record Goals
- Game Info
- Set players to unavailable (will help the roster organization)
- Set players to be Defense, Attack, or Middie to help minimize screen scroll
- Team Screen
- W/L Box
- Stats Screen
- Game report
- Remove Penalties from current game table
- Create secondary report for team actions, including totals for all actions.
- Create timeline report.
- Create time on field/shot percentages, etc.
- Team report
- Create team rollup of all games, same as game report, may need way to dive into game report from here.
- Create additional stats, Shots per game, saves per game, etc.
- Player report
- Individual statistics for the player, use same report as game, just limit per person, very important for followers
- Organization report - although important in the future, putting on hold for now, I only have 2 teams from a single organization at the moment.
- Action Screen
- Hide goalie actions for non- goalies
- Organization/Program Screen
- Set types to match US Lax
- Custom CSS for Orgs
- Better layout and design
- Following
- Add Team Follow
- Offline Stats
- Need ability for those without wireless tablet to enter data after a game.
- Deployment
- Better way to keep in synch
Offline Storage
Sunday, March 17, 2013
Beta - Week 3
Yesterday, I had the situation where one team needed to "borrow" a player from another team. Fortunately, I was prepared for that, at least for the addition. I'm not so sure that I can gracefully hide at this point and I'm not going to worry about it today. I'll think that through a little better tomorrow. I did notice that the individual Player stats don't appear to be calculating for teams other than the original team. I must have an error in the SQL because it should calculate across all teams. I do need a better Player page, and that will be second on the priority list for this week.
I will eventually need the concept of game validation. As it stands the stat recording is a "fire and forget" methodology. It is necessary to keep from getting behind in the recording (which still happens). What that means is that the AJAX Get is pushed, but no request is required, which means that I could lose a stat here of there based on the whims of ATT. I think that I'll also write a manifest locally and upon game completion do a comparison against the two and if any are missing to add them then. That will have a heavy payload and its something that will require a lot of thought. I'm putting into the parking lot for the Fall release.
That's if for now, got a game to go to. I'll update with my feature list in the morning. Have a good St. Paddy's day!
Wednesday, March 13, 2013
Build .9031313
Monday, March 11, 2013
Feature Focus March 11-15
- Facebook login
- Home Page
- Start creating a marketing version of the home page
- Game Screen
- Better Roster organization
- Lines/grouping of players
- Timer (still looking into longer term solution)
- Better user feedback for Clears
- Man Up/Down button
- Team Activities - Goal, Turnover
- Better way to record Face Offs
- Better way to record Goals
- Game Info
- Set players to unavailable (will help the roster organization)
- Team Screen
- W/L Box
- Stats Screen
- Game report
- Remove Penalties from current game table
- Create secondary report for team actions, including totals for all actions.
- Create timeline report.
- Create time on field/shot percentages, etc.
- Team report
- Create team rollup of all games, same as game report, may need way to dive into game report from here.
- Create additional stats, Shots per game, saves per game, etc.
- Player report
- Individual statistics for the player, use same report as game, just limit per person, very important for followers
- Organization report - although important in the future, putting on hold for now, I only have 2 teams from a single organization at the moment.
- Action Screen
- Hide goalie actions for non- goalies
- Organization/Program Screen
- Set types to match US Lax
- Custom CSS for Orgs
- Better layout and design
- Following
- Base setup
- Allow Parents, etc, ability to follow player (youth protected)
- Deployment
- Better way to keep in synch
Live Beta Test #2
Feature Request #1 - Come up with way to stop the scroll.
During the first game, I had no issues and everything worked really well. It also helped knowing the players names a bit better. Some things to consider is that currently it takes 2 entries to record a Face Off Won. As you know, that is the fastest part of the game so often the steps were, record Face off Attempt, record Face off Won, and record who picked up the ground ball. If there was an assist and a score there, that would be a tough stretch to keep up with. Similar issue with a goal. Often there was an assist, shot on goal, and then a goal. Currently I haven't been counting a Goal as a shot on goal although I should. I can either calculate that post action, or build it in. Not sure which way to go just yet.
Feature Request #2 - Determine better way to record Face Off process.
Feature Request #3 - Determine better way to record Goals/SOG's/Assists.
Although I separated Clears from the individual stats and put it on the field as a team stat. Recoding it had no feedback. It was a direct record to the database and as such didn't notify the user that it had done its work. Perhaps I need some indicator that a Clear did happen.
Feature Request #4 - User Feedback for Clears
Still the biggest problem I had was on line swaps. Getting 3 new players on the field, especially during a score and then a face off opportunity was too slow. At least twice I had missed a middie (fortunately he didn't do anything during that time). What I need to have is the concept of lines, just like the teams have. That way I can activate a line and it would still give me the flexibility to rotate individuals in and out.
Feature Request #5 - Create Position "Lines"
At the end of the game, the statistics were quickly and easily calculated and put into my nice new tabular format. I had left a spot for Penalties, but I can't easily integrate them into the table, and because they won't be calculated by type, don't fit anyway. I'm going to remove that from the table and do a secondary report for the team as a whole where I report penalties. I need a team report anyway, so this works out well.
Feature Request #6 - Team report, calculate totals for all, report on clears and man up/down opportunities, Team Goals, Team Turnovers, and Penalties.
I was asked to do a second game for a different team and I was happy to oblige since this gave me more data. Fortunately I did know a lot of the Player by name already as they practice with my son, and/or have played on his team in the past. Still, it was much harder to keep up with than it was during the first game, just because of my lack of knowledge for the boys. One bug surfaced. Although it was recording the scores correctly, on the field screen, it had the home and away as the same team. Not sure why this occurred as I wasn't able to reproduce on the spot.
Defect - Away team on both sides of the scoreboard.
Last week I stood with the parents to take the stats which helped greatly when I was struggling with names, etc. This week I stood with the boys. Once they figured out what I was doing, I was having to answer the same question every 5 minutes "what are my stats?" After learning my lesson, my answer became, "I can't get that until the end of the game", but the truth is that I can refresh the report as the game goes on, which was a nice way for me to validate that the program was working as intended. It also helped to validate that the real time push to Facebook that I want to integrate will work nicely.
Now with 2 games under our belt for my son's team, Parents are now getting interested in seeing the stats. This week's number one priority is to complete the Facebook login integration and to get "Following" working properly. If it is anything like the Google Maps integration, it shouldn't take more than a day to get implemented.
That's my thoughts for now. As always if you have any suggestions for the application, I'm very grateful to hear them.
Friday, March 8, 2013
Build .9030813
Build .9030813 will be deployed later today. Included in this build are:
- Finish Game Button
- Completes all Player actions
- Flips Game Status
- Event Dialog
- Minimize Penalties list - toggle to be invisible, only viewable when needed
- Make Actions larger
- Add other events - defaulted to the NCAA rule book
- Update Event Dialog to break out per NCAA rules
- Team Page
- Updated Game list to reflect completed games
- Added Stats button once game has started
- "Start Game" changes to "Continue Game" once started
- Game Page
- need to be able to set players as unavailable for the game - completed database work, not hooked up on page yet
- Order by Jersey number
- Player name aligned to button
- Jersey numbers as draggable instead of full name
- Stats
- Take data and create Pivot output - may be completed by launch
- Added Like button to each page, authentication not ready yet
- Game Info Page
- Google Maps integrated
- DEFECT - only works on new game, existing games won't change map.
- Template
- Added Footer to all pages
- Include Google Analytics via footer
- Facebook like via footer
- Database
- Added Game Unavailable table - for players who won't be at game
- Added GameTime table - to time box game via actual time
- Updated Events with new Events (TurnOver, Caused TurnOver, Face off Attempt)
- Updated Game with Points For and Points Against
Sunday, March 3, 2013
Feature Focus - March 3-8
- Finish Game Button
- Completes all Player actions
- Flips Game Status
- Event Dialog
- Minimize Penalties list (dropdown?)
- Make Actions larger
- Add other events (interceptions, turn over, etc. - find better resource)
- Game Timer
- Freeware was inadequate, need a full system. This is likely too big for a single week.
- Team Page - needs a W/L box
- Game Page
- need to be able to set players as unavailable for the game
- Order by Jersey number
- Truncate name or other methodology
- Jersey numbers as draggable instead of full name
- Stats Page
- Game
- Replicate standard game sheet familiar to most coaches
- Create timeline report
- Team
- Create rollup team stat report (for all games [with a filter to each individual game])
- Create advanced reports (time per goal, etc.)
- Player
- Create single player stat report linkable from player id
- Also linkable to followers (youth protected)
- Filter by Lifetime/Year/Season/Team/Game
- Organization/Program
- Full report for season broken down by gender, age level, team
- Need to determine need for larger long time report (may be helpful as players advance careers)
- Organization/Program
- Set types to match US Lax
- Custom CSS for Organizations
- Better layout and design
- Facebook integration
- Following
- Base setup
- Allow parents, etc. ability to follow player (youth protected)
- Deployment
- Better way to keep DB in synch
- Better file deployment (Git?)
First Beta Test
First, let me say that it is one thing to come up with an idea and code it, but once you are forced to see it in action at the speed of a Lacrosse game, one can see some immediate improvements. The previous game ran over so the refs were on a fast pace to get the game started. I had anticipated having a few minutes to populate the field for the first time. Sadly I didn't get that time and was rushed to get players on the field as the game started within seconds of them taking the field. They won the faceoff which gave me time to get everyone on the field. I may have missed a ground ball, but otherwise was able to catch up. The other thing was that without knowing each players name well, I was forced to rely on other parents to help me fill out the roster. What I mean by that is that I just struggled quickly finding a number with a name which pointed out my first real bug in the system. I designed it to be number specific, so that all you needed to do was see the Jersey to tell what happened. But since I neglected to sort my list (either alphabetically or numerically) finding players was a bit of a strain.
Defect 1 - sort by jersey number.
My player list is setup on the right hand side of the screen (which is great for right handers - need to address for lefties at some point), but I had originally designed it to be a fixed width. Some of the names causes wrapping and thus made if more confusing as I couldn't see the numbers neatly lined up on the left hand side of the box.
Defect 2 - eliminate wrapping (either by truncating the name, allowing for an indent on the wrap, or something else).
Although the dragging idea is sound, the problem I had was that the entire name and jersey number were part of the draggable item. The drop point was the center of the draggable item, so players with long names had drop points to the right of where my finger tip was. I missed dragging a couple of players that way. Perhaps this needs a smaller, more reliable draggable item, such as a button with only the jersey on it.
Defect 3 - make jersey the draggable item.
During the game the app worked as expected. The one annoying thing was that on an event, the focus was to a drop down list that I had (which I had already fixed, but not deployed to the live site). Also, the text list was a little small and didn't allow a lot of room for error. This was partially due to my having so many entries for Penalties.
Defect 4 - separate penalties better, make events bigger.
It also occurred to me that I may be missing some event items. I was missing things such as interceptions and turn-overs, but that was due to the reference material I used. My son is U11 and some of those things don't show up until later in his career. But I could have easily recorded that during the game.
Feature Request - more inclusive events.
Lastly, I only had a rudimentary statistics page up, it was the last thing I did on Friday night before the game, and it was raw at best. However, it allowed me to give good stats, but since I had each position on the field as a separate entity, I had to do some adding on the fly (not an issue, but obviously something to address). So not a bug per se, but functionality to complete. One thing I did notice is that a touchable application is tough on a 39 degree day (my poor finger was all but frozen).
I did get a chance to introduce my app to a few new people. Although we lost, I noticed that the opposing team stat keeper was doing everything by hand, literally a list of who did what when and then he would have to add everything up at the end. I showed him the app and asked him if he would like to be part of the beta. He was very interested and I expect to hear from him before next week's game.
That's it for now. I'll update you as things continue to progress.
Build .9022813
- Statistics Page - shows after game is started (very limited functionality - just enough to run first beta test)
- Events write to database asynchronously.
- Score dynamically updates on game screen and records to database, no round trip needed. Upon refresh, sets from database to keep in synch.
- Draggable functions working for iPad (need Android to test).
- Events are variable based on position.
- Game spawns in separate window to eliminate back.
- Event orphans addressed.
- Timer changed to Time of Day clock - need to find longer term solution
- Player reset turned off, killed draggable action, couldn't find a way to reset draggable
Friday, February 22, 2013
Build .9022213
- GameInfo was updated to include launching of game.
- Game was added. Auto setting of clock (bug - starts immediately), first time launch of action (bug - only works the first time, and currently doesn't accept info from the calling action).
- Action added. Design mostly complete, still doesn't accept input.
- Database is now working.
- PHP includes was broken on deploy this morning. Could not find a permanent solution, so put a quick fix into place. Will have to address this at a later date. Forced changes to 60% of code base.
- mysql vs mysqli issues. Early pages were using deprecated code, had to modify to mysqli.
Laxstats.me is up!
Many, many, many thanks to the North Paulding Lacrosse organization. They have generously volunteered to be my primary beta partner during this process (helps when your child plays on one of their teams). Regardless, if I can make this software commercially viable, they will never want for statistics software.
During the beta period, you should expect many changes to the software as I fix bugs, add new features, and make it look much better than it currently does. I'll be adding a backup feature as soon as I can to minimize the risk of data loss on the part of my beta testers. I'll be adding posts here to outline changes that are done, so check back often, especially if I break something that previously worked (yes it does happen).