Beyond CRUD n’ Cruft Data-Modeling

I dig through a lot of internet results and blog entries that show CRUD data modeling all the time. A lot of these blog entries and documentation are pretty solid. Unfortunately, rarely do we end up with data that is accurately or precisely modeled the way it ought to be or the way we would ideally use it. In this post I’m going to take some sample elements of data and model it out for various uses. Then reconstitute that data into different structures for various uses within microservices, loading, reading, both in normalized form and denormalized form.

The Domain: Railroad Systems & Services

The domain I chose for this particular example is the entire global spectrum of rail services. Imagine if you would a system that can track all the trains in the world, or even just the trains in a particular area of the world, like the United States. In the United States the trains can be broken down into logical structures of data for various things like freight trains and passenger trains. Trains operated under a particular operator like Amtrak, Union Pacific, or Norfolk Southern, and their respective consists that the train is made up of. Let’s get into some particular word definitions to fully detail this domain. Continue reading “Beyond CRUD n’ Cruft Data-Modeling”

TRIP REPORT: QCon SF 2019, Amtrak Coast Starlight, #Bikelife in San Francisco, and Thoughts

This past week has been QCon. I departed last Sunday on the Coast Starlight. My preference is to take the train when it’s possible. Sometimes the schedule allows it, sometimes it doesn’t. This trip, the schedule was perfect for a little coding time on the train, reading, and introspection. Taking the train always gives me a bunch of time to do these things uninterupted while being comfortable and enjoying the countryside rolling by.

The train got out of the station and I cut some video for a VLOG episode or two. To note, I’ve got more than a few, some linked in this post, VLOG’s of the week and the various adventure. I hope they’re interesting and in some cases informational! Feel free to ask questions, I’m more than happy to elaborate on any of the videos, content, and the related topics.

Departing Seattle for San Francisco to attend QCon

The train departs at 9:45am from King Street Station. If I had to drive or take transit I’d have to get up at about 6am to get there and fiddle with luggage and all that, but since I was cycling bikelife style to the station, I got up around 7:15. However, I didn’t follow that schedule a made a coffee stop on the way.

When I arrived at the station I saw one of those post boards that showed the old Union Station near the King Street Station and I point out a few details about the two. I included some tips for bike life traveling via the train too. Rolled on out to the platform and boarded. Watch the video for a shrot summary of my departure and boarding the train.

The countryside is beautiful on this trip, and getting into Oakland and the ferry ride across the bay is spectacular. I had to, of course, VLOG a bit of that too.

After getting in I made my way back down via Valencia onto Market Street to the Hyatt for QCon Day 1 events. A VLOG on that run with a little montage and then some thoughts.

First thoughts, it won’t be soon enough that get get SOV (Single Occupant Vehicles) off of Market Street altogether. The street is used in a vastly superior way having transit, active transport, and work vehicles as is. Having SOV’s plying the streets just makes it dangerous and clogs up the whole thing, but alas, that’s just a first though.

I got into QCon and was super stoked to catch a few talks and talk to fellow data folks. I had noted though, even as a sponsor, our badges don’t get us access to anything really but the sponsorship hallway. That was kind of a bummer, so in the interim I had to work some magic so that I could catch some talks!

Palumi & Langauges of Infrastructure by Joe Duffy was the first talk I wanted to see. Alas, with scheduling I couldn’t make it. The description read,

“We have all become cloud developers. Every day we use the cloud to supercharge our applications, deliver new capabilities, and reach scales previously unheard of. Leveraging the cloud effectively, however, means navigating and mastering the ever-expanding infrastructure landscape, including public cloud services for compute, data, and AI; containers, serverless, and Kubernetes; hybrid environments; and even SaaS — often many at once.

Join us to learn about the modern languages, tools, and techniques that leading-edge companies are using to innovate in this world of ever-increasing cloud capabilities. We will explore: how to create, deploy, and manage cloud applications and infrastructures; approaches for cloud architectures and continuous delivery; and how modularity and reuse is being applied to infrastructure to tame the complexity, boost productivity, and ensure secure best practices.”

Hopefully we can get Joe to come speak at Seattle Scalability in the coming year! I’d even like to setup a hack day akin to a workshop to try out some of these techniques and related languages for infrastructure for the meet! Ping me Joe and we’ll make it happen!

The next talk I really wanted to catch too was Lachlan‘s “Helm 3: A Mariner’s Delight”.

“Adjusting your spyglass and looking out over the water, you can see how useful a package manager like Helm is. Perhaps you’ve used it to manage the fractal complexity of packages on your Kubernetes clusters (without losing track of versions stashed in the hold). But Helm 3 is rumored to be different, and you’re ready to get started on this exciting voyage – as soon as you have some idea of what’s port and what’s starboard!

In this story-fueled session, we’ll take you through differences from the Helm of yore, tips for a successful rollout or upgrade, and opportunities to shape the project’s future. The cloud native waters can be choppy, but a technical deep dive powered by open source tooling will steer you right!”

But again, my scheduling and access prevented this but I’m hopeful. This next week is KubeCon and I should be able to catch up with a number of people, maybe even Lachlan, on the Helm 3 bits!

Other talks that I might have or might not have officially attended included “Beyond Microservices: Streams, State and Scalability”, “Better Living through Software at The Human Utility”, and “Parsing JSON Really Quickly: Lessons Learned”. I hear they were all spectacular talks! 😉

Day 2 rolled in. Talked with Auth0 and Solace at their respective booths, if you’re curious.

After all that, another solid QCon, I’ll make sure to get a full pass next time if I can make it. Unless of course they fix that ranked access sponsorship pass mess, then I’d happily opt for that again. It is after all rather interesting to speak with all the companies.

After the conference I put together an exit VLOG. Enoy! Catch everybody next time!

Next week, on to KubeCon, cuz two conferences in two weeks is like a two-fer!

 

IDE Launcher via Amtrak Cascades to Portland for ML4ALL

Got fidgety on the train, and just wanted to write code, on the way down to Portland for ML4ALL so I wrote up some decision tree code on determining what IDE’s I want opened up. Ya know, if you do something more than twice it needs automated, so I’ve started the process of automating all startup and shutdown tasks for a day’s coding. Simplistic geeky train geek code fun code is fun geeky train code. Cheers!

[sourcecode language=”cpp”]
package main

import (
“time”
“fmt”
)

var sessionMinimal, sessionMedium, sessionLong, sessionZone time.Duration
var language string

func main() {
sessionMinimal = 15
sessionMedium = 45
sessionLong = 90
sessionZone = 180

language = “golang”

openIde(“golang”, 200)
}

func openIde(languageStack string, expectedCodingTime time.Duration) {
var ide string

switch {
case expectedCodingTime sessionZone:
ide = stackSpecific(languageStack, false, true, true)
fmt.Printf(“Launching: %s”, ide)

}
}

func stackSpecific(language string, fastLaunch bool, featureRich bool, introspective bool) string {
if fastLaunch == true && featureRich == true && introspective == true {
return “\n\nCome on, you know better. You get at best two out of three.\n\n”
}

if fastLaunch == true && featureRich == true {
return “Visual Studio Code”
}

if featureRich == true && introspective == true {
switch language {
case “SQL”:
return “DataGrip”
case “C”:
return “CLion”
case “Python”:
return “PyCharm”
case “golang”:
return “Goland”
case “java”:
return “IntelliJ”
case “scala”:
return “IntelliJ”
case “kotlin”:
return “IntelliJ”
case “dotnet”:
return “Rider”
case “csharp”:
return “Rider”
case “fsharp”:
return “Rider”
case “vbnet”:
return “Rider”
case “javascript”:
return “Webstorm”
case “hcl”:
return “IntelliJ”
case “ruby”:
return “RubyMine”
case “swift”:
return “AppCode”
case “obj-c”:
return “AppCode”
default:
return “IntelliJ”
}
}

if featureRich == true {
switch language {
case “swift”:
return “AppCode”
case “obj-c”:
return “AppCode”
default:
return “Visual Studio Code”
}
}

if introspective == true {
switch language {
case “swift”:
return “AppCode”
case “obj-c”:
return “AppCode”
default:
return “Visual Studio Code”
}
}

if fastLaunch == true {
return “Sublime”
}

return “No IDE for you.”
}
[/sourcecode]

RSVP for the Geek Train to .NET Fringe

Cascadian Flag
Cascadian Flag

The .NET Fringe Conference guests coming from northern Cascadia (north of Portland) will have the excellent benefit of taking the Geek Train to the conference. It’s also only $10 friggin’ bucks!

RSVP link here | RSVP link here | RSVP link here | RSVP link here | RSVP link here

Departure

We’ll depart Saturday, April 11th at 2pm, with an ETA into Portland at 5:50pm.

Itinerary

  • 1:40pm Arrive at train station in Seattle to join group for boarding. **
  • 2:00pm Departing Seattle King Street Station (i.e. you better be on the train)
  • 2:10pm We’ll be seated and get setup for…
  • 2:15pm We’ll break into teams of ~4 or so people (or however many of us there are we’ll break out to a reasonable size groups).
  • 2:17pm I’ll announce hacking goals and ideas for the teams and we’ll launch into coding. More information will be announced soon, but suffice it to say we’ll be planning a hack around geo and logistics based solutions! The solutions hacking begins!
  • – – – much hacking and enjoying of the trip occurs here! 🙂 – – –
  • 5:00pm We announce who’s completed what and we’ll demo and discuss the app awesomeness of what we’ve managed to come up with.
  • 5:50pm or before we arrive in Portland and the fringe fun shall begin.

I’ll have more information posted here along with some other ideas about what the hackfest will include, so stay tuned and also be sure to follow @dotnetfringe, and check out all the speakers to start figuring out your plans!

Geek Train from Seattle to Portland

April 12th-14th is the epic .NET Fringe Conference. For those coming from Seattle for the conference, there’s going to be a geek train, there however one major decision that needs to be made. What departure should we board to get to Portland. This is where I’ll need your help to decide. There will be a mini-hack, wifi, food, and likely we’ll actually get the entire car to ourselves with enough of a crew. So sign up, vote, vote often and frequently for your preferred departure time! I’ll see you on the train!

Along with the departure, the trip, events for the trip and more information will be posted on the .NET Fringe site soon, along with additional ideas here.