2018 October - Projects Log

After a bit of a break, I still resume my work to keep me busy as the weather gets colder and the slow fall and winter arrive. It reminds me almost of college, but I am my own taskmaster, and have to keep myself motivated and on task.


2018 October 9, Tuesday

Tonight, I finally touch one of my projects again - faithprc.org's website rewrite. After having finally decided on a layout concept (and that I am fine writing it in simple media-query inline css), and after finding a better markdown solution for React, I finally fixed my issues with internal links not being as fast as the navigation links. I hope I can finish this otherwise small project pretty soon, just to get another one off my plate, and because this does help our church out by having a website we can make changes to better.


2018 October 16, Tuesday

My goal tonight was to try to find a good direction forward on my Genealogy project. Technologies I looked at include Redux, GraphQL, Rust, ArangoDB, and a few related projects and technologies. I learned more about where exactly GraphQL sits in a web application architecture - not necessarily at the database layer. It might be possible to implement a GraphQL server at the database level, but it forms a rather strong connection between the storage mechanism and the HTTP api. This is the ideal place where GraphQL is meant to sit - as an as an alternative to a REST-based API. ArangoDB is a graph database, which makes it easier to model data, but the storage api is a bit lover level of an abstraction than GraphQL queries. With GraphQL, the concern is about business-logic type entities and the relationships between them, and at the ArangoDB level, everything is either a vertex or edge, both types of documents with arbitrary data attached. The two are similar, and I love ArangoDB's model as it allows for semantic data storage, but is a bit more difficult to work with than GraphQL, based on my experiences with ArangoDB's api. I'm still open to Foxx implementing GraphQL, but so far, the better solution appears to be GraphQL above the server and business logic layer.

I think I'll start building a GraphQL implementation in server side backed by ArangoDB queries, and see how it goes.


2018 October 18, Thursday

Tonight, I gave my Genealogy project a major spider web sweeping, and separated the client and server processes for development (not the codebase though). I'm using webpack-dev-server for development, which I like using to more finely control the client while keeping the backend working as before, just without webpack middleware for development. I also finally upgraded babel to latest, along with everything else. I hope to learn Apollo, server and client sides, as a way to introduce me to production GraphQL usage. Once again, the JavaScript world is large and intimidating, but it is possible to carve a useful subset to get something awesome built and working. I do want to eventually improve my Tmux config to a comparable level as my Neovim config, because though it mostly works awesome, there are some flaws. The process of tool improvement is something I find very enjoyable.

I was also pleased to discover a --progress option for webpack that I plan to use at work.


2018 October 23, Tuesday

I'm starting to learn GraphQL in earnest, using a wonderful resource - a Fullstack Tutorial for GraphQL. For my projects, I shall be first trying Apollo Client, and I'm not sure about the server. I could use either graphql-js, or Apollo Server. I have yet to decide, but I think I'll follow the tutorial and see where to go from there. I hope that this simplifies things for my personal projects, and I might even be able to use this for work as well.


2018 October 25, Thursday

More GraphQL learning. I'm going through the exercise of building the hackernews-node clone to learn GraphQL. I paused once I had the basic thing running to see about integrating Flow, and I wound up with a pretty solid combination of Node + Babel + Flow + ESLint, using babel-node to do development with, and a command to invoke Babel. Flow's setup instructions need to get with the modern Babel-post-v7 times, but that Pull Request should be merged soon, hopefully.