This is the first week that we really had strangers (no offense strangers) who signed up to use our app. The previous weeks we had friends and family using it and telling us that they liked it and thought it was a good idea. Thanks, everyone! That’s what you are supposed to say. But for this week, we actually had a few people from Reddit, Indie Hackers, and Twitter joining us. It is really fun to see people signing up for your app that you don’t know. We can even see if people are in the app and what they are using, and that is ten times as exciting! Random people are using our app! Woohoo! This week worked well because there were 2 matches that ended in a 0-0 draw, so it was nice to have the app work exactly for the reason we made it. We are looking to start advertising to get 100 users who actually use the Match Oracle each week, so that is one of our next steps. If you want to take a look, you can go to the Match Oracle App and see what you think. Email us if you like what you see!
Things we do in the dark
My dog and I are meandering down our usual path for his evening rituals when we run across a first for both of us. It isn’t the creepy Halloween scene our neighbor set up more than a month ahead of time across the street. It is the dilapidated house at the end of the dead-end road with a white windowless van; a van that looks prime to be full of candy and posters of missing puppies. We usually end up here to take a look at the overflowing mailbox and the unkempt yard. I often wonder if the owners left and just never came back, but there are always three vehicles in the driveway, albeit only one without flat tires. Sniffing the air for the acridity of death, my thoughts often wander to places I’d rather them not.
But tonight, as we head in that direction, I hear an odd sound that I can’t place since it is 9:30 at night. Does someone have a generator running? Everyone’s lights are on, so that doesn’t seem likely. It sounds like a lawnmower, but that doesn’t make sense. As we get closer, there is a man pushing a mower, wearing jeans, a long sleeve flannel shirt, a covid mask, a ball cap, and sunglasses. I wanted to just stand there watching him mow his lawn by the light of his outdoor floodlight. Fear keeps me moving. I envision him suddenly whipping his head in my direction, catching me in my voyeuristic ways. My mind travels through the different outcomes, while I tug my dog to head back home in hopes that he wouldn’t catch sight of the late-night yard man and start howling his displeasure. As we scamper home down the unlit neighborhood street, at least I could now put my unanswered question to rest.
Match Oracle – First Week with Friends and Family
Matt and I have been working hard and are at a place where Match Oracle (https://matchoracle.com) works for what we want. It has a lot of bugs so it isn’t working as smoothly as we’d like, but we always know what to do to fix it. We decided to ask a few friends and family to try it out to hear their thoughts and while people think it is cool, it didn’t work well. First, we automatically grab data from a soccer site that provides data to users. We use an API (Application Programming Interface) which lets websites talk to each other and share data. I’m using Google Sheets to then take this information and apply different formulas to the data to get a match rating. Unfortunately, the API failed when we tried to get too much information at the same time (there are limitations to what is allowed with using an add-on in Google Sheets). While I really like Google Sheets, some of these limitations are pretty annoying. Because of this error, all the games were showing up as a 0-0 draw, so our app was then recommending skipping all of the matches! Obviously, that wasn’t right. The other major problem was that I was out of cell range so I wasn’t able to make the changes necessary to get it up and running, so we had to wait hours to be able to fix it. We learned a lot from our first attempt and hope to have more success with each progressive week.
Match Oracle – How did it start?
In the words of Dani Rojas from Ted Lasso, “Football is life.” Matt (my brother) and I have always enjoyed soccer. We both grew up playing as kids and continued into adulthood. We followed the EPL in the 90s when Man U was the best team by far and even though I’ve parted ways (LFC!), Matt is still a Manchester United supporter. I remember recording all the 1994 World Cup games on VHS and spending the summer watching all of them. Remember when Roberto Baggio missed the PK for Italy in the Finals? I do.
I love watching soccer (especially the Premier League these days) but there are a few aspects I could do without. Diving and the dramatics of getting fouled gets very old very quickly. I really hate watching an entire match and it ending in a 0-0 draw. That’s two hours of my life I’ll never get back… Our lives have also gotten busier and busier as we started to have kids. Weekends are often filling up family activities and although I’d love to sit around and watch Premier League matches all day, I find myself recording as many matches as possible and watching one or two in the evening.
But I don’t want to watch a bad match, so I often would text Matt and ask him “Is the Liverpool match worth watching?” He’s about the only person in the world I can ask that question of because I don’t want any information about the match. All I want to know is should I use my limited time to watch it. Most people aren’t able to only say yes or no, but instead interject a phrase like “Yes, just stick with it,” or “Best. Goal. Ever.” or “You’ll love that match.” Nope. I don’t want to hear anything. Nothing. Nada. Honestly, the only thing I want to know is does it end in a 0-0 tie? That makes it unwatchable (in my book).
A little over a month ago, Matt said, “I have an idea for an app, and I think you’ll like it!” We’ve been working ever since and are getting closer day by day to having a finished product. You can check out where we currently are in our project at https://matchoracle.com. My next post will tell more about it, but feel free to sign up to receive the app once we publish it.
Best Extension for Google Chrome
Some people are really good at keeping their online documents organized. Some are experts at keeping their email inboxes empty. I’ve even heard that there are people who only have a few tabs open in their browser at a time. So few in fact, that they can even read the titles of the websites on the tabs themselves. That’s just plain crazy. I’m lucky if I can even distinguish one tab from another.
But then I discovered a little gem of an extension called Workona Tab Manager.
School. Church. Tennis. Board games. Tech. Random websites. These are all the different types of tabs that I have open at a given time. A middle school boy’s locker rivals the mess at the top of my browser window. But once you load Workona, you are able to categorize all of your tabs and keep them organized. On the left side of the screen, you’ll notice a section that houses all of your workspaces. This is where you choose which topics you want to organize. Make as many workspaces as you’d like to keep yourself on task and organized.

The workspace that I have selected shows all the tabs I like to have open about tennis. When I close this workspace by clicking the x (red arrow), all the tabs go away. When I click on the tennis workspace on a different day, all the tabs magically show back up. It’s a beautiful sight. No longer do I have a long list of bookmarks that I can’t easily organize. If there is a picture I took or a resource that I want to keep organized, I can upload it to Workona’s resource area (blue arrow). Want a quick place to jot notes? The notes section (orange arrow) allows you to do that. Perhaps you even want to start a to-do list based on tennis… again, it’s doable with the tasks section (green arrow). If you collaborate with other Workona users (I have a few colleagues who also use it), we can have the same tabs/notes/resources available if we choose to share a workspace (yellow arrow). Instead of telling a colleague to search Google Drive for the document from 3 months ago, I can just have it as a shared tab and it will show up for them when they select that workspace.
You can easily move tabs from one workspace to another so that you can keep your tabs organized throughout the day. I find that when I have my MS Work tab open, I am able to stay a bit more focused on the task at hand without losing the info I had pulled up about my next tennis match. I’m also able to find the specific tab I need faster since I’m able to see the label on the tab instead of just the icon.
Another feature I really like is the Find Anything feature at the top of the Workona sidebar. If you hit option-f from any part of your browser, the Workona find feature will appear and it will search all of your recent tabs for whatever word you enter (as well as your Google Drive if you have that connected). It is an amazing way to quickly find what you are looking for.
This is one of the best extensions I use and would highly recommend it to anyone who needs a little organization in their life.
Possible fix to Gmail acting slowly in Google Chrome
A few colleagues and I have noticed a delay in the autofill feature of Gmail in the past few days and it is getting more and more annoying by the hour. We also noticed it on our learning management system (which is integrated with Gmail) making most parts of our days take even longer than they’ve been taking recently. The symptom: when we tried to type a name into the to: field, it would type just fine, but as soon as the autofill completed and I hit return, it would take 3-4 seconds for the address to actually be entered. Having to do this for a handful of virtual students during class made this a huge waste of time. Imagine needing to email five students an assignment while keeping the seven students in my right classroom and the seven students in my left classroom on task, while watching precious seconds pass by without being able to do anything productive. Did I mention I stand in a doorway to teach my class?
I did all the regular things I tell all my colleagues to try when the internet is acting weird (you should try these too if you are having issues).
- Make sure you limit the number of tabs you have open concurrently.
- Check to see if Chrome is up to date and restart the browser.
- Restart your computer (I don’t truly know the ins and outs of why this work, but it has solved so many of the unexplainable issues I’ve run into).
- Grab a hammer…
Obviously step four is only the last resort, so I thought about what else could be the problem, and then I remembered… extensions. Extensions are so great and help in many ways, but they are created by lots of random developers. And once you get more than one person working on a project, you can run into some issues. So I disabled all of my extensions. Interestingly enough, you can’t disable all the extensions with a single button. Unless of course, you install another extension that can do that for you. So, I installed the aptly named Disable Extensions Temporarily to quickly check if the extensions were indeed the culprit. Refresh Gmail and magically the issue went away. I enabled the extensions again, and boom, the problem was back. So three by three, I disabled each row of extensions to narrow down my search. And I eventually ran into my bad extension… Rakuten. When I disabled it, the issue disappeared. After uninstalling it and restarting my browser, Gmail was back to its usual self. So if Chrome feels slow and bogged down, take a look and see if Rakuten is the issue for you. If not, try to disable all the extensions and then narrow down which one is causing your headache so that you can go back to a hassle-free experience.
Getting unfat. Again. 2021 edition.
2020 was a bad year for innumerable reasons, the least of which led to expansion. My expansion. I got fat. Again. I’m pretty sure this is something I’ll have to pay attention to for the rest of my life. 7 years ago I got up to my biggest at 235 lbs and spent half a year getting it under control and getting down to 175. This time I had snuck up to 218 when I’d had enough.
The two red flags that usually push me over the edge from “not caring” to “holy crap, how did I end up here?!?!” is when my pants break up with me and when tying my shoes isn’t just one of many steps to get out of the house but instead the main event. Back in December, both occurred.
So on January 3, I weighed in at 218.7 and decided to start getting healthier. I’m a decent tennis player (a high 4.0 rank) and get around the court pretty easily. My days of soccer made quickness one of my boons. But instead of exchanging “racket-fives” and lackluster congratulations at the end of a match, my opponents would ponder aloud; “how does a guy your size get to those shots?” And while I do appreciate a backhanded compliment as much as the next guy, I picked up what they were putting down.
I’ve had success keeping track of calories, and being a math guy with a love of logic, the idea makes a lot of sense. If you eat fewer calories than your body needs to run, you will end up losing weight. So I use a free app called Lose It! that makes tracking the calories I eat and the calories I burn easy (especially in conjunction with my Apple Watch). I’d like to be at my target weight (175 lbs) by the end of the school year, so if I lose around 2 lbs a week, I should be there in time. Enter all my vital information to the app, and it recommends eating 1600 calories a day (more if you exercise). So I’ve been eating small snack bars (often Luna bars or granola bars – 200 calories each) for breakfast, lunch, and snack, and then eat a good size dinner. I’m usually feeling pretty good by the end of the day.
But when you work in a school, there are days that you have to choose to avoid the faculty lounge. And who knew that St. Patrick’s Day was one of those days. Three large trays of cupcakes, two large boxes of even better-looking cupcakes, and a box of Krispy Kreme donuts to complete the trifecta of temptation can be tough to resist. But I did my best Odysseus impression and resisted the call of the sugary sirens. Sure, I could have eaten one, and it would have been fine, but I prefer to stick to my decision to eat healthier and live a healthier lifestyle right now.
Quest for El Dorado
This is one of the new games I’ve picked up recently that I’ve really enjoyed. It is a great 2 player game with a decent amount of strategy built into a deck builder game and a race mechanic. With 3 or 4 players you lose a bit of strategy, but it is still fun.
I just found a pdf with 40 custom maps that look like they could be fun. You can find the original link from BoardGameGeek, but I also stored it in my GDrive in case it ever goes missing. Looking forward to trying it soon… I particularly like the dual paths in a few of them!

Legendary: A Marvel Deck Building Game

I’ve really been enjoying this game recently, and I wanted a place to keep a record of helpful sites and files relating to it.
Legendary: A Marvel Deck Building Game
Campaigns for Legendary (for playing through a whole “story”)
Legendary Dividers
Ruby on Rails – create new from web
When you create an @variable as opposed to a variable, the @ tells that it is an instance variable.
By opening config > routes.rb, we can use the code resources :articles
to give a lot of different paths to articles (index, create, new, edit, show, update, and destroy).
A nice thing about Ruby on Rails is the program kind of tells you what to work on next. We want to do a new article, so if I type in my browser: 0.0.0.0:3000/articles/new, it will tell me why it can’t do that (no route). So go to route.rb and give it the resources to do it. Reload the page and see that it says uninitialized ArticleController. Guess where we go next? Yup. App > Controllers > new file > “articles_controller.rb”. The code is as follows:class ArticlesController < ApplicationController
def new
end
end
Save it and reload 0.0.0.0:3000/articles/new. Now it is missing the template (view). Go to views and create a new folder called articles. Inside that folder create a file called new.html.erb. Put
<h1>Create a new article</h1>
<%= form_for @article do |f| %>
<% end %>
When you save and run this, you’ll see an error. It says the first argument can’t be empty (because we haven’t made @article yet). So we need to go to articles_controller.rb and create it. So now it should have:class ArticlesController < ApplicationController
def new
@article = Article.new
end
end
Since we got all of that working, we can now build the form on new.html.erb.<h1>Create a new article</h1>
<%= form_for @article do |f| %>
<p>
<%= f.label :title %><br/>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :description %>
<%= f.text_area :description %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
Everything works, but when you try to click “Create Article” it won’t work. The error says “action create couldn’t be found in ArticlesController”. So we need to define create in ArticlesController. That is done by typing:class ArticlesController < ApplicationController
def new
end
def create
#this will show you what is happening, but just comment it out
#render plain: params[:article].inspect
@article = Article.new(article_params)
if @article.save
flash[:notice] = "Article successfully created
redirect_to articles_path(@article)
else
render 'new'
end
end
private
def article_params
params:require(:article).permit(:title, :description)
end
end
The next thing we need to do is figure out how to deal flash[:notice]
<%= yield %>
<% flash.each do |name, msg| %>
<ul>
<li><%= msg %></li>
</ul>
<% end %>
This all looks good but we don’t have a way of displaying the errors or the validations that occur when you click “Create Article”. We can fix that by entering some code on the new.html.erb page. Right below <% if @article.errors.any? %>
<h2>The following errors prevented the article from getting created:</h2>
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
Now when I try to create an article with no title, I do get which errors are occurring so that I know why I can’t make an article. But when I put in a correct title and description, I get a message “The action ‘show’ could not be found in ArticlesController.” So I need to define show in ArticlesController found in app > controllers > articles_controller.rb. It doesn’t seem to matter where I place the define, but I’m going to put it right below create.def show
@article = Article.find(params[:id])
end
You now have the <h1>Showing selected articles</h1>
<p>
Title: <%= @article.title %>
</p>
<p>
Description: <%= @article.description %>
</p>
That should be it! We can now create articles by going to 0.0.0.0:3000/articles/new. Make sure to commit and push to git and we are done for now. Next entry will be about editing entries.