Cardano Weekly Report Technical Report Explained (Feb 8th)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@sebastiengllmt·
0.000 HBD
Cardano Weekly Report Technical Report Explained (Feb 8th)
https://www.youtube.com/watch?v=MVQJ9s_M61s

We elaborate on the following key points in the Weekly Technical Report

## [Exceptions](https://en.wikipedia.org/wiki/Exception_handling)

How to handle errors in code is always a point of debate in large codebases. To clarify this, work was done to create a standard for everybody to follow for the project. This standard can be found [here](https://github.com/input-output-hk/cardano-sl/blob/f7515f39aff24f2ffd379868ea034601ff2ac6e1/docs/exceptions.md). If you're interested in the rationale, you can find good discussion on the [PR that introduced this change](https://github.com/input-output-hk/cardano-sl/pull/2059).

## Revised Monad Stack

I couldn't find any information in the codebase about what this "revised" [monad](http://learnyouahaskell.com/a-fistful-of-monads) stack is.  I did notice guidelines for Monda use were written a little over a month ago and so it may be related. You can find the guidelines [here](https://github.com/input-output-hk/cardano-sl/blob/0b54bfa280b613c8ea0bff58fc952f2e2dc2dcc4/docs/monads.md) and discussion on them [here](https://github.com/input-output-hk/cardano-sl/pull/1894)

## Webpack Upgrade & Gulp integration

 [Webpack](https://webpack.js.org/) allows you to import assets into your Javascript (and pack them together in a smaller set of files). Webpack is already used by the code and can be seen in the [webpack folder](https://github.com/input-output-hk/daedalus/tree/5c43cfe518d8d4940616bb04498a8928d138864d/webpack). 

To upgrade the version of Webpack used, we hand the live-reloading over to a more flexible system called Gulp. Gulp is a tool to manage a task dependency graph on launch of your application along with live-reloading (aka reloading tasks) as files change. You can find a nice video tutorial on the subject [here](https://www.youtube.com/watch?v=LmdT2zhFmn4&list=PLv1YUP7gO_viROuRcGsDCNM-FUVgMYb_G). Gulp has (at the time of writing this post) not yet been introduced into the master branch.  You can however find the pull request for it [here](https://github.com/input-output-hk/daedalus/pull/692). Gulp is actually used to replace the live-reloading that was previously managed by webpack (see next item)

## Wallet testing / spec

As far as I can tell, no code has been made public on this so far. However, you can check out [this video](https://www.youtube.com/watch?v=mhKUHpQZIoc) where they talk about their process for how they intend to build the upcoming verification system. 

## Stack2nix upgrade

[Stack2nix](https://github.com/input-output-hk/stack2nix) is a tool written by IOHK to manage dependencies (mostly within Haskell).  Stack is a tool written by FPComplete (company who audits the IOHK code) which aims to replace the standard Haskell package system (which is prone to "Works on my machine" errors) by making the build execution standardized across machines. You can find more about the rationale in [this blog post](https://www.fpcomplete.com/blog/2015/06/why-is-stack-not-cabal). However, IOHK actually uses [nix](https://nixos.org/nix/about.html) which is a purely functional package manager. To convert Stack files to use Nix expressions, Stack2nix was created. You can see how this works in the git repo by looking at [cabal files](https://github.com/input-output-hk/cardano-sl/search?p=2&q=cabal&type=&utf8=%E2%9C%93), the [stack.yaml](https://github.com/input-output-hk/cardano-sl/blob/0ceca33c290f07ecdbb6ee8789dcdeef8e2d8d93/stack.yaml) file used and the [stack2nix](https://github.com/input-output-hk/cardano-sl/blob/6eefe90e0d99bd0dbcb48385b665b6a94facfe4b/pkgs/generate.sh) script used to generate the [default.nix](https://github.com/input-output-hk/cardano-sl/blob/7a07cf8175480724e43a9ecdb1c33ae62807f778/default.nix) file. 

## New version release incoming

To understand why it means to "branch off in preperation for [..] release", you must understand that IOHK uses the git branching model described in the [following blog](http://nvie.com/posts/a-successful-git-branching-model/). This is a standard model use by many company and good to familiarize yourself with if you want to contribute because git branches in the repository (to a certain extent) follow this model. 

## Conclusion

Hopefully you've enjoyed this deeper look into the technical report. If you like this kind of comment, please let me know and with enough support this can become a weekly series (which parallels the weekly reports). To follow along, check my out at twitter: https://twitter.com/SebastienGllmt

Please also considering donating to
ADA: DdzFFzCqrhsyX4HqRkrdyU5yxBww7BeJQix1At21Jv1HwTtL6CCGmPV9CC1PKwqWteNufzpoYVB

<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@sebastiengllmt/cardano-weekly-report-technical-report-explained-feb-8th">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍 , , , , , ,