9 Commits

Author SHA1 Message Date
c407728f3b Start working on the draft post 2022-08-18 23:37:56 +03:00
29deb31729 Get rid of keybase 2022-08-18 11:33:07 +03:00
a1be811d95 Update my profile 2022-08-18 11:31:46 +03:00
bd41cf2f64 Update deps 2022-08-18 11:26:12 +03:00
e48ec6ce3d Simplify the build setup 2022-08-18 11:24:36 +03:00
b46cf0bf15 Less overlays 2022-08-18 10:57:08 +03:00
3bc2738ef6 Replace easy-hls with haskell-language-server 2022-08-18 10:37:28 +03:00
69a1f4d921 Remove old key 2021-11-26 23:40:55 +02:00
a762b8b6fe Build first 2021-11-26 23:40:33 +02:00
10 changed files with 63 additions and 364 deletions

1
cabal.project Normal file
View File

@ -0,0 +1 @@
packages: */*.cabal

33
flake.lock generated
View File

@ -1,32 +1,12 @@
{ {
"nodes": { "nodes": {
"easy-hls": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1637250802,
"narHash": "sha256-/crlHEVB148PGQLZCsHOR9L5qgvCAfRSocIoKgmMAhA=",
"owner": "jkachmar",
"repo": "easy-hls-nix",
"rev": "7c123399ef8a67dc0e505d9cf7f2c7f64f1cd847",
"type": "github"
},
"original": {
"owner": "jkachmar",
"repo": "easy-hls-nix",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"locked": { "locked": {
"lastModified": 1637014545, "lastModified": 1659877975,
"narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -37,11 +17,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1637841632, "lastModified": 1660646295,
"narHash": "sha256-QYqiKHdda0EOnLGQCHE+GluD/Lq2EJj4hVTooPM55Ic=", "narHash": "sha256-V4G+egGRc3elXPTr7QLJ7r7yrYed0areIKDiIAlMLC8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "73369f8d0864854d1acfa7f1e6217f7d6b6e3fa1", "rev": "762b003329510ea855b4097a37511eb19c7077f0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -53,7 +33,6 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"easy-hls": "easy-hls",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }

View File

@ -4,54 +4,24 @@
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
easy-hls = {
url = "github:jkachmar/easy-hls-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, flake-utils, easy-hls }: outputs = { self, nixpkgs, flake-utils }:
{ {
overlay = final: prev: {
deploy-rauhala-info = with final; runCommand "deploy-rauhala-info.sh" { inherit bash ipfs; }
''
mkdir -p $out/bin/
substituteAll ${./support/deploy-rauhala-info.sh} $out/bin/deploy-rauhala-info.sh
chmod u+x $out/bin/deploy-rauhala-info.sh
'';
build-rauhala-info = final.runCommand "site" { buildInputs = [final.makeWrapper]; }
''
mkdir -p $out/bin/
cp ${final.haskellPackages.build-rauhala-info}/bin/site $out/bin/
wrapProgram $out/bin/site --prefix PATH : ${ final.lib.makeBinPath [ final.ipfs ] }
'';
rauhala-info = final.callPackage ./rauhala.info { site = final.build-rauhala-info; };
haskellPackages = prev.haskellPackages.override ( old: {
overrides = final.lib.composeExtensions ( old.overrides or (_: _: {})) (f: p: {
build-rauhala-info = f.callPackage ./site {};
});
} );
};
} }
// //
flake-utils.lib.eachDefaultSystem (system: flake-utils.lib.eachDefaultSystem (system:
let let
pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; pkgs = nixpkgs.legacyPackages.${system};
hp = pkgs.haskellPackages; hp = pkgs.haskellPackages.override ( old: {
hls = easy-hls.defaultPackage.${system}; overrides = pkgs.lib.composeExtensions ( old.overrides or (_: _: {})) (f: p: {
build-rauhala-info = f.callPackage ./site {};
});
} );
in in
rec { rec {
packages = { inherit (pkgs) build-rauhala-info rauhala-info deploy-rauhala-info; }; packages.rauhala-info = pkgs.callPackage ./rauhala.info { site = hp.build-rauhala-info; };
applications.build-rauhala-info = flake-utils.lib.mkApp {
drv = packages.build-rauhala-info;
exePath = "/bin/site";
};
applications.deploy-rauhala-info = flake-utils.lib.mkApp {
drv = packages.deploy-rauhala-info;
exePath = "/bin/deploy-rauhala-info.sh";
};
defaultPackage = packages.rauhala-info; defaultPackage = packages.rauhala-info;
defaultApp = applications.build-rauhala-info;
devShell = hp.shellFor { devShell = hp.shellFor {
packages = h: [h.build-rauhala-info]; packages = h: [h.build-rauhala-info];
buildInputs = with pkgs; [ buildInputs = with pkgs; [
@ -59,7 +29,7 @@
cabal-install cabal-install
stylish-haskell stylish-haskell
entr entr
hls haskell-language-server
ipfs ipfs
]; ];
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -5,18 +5,16 @@ title: Mats Rauhala
![](./images/profile.jpg) ![](./images/profile.jpg)
I'm a software developer from southern Finland. I'm currently working as a I'm a software developer from southern Finland. I'm currently working as a
Haskell developer at Relex Oy involved in an internal tool. I also have Haskell developer at Relex Oy. I also have experience with systems integrations
experience with systems integrations and backend web development. and backend web development.
I'm also an aviation enthusiast. I have a glider pilots license and a touring
motor glider pilots license (LAPL(S)+TMG).
My [GPG key](./resources/0x9DE6E04ED1918118.txt) My [GPG key](./resources/0x9DE6E04ED1918118.txt)
### Notable experience and interests ### Notable experience and interests
- **Relex Oy** - **Relex Oy**
- Working as a Senior Software Developer at Relex Oy - Working as a Lead Software Developer at Relex Oy
- Transitioned from day to day code to a role more close to an architect
- Three distinct products, all of which written in Haskell - Three distinct products, all of which written in Haskell
- Internal integration tool - Internal integration tool
- Relex Deploy 1, a tool for deploying the core product to hosts - Relex Deploy 1, a tool for deploying the core product to hosts

View File

@ -0,0 +1,41 @@
---
title: Design Documents
tags: design
---
We had a problem at work some time ago, with implementing features faster than
we could refine new items. The roadmap was a mile long, but the quality of our
work items left a lot to desire. The solution was to have more concerted effort
into the act of designing and refining. One part of this effort was the
introduction of design documents to our workflow.
[Design Documents at Google](https://www.industrialempathy.com/posts/design-docs-at-google/)
![](/images/sample-designdoc.png)
We have been experimenting on using design documents for a little over half a
year now and have been able to refine them to suit our processes quite nicely.
Feel free to read the article above, it's a concise explanation on how they're
using design documents, and what I'm going to write is going to focus on a
subset of the article, on the aspects that I have found to be important.
## What are design documents
![stakeholder-architect-design-loop](/images/stakeholder-architect-design.png)
When designing a new feature, the stakeholders have a set of requirements they
need fulfilled. The product owner collects the requirements and provides them
to the architect to be solved. It's this solution, that needs to be portrayed
by the design document. The design document should portrey the high-level view
of the design, without implementation details, in a way that the developers can
take the design and implement a concrete solution.
### What should the design document contain
> A feature to add items to a shopping cart. The items needs to be reserved in
the backend so that the reservation is synced across different users.
The design document should be written on a high level, it should explain the
problem and it should explain the solution for it, but it should not be the
implementation guide. The design document should not contain any code or
pseudocode in it.

View File

@ -1,176 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=VUWT
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -1,111 +0,0 @@
==================================================================
https://keybase.io/masser
--------------------------------------------------------------------
I hereby claim:
* I am an admin of https://masser.keybase.pub
* I am masser (https://keybase.io/masser) on keybase.
* I have a public key ASD7WFMicMJhoArgnvPuR7Dc92WStIUWWXcyngnsTE_IaQo
To do so, I am signing this object:
{
"body": {
"key": {
"eldest_kid": "01202eb5d3b8d2fc63e4bc9c6edefb3a38f1043dfdc44a7268393951fe0ea5214cf00a",
"host": "keybase.io",
"kid": "0120fb58532270c261a00ae09ef3ee47b0dcf76592b485165977329e09ec4c4fc8690a",
"uid": "b01557931e13482e9e646593a64e9119",
"username": "masser"
},
"merkle_root": {
"ctime": 1580587604,
"hash": "890506579950548b2aa6fd0f35850b9fdb1d064786714f18515d0e3089cdc2458c5fe847d40ca71c2e021ca11677de055ac97804c53d1bef89432f88b57599d4",
"hash_meta": "104419595abc52918530f85495417faf35c7a5a608d6730bf53152dfa7288970",
"seqno": 14451686
},
"service": {
"entropy": "QIvRp0qNOIZFplyzXERiwp75",
"hostname": "masser.keybase.pub",
"protocol": "https:"
},
"type": "web_service_binding",
"version": 2
},
"client": {
"name": "keybase.io go client",
"version": "4.3.1"
},
"ctime": 1580587641,
"expire_in": 504576000,
"prev": "c99f66ba0bfa7ff6be736e24691c8007b0db41b6036b7f1e5f9335ab7f3550f4",
"seqno": 34,
"tag": "signature"
}
which yields the signature:
hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEg+1hTInDCYaAK4J7z7kew3PdlkrSFFll3Mp4J7ExPyGkKp3BheWxvYWTESpcCIsQgyZ9mugv6f/a+c24kaRyAB7DbQbYDa38eX5M1q381UPTEIH8FtgpzXt/JJxrhAYknW7xL4+K57JBJnbhFpXWAfEH5AgHCo3NpZ8RApEnmCcZApdOTf+XAHRbbgoysAZHfyTHamWC/BEHKuqEf/BlUFSxo6ASa/YC+Y2sMJfW2iRFlP2bs822TyJTBA6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEINm3yJdAbmbGJd03EnpuKVh2JzkI8WkngbWbAxbbR0MMo3RhZ80CAqd2ZXJzaW9uAQ==
And finally, I am proving ownership of this host by posting or
appending to this document.
View my publicly-auditable identity here: https://keybase.io/masser
===================================================================
https://keybase.io/masser
--------------------------------------------------------------------
I hereby claim:
* I am an admin of https://rauhala.info
* I am masser (https://keybase.io/masser) on keybase.
* I have a public key ASD7WFMicMJhoArgnvPuR7Dc92WStIUWWXcyngnsTE_IaQo
To do so, I am signing this object:
{
"body": {
"key": {
"eldest_kid": "01202eb5d3b8d2fc63e4bc9c6edefb3a38f1043dfdc44a7268393951fe0ea5214cf00a",
"host": "keybase.io",
"kid": "0120fb58532270c261a00ae09ef3ee47b0dcf76592b485165977329e09ec4c4fc8690a",
"uid": "b01557931e13482e9e646593a64e9119",
"username": "masser"
},
"merkle_root": {
"ctime": 1580591326,
"hash": "2b1b8c5e3de98e3e80ec4b4c28270066744d5d0982c23e4c13ec97d9311e32996b0cc39ab07f51a2418f833d3f03c0219c7ebd8cdc9c99ac09d3f88d0b6129d1",
"hash_meta": "0e85fd563e1159d6c5b32f5c424d4c97101c3a11346a0dad77bdbf043ca4f287",
"seqno": 14452336
},
"service": {
"entropy": "7UNm+4us1fZE3TRssgGatBC2",
"hostname": "rauhala.info",
"protocol": "https:"
},
"type": "web_service_binding",
"version": 2
},
"client": {
"name": "keybase.io go client",
"version": "4.3.1"
},
"ctime": 1580591336,
"expire_in": 504576000,
"prev": "ed5dd9b2571746743f37dd55f59235bd46d7f7de01a2bafba14b9c0929751aee",
"seqno": 35,
"tag": "signature"
}
which yields the signature:
hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEg+1hTInDCYaAK4J7z7kew3PdlkrSFFll3Mp4J7ExPyGkKp3BheWxvYWTESpcCI8Qg7V3ZslcXRnQ/N91V9ZI1vUbX994Borr7oUucCSl1Gu7EIJld9Pai+YxhSvZUIA+ZyzwEEbpy98uEqp975YKAEdz9AgHCo3NpZ8RAtksa9w0UQrwg8dPGEzahht+hY4QKQthbZ/yWuOSmfA3C5E1/KorbIEi+tcy5lkSJqNbZRSqBgpl9zerYw5bbAahzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEICy29OKKJc5LUELFLo8kW15N3zex43ussKLFeGLhTDapo3RhZ80CAqd2ZXJzaW9uAQ==
And finally, I am proving ownership of this host by posting or
appending to this document.
View my publicly-auditable identity here: https://keybase.io/masser
===================================================================================================================================

View File

@ -2,16 +2,13 @@
set -e set -e
if [ ! -d _site ]; then nix build .#rauhala-info
echo "No _site detected"
exit 1
fi
API=/ip4/127.0.0.1/tcp/5001 API=/ip4/127.0.0.1/tcp/5001
function upload() { function upload() {
echo "Uploading.." echo "Uploading.."
hash=$(ipfs --api $API add -r _site --pin=false -Q) hash=$(ipfs --api $API add -r result/share --pin=false -Q)
} }
function pin() { function pin() {