Skip to content

Blog

2024 10 06 ESPN Fantasy Football SpringBoot

Quickly reviewing what I learned looking through the api.

In the in-match api return for an active week, i.e. scoringPeriodId is set to the current week, and our view contains mBoxScore, mScoreBoard, mLiveScoring, mMatchupScore, we'll get each teams active roster, currrent total projected points, and current live points. In each roster spot, we'll get two different stat objects, one representing the original projection and one the live stats. In the original projection, it's important to note that we have a appliedTotalCeiling value, we'll need that.

The appliedTotalCeiling is almost like a maximum conceived value that the player could achieve for this game. The ESPN match cycles through each player of the team and determines the projected points, which includes the live points + the remaingProjectedPoints, which is the fractional game value left multipled by the original projection.

In the Tt function, we see that the projected ceiling is the addition of the original projected ceiling times the game time remaining fraction plus the live points.

2024 08 26 ESPN Fantasy Football SpringBoot

Ok, my fantasy drafts have been scheduled, season is only a couple of weeks away. The pressure is finally setting it to get this project going again. I kind of wish I had started it back up a couple months ago but here we go!

Now that I am using a season Id from a previous year I realized I had to make some corrections to my League Post method, which was mainly some null checks, like for example playoff bye matches do not have an Away team. Also migrating from SpringBoot 2.x to 3.x was of course a pain as it always has been.

Angular app is initiated. I've gone ahead and created most of the entities. Next step is to finish off the entities and get some components going.

2024 07 27 Flutter

Getting started page flutter.dev.

Create new project

flutter create myapp

Flutter choose device VS Code

To run the app

flutter run

or just hit f5

To perform hot reload simply type

r

into the terminal.

To create a new Statless Widget, simply type stl into the editor.

Fonts

Add font files to /fonts then edit the pubspec.yaml file. Refresh the pubspec by entering the following into the cmd

flutter pub get

Flutter packages

https://pub.dev/

Hit the copy buttuon next to a package (i.e. flutter_svg).

Paste it in the dependencies section within pubspec.yaml. Then run

flutter pub get

SVG Icons

Create a folder /assets, and within that /assets/icons.

Then within pubspec.yaml, uncomment the assets block and add - assets/icons/

Refactoring Widgets

Click on a widget, i.e. Container, and hit ctr .. Then you can wrap in widget, then type the widget (i.e. GestureDetector).

Installing Office 2013 with Wine

So I ditched Windows 10 on my HP Spectre 360 since it didn't meet the upgrade requirements for Windows 11. Instead I overwrote the OS with Linux Mint. Now I am trying to get my Office 2013 installed using Wine.

To install Wine on Linux mint, I followed these instructions. Note that sudo apt install --install-recommends winehq-stable actually needs to be changed to `sudo apt install --install-recommends wine-stable

I follow these instructions. However, I realized that my Office 2013 version was 64 bit and that therefore Wine wouldn't run the setup.exe.

So I ran

rm -rf ~/.wine/Office2013

to remove the WINEPREFIX, and replaced it by changing win32 with win64:

WINEPREFIX=~/.wine/Office2013 WINEARCH=win64 winecfg

The installer ran until it said it ran into an error. I then followed the instructions here which said that a few more winetricks needed to be installed in addition to msxml16 which the first tutorial already installs.

WINEPREFIX=~/.wine/Office2013 WINEARCH=win64 winetricks msxml6 msftedit riched20 riched30 vb6run corefonts

However, I still go the same error. I'm not sure if I simply need to have the 32 bit version or if there's something left I'm missing.

Setting up your own private Docker Hub Repository

Setting up a docker repository in Nexus requires some additional configuration as the Docker api needs to run on a separate port. Once set up, you can now dockerize and back up your applications to your own server!

I have all the details on how to set up your docker repo here here. I will be adding additional documentation about how to actually dockerize your applications next.

Communicating between components

In Angular, it is vital to be able to transfer data between components, whether it's a parent/child relationship or a sibling relationship.

Check out the solutions I documented using @Input, @Output, Service, and @ViewChild with full interactive StackBlitz examples here.

Organizing different repositories and environmental variables

Organizing different publishing libraries should be straightforward in the build.gradle in situations where you might pubish to a snapshot repository vs a release repository.

In the following build.gradle, note that I can simply change the publishRepository to releasesRepository and the artifact will be published accordingly. I don't yet have a sexy solution for having the "SNAPSHOT" at the end of the version, but I will report back if I streamline that further.

Setting up a Free, Self Hosted, Photo Storage Alternative

I am amazed at how good this free and open-source photo solution is. A software called Immich, developed by an electrical/software engineer, who wanted no-limits, private, free alternative to storing photos after starting a family.

Hey, I also started a family not that long ago and all of the sudden, I started taking TONS of photos. Fortunately for me, Alex has already created this amazing solution and open-sourced it, so that the whole community gets to use this!