Logistics Integrations

Inventory and Strategy

Inactive+Dead projects

  • Ancotrans
  • ECU
  • EuroGate
  • Gruber
  • Portbase
  • YourEDI
  • Contargo
  • CargoTrans
  • Traxon CargoHub
  • 4 different terminals
  • Amazon Marketplace
  • ???

Job Categories

  • Things that move containers (EKB, SACO, ANCOTRANS, ECU, OI, FreightGate, TFG)
  • Things that move cargo (SACO, Gruber)
  • Things that pack/unpack things (P&B)
  • Things that deal with documents (Porath, Dakosy, SACO, FreightGate)
  • Things that hold containers (DAKOSY)

EKB

  • Trucks. Mostly in DE
  • They send us a representation of the DB records for that shipment after each change in their system
  • Super nice people.
  • They write everything in Spring Boot.
  • lorenz-cgo tells Lorenz about cgo detections so he can manually try and determine if there will be a delay.

Porath

  • Send us semicolon delimited representations of ATLAS messages
  • ATLAS is just Zoll
  • Also send us ;messages; in other countries with XML tags written in that nation. For example, we have German and Dutch XML tags.
  • Usually instant; messages sometimes delayed by weeks.
  • Porath Bot tells ops about customs
  • None of this maps to transport plan
  • Limited tech resources on their end.

SACO

  • They have boats that move containers
  • They have small trucks that move cargo (not containers)
  • They send us WWA Member Shipment XML
    • Most of that isn't related to transport plan

Prahl & Barso

  • They pack and unpack containers
  • We mostly care about telling ops when they announce an ATB number so they can do customs
    • There's no transport plan events for this
  • Prahl & Barso bot pings the ops manager working on that shipment when their website shows the data
    • We scrape it every half hour, they don't have an API
      • They outsource their technology to some other company that occasionally goes offline

Ocean Insights

  • Tells us where containers are (really just about the part on a boat or close-to-it, they don't tell us about trucks or whatever)
  • Tricky weird logic about MBLs, Booking Numbers, and container numbers
  • Our TMS doesn't really provide the information we need to subscribe to things
  • Almost exactly a 1:1 mapping with TransportPlan, except rollovers or delays that happen at port-of-call.
  • Rollover Bot (Adele Bot) notifies ops about rollovers

Dakosy

  • Port of Hamburg (also Wilhelmshaven and  Bremerhaven)
  • Tells us what a container is doing at the port
  • We can subscribe to updates about a container
  • We can tell the port what to do with a container (but we don't)
  • We can lock-out important partners like ECU from knowing what the status of our containers are if we subscribe to them first.
  • The entire thing is XML SFTP uploads/downloads
  • We only integrate with Dakosy "IMP". There's no such thing as Dakosy "EXP". You can get export information with other Dakosy products but they are not called "EXP".

TFG

  • They're trains
    • Some people refuse to admit they have trucks, but they do.
  • They send us XML that looks like SOAP but is actually a key-value lookup powered by request bodies matching a value in MySql.
  • They don't tell us estimates
  • We can book with them via API, but we don't.

FreightGate

  • Our WNL agents in Asia use this to provide us details about shipments
    • Because a lot of email conversations take place and data is often missing in emails
  • Pushes updates to TMS
  • Cross-region concerns. Data leaving the region is prone to a lot of failure.
  • Updates actual values of the shipment object
  • Sends some transport planning commands

Ancotrans

  • REST-like API
    • Also: Doesn't identify purpose of a stop, only that a stop happened
  • Doesn't provide GPS
  • Seems to be the same API their actual website uses
  • Undergoing rebuild on their side. Talk to them in 2019.

Tech Products

  • TypedEnv
  • Hosted Graphite Configs
  • Github Partner Collaboration
  • Swagger API Codegen
  • Cookiecutter + Integrations Comons
    • ​Code Quality/Standards Enforcement
    • Continuous Integration + Deployment
    • most best practices

External Tooling

  • Depndabot+approbot
  • BackHub
  • PR Reminders
  • go-flashpaper
  • AWS Glacier
  • AWS WorkSpaces
  • Heroku

Common Needs

  • Transports
    • Queues (SQS)
    • HTTP/REST
    • FTP
    • WEB*
  • Serialisations
    • XML
    • JSON
    • Weird stuff
    • Web*
  • Data States
    • Present-Representation
    • Events
  • Custom Applications
    • Loopback
  • Outbound
    • TP
    • Activity Feed
    • Slack
    • Logs
    • StatsD
    • DataWarehouse
  • Data-Correlation 
    • A total mess
    • Only trust container IDs

Transports

seriously dudes, it doesn't matter.

Except for web. Web is awful.

Serialisations

  • XML parsing sillyness
  • JSON parsing sillyness
  • Expect weird stuff
  • Web is horrible. Web is not HTML.

Data States

  • When you get events
    • Store events
    • Act on events
  • When you have an entity representation
    • Store all data snapshots
    • Compute diffs to detect events
    • Act on events
  • Computing diffs is actually better if the data source is not event-driven in nature.

Loopback

 

Data Correlation

  • Only containers are trustworthy
  • Shipment IDs - Garbage
  • HBLs - Garbage
  • MBLs - Garbage
  • Booking Reference IDs? Garbage!

The arrow direction doesn't mean anything.

The graphing tool just puts arrows in there.
Don't look at the arrows.

Outbound

  • TP
  • Activity Feed
  • Slack
  • Logs
  • StatsD
  • DataWarehouse

We lack a general aggregation gateway

Development Strategy

  • Build people; not software
  • Build context; not documents
  • Build value; not lines of code
  • Fix root causes; not symptoms

People

  • Software is not written by smart people
  • Software is written by habits and reflexes of people
  • Build workout routines

High Context

  • Everyone knows the business
  • Everyone sees how code impacts the "real world"
  • Opportunities and innovation surface
  • Can work for the betterment of the company without being given a task
  • Higher buy-in and sense of ownership

Low Context

  • Teams instructed to do exactly one thing as defined in a ticket
  • Blocked I/O tasks go up the stack and wait

Value

 

  • Activity is not productivity
  • Value is not shipped code
  • Value is money
  • Value can be extracted from an investment
  • Debt can be useful or destructive

Fixing Symptoms

  • The site is down.
  • Turn it back on.
  • The site is down.
  • Turn it back on.
  • The site is down.
  • Turn it back on.
  • Death by 1000 papercuts.

Root Causes

  • The site is down.
  • What situations existed that it was able to go down?
  • Let's be sure to fix that.

The Numbers

PR Review: Time Open

Files Modified (per person average)

LOC Added (per person average)

PRs Created 2018 (total per person)

Contribution Times 2018

Envoys

Everyone

deck

By Brian Graham

deck

  • 839