# Week 50: what's everyone hacking on this week?

**URL:** <https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268>\
**Category:** Community\
**Created:** [December 11, 2017, 10:23am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268 "2017-12-11T10:23:12Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)\
**Post date:** [December 11, 2017, 10:23am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/1 "2017-12-11T10:23:12Z")

</div>

I’m off to the Caml Consortium meeting in Paris to discuss the state of OCaml with the bigger industrial users!

Meanwhile, safe-string continues to improve, but more work is needed: [http://obi.ocamllabs.io/triage.html](http://obi.ocamllabs.io/triage.html) Help welcome 🙂

I should be ready to publish the [https://github.com/avsm/ocaml-yaml](https://github.com/avsm/ocaml-yaml) bindings this week – if anyone wants to try them earlier with their projects ahead of a release, let me know 🙂

---

<div class="post-metadata">

**Author:** ![reynir](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/reynir/32/6496_2.png) [@reynir](https://discuss.ocaml.org/u/reynir)\
**Post date:** [December 11, 2017, 11:06am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/2 "2017-12-11T11:06:11Z")

</div>

At the 4th MirageOS hack retreat ending last week I worked on my [ocaml-ssh-agent](https://github.com/reynir/ocaml-ssh-agent) protocol implementation. This week I want to polish it some more, write some documentation, and hopefully make a release. Unfortunately I am no longer on holidays so I have less time for hacking on my (OCaml) projects ☹

---

<div class="post-metadata">

**Author:** ![octachron](https://avatars.discourse-cdn.com/v4/letter/o/49beb7/32.png) [@octachron](https://discuss.ocaml.org/u/octachron)\
**Post date:** [December 11, 2017, 8:21pm UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/3 "2017-12-11T20:21:19Z")

</div>

After two weeks of playing with GADTs, today, I published my proof-of-concept compiler localization plugin ([babilim](https://github.com/Octachron/babilim)) together with its companion compiler patch([GPR#1523](https://github.com/ocaml/ocaml/pull/1523)) which handle the internationalization of the compiler error and warning messages. Currently, there is only a bad French translation available, but anyone willing to try its hand at another translation is more than welcome. In particular, it would be nice to check that the exposed message chunks are coarse enough to enable transtlation outside of the indo-european language family . Unfortunately, at this point, I cannot guaranteed that this work will not be in vain.

---

<div class="post-metadata">

**Author:** ![reynir](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/reynir/32/6496_2.png) [@reynir](https://discuss.ocaml.org/u/reynir)\
**Post date:** [December 11, 2017, 9:55pm UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/4 "2017-12-11T21:55:51Z")

</div>

After an hour or three at the pub I managed to write tests and uncover some (embarrasing) bugs that I then fixed \o/ Surprisingly productive!

---

<div class="post-metadata">

**Author:** ![Drup](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/drup/32/35_2.png) [@Drup](https://discuss.ocaml.org/u/Drup)\
**Post date:** [December 12, 2017, 1:02am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/5 "2017-12-12T01:02:28Z")

</div>

> [@octachron](#):
>
> After two weeks of playing with GADTs, today, I published my proof-of-concept compiler localization plugin

That is extremely cool, well done!

---

<div class="post-metadata">

**Author:** ![cfcs](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/cfcs/32/833_2.png) [@cfcs](https://discuss.ocaml.org/u/cfcs)\
**Post date:** [December 12, 2017, 2:27am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/6 "2017-12-12T02:27:51Z")

</div>

After a hectic (code-wise) week in Marrakesh for the MirageOS retreat, and after spending the weekend trying to catch up with the lost sleep, I’m now back in the trenches, trying to beat the many new ideas into existence (and shape).

A quick trip report (in terms of code):

- I came to Marrakesh hoping to persuade _someone else_ to write a Qubes-compatible password manager using my `mirage-framebuffer` library. When that utterly selfish quest for (feedback from) users did not seem to go so well, I started work on a library to enable said _someone else_ to do write such an application without having to deal with cryptography and serialization. _Maker_ and I had also had a fun night working on an example cmdliner-application using the library. The results are available here: [https://github.com/cfcs/passmenage](https://github.com/cfcs/passmenage) - I maintain hope that someone will take up the mantle and write the graphical application, but sadly both `mirage-framebuffer` and `notty` are lacking widget libraries, so there’s still some work to be done in this regard. Halfdan started working on sprites for a set of UI widgets that we can hopefully start using in the new year.

- I took some time to track down a few bugs in `mirage-framebuffer`, most notably window resizing on the `QubesOS` target now works, after a lot of debugging and some helpful ideas from @yomimono .

- Talking to [Holger Levsen](http://layer-acht.org/thinking/blog/20171204-qubes-mirage-firewall/) I was inspired to try to add handling of user-supplied rulesets to @talex5’s [qubes-mirage-firewall](https://github.com/talex5/qubes-mirage-firewall). Again @yomimono came to the rescue 💪 and walked me through the API jungle required to use `mirage-block`, and [fixed a bug](https://github.com/mirage/mirage/pull/874), so I got a basic prototype working using `yojson` to parse the rules. We also discussed various syntax/grammars, and hopefully we can over the next few weeks come up with something that will resemble an existing firewall system and make the users’ eyes bleed less. Having the rules specified outside of the code will enable binary distribution of the firewall, making it available to more users, and the [Reproducible Builds](https://reproducible-builds.org/) project to cover it in their work. I intend to work more on that the coming weeks and hope to have a much nicer patchset in time for the [34th CCC](https://events.ccc.de/2017/09/19/34c3-call-for-participation-and-submission-guidelines/) at the end of the year.

- I also had good discussions with Christiano and @reynir regarding [awa-ssh](https://github.com/haesbaert/awa-ssh) and [ocaml-ssh-agent](https://github.com/reynir/ocaml-ssh-agent) and am enthusiastic about bringing that to the Qubes users in the form of a drop-in replacement for [qubes-app-split-ssh](https://github.com/henn/qubes-app-split-ssh) in the coming year.

- Lastly I finally got around to setting up Solo5 (with some help from @hannes), and I found my conversations with the authors (who were present) enlightening. Once I had a better understanding of the architecture and the scope of the project we talked a great deal about security, about various memory-corruption attacks & their mitigation, and I am excited about the prospect of a hardened deployment target for security-critical unikernels in the upcoming year.

It was a really nice and very productive event for me, receiving tons of good tips and participating in great conversations, and I’m eager to read about the experiences of other attendees. It was great to see old friends again, make new friends, and to put some faces to yet more github handles and email addresses. 🙂

---

<div class="post-metadata">

**Author:** ![objmagic](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/objmagic/32/9_2.png) [@objmagic](https://discuss.ocaml.org/u/objmagic)\
**Post date:** [December 12, 2017, 4:18am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/7 "2017-12-12T04:18:57Z")

</div>

1. Waiting review on [extending OCaml’s `open` PR](https://github.com/ocaml/ocaml/pull/1506) (is my implementation this bad?).
2. Start working empty variants again. Discuss the possibility of empty record with yallop.
3. Clean up some [unfinished works](https://github.com/ocamllabs/compiler-hacking/wiki/Compiler-or-Language-projects-to-work-on#warn-when-a-let-rec-function-is-not-recursive) before end of this year

---

<div class="post-metadata">

**Author:** ![SanderSpies](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/sanderspies/32/7_2.png) [@SanderSpies](https://discuss.ocaml.org/u/SanderSpies)\
**Post date:** [December 12, 2017, 5:33am UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/8 "2017-12-12T05:33:17Z")

</div>

Managed to implement most of the [webassembly cmm backend](https://github.com/SanderSpies/ocaml/tree/wasm/wasmcomp). I still need to do more extensive testing, but it’s looking quite promising so far (famous last words). Note that this is only cmm, and does not involve linking, GC, or any other C based code. So there is still enough work beyond this. I’m also very new at this, so would love to have feedback.

And finally managed to release ocaml-gist: [Ocaml-gist 0.0.1](https://discuss.ocaml.org/t/ocaml-gist-0-0-1/1278)

---

<div class="post-metadata">

**Author:** ![anon72795300](https://avatars.discourse-cdn.com/v4/letter/a/8e7dd6/32.png) [@anon72795300](https://discuss.ocaml.org/u/anon72795300)\
**Post date:** [December 17, 2017, 12:22pm UTC](https://discuss.ocaml.org/t/week-50-whats-everyone-hacking-on-this-week/1268/9 "2017-12-17T12:22:52Z")

</div>

I just released a candidate for [Logarion](https://gitlab.com/orbifx/logarion/) which can generate static websites.

Announced here: [Logarion - static website generation](https://discuss.ocaml.org/t/logarion-static-website-generation/1297/1)
