{
  "attachments": [],
  "title": "How I learned to love spreadsheets in space",
  "tags": [
    "gaming",
    "node",
    "apis",
    "eveonline",
    "eve"
  ],
  "thumbnail": "/uploads/2016/spreadsheets-in-space/wallet.PNG",
  "year": "2016",
  "month": "04",
  "day": "17",
  "isDir": false,
  "slug": "spreadsheets-in-space",
  "type": "entry",
  "date": "2016-04-17T19:00:00.000Z",
  "postName": "2016-04-17-spreadsheets-in-space",
  "html": "<p><strong>TL;DR</strong>: I thought it would be fun to fly internet space ships. Instead,\nit's proven more satisfying to write software and make internet space money.</p>\n<!--more-->\n\n\n\n<nav role=\"navigation\" class=\"table-of-contents\"></nav>\n\n<h2 id=\"looking-for-a-space-job\">Looking for a space job</h2>\n<p>I've had an on-again, off-again relationship with EVE Online over the years.\nI was initially attracted by the opportunities to fly space ships, explore the\nuniverse, and occasionally shoot at things in the company of feral internet\nrandos. </p>\n<p>But, when you shoot at things, they often shoot back. Sometimes, you explode.\nSince space ships cost space money, you're going to need a steady space income.</p>\n<p>Unless you've got disposable money IRL to blow on <a href=\"https://secure.eveonline.com/PLEX/howToUsePlex.aspx\">PLEX</a>, this\nmeans you need to <a href=\"http://wiki.eveuniversity.org/EVE_Careers_101\">find a space job</a>.</p>\n<p><a href=\"http://swiftandbitter.com/eve/wtd/\"><img class=\"fullwidth\" title=\"What to do in EVE Online\" src=\"/uploads/2016/spreadsheets-in-space/eve-wtd.jpg\" width=\"\" height=\"\"></a></p>\n<p>For the most part, I've found that space jobs in EVE Online are machines\ndesigned to convert tolerance for tedium into small amounts of space money,\nwith scattered moments of panic to keep you paying attention. In fact, it\nreally seems like space jobs are a clever mechanism to position you as\ncontent for other players:</p>\n<ul>\n<li>Miners are stationary targets for long hours in asteroid fields.</li>\n<li>Mission runners hang out in dangerous space for long periods.</li>\n<li>Haulers travel predictable paths between markets.</li>\n<li>Explorers offer roaming targets in otherwise mostly empty space.</li>\n<li>Traders provide inputs into a lively market simulation.</li>\n</ul>\n<p>Much of EVE Online seems to be in discovering ways to generate fun from space\njobs despite the tedium, and players have been astonishingly creative in doing\nso.</p>\n<h2 id=\"wherein-i-found-the-spreadsheets-in-space\">Wherein I found the spreadsheets in space</h2>\n<p>But, I digress. There are reasons why EVE Online is synonymous with\n\"<a href=\"google\">spreadsheets in space</a>\" - every space station in EVE has a market.\nMost space jobs lead there: Loot, minerals, salvage, and stolen goods all get\nsold on the market. And, nearly everything you'd want to buy with the proceeds\nof your space job come from the market.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/transactions-1.PNG\" width=\"\" height=\"\">\n\n<p>This is where I discovered <a href=\"https://wiki.braveineve.com/public/dojo/wiki/station_trading_complete_guide\">station trading</a>: The price for\nbuying from the market is always higher than selling to the market. It's like\nretail vs wholesale pricing, but weirder. And, for various reasons, the spread\nbetween these prices can be quite large. So, without ever leaving the station,\nyou can perform <a href=\"https://en.wikipedia.org/wiki/Arbitrage\">arbitrage</a> - i.e. buy low, sell high, pocket the\ndifference.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/history-3.PNG\" width=\"\" height=\"\">\n\n<p>One evening, I tried getting into station trading entirely off-the-cuff:</p>\n<ol>\n<li>Click through every item in the market.</li>\n<li>Eyeball the price spread and history.</li>\n<li>Assemble a list of all the items with a decent, stable margin.</li>\n<li>Put up buy orders, babysit them to ensure they're always slightly higher\nthan competitors. </li>\n<li>Put items up for sale as buy orders are fulfilled.</li>\n<li>Babysit sell orders to ensure they're always slightly lower than competitors. </li>\n<li>Profit!</li>\n</ol>\n<h2 id=\"this-looks-like-a-job-for-a-machine\">This looks like a job for a machine</h2>\n<p>As with most space jobs, there is a generous helping of tedium in trading.  It\nimmediately occurred to me that this would be better done by a computer. Why\nclick through all these items one-by-one, when an algorithm could zip through\nand serve up a list of high-margin items in seconds?</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/shell.PNG\" style=\"width: 100%\" width=\"\" height=\"\">\n\n<p>Of course, in many games, this would be considered cheating. I remember the\ncontroversy back in the 80s &amp; 90s when \"<a href=\"https://www.google.com/search?q=%22tradewars+2002%22+helpers\">helpers</a>\" first started appearing for\n<a href=\"http://www.tradewars.com/default.html\">TradeWars 2002</a>, a game that many cite as an early inspiration for EVE\nOnline. And, indeed, fully automated market bots are a bannable offense in EVE\nOnline - that is, CCP want a human to manually enter all those buy &amp; sell\norders and keep on top of them. </p>\n<p>However, CCP only seem to consider the last mile of automation as\noff limits.  <a href=\"https://eve-central.com/home/develop.html\">Enterprising players</a> and <a href=\"https://eveonline-third-party-documentation.readthedocs.org/en/latest/\">even CCP themselves</a> have\nlong offered web service APIs for things like character and market data.  This\nmeans you can use Excel or Google Spreadsheets or even your own original\nsoftware to pull in this data, run calculations, scan for trade\nopportunities, etc. </p>\n<p>As I read up about all of this, it dawned on me: <strong>This is one of the first\nvideo games I've played where software development and algorithms are\nintentionally supported ways to play</strong>!</p>\n<p>Holy crap.</p>\n<h2 id=\"sharpening-the-saw\">Sharpening the saw</h2>\n<p>I've always loved writing software to solve problems. And, you can\ndescribe games as problem generators. So, it's been satisfying to play a\ngame through software development. And, it's been rewarding to measure that\nsoftware's effectiveness through my profits in space money.  It feels demented\nto say it, but most days I get more out of my wallet balance in station than\nfrom actually flying a ship.</p>\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/code-3.PNG\" width=\"\" height=\"\">\n\n<p>It's had all the nerdy fun of working through puzzles, while also helping\nsharpen the saw on my tech skills. I wasn't all that familiar with node.js\nbeforehand, but now I'm pretty sharp on it after having applied it to\npractical challenges. I learned a bit of MongoDB and Postgresql to get things\ndone. I've played with some JS frameworks to build visualizations for\nmyself, and will probably poke at building some UI for myself in React at some\npoint.</p>\n<p>In the past, my \"Hello World\" for a new technology stack might have been\ningesting RSS &amp; Atom news feeds to build a River of News. I even used that\nhabit as fodder to write <a href=\"http://amzn.to/1T0lk0p\">my first book</a>. But, these days, I'm finding\nmyself reaching for EVE Online data to provide the test bed for things I want\nto learn. Maybe I'll find some way to channel this enthusiasm into something\nlike another book or some conference talks. Who knows?</p>\n<!-- vim: set wrap wm=5 syntax=markdown textwidth=78: -->\n",
  "body": "**TL;DR**: I thought it would be fun to fly internet space ships. Instead,\nit's proven more satisfying to write software and make internet space money.\n\n<!--more-->\n\n<nav role=\"navigation\" class=\"table-of-contents\"></nav>\n\n## Looking for a space job\n\nI've had an on-again, off-again relationship with EVE Online over the years.\nI was initially attracted by the opportunities to fly space ships, explore the\nuniverse, and occasionally shoot at things in the company of feral internet\nrandos. \n\nBut, when you shoot at things, they often shoot back. Sometimes, you explode.\nSince space ships cost space money, you're going to need a steady space income.\n\nUnless you've got disposable money IRL to blow on [PLEX][howplex], this\nmeans you need to [find a space job][spacejob].\n\n[spacejob]: http://wiki.eveuniversity.org/EVE_Careers_101\n[howplex]: https://secure.eveonline.com/PLEX/howToUsePlex.aspx\n\n[<img class=\"fullwidth\" title=\"What to do in EVE Online\" src=\"/uploads/2016/spreadsheets-in-space/eve-wtd.jpg\">](http://swiftandbitter.com/eve/wtd/)\n\nFor the most part, I've found that space jobs in EVE Online are machines\ndesigned to convert tolerance for tedium into small amounts of space money,\nwith scattered moments of panic to keep you paying attention. In fact, it\nreally seems like space jobs are a clever mechanism to position you as\ncontent for other players:\n\n* Miners are stationary targets for long hours in asteroid fields.\n* Mission runners hang out in dangerous space for long periods.\n* Haulers travel predictable paths between markets.\n* Explorers offer roaming targets in otherwise mostly empty space.\n* Traders provide inputs into a lively market simulation.\n\nMuch of EVE Online seems to be in discovering ways to generate fun from space\njobs despite the tedium, and players have been astonishingly creative in doing\nso.\n\n## Wherein I found the spreadsheets in space\n\nBut, I digress. There are reasons why EVE Online is synonymous with\n\"[spreadsheets in space](google)\" - every space station in EVE has a market.\nMost space jobs lead there: Loot, minerals, salvage, and stolen goods all get\nsold on the market. And, nearly everything you'd want to buy with the proceeds\nof your space job come from the market.\n\n[google]: https://www.google.com/search?q=spreadsheets+in+space\n\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/transactions-1.PNG\">\n\nThis is where I discovered [station trading][stationtrading]: The price for\nbuying from the market is always higher than selling to the market. It's like\nretail vs wholesale pricing, but weirder. And, for various reasons, the spread\nbetween these prices can be quite large. So, without ever leaving the station,\nyou can perform [arbitrage][] - i.e. buy low, sell high, pocket the\ndifference.\n\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/history-3.PNG\">\n\nOne evening, I tried getting into station trading entirely off-the-cuff:\n\n1. Click through every item in the market.\n2. Eyeball the price spread and history.\n3. Assemble a list of all the items with a decent, stable margin.\n4. Put up buy orders, babysit them to ensure they're always slightly higher\n   than competitors. \n5. Put items up for sale as buy orders are fulfilled.\n6. Babysit sell orders to ensure they're always slightly lower than competitors. \n7. Profit!\n\n## This looks like a job for a machine\n\nAs with most space jobs, there is a generous helping of tedium in trading.  It\nimmediately occurred to me that this would be better done by a computer. Why\nclick through all these items one-by-one, when an algorithm could zip through\nand serve up a list of high-margin items in seconds?\n\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/shell.PNG\" style=\"width: 100%\">\n\nOf course, in many games, this would be considered cheating. I remember the\ncontroversy back in the 80s & 90s when \"[helpers][]\" first started appearing for\n[TradeWars 2002][], a game that many cite as an early inspiration for EVE\nOnline. And, indeed, fully automated market bots are a bannable offense in EVE\nOnline - that is, CCP want a human to manually enter all those buy & sell\norders and keep on top of them. \n\n[helpers]: https://www.google.com/search?q=\"tradewars+2002\"+helpers\n[TradeWars 2002]: http://www.tradewars.com/default.html\n\nHowever, CCP only seem to consider the last mile of automation as\noff limits.  [Enterprising players][evecentral] and [even CCP themselves][eveapi] have\nlong offered web service APIs for things like character and market data.  This\nmeans you can use Excel or Google Spreadsheets or even your own original\nsoftware to pull in this data, run calculations, scan for trade\nopportunities, etc. \n\nAs I read up about all of this, it dawned on me: **This is one of the first\nvideo games I've played where software development and algorithms are\nintentionally supported ways to play**!\n\nHoly crap.\n\n## Sharpening the saw\n\nI've always loved writing software to solve problems. And, you can\ndescribe games as problem generators. So, it's been satisfying to play a\ngame through software development. And, it's been rewarding to measure that\nsoftware's effectiveness through my profits in space money.  It feels demented\nto say it, but most days I get more out of my wallet balance in station than\nfrom actually flying a ship.\n\n<img class=\"fullwidth\" src=\"/uploads/2016/spreadsheets-in-space/code-3.PNG\">\n\nIt's had all the nerdy fun of working through puzzles, while also helping\nsharpen the saw on my tech skills. I wasn't all that familiar with node.js\nbeforehand, but now I'm pretty sharp on it after having applied it to\npractical challenges. I learned a bit of MongoDB and Postgresql to get things\ndone. I've played with some JS frameworks to build visualizations for\nmyself, and will probably poke at building some UI for myself in React at some\npoint.\n\nIn the past, my \"Hello World\" for a new technology stack might have been\ningesting RSS & Atom news feeds to build a River of News. I even used that\nhabit as fodder to write [my first book][book]. But, these days, I'm finding\nmyself reaching for EVE Online data to provide the test bed for things I want\nto learn. Maybe I'll find some way to channel this enthusiasm into something\nlike another book or some conference talks. Who knows?\n\n[book]: http://amzn.to/1T0lk0p\n\n[evecentral]: https://eve-central.com/home/develop.html\n[eveapi]: https://eveonline-third-party-documentation.readthedocs.org/en/latest/\n[arbitrage]: https://en.wikipedia.org/wiki/Arbitrage\n[stationtrading]: https://wiki.braveineve.com/public/dojo/wiki/station_trading_complete_guide\n\n<!-- vim: set wrap wm=5 syntax=markdown textwidth=78: -->\n",
  "parentPath": "./content/posts/archives/2016",
  "path": "2016/04/17/spreadsheets-in-space",
  "summary": "TL;DR: I thought it would be fun to fly internet space ships. Instead,\nit's proven more satisfying to write software and make internet space money.",
  "needsBuild": true,
  "prevPostPath": "2016/02/21/modelm-controller",
  "prevPostTitle": "Building a USB controller for an IBM Model M",
  "nextPostPath": "2016/08/29/gamechord",
  "nextPostTitle": "Making of the GameChord"
}