# September 9th, 2016 - Hack week was last week and we skipped the weekly. - We moved the weekly to the end of the week to try to cut down on the “wait, what _did_ happen last week?” thing. - This ended up being @tclem’s first weekly 👋 #### What went well? @joshvera: Hack week: - Made a lot of progress on the TypeScript parser. - May be able to use that as the basis for a more rigorous JavaScript parser as well. This week: - Understand RWS & some other diffing algos a lot better than before. @rewinfrey: - Pairing w/ @tclem. - Updating test cases is much more efficient. - Modelling effects in Free. @tclem: - Little fixes. - Static linking of ICU in dev. - statsd client. @robrix: - semantic-diffd - Docker - kubes - Markdown #### What were the challenges? @joshvera: - Integrating a pass before RWS. Using constant-time (per-subtree)SES before RWS to match up equal things. There are some ordering problems with the result. - Ambiguities in the TypeScript grammar. Possibly due to JS actually being context-sensitive. @maxbrunsfeld advises parsing a superset of the language… but which superset? @rewinfrey: - Trying to get an effect system in Free. Got it, but tricky. - Also picked up an issue with template strings which defies debugging. @tclem: - > My head hurts by the end of the day. - Being challenged by some of the new concepts, the vernacular &c. - Hard to know when to jump down the rabbit hole and learn a thing or when to gloss over it. - Have a queue of things to read. @robrix: - Converting between line/column ranges and character ranges. #### What did you learn? @joshvera: - > I became one with the TypeScript grammar. - > Maybe we should find a way to have the grammars write themselves. - Working on this `effects` package (formerly called `freer`) & its `Eff` type. It uses an open union data structure, which `Data.Record` is sort of an approximation of. `Eff` has this detail where it’s list of function types are “type-aligned.” Every item in the list is a function type where they all chain together, a -> b, b -> c, etc. Adding, removing, & replacing effects is constant-time. @rewinfrey: - Free, and how to model effects in Free. - Straight-up category theory stuff. Compositions of natural transformations &c. @tclem: - Post about functors, applicatives, and monads shown in pictures. - How this manages to be a bridge between pure & stateful functions. - Helped explain the optparse-applicative syntax. @robrix: - CMark exists, which is cool. - Parsing/term ingestion had been producing errors for weirdly-formatted for loops &c. Not only were we hitting this on a regular basis, it was also causing confusing/poor change summaries. #### Meta “What were the challenges?” can be a bit redundant with “what did you learn?” Should we focus this on challenges that we need help with? Gonna give that a try. Next week: @joshvera, @rewinfrey, & @robrix are off to ICFP. @tclem may or may not hold weekly solo at his discretion.