25 May 2019

Web applications

History / Edit / PDF / EPUB / BIB / 1 min read (~61 words)
software-development processes

  • 3 different environments: development, staging, production
  • Write migrations for schema changes
  • Use ORM if possible over raw queries
  • Always make it possible for testers to report the version they tested against
    • Simplest is to have a meta field in the head section

  • Mockups
  • SRS
  • Database and software architecture
  • Implementation
  • Test/QA
  • Deployment

25 May 2019

Reviewing code

History / Edit / PDF / EPUB / BIB / 2 min read (~360 words)
software-development processes

The most up to date version of this process is available as a Claude command in my dot-claude repository.

  • Verify that the build/tests pass
  • Read the issue title and description
  • New code
    • Understand the feature and associated requirements that are supposed to be implemented
    • Verify code implements the desired feature and that the requirements are completed
  • New/Changed code
    • Check code contains tests
      • Is all the new code covered by those tests?
    • Verify the location of new/moved files
      • Are the files in the right directory?
      • Are they appropriately named?
    • Verify classes, methods, functions, parameters naming
      • Are they significant of their purpose?
      • Are they clear enough?
      • Are they respecting the naming convention?
    • Does the code respect SOLID?
    • Consider that when functions/methods signature change, code may now be backward incompatible.
      • Discuss whether this is necessary
      • Backward incompatible changes should be documented
    • In a weak typed or type hinted language, are parameters and return of functions/methods typed?
    • Are there TODOs that should be completed within this review?
    • Check code for code style issues
  • Bug fix
    • Verify that the fix is applied at the right location and will not "fix the symptoms, not the cause"

When reviewing

  • Provide specific and actionable feedback
  • Clearly mark nitpicks and optional comments
    • Alternatively, use an approach such as RFC2219 where you indicate whether a change is a MUST, SHOULD, or MAY
    • I've used traffic light color emojis to communicate 🔴 MUST, 🟡 SHOULD, 🟢 MAY
    • Another emoji based option is gitmoji
  • Assume competence
  • Provide rationale or context
  • Consider how comments may be interpreted
  • Don't criticize the person, criticize the code
  • Don't use harsh language

  • Always prioritize your work
  • Always work on something that is a task in a task tracking system
    • You should always be able to tell someone else what task you are working on and link them to that task
  • Always provide an agenda when you book meetings with others
29 Dec 2018

Starcraft

History / Edit / PDF / EPUB / BIB / 1 min read (~60 words)
games

Authentication/Login server
Per game server

  • compute damage simulation
  • in game chat
  • decide game victory
  • returns end game stats for ui (or done client side?)
    Game client
  • display game ui
  • play animations
  • send commands to game server
    Local backend
  • record game
  • compute game simulation
  • communicate game state to game client
29 Dec 2018

League of legends

History / Edit / PDF / EPUB / BIB / 1 min read (~66 words)
games

Client/server
Per region servers
Login/authentication server
Lobby server
Store server

  • buy champion/runes
    Transfer player from lobby to game server
  • champion selection
  • spectators
    Per game server
  • Coordinates all 10 players within the game
  • controls game events dragon/baron/npc/player gold
  • compute damage
  • end game lobby
    Game client
  • Display animations
  • play game state according to server