\ No newline at end of file
diff --git a/about.md b/about.md
index af0ac5b..cce29cf 100644
--- a/about.md
+++ b/about.md
@@ -1,7 +1,11 @@
---
-layout: layouts/page
+layout: layouts/list
title: Om
permalink: /om/
---
-Mitt navn er Øyvind Skaaden. Jeg er 21 år gammel og studerer Elektronisk systemdesign og innovasjon på NTNU.
+Mitt navn er Øyvind Skaaden. Jeg er 22 år gammel og studerer Elektronisk systemdesign og innovasjon på NTNU.
+
+Jeg er stor fan av open-source og prøver så godt jeg kan å fremme dette.
+
+Jeg har både en [github](https://github.com/oyvindskaaden) og en [personlig git](https://git.glados.no/).
\ No newline at end of file
diff --git a/assets/css/components/theme.css b/assets/css/components/theme.css
index 357288e..7dfe7ff 100644
--- a/assets/css/components/theme.css
+++ b/assets/css/components/theme.css
@@ -102,6 +102,7 @@ blockquote {
a {
color: var(--link-color);
+ text-decoration: none;
}
a:hover {
diff --git a/assets/css/home.css b/assets/css/home.css
index be137ec..f72b30a 100644
--- a/assets/css/home.css
+++ b/assets/css/home.css
@@ -27,7 +27,13 @@
min-height: calc(100vh - 47.75rem);
}
-.home-link>a {
+/*
+.home-link a{
+ text-decoration: none;
+}
+*/
+
+a.home-link:hover{
text-decoration: none;
}
diff --git a/index.html b/index.html
index 7ec76cd..7031c7d 100644
--- a/index.html
+++ b/index.html
@@ -7,12 +7,12 @@ description: Personlig nettside for Øyvind Skaaden. Inneholder det meste av per
{% endfor %}
diff --git a/ntnu/ttt4265/ttt4265.md b/ntnu/19h/ttt4265/ttt4265.md
similarity index 100%
rename from ntnu/ttt4265/ttt4265.md
rename to ntnu/19h/ttt4265/ttt4265.md
diff --git a/ntnu/tdt4102/tft4102.md b/ntnu/19v/tdt4102/tft4102.md
similarity index 100%
rename from ntnu/tdt4102/tft4102.md
rename to ntnu/19v/tdt4102/tft4102.md
diff --git a/ntnu/tma4105/tma4105.md b/ntnu/19v/tma4105/tma4105.md
similarity index 100%
rename from ntnu/tma4105/tma4105.md
rename to ntnu/19v/tma4105/tma4105.md
diff --git a/ntnu/ttt4260/ttt4260.md b/ntnu/19v/ttt4260/ttt4260.md
similarity index 100%
rename from ntnu/ttt4260/ttt4260.md
rename to ntnu/19v/ttt4260/ttt4260.md
diff --git a/ntnu/mfel3010/summary/figures/blodårer.png b/ntnu/20h/mfel3010/summary/figures/blodårer.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/blodårer.png
rename to ntnu/20h/mfel3010/summary/figures/blodårer.png
diff --git a/ntnu/mfel3010/summary/figures/cellInBody.png b/ntnu/20h/mfel3010/summary/figures/cellInBody.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/cellInBody.png
rename to ntnu/20h/mfel3010/summary/figures/cellInBody.png
diff --git a/ntnu/mfel3010/summary/figures/celleMedKaliumNatrium.png b/ntnu/20h/mfel3010/summary/figures/celleMedKaliumNatrium.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/celleMedKaliumNatrium.png
rename to ntnu/20h/mfel3010/summary/figures/celleMedKaliumNatrium.png
diff --git a/ntnu/mfel3010/summary/figures/celleMembran.png b/ntnu/20h/mfel3010/summary/figures/celleMembran.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/celleMembran.png
rename to ntnu/20h/mfel3010/summary/figures/celleMembran.png
diff --git a/ntnu/mfel3010/summary/figures/celledeling.png b/ntnu/20h/mfel3010/summary/figures/celledeling.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/celledeling.png
rename to ntnu/20h/mfel3010/summary/figures/celledeling.png
diff --git a/ntnu/mfel3010/summary/figures/graywhitematerialBrain.png b/ntnu/20h/mfel3010/summary/figures/graywhitematerialBrain.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/graywhitematerialBrain.png
rename to ntnu/20h/mfel3010/summary/figures/graywhitematerialBrain.png
diff --git a/ntnu/mfel3010/summary/figures/mitokondrie.png b/ntnu/20h/mfel3010/summary/figures/mitokondrie.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/mitokondrie.png
rename to ntnu/20h/mfel3010/summary/figures/mitokondrie.png
diff --git a/ntnu/mfel3010/summary/figures/mutatorGenes.png b/ntnu/20h/mfel3010/summary/figures/mutatorGenes.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/mutatorGenes.png
rename to ntnu/20h/mfel3010/summary/figures/mutatorGenes.png
diff --git a/ntnu/mfel3010/summary/figures/oragnsOfTheBody.png b/ntnu/20h/mfel3010/summary/figures/oragnsOfTheBody.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/oragnsOfTheBody.png
rename to ntnu/20h/mfel3010/summary/figures/oragnsOfTheBody.png
diff --git a/ntnu/mfel3010/summary/figures/ribosom.png b/ntnu/20h/mfel3010/summary/figures/ribosom.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/ribosom.png
rename to ntnu/20h/mfel3010/summary/figures/ribosom.png
diff --git a/ntnu/mfel3010/summary/figures/theBrain.png b/ntnu/20h/mfel3010/summary/figures/theBrain.png
similarity index 100%
rename from ntnu/mfel3010/summary/figures/theBrain.png
rename to ntnu/20h/mfel3010/summary/figures/theBrain.png
diff --git a/ntnu/mfel3010/summary/summary.md b/ntnu/20h/mfel3010/summary/summary.md
similarity index 100%
rename from ntnu/mfel3010/summary/summary.md
rename to ntnu/20h/mfel3010/summary/summary.md
diff --git a/ntnu/tfe4146/summary/figures/BJTFourModes.png b/ntnu/20h/tfe4146/summary/figures/BJTFourModes.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/BJTFourModes.png
rename to ntnu/20h/tfe4146/summary/figures/BJTFourModes.png
diff --git a/ntnu/tfe4146/summary/figures/BJT_Carriers.png b/ntnu/20h/tfe4146/summary/figures/BJT_Carriers.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/BJT_Carriers.png
rename to ntnu/20h/tfe4146/summary/figures/BJT_Carriers.png
diff --git a/ntnu/tfe4146/summary/figures/HallEffect.png b/ntnu/20h/tfe4146/summary/figures/HallEffect.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/HallEffect.png
rename to ntnu/20h/tfe4146/summary/figures/HallEffect.png
diff --git a/ntnu/tfe4146/summary/figures/JEFT_Zoom.png b/ntnu/20h/tfe4146/summary/figures/JEFT_Zoom.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/JEFT_Zoom.png
rename to ntnu/20h/tfe4146/summary/figures/JEFT_Zoom.png
diff --git a/ntnu/tfe4146/summary/figures/JEFT_pinchoff.png b/ntnu/20h/tfe4146/summary/figures/JEFT_pinchoff.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/JEFT_pinchoff.png
rename to ntnu/20h/tfe4146/summary/figures/JEFT_pinchoff.png
diff --git a/ntnu/tfe4146/summary/figures/JFET-GateControl.png b/ntnu/20h/tfe4146/summary/figures/JFET-GateControl.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/JFET-GateControl.png
rename to ntnu/20h/tfe4146/summary/figures/JFET-GateControl.png
diff --git a/ntnu/tfe4146/summary/figures/JFET.png b/ntnu/20h/tfe4146/summary/figures/JFET.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/JFET.png
rename to ntnu/20h/tfe4146/summary/figures/JFET.png
diff --git a/ntnu/tfe4146/summary/figures/JFET_Analysis.png b/ntnu/20h/tfe4146/summary/figures/JFET_Analysis.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/JFET_Analysis.png
rename to ntnu/20h/tfe4146/summary/figures/JFET_Analysis.png
diff --git a/ntnu/tfe4146/summary/figures/MESFET.png b/ntnu/20h/tfe4146/summary/figures/MESFET.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/MESFET.png
rename to ntnu/20h/tfe4146/summary/figures/MESFET.png
diff --git a/ntnu/tfe4146/summary/figures/MOSFET.png b/ntnu/20h/tfe4146/summary/figures/MOSFET.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/MOSFET.png
rename to ntnu/20h/tfe4146/summary/figures/MOSFET.png
diff --git a/ntnu/tfe4146/summary/figures/alternateDiodeEq.png b/ntnu/20h/tfe4146/summary/figures/alternateDiodeEq.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/alternateDiodeEq.png
rename to ntnu/20h/tfe4146/summary/figures/alternateDiodeEq.png
diff --git a/ntnu/tfe4146/summary/figures/avalanche.png b/ntnu/20h/tfe4146/summary/figures/avalanche.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/avalanche.png
rename to ntnu/20h/tfe4146/summary/figures/avalanche.png
diff --git a/ntnu/tfe4146/summary/figures/biasPN.png b/ntnu/20h/tfe4146/summary/figures/biasPN.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/biasPN.png
rename to ntnu/20h/tfe4146/summary/figures/biasPN.png
diff --git a/ntnu/tfe4146/summary/figures/breakdown.png b/ntnu/20h/tfe4146/summary/figures/breakdown.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/breakdown.png
rename to ntnu/20h/tfe4146/summary/figures/breakdown.png
diff --git a/ntnu/tfe4146/summary/figures/carrierDensity.png b/ntnu/20h/tfe4146/summary/figures/carrierDensity.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/carrierDensity.png
rename to ntnu/20h/tfe4146/summary/figures/carrierDensity.png
diff --git a/ntnu/tfe4146/summary/figures/conductivity.png b/ntnu/20h/tfe4146/summary/figures/conductivity.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/conductivity.png
rename to ntnu/20h/tfe4146/summary/figures/conductivity.png
diff --git a/ntnu/tfe4146/summary/figures/continuityEq.png b/ntnu/20h/tfe4146/summary/figures/continuityEq.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/continuityEq.png
rename to ntnu/20h/tfe4146/summary/figures/continuityEq.png
diff --git a/ntnu/tfe4146/summary/figures/dos.png b/ntnu/20h/tfe4146/summary/figures/dos.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/dos.png
rename to ntnu/20h/tfe4146/summary/figures/dos.png
diff --git a/ntnu/tfe4146/summary/figures/fermiDirac.png b/ntnu/20h/tfe4146/summary/figures/fermiDirac.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/fermiDirac.png
rename to ntnu/20h/tfe4146/summary/figures/fermiDirac.png
diff --git a/ntnu/tfe4146/summary/figures/haynes-ShockleyExp.png b/ntnu/20h/tfe4146/summary/figures/haynes-ShockleyExp.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/haynes-ShockleyExp.png
rename to ntnu/20h/tfe4146/summary/figures/haynes-ShockleyExp.png
diff --git a/ntnu/tfe4146/summary/figures/haynes-ShockleyTheory.png b/ntnu/20h/tfe4146/summary/figures/haynes-ShockleyTheory.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/haynes-ShockleyTheory.png
rename to ntnu/20h/tfe4146/summary/figures/haynes-ShockleyTheory.png
diff --git a/ntnu/tfe4146/summary/figures/idealMOS.png b/ntnu/20h/tfe4146/summary/figures/idealMOS.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/idealMOS.png
rename to ntnu/20h/tfe4146/summary/figures/idealMOS.png
diff --git a/ntnu/tfe4146/summary/figures/intrinsic.png b/ntnu/20h/tfe4146/summary/figures/intrinsic.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/intrinsic.png
rename to ntnu/20h/tfe4146/summary/figures/intrinsic.png
diff --git a/ntnu/tfe4146/summary/figures/monirityDist.png b/ntnu/20h/tfe4146/summary/figures/monirityDist.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/monirityDist.png
rename to ntnu/20h/tfe4146/summary/figures/monirityDist.png
diff --git a/ntnu/tfe4146/summary/figures/particleBox.png b/ntnu/20h/tfe4146/summary/figures/particleBox.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/particleBox.png
rename to ntnu/20h/tfe4146/summary/figures/particleBox.png
diff --git a/ntnu/tfe4146/summary/figures/pn-efelt.png b/ntnu/20h/tfe4146/summary/figures/pn-efelt.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pn-efelt.png
rename to ntnu/20h/tfe4146/summary/figures/pn-efelt.png
diff --git a/ntnu/tfe4146/summary/figures/pn-ladning.png b/ntnu/20h/tfe4146/summary/figures/pn-ladning.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pn-ladning.png
rename to ntnu/20h/tfe4146/summary/figures/pn-ladning.png
diff --git a/ntnu/tfe4146/summary/figures/pnNatural.png b/ntnu/20h/tfe4146/summary/figures/pnNatural.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pnNatural.png
rename to ntnu/20h/tfe4146/summary/figures/pnNatural.png
diff --git a/ntnu/tfe4146/summary/figures/pnSammen.png b/ntnu/20h/tfe4146/summary/figures/pnSammen.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pnSammen.png
rename to ntnu/20h/tfe4146/summary/figures/pnSammen.png
diff --git a/ntnu/tfe4146/summary/figures/pnSteady.png b/ntnu/20h/tfe4146/summary/figures/pnSteady.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pnSteady.png
rename to ntnu/20h/tfe4146/summary/figures/pnSteady.png
diff --git a/ntnu/tfe4146/summary/figures/pnTegning.png b/ntnu/20h/tfe4146/summary/figures/pnTegning.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/pnTegning.png
rename to ntnu/20h/tfe4146/summary/figures/pnTegning.png
diff --git a/ntnu/tfe4146/summary/figures/steadyStateBar.png b/ntnu/20h/tfe4146/summary/figures/steadyStateBar.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/steadyStateBar.png
rename to ntnu/20h/tfe4146/summary/figures/steadyStateBar.png
diff --git a/ntnu/tfe4146/summary/figures/steadyStatePN.png b/ntnu/20h/tfe4146/summary/figures/steadyStatePN.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/steadyStatePN.png
rename to ntnu/20h/tfe4146/summary/figures/steadyStatePN.png
diff --git a/ntnu/tfe4146/summary/figures/tetteBonds.png b/ntnu/20h/tfe4146/summary/figures/tetteBonds.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/tetteBonds.png
rename to ntnu/20h/tfe4146/summary/figures/tetteBonds.png
diff --git a/ntnu/tfe4146/summary/figures/virkemåteTransistor.png b/ntnu/20h/tfe4146/summary/figures/virkemåteTransistor.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/virkemåteTransistor.png
rename to ntnu/20h/tfe4146/summary/figures/virkemåteTransistor.png
diff --git a/ntnu/tfe4146/summary/figures/zener.png b/ntnu/20h/tfe4146/summary/figures/zener.png
similarity index 100%
rename from ntnu/tfe4146/summary/figures/zener.png
rename to ntnu/20h/tfe4146/summary/figures/zener.png
diff --git a/ntnu/tfe4146/summary/summary.md b/ntnu/20h/tfe4146/summary/summary.md
similarity index 100%
rename from ntnu/tfe4146/summary/summary.md
rename to ntnu/20h/tfe4146/summary/summary.md
diff --git a/ntnu/tfe4152/summary/figures/active.svg b/ntnu/20h/tfe4152/summary/figures/active.svg
similarity index 100%
rename from ntnu/tfe4152/summary/figures/active.svg
rename to ntnu/20h/tfe4152/summary/figures/active.svg
diff --git a/ntnu/tfe4152/summary/figures/diode.svg b/ntnu/20h/tfe4152/summary/figures/diode.svg
similarity index 100%
rename from ntnu/tfe4152/summary/figures/diode.svg
rename to ntnu/20h/tfe4152/summary/figures/diode.svg
diff --git a/ntnu/tfe4152/summary/figures/triode.svg b/ntnu/20h/tfe4152/summary/figures/triode.svg
similarity index 100%
rename from ntnu/tfe4152/summary/figures/triode.svg
rename to ntnu/20h/tfe4152/summary/figures/triode.svg
diff --git a/ntnu/tfe4152/summary/summary.md b/ntnu/20h/tfe4152/summary/summary.md
similarity index 100%
rename from ntnu/tfe4152/summary/summary.md
rename to ntnu/20h/tfe4152/summary/summary.md
diff --git a/ntnu/ttt4120/summary/figures/DTFTSymmetry.png b/ntnu/20h/ttt4120/summary/figures/DTFTSymmetry.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/DTFTSymmetry.png
rename to ntnu/20h/ttt4120/summary/figures/DTFTSymmetry.png
diff --git a/ntnu/ttt4120/summary/figures/DirectTypeII.svg b/ntnu/20h/ttt4120/summary/figures/DirectTypeII.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/DirectTypeII.svg
rename to ntnu/20h/ttt4120/summary/figures/DirectTypeII.svg
diff --git a/ntnu/ttt4120/summary/figures/IIR_Dir1.svg b/ntnu/20h/ttt4120/summary/figures/IIR_Dir1.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/IIR_Dir1.svg
rename to ntnu/20h/ttt4120/summary/figures/IIR_Dir1.svg
diff --git a/ntnu/ttt4120/summary/figures/IIR_Dir2.svg b/ntnu/20h/ttt4120/summary/figures/IIR_Dir2.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/IIR_Dir2.svg
rename to ntnu/20h/ttt4120/summary/figures/IIR_Dir2.svg
diff --git a/ntnu/ttt4120/summary/figures/LinearPhase.svg b/ntnu/20h/ttt4120/summary/figures/LinearPhase.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/LinearPhase.svg
rename to ntnu/20h/ttt4120/summary/figures/LinearPhase.svg
diff --git a/ntnu/ttt4120/summary/figures/adder.svg b/ntnu/20h/ttt4120/summary/figures/adder.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/adder.svg
rename to ntnu/20h/ttt4120/summary/figures/adder.svg
diff --git a/ntnu/ttt4120/summary/figures/constant.svg b/ntnu/20h/ttt4120/summary/figures/constant.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/constant.svg
rename to ntnu/20h/ttt4120/summary/figures/constant.svg
diff --git a/ntnu/ttt4120/summary/figures/delay.svg b/ntnu/20h/ttt4120/summary/figures/delay.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/delay.svg
rename to ntnu/20h/ttt4120/summary/figures/delay.svg
diff --git a/ntnu/ttt4120/summary/figures/diagonalConv.png b/ntnu/20h/ttt4120/summary/figures/diagonalConv.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/diagonalConv.png
rename to ntnu/20h/ttt4120/summary/figures/diagonalConv.png
diff --git a/ntnu/ttt4120/summary/figures/directFormI.svg b/ntnu/20h/ttt4120/summary/figures/directFormI.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/directFormI.svg
rename to ntnu/20h/ttt4120/summary/figures/directFormI.svg
diff --git a/ntnu/ttt4120/summary/figures/idealFilter.svg b/ntnu/20h/ttt4120/summary/figures/idealFilter.svg
similarity index 100%
rename from ntnu/ttt4120/summary/figures/idealFilter.svg
rename to ntnu/20h/ttt4120/summary/figures/idealFilter.svg
diff --git a/ntnu/ttt4120/summary/figures/impulseResponse.png b/ntnu/20h/ttt4120/summary/figures/impulseResponse.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/impulseResponse.png
rename to ntnu/20h/ttt4120/summary/figures/impulseResponse.png
diff --git a/ntnu/ttt4120/summary/figures/input-output-corr.png b/ntnu/20h/ttt4120/summary/figures/input-output-corr.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/input-output-corr.png
rename to ntnu/20h/ttt4120/summary/figures/input-output-corr.png
diff --git a/ntnu/ttt4120/summary/figures/linearTimeInvariant.png b/ntnu/20h/ttt4120/summary/figures/linearTimeInvariant.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/linearTimeInvariant.png
rename to ntnu/20h/ttt4120/summary/figures/linearTimeInvariant.png
diff --git a/ntnu/ttt4120/summary/figures/longSeq.png b/ntnu/20h/ttt4120/summary/figures/longSeq.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/longSeq.png
rename to ntnu/20h/ttt4120/summary/figures/longSeq.png
diff --git a/ntnu/ttt4120/summary/figures/z-transform.png b/ntnu/20h/ttt4120/summary/figures/z-transform.png
similarity index 100%
rename from ntnu/ttt4120/summary/figures/z-transform.png
rename to ntnu/20h/ttt4120/summary/figures/z-transform.png
diff --git a/ntnu/ttt4120/summary/summary.md b/ntnu/20h/ttt4120/summary/summary.md
similarity index 100%
rename from ntnu/ttt4120/summary/summary.md
rename to ntnu/20h/ttt4120/summary/summary.md
diff --git a/ntnu/ttt4270/ttt4270.md b/ntnu/20v/ttt4270/ttt4270.md
similarity index 100%
rename from ntnu/ttt4270/ttt4270.md
rename to ntnu/20v/ttt4270/ttt4270.md
diff --git a/ntnu/21v/tfe4130/lectures/2021-01-12/2021-01-12.md b/ntnu/21v/tfe4130/lectures/2021-01-12/2021-01-12.md
new file mode 100644
index 0000000..bcdcf49
--- /dev/null
+++ b/ntnu/21v/tfe4130/lectures/2021-01-12/2021-01-12.md
@@ -0,0 +1,74 @@
+---
+title: "TFE4130 - 1D Bølger"
+description: "2021-01-12"
+math: true
+---
+
+## Hva er bølger?
+
+Bevegelse av partikler i et medium.
+
+Dispersive gjør at signalet kan endre seg over tid og strekning.
+Bølgehastigheten er avhengig av frekvensen.
+
+Ikke-dispersive betyr at bølgen beveger seg med samme hastighet hele tiden, og vil derfor være lik ved alle distanser.
+
+Bølger kan inteferere.
+
+Kurset handler mest om EM-bølger, men mekaniske bølger er enklere.
+Det er da kun trykk som beskriver en bølge, mot en vektor med flere komponenter i EM-bølger.
+
+Velocity potential:
+
+$$WIP$$
+
+Velocities at depth:
+
+$$WIP$$
+
+Dispersjonsrelasjonen i havbølger
+
+$$ \omega^2 = gk \tanh kd $$
+
+Der $g$ er tyngdeakserelasjonen, $k$ er bølgetallet og $d$ er dybden.
+
+### Forskjellige typer bølger
+
+Longitudinale: Langsgående bølger.
+
+Transversale: Bølger som beveger seg normalt på propageringsretningen.
+
+### Matematisk
+
+Bølgene er løsningen på bølgelikningen i forskjellige dimensjoner.
+
+$$ \ddot{u} = \frac{\partial^2 u}{\partial t^2} = c^2 \nabla^2 u $$
+
+Denne løses som en partiell differensiallikning.
+
+En ikke-dispersiv hamonisk bølge er definert:
+
+$$ p(x, t) = \hat{p} \sin(\omega t - kx) $$
+
+Der $\omega = 2\pi f$ er frekvensen, $k = \tfrac{\omega}{c}$ er bølgekonstanten, $c$ er propageringshastigheten og $\hat{p}$ er bølgeamplituden.
+
+## Lydbølger
+
+Lydbølger er endringer i lydtrykket rundt standardtrykket/det statiske trykket.
+
+$$ \underbrace{P_\text{total}(x,t)}_{\text{Lufttrykk, [Pa]}} = \underbrace{P_\text{atm}}_\text{Statisk trykk} + \underbrace{p(x,t)}_\text{endringer i trykket, lyd} $$
+
+
+Bølgelikningen for lydbølger:
+
+$$ \frac{\partial^2 p}{\partial x^2} - \frac{1}{c^2} \frac{\partial^2 p}{\partial t^2} $$
+
+## Helmholtz' likning
+
+Spesialtilfelle av bølgelikningen når bølgen er en harmonisk svingning.
+
+$$ p(x,t) = p(x) e^{j\omega t} $$
+
+Den tidsavhengige faktoren kan faktoriseres ut av likningen og vi står igjen med en ODE.
+
+$$ \frac{\partial^2 p(x)}{\partial x^2} + k^2 p(x) = 0 $$
\ No newline at end of file
diff --git a/ntnu/21v/tfe4130/lectures/2021-01-14/2021-01-14.md b/ntnu/21v/tfe4130/lectures/2021-01-14/2021-01-14.md
new file mode 100644
index 0000000..841d419
--- /dev/null
+++ b/ntnu/21v/tfe4130/lectures/2021-01-14/2021-01-14.md
@@ -0,0 +1,24 @@
+---
+layout: layouts/lecture
+title: "TFE4130"
+description: "1D Bølger forts."
+date: "2021-01-14"
+math: true
+---
+
+## Akustisk impedanse
+
+## Akustisk intensitet
+
+$$ \boldsymbol{I} = \frac{1}{T}\int_0^T p_\text{real}\boldsymbol{v}_\text{real}(t) dt $$
+
+FOr en planbølge
+
+$$ I_x = \frac{p_\text{rms}}{p_x c}$$
+
+## Refleksjon og transmisjon
+
+Dersom en børge beveger seg over en grenseflate mellom to forskjellige impedanser.
+
+* Trykket nå være kontinuerlig over grenseflaten
+* Farten over grenseflaten må være konstant.
\ No newline at end of file
diff --git a/ntnu/21v/tfe4130/tfe4130.md b/ntnu/21v/tfe4130/tfe4130.md
new file mode 100644
index 0000000..3ce83ad
--- /dev/null
+++ b/ntnu/21v/tfe4130/tfe4130.md
@@ -0,0 +1,15 @@
+---
+layout: layouts/list
+title: "TFE4130"
+description: "Bølgeforplantning"
+---
+
+## Filer og annet
+
+Alle øvinger og andre viktige filer ligger på [git](https://git.glados.no/oyvindskaaden/TFE4130).
+
+## Forelesninger
+
+[2021-01-12](./lectures/2021-01-12/) - Intro
+
+[2021-01-14](./lectures/2021-01-14/) - Bølger forts.
\ No newline at end of file
diff --git a/ntnu/21v/tiø4252/tiø4252.md b/ntnu/21v/tiø4252/tiø4252.md
new file mode 100644
index 0000000..198113c
--- /dev/null
+++ b/ntnu/21v/tiø4252/tiø4252.md
@@ -0,0 +1,63 @@
+---
+title: TIØ4252
+description: Teknologiledelse, våren 2021
+date: 2021-05-13
+---
+
+
+## Formelark
+
+Kommer straks.
+
+## Eksamen
+
+Alle filer er tilgjengelig på [git][git].
+
+[git]: https://git.glados.no/oyvindskaaden/TIO4252
+
+Kombinert løsningsforslag for alle eksamener finnes [her][LF_alle].
+
+[LF_alle]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/LF.pdf
+
+| År | Eksamen | Oppgave | LF |
+| :--- | :------ | :------------ | :------- |
+| 2020 | Høst | [Oppgave][1] | [LF][2] |
+| 2020 | Sommer | [Oppgave][3] | [LF][4] |
+| 2020 | Vår | [Oppgave][5] | [LF][6] |
+| 2019 | Høst | [Oppgave][7] | [LF][8] |
+| 2019 | Sommer | [Oppgave][9] | [LF][10] |
+| 2018 | Høst | [Oppgave][11] | [LF][12] |
+| 2018 | Sommer | [Oppgave][13] | [LF][14] |
+| 2018 | Vår | [Oppgave][15] | [LF][16] |
+| 2017 | Høst | [Oppgave][17] | [LF][18] |
+| 2017 | Vår | [Oppgave][19] | [LF][20] |
+| 2014 | Sommer | [Oppgave][21] | [LF][22] |
+| 2013 | Sommer | [Oppgave][23] | [LF][24] |
+{: .table-responsive-lg .table }
+
+[1]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20H/Eksamen_20H.pdf
+[2]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20H/Losning_20H.pdf
+[3]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20S/Eksamen_20S.pdf
+[4]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20S/Losning_20S.pdf
+[5]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20V/Eksamen_20V.pdf
+[6]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/20V/Losning_20V.pdf
+[7]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/19H/Eksamen_19H.pdf
+[8]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/19H/Losning_19H.pdf
+[9]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/19S/Eksamen_19S.pdf
+[10]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/19S/Losning_19S.pdf
+[11]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18H/Eksamen_18H.pdf
+[12]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18H/Losning_18H.pdf
+[13]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18S/Eksamen_18S.pdf
+[14]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18S/Losning_18S.pdf
+[15]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18V/Eksamen_18V.pdf
+[16]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/18V/Losning_18V.pdf
+[17]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/17H/Eksamen_17H.pdf
+[18]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/17H/Losning_17H.pdf
+[19]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/17V/Eksamen_17V.pdf
+[20]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/17V/Losning_17V.pdf
+[21]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/14S/Eksamen_14S.pdf
+[22]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/14S/Losning_14S.pdf
+[23]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/13S/Eksamen_13S.pdf
+[24]:https://git.glados.no/oyvindskaaden/TIO4252/raw/branch/main/eksamen/13S/Losning_13S.pdf
+
+
diff --git a/ntnu/21v/ttk4145/summary/figures/fault-path.svg b/ntnu/21v/ttk4145/summary/figures/fault-path.svg
new file mode 100644
index 0000000..dbdb06e
--- /dev/null
+++ b/ntnu/21v/ttk4145/summary/figures/fault-path.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ntnu/21v/ttk4145/summary/figures/fault-tolarance.svg b/ntnu/21v/ttk4145/summary/figures/fault-tolarance.svg
new file mode 100644
index 0000000..4d88bd6
--- /dev/null
+++ b/ntnu/21v/ttk4145/summary/figures/fault-tolarance.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ntnu/21v/ttk4145/summary/summary.md b/ntnu/21v/ttk4145/summary/summary.md
new file mode 100644
index 0000000..e67e7e0
--- /dev/null
+++ b/ntnu/21v/ttk4145/summary/summary.md
@@ -0,0 +1,376 @@
+---
+title: "Oppsumering av TTK4145"
+description: "Lot of theory and discussion, some fomulas, spring 2021."
+date: 2021-05-04
+math: true
+---
+
+## Fault tolerance
+
+Hard to capture faults.
+
+
+### Bugs
+
+* 1 bug per 50 lines before testing
+* 1 bug per 500 at release
+* 1 bug per 550 after a year, the constant
+
+1. Make the program work within specs.
+2. Run/Tests of the program-
+3. Errors happen
+4. Locate errors
+ * Incomplete spec
+ * Missing handleling of som situation
+5. Fix code
+
+### Traditional error handeling
+
+{% highlight c %}
+FILE *
+openConfigFile(){
+ FILE * f = fopen("/path/to/config.conf");
+ if (f == NULL) {
+ switch(errno){
+ case ENOMEM: {
+ ...
+ break;
+ }
+ case ENOTDIR: {
+ ...
+ break;
+ }
+ // Do this for all errors
+ }
+ }
+}
+{% endhighlight %}
+
+### Causes of errors
+
+* Incomplete specification
+* Software bugs
+* HW problems
+* Communication problems
+
+### Fault tolerance in real time systems
+
+The problem with traditional errorhandleing is that errors can happen at any possible time.
+This is extremely hard to test.
+
+This is some of the error handling real time programming have.
+
+* Handling of unexpected errors
+* More threads hanles errors
+* Can not test the conventional way
+ * Can only show extistence of errors
+ * Can not find errors in specification
+ * Can not find race conditions
+
+The fault path is shown under.
+
+![Fault tolerance](figures/fault-path.svg)
+
+With fault tolerance the path looks something more like the figure under.
+
+![Fault tolerance](figures/fault-tolarance.svg)
+
+### Error handling
+
+Keep it simple!
+
+The error modes is a part of the module interface.
+
+One way is to handle all errors the same way.
+Handle the as if it was the worst error.
+Crash and start again.
+
+A different approach is to check that everything is OK.
+
+To test how the systems responds for a unknown error is to insert a failed acceptance test (a not OK signal).
+
+### Redundancy
+
+* If I have $N$ copies of my data, it is possible to handle that one is destroyed.
+* Sending $N$ messages, trying $N$ times.
+
+**Static redundancy**
+
+* $N$ active copies. Sending $N$ messages if it is necessary or not.
+* Detecting errors is not important.
+* Handles cosmic rays easily.
+
+**Dynammic redunancy**
+
+* Relies on detecting the error and recovering
+ * Resend if timeout and not receiving "ack"
+ * Go with default if no messages have been received
+* The acceptancetest must be good.
+
+
+### Fault model
+
+#### Example with storage functions.
+
+**Step 1: Failure modes**
+
+Find the failure modes: What could go wrong?
+
+* **Write**: May return "I failed". Does not know why it faield
+* **Read**: May return "I failed". Does not know why it failed.
+
+**Step 2: Detect, Simplify, Inject errors**
+
+* Write information on where/what/how the process is doing.
+* All errors --> Fail
+* Inject errors
+
+**Step 3: Handling with redundancy**
+
+* Have multiple copies of the the information
+ * Use only the newest
+
+#### Example with communication function
+
+**Step 1: Failure modes**
+
+* Message
+ * Lost
+ * Delayed
+ * Corrupted
+ * Duplicated
+ * Wrong recipient
+
+**Step 2: Detection, Merging of errormodes and error injection**
+
+* Adding information to message
+ * Checksum
+ * Session ID
+ * Sequence number
+* Adding "ack" on well recieved messages
+* All errors will be treaded as "Lost message"
+* Injection
+ * Occasionally throw away some messages
+
+**Step 3: Handling with redundancy**
+
+* Timeout
+* Retransmit message
+
+#### Example with processes and caculations
+
+A calculation is an abstract, so how can we talk generally about the failure modes.
+
+**Step 1: Failure modes**
+
+One failure mode
+
+**Step 2: Detect, simplify, inject errors**
+
+All failed acceptance tests will "PANIC" or "STOP".
+
+**Step 3: Handling with redundancy**
+
+There are three solutions:
+
+1. Checkpoint restart
+ * Do all the work incuding the acceptance test
+ * Wait with the "side effects"
+ * Store a checkpoint
+ * Do the "side effects"
+2. Process pairs
+ * Crash and let an another process take over
+3. Presistent processes
+
+
+## Transactions
+
+A transaction is a design framework for Damage Confinement and Error Recovery.
+
+* An *atomic action*, just without the backward recovery error mode as standard mode
+* invincible and instantaneous "calculation" seen from the outside
+* A transformation from one consistent state to another'
+* A modular computation
+
+### Four features: ACID
+
+* **A**tomicity: Either all side effects happens or none
+* **C**oncistency: Leaves the system in a consistent state when finished
+* **I**solation: Errors does not spread
+* **D**urability: Results are not lost
+
+### Atomic Actions
+
+**Resumption vs. Termination mode**
+* If we continue where we were (e.g. after the interrupt) --> *Resumption*
+* If we continue somewhere else (i.e. terminating what we where doing) --> Termination
+
+**Async Notification (AN) = Low level thread interaction**
+* Async event handling. ("Signals") (resumption)
+ * Modeled after a HW interrupt
+ * Can be sent to the correct thread
+ * Can be handled, ignored, blocked --> The domain can be controlled.
+ * Often lead to polling
+ * Could rather skip the signal and poll a status variable or a message queue
+ * Useless
+* ATC --> Async transfer of Control (termination)
+ * Canceling threads
+ * setjmpt/longjmp could convert signals to ATC (not really, but still)
+ * ADA: a strictured mechanism for ATV is integraded with the selected statement
+ * RT Java: A structured mechanism for ATC is integraded with the exception-handling mechanism
+
+#### Cancelling threads
+
+**Yes, killing threads is ATC!**
+
+* Can make termination model by letting domain be a thread
+ * "Create a `doWork` thread, and kill it if the action fails"
+* Ca still control domain by disabling "cancelstate"
+
+**But, but, but: It leaves ut in undifined state!?**
+* Not if we have...
+ * Full control over changed state (like logs or recovery points) or some other way of recovering well.
+ * A lock manager that can unlock on behalf of killed thread
+ * Some control of where we were killed (like nok in the middle of a lock manager or log call)
+* An this is what we have!
+
+
+## Shared variable synchronization
+
+### Non-Preemptive scheduling
+
+Controlling a pump filling a tank.
+
+**Spec:**
+* Every second: measure the water level of the tank and generate the reference to the pump
+* 10 times a second: Set the power of the pump motor
+* Do some GUI: let the human control the process
+
+#### A trivial solution: "Cyclic Exectutive"
+
+{% highlight c %}
+oldTime = now();
+i = 0;
+while(true) {
+ i = i + 1;
+ if (i % 10 == 0) {
+ i = 0;
+ calculatePumpReference();
+ }
+ controlPump();
+ do {
+ handleUserEvent();
+ } while(now() < oldTime + 0.1);
+ oldTime = oldTime + 0.1;
+}
+{% endhighlight %}
+
+**Drawbacks**
+
+* OK tasks?
+* Timing hard to tune (what if pump sampling should be $\pi$/10?)
+* Overload (what if `calucaltePumpReference` uses more than 1/10 seconds?)
+* How to add new tasks? (Everything is coupled)
+* Waste of time in the do-loop?
+* What is priority of `handleUserEvents`?
+* How are erros, exceptions, alarms etc. handled?
+
+#### Better soulution with Non-preemptive scheduler
+
+* *3 taskts* administered by a scheduler
+* The scheduler takes care of who runs and timing
+* Scheduler often inculuded in OSes
+* Introducing priorities
+
+{% highlight c %}
+/**
+ * scheduler_registerThread(function, time, priority)
+ * Higher priority numer means higher priority in scheduler
+ */
+main() {
+ scheduler_registrerThread(controlPump, 0.1, 3);
+ scheduler_registrerThread(calculatePumpReference, 1, 2);
+ scheduler_registrerThread(handleUserEvents, 0.2, 1);
+ scheduler_mainLoop();
+}
+{% endhighlight %}
+
+**Some notes on priorities**
+* Priority is generally not important; rather, the main rule is to give higher priority to shorter-deadline tasks.
+ * This allows tasks to reach its deadlines.
+* ... but this is not always the case - if e.g. the tasks are cooperating
+* We still handle overload badly
+* And: What connection between deadline and priority to start with?
+ * Is this a good dependency seen from a code quality perspective?
+
+### Pros and cons of nonpreemptive scheduling
+
+| **Pros** | **Cons** |
+| :--------------------------------------------- | :------------------------------------------------------------------------- |
+| Simple, intuitive, predictable | C macro hell |
+| No kernel | Threads must cooperate <-- a form of dependency breaking module boundaries |
+| Fast switching times | Heavy threads must be divided |
+| Some elegant sunchronization patterns possible | Can we handle blocking of library functions? |
+| | Unrobust to errors |
+| | Unrobust to (heavy) error handling |
+| | Hard to tune at end of project |
+{: .table-responsive-lg .table }
+
+
+
+### Preemptive Kernel
+
+* Preemption, thread objects and the timer interrupt
+* Enabling synchronization: Busy waiting, tes-and-set, disabling the timer interrupt
+* Blocking and suspend & resume
+* An API for synchronization? Semaphores!
+
+
+#### Preemption
+
+* Make a handler for a timer interrupt
+* Store all registers (including IP & SP) in a "thread object"
+* Organize queue of processes (Round Robin e.g. - a collection of thread objects?)
+* Can synchronize by: while(!ready); (busy wating, "spin locks")
+
+**Bad solution**
+
+{% highlight c%}
+while(lock==1) {}
+lock = 1;
+ // We may run
+lock = 0;
+{% endhighlight %}
+
+**Better solution**
+
+{% highlight c%}
+void t1() {
+ flag1 = 1; // Declare my intention
+ turn = 2; // But try to be polite
+ while(flag2 == 1 && turn == 2) {}
+ // We may run
+ flag1 = 0;
+}
+{% endhighlight %}
+
+##### Looking more closely at the arsenal
+
+**How can we make basic synchronization under preemption?**
+
+* Spin locks (wasting time and cpu)
+* Test&Set (swap) assembly instruction (atomic, but not obvious)
+* Disable interrupt (steals control from OS/scheduler)
+
+**But**
+* If we disable the timer interrupt we don not have preemption any more
+* And... Are these good abstractions in the application programmer domain?
+
+#### Blocked threads
+
+**Let us introduce another queue; the collection of threads not running, waiting for something**
+
+* Fixes the bad performance of spin locks. Is conceptually better.
+* "Suspend" moves a thread object from "run" queue to "blocked" queue
+* "Resume" moves it back.
+
diff --git a/ntnu/21v/ttk4145/ttk4145.md b/ntnu/21v/ttk4145/ttk4145.md
new file mode 100644
index 0000000..602fa78
--- /dev/null
+++ b/ntnu/21v/ttk4145/ttk4145.md
@@ -0,0 +1,15 @@
+---
+layout: layouts/list
+title: "TTK4145"
+description: "Sanntidsprogrammering"
+---
+
+## Oppsummering
+
+[Oppsummering](summary/) av faget TTK4145.
+
+## Prosjekt
+
+## Øvinger
+
+
diff --git a/ntnu/21v/ttt4280/lab/1/1.md b/ntnu/21v/ttt4280/lab/1/1.md
new file mode 100644
index 0000000..7d3ccb4
--- /dev/null
+++ b/ntnu/21v/ttt4280/lab/1/1.md
@@ -0,0 +1,34 @@
+---
+layout: layouts/lecture
+title: "TTT4280"
+description: "Labforelesning 1"
+date: "2021-01-18"
+math: false
+---
+
+## Laboratorium
+
+### System
+
+* Raspberry Pi
+* Linux
+* A/D omformere
+* Python
+
+### Oppgaver
+
+* Systemoppsett
+ * Klargjøre rPi og instrumenteringskrets
+* Akustikk
+ * Beregne retning til lydkilde
+* Radar
+ * Doppler
+* Optikk
+
+## Laboppgave 1
+
+1. Tegne blokkdiagram
+2. Studere datablat for ADC
+3. Drøfte fordeler med DMA
+
+![Blokk](figures/TTT4280%20-%20Lab%20Blokk.png)
\ No newline at end of file
diff --git a/ntnu/21v/ttt4280/lab/1/figures/TTT4280 - Lab Blokk.png b/ntnu/21v/ttt4280/lab/1/figures/TTT4280 - Lab Blokk.png
new file mode 100644
index 0000000..799742d
Binary files /dev/null and b/ntnu/21v/ttt4280/lab/1/figures/TTT4280 - Lab Blokk.png differ
diff --git a/ntnu/21v/ttt4280/lectures/2021-01-11/2021-01-11.md b/ntnu/21v/ttt4280/lectures/2021-01-11/2021-01-11.md
new file mode 100644
index 0000000..d55053f
--- /dev/null
+++ b/ntnu/21v/ttt4280/lectures/2021-01-11/2021-01-11.md
@@ -0,0 +1,57 @@
+---
+title: "TTT4280 - Måleusikkerhet"
+description: "2021-01-11"
+math: true
+---
+
+## Faglig innhold
+
+* Måleusikkerhet
+* Støyanalyse
+* Sensorer og aktuatorer
+* Sensortyper
+
+## Hva er sensorer
+
+Noe som kan lese den fysiske verdenen til noe vi kan prosessere.
+
+Finnes mange forskjellige sensorer. Flere i biler, telefoner, klokker osv.
+
+Tidligere ble det estimert at vi skulle ha ca 50 milliarder sensorer i 2020.
+
+## Måleusikkerhet
+
+Bruk av sensor = Utføre en måling.
+
+...og måleverdier har en usikkerhet.
+
+I visse situasjoner har måleusikkerheten masse å si, i andre har det ikke så mye å si.
+
+Sensitivitet er en måling for å ikke gjøre en Type II feil (alarmen løser **ikke** ut).
+
+Spesifisitet er en måling for å ikke gjøre en Type I feil (**falsk** alarm).
+
+
+
+### Grunnmodell for måleprosess
+
+![Grunnmodell](figures/grunnmodell.jpg)
+
+I realiteten er det støy i alle ledd.
+
+Sannsynligheten for at et sensorsystem gir riktig svar påvirkes av (minst) to faktorer:
+
+* Hvor entydig er underliggende sammenhenger?
+* Hvor nøyaktig kan vi måle de fysiske størrelsene?
+
+$$ \text{SNR} = \frac{\text{(Effekten for) sann verdi}}{\text{(Effekten for) støy}} $$
+
+### Målefeil
+
+Stokastiske feil (Type A feil) påvirker målingens *presisjon*.
+Presisjonen beskriver hvor reproduserbar en måling er.
+
+Systematiske feil (Type B feil) påvirker målingens *sannhet*.
+Sannheten er en måling på hvor langt unna den sanne verdien en måling er.
+
+![Målefeil](figures/true-prec.jpg)
\ No newline at end of file
diff --git a/ntnu/21v/ttt4280/lectures/2021-01-11/figures/grunnmodell.jpg b/ntnu/21v/ttt4280/lectures/2021-01-11/figures/grunnmodell.jpg
new file mode 100644
index 0000000..a9de590
Binary files /dev/null and b/ntnu/21v/ttt4280/lectures/2021-01-11/figures/grunnmodell.jpg differ
diff --git a/ntnu/21v/ttt4280/lectures/2021-01-11/figures/true-prec.jpg b/ntnu/21v/ttt4280/lectures/2021-01-11/figures/true-prec.jpg
new file mode 100644
index 0000000..0361a4c
Binary files /dev/null and b/ntnu/21v/ttt4280/lectures/2021-01-11/figures/true-prec.jpg differ
diff --git a/ntnu/21v/ttt4280/lectures/2021-01-18/2021-01-18.md b/ntnu/21v/ttt4280/lectures/2021-01-18/2021-01-18.md
new file mode 100644
index 0000000..19cf1d5
--- /dev/null
+++ b/ntnu/21v/ttt4280/lectures/2021-01-18/2021-01-18.md
@@ -0,0 +1,8 @@
+---
+layout: layouts/lecture
+title: "TTT4280"
+description: "Usikkerhet og feilforplantning"
+date: "2021-01-18"
+math: true
+---
+
diff --git a/ntnu/21v/ttt4280/ttt4280.md b/ntnu/21v/ttt4280/ttt4280.md
new file mode 100644
index 0000000..896f771
--- /dev/null
+++ b/ntnu/21v/ttt4280/ttt4280.md
@@ -0,0 +1,12 @@
+---
+layout: layouts/list
+title: "TTT4280"
+description: "Sensorer og instrumentering"
+---
+
+## Forelesninger
+
+[2021-01-11](./lectures/2021-01-11/) - Intro og målesikkerhet
+
+[2021-01-18](./lectures/2021-01-18/) - Usikkerhet og feilforplantning
+
diff --git a/ntnu/ntnu.html b/ntnu/ntnu.html
index 73129ab..e049766 100644
--- a/ntnu/ntnu.html
+++ b/ntnu/ntnu.html
@@ -4,13 +4,15 @@ title: "NTNU"
description: "Alt som har med studier på NTNU å gjøre."
---
-{% assign courses = site.data.ntnu-courses | sort: 'update' %}
+{% for semester in site.data.ntnu-courses %}
+