Hacker Newsnew | past | comments | ask | show | jobs | submit | mattsanders's commentslogin

This is just a simple case of serialization. Having worked on 10+ game engines and other scene graph based applications I would prefer a more flexible reference based approach.

Instead of hard coding your hierarchy into the structure of XML or JSON. Define some basic type information (unique id and node type).

If you have situations where an object can be referenced before it is defined simply make a proxy loading type that listens for it to load.

After that it is a cakewalk:

[

{

  id: "UUID OR Rolling Number Per File OR DB Index OR ...",

  type: "business",

  name: "Dunder Mifflin Paper Company, Inc."

  description: "look at me I can be a root type for the graph OR one of many!"

  offices: [

   list of ids of objects of type "office" or object that wraps this with other metadata (relation object)

  ]

 },

 ... potentially other business entries,

 {
  id: see above...
  type: "office",
  name: "Scranton Branch",
  description: "This can describe each branch"
  departments: [
   list of ids of objects of type "department" or object that wraps this with other metadata
  ]
 },
 ... other offices,
 {
  id: see above...,
  type: "department",
  name: "sales",
  members: [
   list of ids of objects of type "employee" or object that wraps this with other metadata
  ]
 },
 ... other departments,
 {
  id: see above...,
  type: "employee",
  title: "manager",
  name: "Michael Scott",
  reports: [
   list of ids of objects of type "employee" or object that wraps this with other metadata
  ]
 },
 {
  id: see above...,
  type: "employee",
  title: "sales man",
  name: "Dwight Schrute",
  reports: [
   id of self since Dwight needs someone he can trust,
   {
    id: see above...,
    type: "report_meta",
    reportee: id of Pam,
    visibility: "secret"
   }
  ]
 },
 ... other employees,
 etc.,
 etc.
]


I've been working remote exclusively for 5 years now with several years prior working remote on occasion. I live half way across the country from my job and I remotely operate a consulting business that my day job is fully aware. I also have two kiddos which is the primary reason I work remote and a good motivation for healthy work/life balance.

I definitely find that routine helps, but over time, with discipline, you can adapt to different environments. The most important thing for me is my work system... not so much my work space.

I work on everything from full stack web, low level hardware and electronics, VR/AR, cloud infrastructure and database administration, video games, iOS/Android native, etc. I need something that is portable, powerful, and easily cross platform.

My latest system is a macbook pro with 32GB Ram and an external eGPU graphics card for VR development. I run Parallels as my primary VM allowing me to run a Bootcamp Windows partition as a VM. It is also the only solution that currently supports Metal for graphics intensive applications. I rarely need to hookup the headset, but when I do I can boot to Windows natively for that. I can do native iOS and Android easily from the mac OSX partition. I even run Ubuntu on the VM for testing server setups locally.

When I am home I work from just about any room with my laptop stand, however, in order to ZONE I do need to find a quite spot while the kids are around (or use headphones). I also often work in coffee shops, book stores, libraries, and grocery stores (those with a food court).

I typically spend the day on my day job and evenings when the kids are down I work on contract work, but for me it just seems like a hobby most of the time anyway.

I have slack and google meet installed on my phone and have my calendar and emails synced with my work accounts.

I LOVE GIT! I use git for all of my consulting and side projects and even when a client or day job uses perforce I can use git-p4 to create a much better offline flow.

I know this isn't for everyone and I have deviated in many cases from the points in the article, but it definitely has been working well for my life style thus far.


subtree is more transparent to users of the repo as it is basically pulling in a copy of the repository during the clone. submodules on the other hand are only storing the metadata pointer to the child repo and require users to manually clone. I have more information regarding subtree (and subtree merge strategy) on this answer: https://stackoverflow.com/a/33579069/2105636


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: