Starting a new project

In the spirit of never stop learning I want to start a new project. It has been a long time since I learned anything new related to programming and I’ve been wanting to dust of the rust and build something for a while.

Background

It seems like every time I go to learn a new programming language I use our families private online photo album as my thing to redo. Over the years it has gone through a number of iterations. Each version in a new language went through a few versions before scrapping the old and re-writing it in a new language.

It started out as a Classic ASP script that was pretty easy to use. You would create a folder and dump images into it and it would render a simple gallery to look through them.

From there it went to a Flash version where it used XML files to store information about the images and then display them in a flash format. This is really where the organization started coming in. We created collections of albums which were usually simply a month, but not always, so something like “September 2019”. Inside that collection there could be a number of Albums. Examples of these would be “Noahs Birthday”, or “Back to School”. Then each album would contain images which had a couple fields of information like a title and note you could add to each one. This structure has carried over.

The next version was to move to PHP with a MySql database to store information about everything. This one stuck around for quite a while but re-written a few times and had new features added to it. So lots of iterations. This was one of the tricker ones to get sorted out because I had to write an importer to parse the XML files and insert them into the database.

One mistake I made here as well was to store all the images into one directory. I really liked the idea of the first one where things were organized by folders so that if I just wanted to browser through them the folders had meaning and I could go through them just on the file system. So if I backed everything up and didn’t have a web server to view things on I could still see and have some understanding of when and what the images were from. So in one of the PHP versions I corrected this and wrote a script to go through and create folders based on the Collection and Album names and move all the images into them.

The last iteration which has somehow hung around and kept working for more years than I intended was written in Node.js. It is pretty rough and I kept the MySql database to store everything in. The code for this is not ideal but it is working.

Besides learning some about Node.js I also added some new features which have been useful. I set things up so that when uploading they were automatically stored in shared Dropbox folder so things are automatically backed up there and in the folder structure I mentioned before so they can easily be viewed with out the app. The other fun addition was the automatic creation of different image sizes in a separate folder and sort of a cache. When an album is viewed it checks each image to see if there is a thumbnail version in the cache folder to show and if not it generates one and saves it. It does the same for a more medium size view of the image while keeping the high resolution original to have access to. The last thing was a rudimentary search function where it can search the title and comment fields and show all images that have the term you searched for in an exact word search.

Project outline

For this project it kind of exploded in scope really quickly when I started thinking about it. The first thought was that I wanted to learn to create an iOS app and figured the photo album would be a great way to do it. I figure the best way to do that would be to have an API for the photo album that the app could talk back and forth to.

The current version doesn’t have an API and needs a refresh anyway so I decided I’d start there and re-write it still in Node.js but with a bit better understanding of how it works now and have it be API driven as well. I’ve never created anything API driven before and so it introduces some challenges. One of them being how to secure things properly.

Another thing that has been on my list for a while is to learn React, so why not use it in the re-write. I’ve been using MySql for a long time and I have a good understanding of it, but I was never happy with the database code in the current photo album and so I’ve decided to look at a NoSql database like MongoDB. With that it led me to find Mongoose as well. I’ll have to create a migration script as well to move things from MySql to MongoDB.

This is going to be a pretty big undertaking and I have no illusions about how long it will likely take. Right now I’m still in the information gathering stage and gathering learning resources. I’m going to start with creating the API and then build the web version to interact with it. I’ll start with a blank database and then migrate over the existing data. Once that is all working well I’ll move on to creating the iOS app. Likely in parallel I’ll spend some time learning about iOS development and going through some tutorials.

I’m not going to set a deadline for myself as life is really busy but it will be a slow road. I plan to blog about the progress and start a GitHub Repo to store things in as I go. If you want to follow along I’ll be using the tag #project-photo-album

Happy 10th birthday Noah

Today may youngest child turns 10 years old. That makes me feel both old and happy. I’m so proud of all my kids and the people they are growing into.

I’m sure this won’t last many more years but for now he is one of my best friends. Soon he’ll get too old and not want anything to do with his old dad. So for now I’ll take all the time I can to be with and play with him.

His sense of humour, his kindness, his confidence, and his determination, all things that can inspire me to be a better person and father for him.

Jen wrote a great post earlier as well which says things better than I do.

I was so glad the Grand Meetup didn’t overlap with his birthday this year so we could be here to celebrate with him. Thankfully the one year I was away from him on it my co-workers helped me wish him a birthday wishes.

I gathered a few pictures of Noah and I together over the years and saved them to this Google Photo Album if you want to check out how cute he is https://photos.app.goo.gl/adCDEZKT7cdbDWSc8

Lonely Working Distributed

Recently I wrote about having connections with my distributed team. Part of that was because people have assumed it must be lonely working from home without seeing people. It’s been rare that I’ve ever felt this way much because of my team but also because I have a great network of family and friends I can do things with and have conversations with outside of work.

Listening yesterday to the Distributed podcast episode with Leo Widrich, they talked some about loneliness. His recommendation was basically what I have, strong work relationships and a good support network at home. Overall the episode was really good and has given me more to think about.

Leo talked about dealing with stresses and how they build up over time. We all have ways to deal with it through auto-regulation like my go to: eating. Instead we need to deal with it through self-regulation. Having a partner or group you can talk with can help the process. This is something I need to look into more and do a better job at dealing instead of distracting myself or eating.

Lately I’ve been going through some stresses again and need to work through them, but also be a better partner for those involved in these with me and be sure I’m there to hear them and help them.

Each of these Distributed podcast episodes have been good so far, but this one has been my favourite and given me things to learn more on. I recommend giving it a listen.

Distributed Team

Recently I was telling someone about my job for the first time. We were talking about how we communicate and how there is almost always someone else online working no matter when you are. They said something along the lines of that it must be like talking to some random stranger.

While that’s true some of the time thankfully because Automattic hires great people there is never a worry involved if I have to message someone I’ve never spoken to before. I’ve yet to have someone be unapproachable or find it hard to talk with them. This isn’t something unique to a distributed work environment either. We have close to 1000 employees, even if we were all in the same office building I wouldn’t know everyone.

There are also many people at the company who I know well and have built good relationships with. These are typically the people I work directly with, and especially my team, or those who have been on my team at some point. With them especially it doesn’t feel much different than people I’ve worked with side by side.

Partially this is because we do get to spend time together in person each year, but also because we talk regularly in our day to day work. Each year we have a team specific meet up where we all travel to one location and work together for almost a week. Then each year there is also the company wide meetup where we have time to spend together as a team as well. The next one is coming up very soon and I can’t wait to see my team again.

While we don’t get to do things the same as people who work in a office together, it isn’t that different, we just have to find different ways to do it. We don’t eat cake together in the break room for everyones birthday, but we do regularly celebrate each others milestone moments in life.

Recently a team member became a Grand Parent for the first time and we got to be there with them and see pictures almost instantly. I’m about to become a Grand Parent for the first time myself and we’ll get to go down this path together and support each other. It took me a while to come to terms that I was really going to have a Grand child and she already helped me come around and see the blessing it will be.

As I’ve written about I’m working on getting back into shape and I share my milestones in that with my team as well. They cheer me on, motivate me, and even push me to keep going and do better. One team member when it had been a couple days since I’d ran went on a run themselves and shared it pushing me to go too. We’re doing it together even though we’re far apart.

Learning to play tennis and I’ve had team members who play giving me tips, and are challenging me to matches if we can make it work when we are together soon.

One of the hard times is when a team member is having a hard time. You badly want to be there for them, close to help, and it is harder being far apart. Thankfully it’s easier than ever to arrange deliveries or ship things to people. Even if it is just a distraction from what is going on in their lives.

Even being distributed I consider my team friends and I’m so glad to be able to work with them. Very much looking forward to getting some in person time again soon.

Fitness Roller Coaster

Fitness, or lack there of, has been a reoccurring topic on this blog and my life. Like many people who struggle with weight things have been a roller coaster. A few years back I thought I had finally broken that and had built all the good habits I needed to stay fit and healthy, but something came a long and I slowly fell back into my old ways.

Fast forward to now and I am at another point of working to get into better habits again. This isn’t new either. I’ve ended up doing well for a couple or few weeks and then slipping again. Right now I’m about two weeks into trying hard to get with it consistently. I’m trying to take a bit of a different approach this time though.

Each time previously I would find essentially one thing and go with it as my go to means of exercise. Julia Michaels fitness videos went a long way to getting me in shape in the past. Now between all the times I’ve started and stopped I’ve done these videos a lot and find it hard to stay interested. For a long time running kept me going. I was able to push myself and I ran a lot. Since March of 2016 I haven’t really run very much except a couple attempts. Back then I hurt myself by pushing too far running and taking the time to get better never really got back into the habit.

This time I’m trying to mix it up and have a number of different things I can do. Things I enjoy. Things I’m not just doing for the sake of getting into shape but for other reasons as well.

There is of course basketball. From helping out coaching and playing with Noah I always end up in a sweat. Basketball is something I really enjoy and it is mine and Noahs thing. We get to spend time together doing it.

I’ve added in biking again. Last year I bought a bike but haven’t used it much yet this year until recently. This is something I’ve always enjoyed doing since a teenager. There are lots of good trails around to explore and I’ve done a few good rides over the past few weeks. I have a good friend who has been coming with me as well. This keeps me motivated and someone to help push me to go out, and push me to go further and harder when we do. It’s also something I can do on my own and am setting a goal for myself around it. Before the end of the season I need to be able to bike up my road with out stopping.

We live at the top of a good hill so it takes a lot to get up. It is about 120m in elevation over 1.5km road. That is almost 400″ over a mile. It’s not a big deal for some and I see people biking up it, but it is a work out for me to even walk up it. I’ve made it up once so far peddling the whole way but it involved a number of stops. Most of the time I have to walk some of the way and take breaks. If I can make it up without stopping I figure that will be a good indicator I’ve made really solid progress.

In the middle of June after a random conversation with my Brother in Law I’ve started playing a bit of tennis. He previously played a lot but hasn’t in years. So I went out and bought a racquet and he is teaching me how to play. I’m terrible so far but he is patient and helping me a long. It’s a fun sport and I’m enjoying learning. This is also another person who invites me out to play. Peer pressure and learning a new sport are both good motivators to get a workout in.

To add another alternative I’ve recently started running a bit again. This might be the hardest one for me. Because I did it a lot in the past and was getting fairly good at it. My brain things it wasn’t that long ago, but my body tells me differently.

Back in February 2016 I ran 10k at a pace of 5:15 min/km. Today I went for a run and could only go 3k and my pace was 6:48 min/km. I’m trying my best not to get discouraged because of where I was a few years ago and use it for motivation to make progress back to that place. I’ve also signed up for a 5k race at the Valley Harvest Marathon. In the past I’ve done the 10k at this event twice. My goal is to be able to run the 5k in 30 minutes. It is in October so I have some time to get there, but need some training.

Now
Then

With all these different items, each with their own motivations, and different people to support and push me I think I’m on a good track.
Over the past couple weeks I’ve managed to have fun and drop about 10 lbs. There is still a lot more to get to my goal, again, but I’m determined to do it.

My favourite way to relax

Tomorrow morning I start back to work after a week off. Previously I had a bad habit of at least checking in on work a few times while I was supposed to be away. This time though I disconnected almost entirely. Not even coming into Slack to socialize with my team.

We spent most of our week in Moncton, around a three hour drive away. It was pretty close compared to some of our last few trips but it was exactly what was needed. We rented an Airbnb with close family. It was exactly what I needed.

We had a great mix of fun and relaxation. We visited TreeGo which is a ropes course is a mix of obstacles and zip lines. It was one of my favourite parts of the trip but physically exhausting. Luckily the next day we headed to the beach.

The beach is our families happy place and this beach is one of the best around. We’ve had our family pictures taken there a few times. The water is pretty warm for the Atlantic Ocean, the sand is beautiful, and the water is nice and calm. Was able to out and play with the kids, but also relax.

Out on the water with the kids playing around, the sun high and warm in the sky, I was able to lay back and just float on my back. The water blocking out most of the noise around, the water calm and warm, and my eyes closed. So extremely peaceful. The only thing that I worried about was the life guards thinking I was in trouble without moving. I could have lay there for hours I think.

This morning I went for a 30km bike ride and the the heat was intense. The last 5km were rough and extremely hot. We ended up heading to the lake in the afternoon which allowed me to to relax and rest my tired legs. I was able to float there but the fresh water is not the same as salt water which makes it easier to stay up.

It was a wonderful way to end a vacation but looking forward to lots of summer left to spend some time on the water with my family and friends.

My hats

My family likes to make fun of me because I like hats. They say I have too many and give me a hard time when ever I go to buy a new one. I don’t really have that many and most of them serve a purpose or occasion.

Recently I made a deal though that I won’t buy a new one for a year so that I could justify buying an expensive set of earphones. That got me thinking of all my hats and thought I may as well share all my hats.

Basketball

Probably the biggest category of hats I have. Most are Toronto Raptors hats but there is a Michael Jordan Jumpman hat and a Basketball Canada one. As of this writing I don’t have the Championship hat it is still on its way.

WordPress

Most people who know me know I love my WordPress swag. Numerous shirts, pictures, backpacks, stickers, my laptop, and of course some hats.

Baseball

A couple summers ago we took in a Blue Jays baseball game during one of our trips and they are the only Canadian team in the MLB so I of course need one of their hats.

The red W hat is a Kentville Wildcats one which is Noah’s team he is playing for. We also go watch some of the seniors men Wildcat games so I needed a hat to cheer them all on with.

Running

I have two hats for running. While I don’t run much anymore I do plan to get back into it and they come in handy for other sweaty activities as well.

Brands

These are random ones that I just happened to like the hats. I don’t have much affiliation with any of these but they looked good. All but the Puma hat are pretty old and only usually get worn when out in the yard or if I’m going to get sweaty or dirty.

Local

These are hats from local businesses or groups.

One is from New Scotland clothing. Nova Scotia is Latin for New Scotland so a local company started up a brand of clothing around that which I really like.

TAN Coffee is one of my favourite local cafes and coffee roasters. They are the main coffee I drink here at home and used to drink a fair number from them directly before I got my own espresso machine.

The Acadia Axemen is the mascot for the local University. This is where I graduated from and we regularly go to watch the basketball teams play during the season.

There you go. That is all my hats. I don’t think they are that many. While I could likely downsize as some don’t get worn very often anymore I still like them all.

A close to home summer

For the past few summers we have spent a lot of it on the road on a couple of epic trips. If you haven’t before you can read about those trips here, 2017 and 2018. This year though we’re going to stay close to home.

So far things have been a combination of busy and relaxing. Noah seems to be keeping things the most busy. He has baseball which is usually a practise and a game a week. So far it has been going really well. This is his first time ever playing and he’s getting better fast.

There is of course basketball. There isn’t any team basketball going on but he has I go out to the courts fairly regularly to play and he has been to a couple skills camps. The first one was put on by Danny Green who had just finished winning the NBA Championship with the Toronto Raptors. Noah got to briefly meet Danny, get his autograph, a photo, and play a quick bit of one on one with him. While there Lindell Wigginton also came one day and Noah got his picture with him and autograph as well. Lindell is from Nova Scotia and just signed a contract to play in the NBA Summer League with the Raptors. We’ve been watching him play and hoping he ends up sticking with the team.

He also had a camp which was put on by a coach of one of our local high school teams and he had some of the Under 15 Team Nova Scotia boys come out to help. Noah was the youngest and smallest one there but he loved it and learned a lot.

One hilarious moment was during a three in three game Noah was team mates with one of them who is 6′ 6″ tall. Noah setup and took a charge against the other team attacking and drew the offensive foul. Earning some respect the boy came over cheering and went to help pick him but but instead lifted him right up in the air like he was going to dead lift him lol.

Caile and Ella have been dancing as usual but less so than during the season. Ella has been trying out Hip Hop style for the first time as well. She seems to have fun with it but not sure she will do it much more.

Each nice day so far Jen has been taking the kids swimming somewhere. I’ve only been a couple times just based on the times of day they’ve gone but they want to do it as much as possible and having a blast doing it. Usually some friends or family have come along too so that it is even more enjoyable.

Yesterday we went to Halifax and played a tourist in our own capital city. We started by taking the ferry across the harbour and walked up to Citadel Hill toured around there. It’s a really cool place and part of history and has some good views of the city.

From there we walked back to the water front and had some treats at Cows Ice Cream. Some of the kids also stopped at the Freaks Lunch Box to get some candy snacks as well.

It was a fun day and it is nice to get to enjoy our local city for things like that instead of the usual trips we make there which tend to be for shopping trips, dance competitions, or basketball, which all seem to be such busy trips. Spending leisure time with friends and family was just what was needed.

Trying baseball

If you’ve been following along at all you’ll know that basketball has been the main sport for Noah. He loves it and constantly wants to be playing or watching it. He’s tried other sports before when he was younger but none that stuck.

For a while I’ve been wanting him to try something else again if for no other reason that maybe it will make him not burn out or get tired of basketball. He had a few friends from school and basketball starting out with baseball this year so he agreed to give it a try.

We’ve been practicing for about a month now and it’s been up and down. Some nights he seems to enjoy it, others he is finding it slow and a little boring.

His team had their first game tonight, and while I think basketball will always win out in his mind, he had a good time and seemed to enjoy it. They won the game and he was up to bat twice and was walked both times. He was really excited about stealing bases and using his speed and he managed to steal second then third.

So far throwing and catching seems to be coming along pretty well but hitting needs some work. We don’t have a tee, and we have not a lot of backyard to hit in so I put together a ball on a rope for him to practise hitting. It seemed to work pretty well. You can hit it standing still so it is sort of like a tee, or you can toss it out and let it come back to you to hit a ball moving towards you.

He seems happy to keep working on it which is great. Gives us something fun to do while basketball season is out. Though there are still some basketball camps that he’ll be attending over the summer too.

I’m glad that he’s trying other sports, but also glad that basketball is still his number one.

Toronto March break vacation

We’ve been waiting since Christmas to take this trip. This year we surprised everyone with tickets to see a Toronto Raptors game over March Break. This may just become new tradition. We haven’t really done anything big for March break before, but this ended up being a great vacation.

We debated for a short bit about flying but just too expensive so we did our usual road trip. We broke up the drive over a few days and were able to see friends along the way. We drove to Northern New Brunswick the first night and stayed with friends there who we don’t get to see nearly enough and we stayed on the way back as well. Next we headed to Montreal for a night.

Montreal

In Montreal we were able to meet up with a couple co-workers from my team Jupiter! They met us at the Montreal Science Centre which was fun and a good way to stretch our legs for a while.

Since we were in Montreal we figured we should have some real poutine as well. The locals humoured us and came along too. There were so many other people that I’d love to have seen a long the way but our dates and plans were kind of up in the air until the last minute. One of the benefits and downfalls of working in a distributed company, you know people everywhere, but on short trips it can be a challenge to take advantage of that.

CN Tower

Though the main point of the trip was to see the Toronto Raptors play when in Toronto for the first time as a family we had to do some of the other tourist things a well. We spent pretty much the whole day on Monday in Toronto and first hit up the CN Tower. There were some impressive views. Noah was pretty hesitant to go up and buried his head into me the whole elevator ride up, but once we were there he loved it. Even out on the glass floor jumping up and down. Caile and I on the other had almost didn’t go out onto it. Last minute right before we left we finally went out, slowly and tentatively.

Ripley’s Aquarium

We had heard from many people that the Aquarium was a must see. Everyone has really enjoyed on all the ones we have visited over the years and this one is right up there for sure.

Toronto Raptors Game

After the aquarium we walked to get something to eat at Jen’s favourite restaurant Wahlburgers. The burgers are pretty good, but it’s her love of Donnie Wahlberg and NKOTB that makes it for her.

Timing the whole day worked out really well and we made it back to Scotiabank Arena with just a bit of a wait before the doors opened. While in line we saw two people from here in Nova Scotia going to the game a well. Earlier on our way to the CN Tower we ran into one of Jen’s friends from school as well. There were other people of we knew of who were at the same game as us but we didn’t see them.

The game ended up being fantastic, though not really suspenseful. They beat the Knicks 128 – 92. Seeing an NBA game live regardless was a lot of fun and it was great to see them win.

Going into the game we were a little nervous. There were a bunch of players that we might not be able to see play. It was the second night of a back to back game which meant we were pretty sure Kawhi Leonard wouldn’t play and that was right. Serge Ibaka was out due to a suspension and both Kyle Lowry and Fred VanVleet had been out some games due to injury so we were hoping they would be back. Thankfully they both played, though Kyle was re-injured in the third quarter and hasn’t been back yet.

Danny Green and Pascal Siakam are both favourites in our house and being there early we were able to get down close and see them both warming up before things got underway. One of the other big highlights for me was seeing Fred VanVleet get his first ever NBA double double. He’s one of my favourite players, if you’re not familiar with him this is a great article written last year.

Everyone had a lot of fun and is looking forward to our next opportunity to see a game, maybe next March break again.

Escape Room

One of the things we talked about on the drive to do an Escape Room. I’ve done a couple on work trips, but no one else had. We tried to find one to break up one of our drive days but it never worked out. One day after shopping at the Eaton’s Centre we intended to head to the Ontario Science Centre but realized it was too close to closing time. So we were trying to find something else to do and Ella thought of an Escape Room. We found a good family friendly one we were able to book last minute.

It was a Christmas themed one where we had to help an elf save the Christmas Spirit. It was a lot of fun solving all the clues and puzzles. Everyone was involved and together we escaped the room and ended up with some snow on us as a result.

Toronto Zoo

The whole trip we were watching the weather both for our drives and because we knew we wanted to go to the zoo. We timed it well because we had a lovely day for it. It was the first day of Spring and it even felt like it.

There was weather in the forecast for our scheduled drive home though so we called the trip a day short. We hit the zoo first thing when it opened and pretty much had it to ourselves. Once we were done we hit the road on our way home.

%d bloggers like this: