1. 程式人生 > >Tables and objects and graphs, oh my!

Tables and objects and graphs, oh my!

I like representing graphs on paper, it’s like a map of my data

A visual map of my data.

Computers can’t read maps good

But apparently, the neural networks and I have different taste in how we like information. I like drawings of graphs. Neural networks want them all spelled out.

So, at 11pm on a Thursday night, I write my first ADG (my first line of Scala), and early Friday morning, I write my 60th ADG (and my thousandth line of Scala). Whilst listening to

loud music in the depths of our office.

Loud music, Scala, and a notebook filled with maps of imaginary data.

Instead of a visual map, I wrote “directions”. Defining each node by its label and its content. Defining each edge connecting children to parents, and making data siblings. And defining the ADG itself, as the mix of both.

What started as:

The CSV test file

Ended up like:

The ADG, showing in red the places that might cause problems, like the repeated header.

and

Test, hope, fix, rinse, repeat

When we have the input files, and the output ADGs, all that’s left is to write the test: a program that takes the input files, sends it through the transformer and checks that the output ADG is what we expected.

And, of course, hope!

The true story of startup life

This isn’t a story about Abstract Data Graphs.

This isn’t a story about working hard late into the night and early into the morning to make sure that all of your tests are ready, so that you can be comfortable that your product is ready for release.

This isn’t a story of how to bring a little bit of order into a world with too many data formats.

This is a little glimpse at what startup life is really like.

There are no “non-technical” people in a technical startup. There is no-one that is not a salesperson. There is no one that is not going to have to drag his or her friends in to the office to test the product.

In a startup, no one is allowed to stay in their box. Everyone has to do everything, and no one is above any work. And that’s awesome.

Marginalia

Thanks to Tim Delisle and Nicolas Joseph for teaching me everything I know about ADGs and data structures. Learn more about Datalogue or sign up for a demo.

The beginning of a long night of ADGs.
  1. (I remember (when I was reading through the book) that I would (before hitting compile which would take ages) count (by hand) the (extremely nested (not kidding, extremely nested)) parentheses, to make sure there were as many “(s” as “)s”). 
    By the way, this is a list of lists, and would make an interesting ADG.
  2. Take, for example, key/value based data formats like JSON, tabular formats like CSV, relational databases, anything you can think of.
  3. The Abstract Data Graph is quite funky, as it is incomparably expressive, and quite efficient. Instead of displaying the whole database in a single graph, each “view” of the database (e.g. a row in a table, or an object in JSON) becomes one ADG, the group of which represents all of the information in the database.
  4. If you want to read a bit more about this, check out Our Story.
  5. This might be too much to get into exhaustively here, but, it is enough to understand that: tables are difficult because they don’t clearly separate data values from data labels; JSON is difficult because of its flexibility.
  6. E.g. {"array": ["0", 0]}.
This was the loud music I played whilst thinking abstractly about data in a room in our office way too late and perhaps a bit caffeinated. Made it a blast!

相關推薦

Tables and objects and graphs, oh my!

I like representing graphs on paper, it’s like a map of my dataA visual map of my data.Computers can’t read maps goodBut apparently, the neural networks an

IAM Policies and Bucket Policies and ACLs! Oh, My! (Controlling Access to S3 Resources)

In previous posts we’ve explained how to write S3 policies for the console and how to use policy variables to grant access to user-specific S3 fol

Cpp Chapter 10: Objects and Classes Part1

frame ril sent action else if 10.2.1 its have total 10.1 Procedural and object-oriented programming ) In procedural programming, you firs

Cpp Chapter 10: Objects and Classes Part2

structure delete per section tomat private diff sha listing 10.2.4 Using classes Following exapmle uses the class definition and implemen

Cpp Chapter 10: Objects and Classes Part3

tails vat esp default testing ems use lease sha 10.5 An array of objects ) You can define an array of objects just as an array of built-i

[core java]C4 Objects and Classes

final &static關鍵字 private final String name; 當constuctor呼叫時一定要被初始化 public static final double PI = 3.14..... // final type in class f

Mutability and Objects in Python3

The language I’m currently wrangling withLaunching Python3 propels you into a world that consists of objects, links among said objects, and methods that op

Delete S3 Objects and Buckets

Amazon Web Services is Hiring. Amazon Web Services (AWS) is a dynamic, growing business unit within Amazon.com. We are currently hiring So

Java學習筆記(9)Objects and Classes

9.1面向物件程式設計的基本概念 1、面向物件程式設計(Object-oriented programming, OOP) 是以物件為基本單位來搭建程式的程式設計方法。術語物件(object)指的是實體(entity),例如學生,桌子,圓,按鈕。 2、物件具有唯一的標識,狀

Java 基礎 —— Objects and Classes

OOP 面向物件程式設計(Object-Oriented Programming,OOP) Java的程式設計單位是類,物件通過類進行例項化(“建立”) 三個特性: 封裝 Encapsulation      (C++在類外可以定義函式) 繼承 Inh

hdu 4719 Oh My Holy FFF(dp線段樹優化)

origin end should adding href ast left code padding Oh My Holy FFF Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535

ubuntu下安裝zsh + oh my zsh

ubuntu下 git .sh https default href apt-get 使用 ubuntu 1.需要zsh支持,所以安裝zsh: sudo apt-get install zsh 2.安裝oh my zsh 根據官方: $ sh -c "$(curl

為MAC配置終端環境iTerm2+Zsh+oh-my-zsh

mage 就會 感受 解釋 ima fin 字符集 images 進行 首先展示下我的終端吧。 這就是我們為什麽要配置iTerm2+Zsh+oh-my-zsh環境的原因: 我們使用zsh解釋器,當然等你使用 zsh時就會知道zsh與bash對比的強大之處了。 至於我們的g

Mac下終端配置(item2 + oh-my-zsh + solarized配色方案)

tro functions share pla all style tab col order 轉載自:http://www.cnblogs.com/weixuqin/p/7029177.html 安裝 首先我們下載的 iTem2 這個軟件,比Mac自帶的終端更

[原]Chef_Server and Chef_WorkStation and Chef_Client Install Guide[by haibo]

ret ini clean end com run err contents etc 一、Prerequisite OS : CentOS-7.0-1406-x86_64-DVD.iso Time Server : NTP Server

codeforces 862B B. Mahmoud and Ehab and the bipartiteness

com set pac 並且 復雜 oid include ces http http://codeforces.com/problemset/problem/862/B 題意: 給出一個有n個點的二分圖和n-1條邊,問現在最多可以添加多少條邊使得這個圖中不存在自環,重邊,

Codeforces Round #435 (Div. 2) D. Mahmoud and Ehab and the binary string[二分]

cstring stream ++ else fine eps comm 簡單的 hab 題目:http://codeforces.com/problemset/problem/862/D 題意:交互題,詢問15次以內Hamming distance,輸出一個二進制串

Codeforces 862B - Mahmoud and Ehab and the bipartiteness

pac out pan 思路 std its true fine long 862B - Mahmoud and Ehab and the bipartiteness 思路:先染色,然後找一種顏色dfs遍歷每一個點求答案。 代碼: #include<bits/std

Codeforces Round #435 (Div. 2) E. Mahmoud and Ehab and the function(預處理+二分)

class [1] can 行處理 long 個數 分享 amp abs 題目鏈接:點我點我 題意:公式:,給出n個數,從a[1]到a[n],和m個數(b數組),然後從b數組裏挑出連續的n個數(也就m-n+1中選擇),按公式計算,使得f最小, 還有q次對a數組的操作(某

codeforces 862C. Mahmoud and Ehab and the xor

style %d won urn ont collect ron order logs time limit per test 2 secondsMahmoud and Ehab are on the third stage of their adventures now.