Compare commits
No commits in common. "a34828f170e23d4bda51239dfe9d40739d8c3a0b" and "0bd2eec49f9e950054d1e211f5645284c6e688d9" have entirely different histories.
a34828f170
...
0bd2eec49f
@ -1,132 +0,0 @@
|
|||||||
{
|
|
||||||
"courses": [
|
|
||||||
{
|
|
||||||
"name": "Blazor Deep Dive",
|
|
||||||
"sub": "From beginner to advanced in .NET 8",
|
|
||||||
"instructor": "Frank Liu",
|
|
||||||
"achieveDate": "2025-04-18",
|
|
||||||
"duration": 14.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/responsive-web-design-tutorial-course-html5-css3-bootstrap/",
|
|
||||||
"certificate": "https://www.udemy.com/certificate/UC-8b73ec23-4187-4ec2-9b0c-6b1c9e109220/",
|
|
||||||
"skills": ".NET, Blazor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Entity Framework Core",
|
|
||||||
"sub": "A full tour",
|
|
||||||
"instructor": "Trevoir Williams",
|
|
||||||
"achieveDate": "2025-04-14",
|
|
||||||
"duration": 10.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/responsive-web-design-tutorial-course-html5-css3-bootstrap/",
|
|
||||||
"certificate": "https://www.udemy.com/certificate/UC-0c891709-9105-498c-b9db-f7b2eef2b83a/",
|
|
||||||
"skills": ".NET, Entity Framework"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Responsive Web Design Essentials",
|
|
||||||
"sub": "HTML5 CSS3 Bootstrap",
|
|
||||||
"instructor": "Daniel Walter Scott",
|
|
||||||
"achieveDate": "2024-06-22",
|
|
||||||
"duration": 16.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/responsive-web-design-tutorial-course-html5-css3-bootstrap/",
|
|
||||||
"certificate": "https://www.udemy.com/certificate/UC-154acaf8-cdf8-4194-9f93-2e978ed96611/",
|
|
||||||
"skills": "CSS, Bootstrap"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Elm",
|
|
||||||
"sub": "The Complete Guide",
|
|
||||||
"instructor": "Carlos Saltos",
|
|
||||||
"achieveDate": "2024-01-27",
|
|
||||||
"duration": 21.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/elm-the-complete-guide/",
|
|
||||||
"certificate": "https://www.udemy.com/certificate/UC-17b9db07-37a1-43e1-be5e-1e179e3c1c09/",
|
|
||||||
"skills": "Elm, functional programming"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "F#",
|
|
||||||
"sub": "From the Ground Up",
|
|
||||||
"instructor": "Kit Eason",
|
|
||||||
"achieveDate": "2023-06-02",
|
|
||||||
"duration": 5.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/fsharp-from-the-ground-up/",
|
|
||||||
"certificate": "https://www.udemy.com/certificate/UC-821edd16-10a7-499f-b66e-2bd97f3ce3dd/",
|
|
||||||
"skills": "F#, functional programming"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Drupal 9",
|
|
||||||
"sub": "Site Builder",
|
|
||||||
"instructor": "",
|
|
||||||
"achieveDate": "2022-07-28",
|
|
||||||
"duration": 24,
|
|
||||||
"institution": "Acquia",
|
|
||||||
"link": "https://certification.acquia.com/user/18196",
|
|
||||||
"certificate": "",
|
|
||||||
"skills": "CMS, Drupal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "LPIC-1",
|
|
||||||
"sub": "",
|
|
||||||
"instructor": "",
|
|
||||||
"achieveDate": "2022-01-25",
|
|
||||||
"duration": 48,
|
|
||||||
"institution": "Linux professional institute certification",
|
|
||||||
"link": "https://www.lpi.org/our-certifications/",
|
|
||||||
"certificate": "",
|
|
||||||
"skills": "Linux"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Docker Mastery",
|
|
||||||
"sub": "Kubernetes + Swarm from a Docker Captain",
|
|
||||||
"instructor": "Bret Fisher",
|
|
||||||
"achieveDate": "2021-04-28",
|
|
||||||
"duration": 21,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/docker-mastery/",
|
|
||||||
"certificate": "https://www.matsubara.nl/udemy-certs/UC-19ac22fe-70fa-47bd-804c-83f3aa4ac218.jpg",
|
|
||||||
"skills": "Docker, DevOps"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Beginning C++ Programming",
|
|
||||||
"sub": "From Beginner to Beyond",
|
|
||||||
"instructor": "Dr. Frank Mitropoulos",
|
|
||||||
"achieveDate": "2020-05-07",
|
|
||||||
"duration": 46,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/beginning-c-plus-plus-programming/",
|
|
||||||
"certificate": "https://www.matsubara.nl/udemy-certs/UC-9f15ebd2-2a9a-489f-b8ca-7e8b175bc12f.pdf",
|
|
||||||
"skills": "C++"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Learn Linux in 5 Days",
|
|
||||||
"sub": "and Level Up Your Career",
|
|
||||||
"instructor": "Jason Cannon",
|
|
||||||
"achieveDate": "2019-02-03",
|
|
||||||
"duration": 6.5,
|
|
||||||
"institution": "Udemy",
|
|
||||||
"link": "https://www.udemy.com/course/learn-linux-in-5-days/",
|
|
||||||
"certificate": "https://www.matsubara.nl/udemy-certs/UC-0BB6GYJ1.pdf",
|
|
||||||
"skills": "Basic Linux"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"education": [
|
|
||||||
{
|
|
||||||
"name": "Computer engineering of applied computer science",
|
|
||||||
"diploma": "Bachelor of computer science",
|
|
||||||
"school": "Avans Hogeschool",
|
|
||||||
"location": "Breda, Netherlands",
|
|
||||||
"start": 2012,
|
|
||||||
"end": 2016
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Interactive media design",
|
|
||||||
"diploma": "MBO diploma",
|
|
||||||
"school": "Eindhovenseschool / Sint Lucas",
|
|
||||||
"location": "Eindhoven, Netherlands",
|
|
||||||
"start": 2009,
|
|
||||||
"end": 2012
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Blazor"
|
|
||||||
logosub: ".NET Blazor developer"
|
|
||||||
language: "en"
|
|
||||||
---
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Elm"
|
|
||||||
logosub: "Functional programmer"
|
|
||||||
language: "en"
|
|
||||||
---
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Haskell"
|
|
||||||
logosub: "Functional programmer"
|
|
||||||
language: "en"
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://learn-haskell.blog/04-markup/03-displaying_results.html">type class</a>
|
|
||||||
|
|
||||||
<a href="https://learn-haskell.blog/04-markup/03-displaying_results.html">type class constraint</a>
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
title: Radio
|
|
||||||
logosub: Amateur radio operator
|
|
||||||
language: "en"
|
|
||||||
---
|
|
||||||
|
|
||||||
<p>I am a (beginner) ham radio amateur. My callsign is: <strong>PA4KEV</strong>.</p>
|
|
||||||
|
|
||||||
<p>This hobby involves experimenting with wireless communication and electronics.</p>
|
|
||||||
|
|
||||||
<p>Here I post my notes on the hobby.</p>
|
|
||||||
|
|
||||||
<h2>Field days</h2>
|
|
||||||
|
|
||||||
<table class="table table-striped table-hover table-light">
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
Date
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
Place
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
Setup
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
Unique QSO
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
$for(fielddays)$
|
|
||||||
<tr>
|
|
||||||
<td>$date$</td>
|
|
||||||
<td><a href="$url$">$title$</a><br/>$if(pota-locator)$<strong>POTA</strong>: $pota-locator$ $endif$ $if(wwff-locator)$<strong>WW-FF</strong>: $wwff-locator$ $endif$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$mode$ - $bands$ - $antenna$ antenna<br/>$transceiver$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$total-unique-qso$</td>
|
|
||||||
</tr>
|
|
||||||
$endfor$
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>External links</h2>
|
|
||||||
$partial("templates/radio-external-links.html")$
|
|
||||||
@ -1,35 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "Software"
|
title: Software
|
||||||
logosub: "Software developer"
|
logosub: Software
|
||||||
language: "en"
|
language: "en"
|
||||||
---
|
---
|
||||||
|
|
||||||
<h2>Projects</h2>
|
$partial("templates/software.html")$
|
||||||
$for(projects)$
|
|
||||||
<p>$year$ - <a href="$url$">$title$</a></p>
|
|
||||||
$endfor$
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>Code</h2>
|
|
||||||
|
|
||||||
<p>Notes an examples of code.</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/$language$/code/blazor.html">Blazor</a></li>
|
|
||||||
<li><a href="/$language$/code/elm.html">Elm</a></li>
|
|
||||||
<li><a href="/$language$/code/haskell.html">Haskell</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>Education</h2>
|
|
||||||
<h3>Computer engineering of applied computer science</h3>
|
|
||||||
<strong>Bachelor of computer science</strong><br/>
|
|
||||||
<p>Avans Hogeschool - Breda, Netherlands</p>
|
|
||||||
<p>2012 - 2016</p>
|
|
||||||
|
|
||||||
<h3>Interactive media design</h3>
|
|
||||||
<strong>MBO diploma</strong>
|
|
||||||
<p>Eindhovenseschool / Sint Lucas - Eindhoven, Netherlands</p>
|
|
||||||
<p>2009 - 2012</p>
|
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Blazor"
|
|
||||||
logosub: "ブレイザー"
|
|
||||||
language: "jp"
|
|
||||||
---
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Elm"
|
|
||||||
logosub: "関数型プログラミング"
|
|
||||||
language: "jp"
|
|
||||||
---
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Haskell"
|
|
||||||
logosub: "関数型プログラミング"
|
|
||||||
language: "jp"
|
|
||||||
---
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
title: ラジオ
|
|
||||||
logosub: アマチュア無線家
|
|
||||||
language: "jp"
|
|
||||||
---
|
|
||||||
|
|
||||||
<p>初級アマチュア<ruby><rb>無<rb>線<rb>家<rt>む<rt>せん<rt>か</ruby>です。コールサインは <strong>PA4KEV</strong> です。</p>
|
|
||||||
|
|
||||||
<p>この趣味では、<ruby><rb>無<rb>線<rb>通<rb>信<rt>む<rt>せん<rt>つう<rt>しん</ruby>や<ruby><rb>電<rb>子<rb>工<rb>作<rt>でん<rt>し<rt>こう<rt>さく</ruby>を<ruby><rb>試<rt>ため</ruby>したりしています。</p>
|
|
||||||
|
|
||||||
<p>ここには、メモを<ruby><rb>載<rt>の</ruby>せています。</p>
|
|
||||||
|
|
||||||
<h2>フィルドデイ</h2>
|
|
||||||
|
|
||||||
<table class="table table-striped table-hover table-light">
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
日
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
場所
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
設備
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
ユニークなQSO
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
$for(fielddays)$
|
|
||||||
<tr>
|
|
||||||
<td>$date$</td>
|
|
||||||
<td><a href="$url$">$title$</a><br/>$if(pota-locator)$<strong>POTA</strong>: $pota-locator$ $endif$ $if(wwff-locator)$<strong>WW-FF</strong>: $wwff-locator$ $endif$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$mode$ - $bands$ - $antenna$ アンテナ<br/>$transceiver$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$total-unique-qso$</td>
|
|
||||||
</tr>
|
|
||||||
$endfor$
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>外部リンク</h2>
|
|
||||||
$partial("templates/radio-external-links.html")$
|
|
||||||
@ -1,34 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "ソフトウェア"
|
title: Software
|
||||||
logosub: "開発者"
|
logosub: Software
|
||||||
language: "jp"
|
language: "jp"
|
||||||
---
|
---
|
||||||
|
|
||||||
<h2>プロジェクト</h2>
|
$partial("templates/software.html")$
|
||||||
$for(projects)$
|
|
||||||
<p>$year$ - <a href="$url$">$title$</a></p>
|
|
||||||
$endfor$
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>Code</h2>
|
|
||||||
|
|
||||||
<p>コードのメモと例。</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/$language$/code/blazor.html">Blazor</a></li>
|
|
||||||
<li><a href="/$language$/code/elm.html">Elm</a></li>
|
|
||||||
<li><a href="/$language$/code/haskell.html">Haskell</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>教育</h2>
|
|
||||||
<h3>計算機科学</h3>
|
|
||||||
<strong>学士</strong><br/>
|
|
||||||
<p>Avans Hogeschool - ブレダ、オランダ</p>
|
|
||||||
<p>2012 - 2016</p>
|
|
||||||
|
|
||||||
<h3>コミュニケーションデザイン</h3>
|
|
||||||
<p>Eindhovenseschool / Sint Lucas - アイントホーフェン、オランダ</p>
|
|
||||||
<p>2009 - 2012</p>
|
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Blazor"
|
|
||||||
logosub: ".NET Blazor ontwikkelaar"
|
|
||||||
language: "nl"
|
|
||||||
---
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Elm"
|
|
||||||
logosub: "Functioneel programmeur"
|
|
||||||
language: "nl"
|
|
||||||
---
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Haskell"
|
|
||||||
logosub: "Functioneel programmeur"
|
|
||||||
language: "nl"
|
|
||||||
---
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
title: Radio
|
|
||||||
logosub: Radiozendamateur
|
|
||||||
language: "nl"
|
|
||||||
---
|
|
||||||
|
|
||||||
<p>Ik ben een (beginnend) radiozendamateur. Mijn callsign is: <strong>PA4KEV</strong>.</p>
|
|
||||||
|
|
||||||
<p>Deze hobby gaat over experimenteren met electronica en draadloze communicatie.</p>
|
|
||||||
|
|
||||||
<p>Hier plaats ik mijn notities over de hobby.</p>
|
|
||||||
|
|
||||||
<h2>Velddagen</h2>
|
|
||||||
|
|
||||||
<table class="table table-striped table-hover table-light">
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
Datum
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
Plaats
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
Setup
|
|
||||||
</th>
|
|
||||||
<th class="d-none d-md-table-cell">
|
|
||||||
Unieke QSO
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
$for(fielddays)$
|
|
||||||
<tr>
|
|
||||||
<td>$date$</td>
|
|
||||||
<td><a href="$url$">$title$</a><br/>$if(pota-locator)$<strong>POTA</strong>: $pota-locator$ $endif$ $if(wwff-locator)$<strong>WW-FF</strong>: $wwff-locator$ $endif$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$mode$ - $bands$ - $antenna$ antenne<br/>$transceiver$</td>
|
|
||||||
<td class="d-none d-md-table-cell">$total-unique-qso$</td>
|
|
||||||
</tr>
|
|
||||||
$endfor$
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h2>Externe links</h2>
|
|
||||||
$partial("templates/radio-external-links.html")$
|
|
||||||
@ -1,35 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "Software"
|
title: Software
|
||||||
logosub: "Software ontwikkelaar"
|
logosub: Software
|
||||||
language: "nl"
|
language: "nl"
|
||||||
---
|
---
|
||||||
|
|
||||||
<h2>Projecten</h2>
|
$partial("templates/software.html")$
|
||||||
$for(projects)$
|
|
||||||
<p>$year$ - <a href="$url$">$title$</a></p>
|
|
||||||
$endfor$
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>Code</h2>
|
|
||||||
|
|
||||||
<p>Notities en voorbeelden van code.</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="/$language$/code/blazor.html">Blazor</a></li>
|
|
||||||
<li><a href="/$language$/code/elm.html">Elm</a></li>
|
|
||||||
<li><a href="/$language$/code/haskell.html">Haskell</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<h2>Opleiding</h2>
|
|
||||||
<h3>Technische informatica</h3>
|
|
||||||
<strong>Bachelor of computer science</strong><br/>
|
|
||||||
<p>Avans Hogeschool - Breda</p>
|
|
||||||
<p>2012 - 2016</p>
|
|
||||||
|
|
||||||
<h3>Interactieve media vormgeving</h3>
|
|
||||||
<strong>MBO diploma</strong>
|
|
||||||
<p>Eindhovenseschool / Sint Lucas - Eindhoven</p>
|
|
||||||
<p>2009 - 2012</p>
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ title: "MD-0031 Dilanza"
|
|||||||
page: "model-kits/gundam/hg/dilanza-lauda"
|
page: "model-kits/gundam/hg/dilanza-lauda"
|
||||||
model_name: "MD-0031 Dilanza"
|
model_name: "MD-0031 Dilanza"
|
||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "Built"
|
status: "Still in box"
|
||||||
price: "€19,99"
|
price: "€19,99"
|
||||||
series: "Mobile Suit Gundam the Witch from Mercury"
|
series: "Mobile Suit Gundam the Witch from Mercury"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
|
|||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2024-09-28"
|
purchase_date: "2024-09-28"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The AMS-119 Geara Doga.
|
The AMS-119 Geara Doga.
|
||||||
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Plamo"
|
|
||||||
language: "en"
|
|
||||||
title: "GM Commando"
|
|
||||||
page: "model-kits/gundam/mg/gm-commando"
|
|
||||||
model_name: "RGM-79G GM Command \"Colony Type\""
|
|
||||||
date: "1990-01-01"
|
|
||||||
status: "Still in box"
|
|
||||||
price: "€46,99"
|
|
||||||
series: "Mobile Suit Gundam 0080: War in the Pocket"
|
|
||||||
scale: "1/100"
|
|
||||||
number: ""
|
|
||||||
release: ""
|
|
||||||
manufacturer: ""
|
|
||||||
purchase_date: "2026-01-02"
|
|
||||||
purchase_store: "Player2 Gamestore"
|
|
||||||
purchase_venue: "Internet"
|
|
||||||
---
|
|
||||||
|
|
||||||
The GM Commando
|
|
||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2025-09-28"
|
purchase_date: "2025-09-28"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The ZGMF-X56S Force Impulse Gundam.
|
The ZGMF-X56S Force Impulse Gundam.
|
||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2024-12-31"
|
purchase_date: "2024-12-31"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The ZGMF-1000/A1 Gunner Zaku Warrior.
|
The ZGMF-1000/A1 Gunner Zaku Warrior.
|
||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2025-02-07"
|
purchase_date: "2025-02-07"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The MS-07B Gouf.
|
The MS-07B Gouf.
|
||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2025-03-10"
|
purchase_date: "2025-03-10"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The OZ-00MS Tallgeese.
|
The OZ-00MS Tallgeese.
|
||||||
@ -15,6 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2025-11-02"
|
purchase_date: "2025-11-02"
|
||||||
purchase_store: "Mecha Universe"
|
purchase_store: "Mecha Universe"
|
||||||
purchase_venue: "Internet"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Barcelona, Spain"
|
||||||
---
|
---
|
||||||
|
|
||||||
The MG RGM-96X JESTA.
|
The MG RGM-96X JESTA.
|
||||||
@ -1,84 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Strabrechtse Heide"
|
|
||||||
date: "2023-11-11"
|
|
||||||
language: "en"
|
|
||||||
pota-locator: "PA-0026"
|
|
||||||
wwff-locator: "PAFF-0058"
|
|
||||||
bands: "20m, 40m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Yaesu FT-897"
|
|
||||||
total-unique-qso: "16"
|
|
||||||
antenna: "NVIS"
|
|
||||||
---
|
|
||||||
|
|
||||||
This was my first activation for [POTA](https://pota.app/) and [WWFF](https://wwff.co/). It was amazing!
|
|
||||||
|
|
||||||
Together with the motorhome of PA2WLE I took my Yaesu FT-897 to the [Strabrechtse Heide](https://en.wikipedia.org/wiki/Strabrechtse_Heide) as activator of this park.
|
|
||||||
Location POTA: **PA-0026**, location WWFF: **PAFF-0058**
|
|
||||||
PA2WLE utilized an ICOM IC-705 made connections with Morse.
|
|
||||||
|
|
||||||
The stations that try to connect to our station, are called the “Hunters” or “Chasers”.
|
|
||||||
|
|
||||||
We had the luxurity to operate from a parking spot to make our connections. We used an [NVIS](https://en.wikipedia.org/wiki/Near_vertical_incidence_skywave)\-antenna, created by PA0ABG. After getting permission over the telephone from the owner, we set up the mast on a 13x13 meter (42.5x42.5 feet) patch within a nearby field.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The vehicle we used, (Citroën Globecar Globescout R), had an additional 12 Volt battery from which we could supply our equipment with power. Next time we intend to set up further in the park, so we will require a mobile battery as well.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
On SSB I made 16 connections. On CW, PA2WLE made 25 connections. For me as beginner, this was quite a lot.
|
|
||||||
|
|
||||||
Operating practice:
|
|
||||||
Once you have an available frequency, valid in the bandplan (with 5khz above and below also free), you can get started.
|
|
||||||
|
|
||||||
Start by calling: "CQ CQ, PA4KEV, Flaura and Fauna, WWFF" or: "CQ CQ, PA4KEV, Parks on the Air, POTA"
|
|
||||||
|
|
||||||
The other station will call you with only their callsign. Repeat the callsign of the other station, until the station replies with a “Roger, roger” or a “QSL”.
|
|
||||||
|
|
||||||
Give the signal report (59) and end the QSO. You can do a greeting of course, but do not start a conversation. There are more stations waiting and want to make a connection.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
Me:
|
|
||||||
|
|
||||||
_“CQ CQ, PA4KEV, Flaura and Fauna, WWFF”_
|
|
||||||
|
|
||||||
They:
|
|
||||||
|
|
||||||
_“PA0--C”_
|
|
||||||
|
|
||||||
Me:
|
|
||||||
|
|
||||||
_“PA0 again” or; “Ending with Charlie again”_
|
|
||||||
|
|
||||||
They:
|
|
||||||
|
|
||||||
_“PA0ABC, Papa Alpha Zero Alpha Bravo Charlie”_
|
|
||||||
|
|
||||||
Me:
|
|
||||||
|
|
||||||
_“PA0ABC QSL?”_
|
|
||||||
|
|
||||||
They:
|
|
||||||
|
|
||||||
_“Roger roger, you are a 59”_
|
|
||||||
|
|
||||||
Me:
|
|
||||||
|
|
||||||
_“You are 59, thank you for the contact! 44, 73”_
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
In the case of WWFF, you can greet one another at the end with a “44”, together with the standard “73”.
|
|
||||||
|
|
||||||
I noted all my connections on paper. Doing this structurized is very important, because those scribbles need to become a valid logbook.
|
|
||||||
|
|
||||||
It is amazing to make connections all over the world, especially to do so in the field. The challenge of course is to become as remote and mobiele as possible, with the least amount of power and equipment.
|
|
||||||
|
|
||||||
What I missed during this activation and will bring next time:
|
|
||||||
|
|
||||||
* UTC clock module
|
|
||||||
* audiosplitter (So 2 headphones may be connected to 1 transceiver)
|
|
||||||
|
|
||||||

|
|
||||||
@ -1,77 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Stiphoutse bossen, Kamerven"
|
|
||||||
date: "2023-12-30"
|
|
||||||
language: "en"
|
|
||||||
wwff-locator: "PAFF-0221"
|
|
||||||
bands: "20m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Yaesu FT-897"
|
|
||||||
total-unique-qso: "27"
|
|
||||||
antenna: "NVIS"
|
|
||||||
---
|
|
||||||
|
|
||||||
This was my second activation for [WWFF](https://wwff.co/).
|
|
||||||
|
|
||||||
Location WWFF: **PAFF-0221**
|
|
||||||
|
|
||||||
### Equipment
|
|
||||||
|
|
||||||
My backpack (Osprey Farpoint 40) with equipment weighed 14 kilogram (30.8 lbs), which was just too heavy for me to make long bicycle journey with. Instead we used the motorhome of PA2WLE to travel to these woods.
|
|
||||||
|
|
||||||
* [NVIS](https://en.wikipedia.org/wiki/Near_vertical_incidence_skywave) antenna
|
|
||||||
* [Yaesu FT-897](https://www.rigpix.com/yaesu/ft897.htm) transceiver
|
|
||||||
* LDG AT-897 Plus automatische antenna tuner
|
|
||||||
* [Jackery Explorer 240](https://www.jackery.com/products/explorer-240-portable-power-station) portable power supply
|
|
||||||
* Cable with 12 Volt plug and a plug that goes in the transceiver
|
|
||||||
* 25 meter (82 feet) Aircell 7 coax cable with 2 [BNC](https://nl.wikipedia.org/wiki/BNC-connector) connectors
|
|
||||||
* 10 meter (32.8 feet) glass fibre reinforced plastic telescopic mast
|
|
||||||
* 50 meter (164 feet) measuring tape
|
|
||||||
* Tent pegs
|
|
||||||
* Battery powered clockmodule with UTC time
|
|
||||||
* Pipe wrench to tighten the nuts on antenna and to pull out the tent pegs
|
|
||||||
|
|
||||||
In addition, some sandwiches, pen and a notepad along with a vademecum. The table and chairs came from PA2WLE's camper. Also the Jackery power supply would not fit in my backpack.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
### Activation
|
|
||||||
|
|
||||||
The activation of this location went fine with 27 unique QSO's. Once I was spotted on the cluster, I was hailed by many stations quickly.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The location was **PAFF-0221**, de Stiphoutse bossen (The Stiphoutse woods), near the Kamerven (A "ven" is mere in English). Because of the recent heavy rain fall, there was plenty of water in the mere now.
|
|
||||||
|
|
||||||
Hikers will often pass by with their dogs, They are usually interested in the radio equipment and their dogs were usually interested in the ham sandwiches from my backpack.
|
|
||||||
|
|
||||||
Those who showed interest, thought that we were searching for extraterrestial lifeforms, doing measurements of even counting animals. It is a fun opportunity to tell people about the hobby. Everyone showed genuine interest in it.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The weather was cloudy and the temperature about 9° Celcius (48° Fahrenheit). The cold wind does make it difficult to write callsigns down with bare hands though.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
### Learning moments
|
|
||||||
|
|
||||||
I learnt much from this activation.
|
|
||||||
|
|
||||||
1. The Aircell 7 coax cable was too long, to unwieldy and too heavy. A RG58 cable would have been better.
|
|
||||||
2. Use a screwdriver and spanner instead of a pipe wrench.
|
|
||||||
3. The wind keeps blowing away the paper of my notepad, this should be fixed.
|
|
||||||
4. Make ropes and cables more visible, so that people cannot trip over them.
|
|
||||||
5. Put away the sandwiches, so that curious dogs cannot reach them.
|
|
||||||
6. During activation, indicate that you are a **portable** station. Other stations will then understand better why the connection is not perfect.
|
|
||||||
7. The measuring tape was too big and not really required anyway. A rope of 12 meter (40 feet) would have been fine. Its not required to measure anything else anyway.
|
|
||||||
|
|
||||||
I could use other kinds of gloves, so I can still write with them during cold weather.
|
|
||||||
|
|
||||||
The little UTC clock module was perfect, during a pile-up I found it handy to instantly have the right time in front of me. Using my phone doesn't really work for me.
|
|
||||||
|
|
||||||
Finally, its important to clean up your cables. It will save much time during deployment and tearing down the antenna. Its really annoying to untangle these in the field.
|
|
||||||
|
|
||||||

|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
---
|
|
||||||
title: "De Groote Peel, Kokmeeuwenweg"
|
|
||||||
date: "2024-01-20"
|
|
||||||
language: "en"
|
|
||||||
pota-locator: "PA-0016"
|
|
||||||
bands: "20m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Yaesu FT-897"
|
|
||||||
total-unique-qso: "1"
|
|
||||||
antenna: "NVIS"
|
|
||||||
---
|
|
||||||
|
|
||||||
This day was a failure to me.
|
|
||||||
|
|
||||||
I was only to make 1 park-to-park QSO with SP3W/P, in SP-1888 and SP-1878 in Poland.
|
|
||||||
|
|
||||||
I had to suddenly tear down my station immediately (and rightfully so) by Staatsbosbeheer, the organization that maintains nature preserves in the Netherlands. I was deployed in a vulnerable area. There was a sign, which I did not see. Stupid of me.
|
|
||||||
|
|
||||||
It was a succesful test for my new antenna deployment though. I made use of a plastic tube, strong screwing pegs and special hooks from Nite Ize.
|
|
||||||
|
|
||||||
* [Nite Ize CamJam hooks](https://www.niteize.nl/p/camjam-spanhaak-zwart-ni-ncj-01-r3)
|
|
||||||
* [60mm HWA tube](https://www.praxis.nl/bouwmaterialen/waterafvoer/dakgoten-en-accessoires/martens-hwa-buis-60mm-2-meter-grijs/2215168)
|
|
||||||
* [Wurmi Erdsandwurm pegs](https://www.wurmi-shop.de/)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The mastholder, bit of a mess currently. I should be able to improve this...
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The sign, that I sadly did not notice. It is important to respect these areas, so pay attention to the surroundings when you will do an activation.
|
|
||||||
|
|
||||||
"Kwetsbaar gebied" = _Vulnerable area_, "Geen toegang" = _Access denied_.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The maintainer of Staatsbosbeheer comes to write the fine.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
I admit being wrong here, I had no problem accepting the fine. It is important to respect the rules of the park. Make sure you are not in a closed-off area and start putting pegs in the ground. For the ground and the life in it may be disturbed. Do not annoy others with your hobby and respect the rules.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The fine is €100 ($108 £85 ¥16105) plus €9 ($9,7 £7,6 ¥1450) administration costs, which falls just outside of the criminal offense range.
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Stiphoutse bossen, Gerwenseweg"
|
|
||||||
date: "2024-11-01"
|
|
||||||
language: "en"
|
|
||||||
pota-locator: "NL-0233"
|
|
||||||
bands: "17m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Icom IC-7300"
|
|
||||||
total-unique-qso: "11"
|
|
||||||
antenna: "Dipole"
|
|
||||||
---
|
|
||||||
|
|
||||||
So dark already at 17:00 UTC.
|
|
||||||
|
|
||||||
I joined PE0CD, Chris, with his POTA activation as a dual operator.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Stiphoutse bossen, Kievitlaan"
|
|
||||||
date: "2025-01-18"
|
|
||||||
language: "en"
|
|
||||||
pota-locator: "NL-0233"
|
|
||||||
bands: "40m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Yaesu FT-897"
|
|
||||||
total-unique-qso: "18"
|
|
||||||
antenna: "Endfed"
|
|
||||||
---
|
|
||||||
|
|
||||||
A nice, cold, early morning at 07:00, with the frost still on the evergreen at about 3°C (37.4°F). This time located at the northern end of the Stiphoutse bossen near the Kievitlaan (street name), near camping spot Croy.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
I tried a setup that required minimal effort. A backpack and an antenna with a mast carried on my bicycle. It is still not optimal, I haul way too much stuff in an unwieldy way to the POTA location. I still have to minimize more equipment and discover better transportation methods.
|
|
||||||
|
|
||||||
I tried a new power supply, a [LIFEPO4 battery](https://greencell.global/en/lifepo4-batteries-2/5727-green-cell-cube-lifepo4-leisure-battery-7ah-128v-896wh-solar-battery-for-ups-alarm-systems-monitoring-toys-cctv-telecom.html) (Lithium Iron Phosphate), 12.8 V, 7 Ah, 89.6 Wh made by Greencell, a Polish company. Operating at only 15 watts, I had more than enough power. The battery weighs about 900 Gram (2 Pound).
|
|
||||||
|
|
||||||
I still have to replace my coax cable. While an excellent Aircell 7 cable, its far too unwieldy. I still use my vademecum, but I should eventually leave that at home as well.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
I used an endfed antenna made by HyEndFed, which I hoisted up a mast and attached the antenna to a tree branch in the woods. On the 40m band, it worked perfectly and I did not have to use my tuner. Maybe I can leave that device at home as well next time.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
I managed to get 14 QSO's in a few hours with only 15 watt operating power.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Stiphoutse bossen, Mikboomweg"
|
|
||||||
date: "2025-07-19"
|
|
||||||
language: "en"
|
|
||||||
pota-locator: "NL-0233"
|
|
||||||
bands: "20m, 40m"
|
|
||||||
mode: "SSB"
|
|
||||||
transceiver: "Yaesu FT-897, Icom IC-705"
|
|
||||||
total-unique-qso: "8"
|
|
||||||
antenna: "Endfed"
|
|
||||||
---
|
|
||||||
|
|
||||||
A nice warm day to set up a small station, but sadly I did not make many QSO's with my own setup.
|
|
||||||
|
|
||||||
I located my station in the area next to a road.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Using my Endfed antenna.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
This time I tried using a throwing weight to get my antenna up in the tree. This worked really well.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
However, I transmitted at 15 watt, which does not really make you stand out. Only one Polish station and one German station managed to hear me to make a contact. What often happens is that after I claimed an empty frequency, suddenly other stations start talking over my signal. Without asking if the frequency is in use. Because of my weak signal, I am probably not heard by them when calling CQ. So I cannot really blame them for claiming the frequency, but it did lessen my fun that day.
|
|
||||||
|
|
||||||
After a while I decided to seek out PE0CD's station, which was also set up in the same park. He allowed me to make use of his setup (an Icom IC-705) so I managed to make enough QSO to make my activation count. This saved the day for me!
|
|
||||||
|
|
||||||

|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Blazor commands"
|
|
||||||
code: "Blazor"
|
|
||||||
---
|
|
||||||
|
|
||||||
A collection of commands useful to work with blazor web applications.
|
|
||||||
|
|
||||||
|
|
||||||
* Create a new application.
|
|
||||||
|
|
||||||
`dotnet new blazor -o BlazorWebAppMovies`
|
|
||||||
|
|
||||||
* Compile and run the application, and hot-reload upon changes.
|
|
||||||
|
|
||||||
`dotnet watch`
|
|
||||||
|
|
||||||
* VS Code build:
|
|
||||||
|
|
||||||
Command Palette (Ctrl+Shift+P), use the `.NET: Build` command to build the app.
|
|
||||||
|
|
||||||
* Create gitignore file:
|
|
||||||
|
|
||||||
`dotnet new gitignore`
|
|
||||||
|
|
||||||
* [Scaffolding example](https://learn.microsoft.com/en-us/aspnet/core/blazor/tutorials/movie-database-app/part-2?view=aspnetcore-8.0&pivots=vsc#scaffold-the-model):
|
|
||||||
|
|
||||||
`dotnet aspnet-codegenerator blazor CRUD -dbProvider sqlite -dc BlazorWebAppMovies.Data.BlazorWebAppMoviesContext -m Movie -outDir Components/Pages`
|
|
||||||
|
|
||||||
|
|
||||||
### Entity framework
|
|
||||||
|
|
||||||
* Create a migration, this is also used when creating a new migration when the model has changed.
|
|
||||||
|
|
||||||
`dotnet ef migrations add InitialCreate`
|
|
||||||
|
|
||||||
* Update the database:
|
|
||||||
|
|
||||||
`dotnet ef database update`
|
|
||||||
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
## Strings
|
|
||||||
|
|
||||||
#### Verbatim string with @:
|
|
||||||
|
|
||||||
Preserves whitespace and characters like '\' do not need to be escaped.
|
|
||||||
|
|
||||||
```c#
|
|
||||||
Console.WriteLine(@" c:\source\repos
|
|
||||||
(this is where your code goes)");
|
|
||||||
```
|
|
||||||
|
|
||||||
Output:
|
|
||||||
```
|
|
||||||
> c:\source\repos
|
|
||||||
> (this is where your code goes)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Escaped Unicode
|
|
||||||
|
|
||||||
Use the **\u** plus a four-character code to represent Unicode characters (UTF-16) in a string.
|
|
||||||
|
|
||||||
[Japanese UTF-16 table](http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml)
|
|
||||||
|
|
||||||
```c#
|
|
||||||
Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!");
|
|
||||||
```
|
|
||||||
|
|
||||||
Output (UTF-16):
|
|
||||||
```
|
|
||||||
> こんにちは World!
|
|
||||||
```
|
|
||||||
|
|
||||||
```c#
|
|
||||||
// To generate Japanese invoices:
|
|
||||||
Console.Write("\n\n\u65e5\u672c\u8a9e\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a");
|
|
||||||
```
|
|
||||||
|
|
||||||
Output (UTF-16):
|
|
||||||
```
|
|
||||||
> 日本語の請求書を生成するには:
|
|
||||||
```
|
|
||||||
|
|
||||||
#### String interpolation
|
|
||||||
|
|
||||||
Can be combined with verbatim strings.
|
|
||||||
|
|
||||||
```c#
|
|
||||||
Console.WriteLine($@"C:\Output\{projectName}\Data");
|
|
||||||
```
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
## Types
|
|
||||||
|
|
||||||
Float Type Precision
|
|
||||||
|
|
||||||
float ~6-9 digits 0.25F
|
|
||||||
double ~15-17 digits 0.25
|
|
||||||
decimal 28-29 digits 0.25M
|
|
||||||
|
|
||||||
Both lowercase 'f' or 'F' can be used, same for 'm' and 'M'.
|
|
||||||
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Composition"
|
|
||||||
code: "Elm"
|
|
||||||
---
|
|
||||||
|
|
||||||
[Elm composition operators << and >>](https://package.elm-lang.org/packages/elm/core/latest/Basics#(%3C%3C))
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "DRY"
|
|
||||||
code: "Elm"
|
|
||||||
---
|
|
||||||
|
|
||||||
DRY means: "[Don't Repeat Yourself](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)".
|
|
||||||
|
|
||||||
This page contains some common mistakes I make when writing Elm code and how I processed feedback afterwards to improve it.
|
|
||||||
|
|
||||||
|
|
||||||
```elm
|
|
||||||
let
|
|
||||||
render item =
|
|
||||||
case warning item of
|
|
||||||
Just (Error tooltip) ->
|
|
||||||
[ Html.text <| text item
|
|
||||||
, Html.i
|
|
||||||
[ HtmlAttributes.class "icon-error"
|
|
||||||
, HtmlAttributes.title tooltip
|
|
||||||
]
|
|
||||||
]
|
|
||||||
-- Another case, very similar to the one above.
|
|
||||||
Just (Warning tooltip) ->
|
|
||||||
[ Html.text <| text item
|
|
||||||
, Html.i
|
|
||||||
[ HtmlAttributes.class "icon-warning"
|
|
||||||
, HtmlAttributes.title <| getWarningTooltip tooltip
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
[ Html.text <| text item ]
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```elm
|
|
||||||
let
|
|
||||||
render item =
|
|
||||||
let
|
|
||||||
createHtml class tooltip =
|
|
||||||
[ Html.text <| text item
|
|
||||||
, Html.i
|
|
||||||
[ HtmlAttributes.class class
|
|
||||||
, HtmlAttributes.title tooltip
|
|
||||||
]
|
|
||||||
]
|
|
||||||
in
|
|
||||||
case warning item of
|
|
||||||
Just (Error tooltip) ->
|
|
||||||
createHtml "icon-error" tooltip
|
|
||||||
|
|
||||||
Just (Warning tooltip) ->
|
|
||||||
createHtml "icon-warning" (getWarningTooltip tooltip)
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
[ Html.text <| text item ]
|
|
||||||
```
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Formatting"
|
|
||||||
code: "Elm"
|
|
||||||
---
|
|
||||||
|
|
||||||
You can add a docstring to an elm function like this:
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
|
|
||||||
{- Render the Elm icon. -}
|
|
||||||
|
|
||||||
|
|
||||||
elmIcon : E.Element msg
|
|
||||||
elmIcon =
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
But upon formatting, 2 new lines are automatically added.
|
|
||||||
|
|
||||||
By adding a "|" pipe character, the docstring will get appended to the top op the function header.
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
|
|
||||||
{-| Render the Elm icon.
|
|
||||||
-}
|
|
||||||
elmIcon : E.Element msg
|
|
||||||
elmIcon =
|
|
||||||
|
|
||||||
```
|
|
||||||
@ -1,93 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Maybe AndThen"
|
|
||||||
code: "Elm"
|
|
||||||
---
|
|
||||||
|
|
||||||
Given are these functions, **hasPrecedingReleasedVersions** and **getSelectedItemIndex**, need to be optimized.
|
|
||||||
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
hasPrecedingReleasedVersions =
|
|
||||||
case getSelectedItemIndex data.versionData of
|
|
||||||
Just index ->
|
|
||||||
Array.slice 0 index data.versionData.allItems
|
|
||||||
|> Array.toList
|
|
||||||
|> List.any
|
|
||||||
(\item ->
|
|
||||||
case item of
|
|
||||||
ReleasedVersion _ ->
|
|
||||||
True
|
|
||||||
_ ->
|
|
||||||
False
|
|
||||||
)
|
|
||||||
Nothing ->
|
|
||||||
False
|
|
||||||
```
|
|
||||||
|
|
||||||
Currently, **getSelectedItemIndex** is defined as such:
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
getSelectedItemIndex : Model id -> Maybe Int
|
|
||||||
getSelectedItemIndex model =
|
|
||||||
case getSelectedItem model of
|
|
||||||
Just selected ->
|
|
||||||
Array.toIndexedList model.allItems
|
|
||||||
|> List.filter (\( _, item ) -> item == selected)
|
|
||||||
|> List.head
|
|
||||||
|> Maybe.map Tuple.first
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
Nothing
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
But using [Maybe.andThen](https://package.elm-lang.org/packages/elm/core/latest/Maybe#andThen) will allow to get rid of the **Nothing -> Nothing** here.
|
|
||||||
Also the **List.filter** and **List.head** combination can be shortened with a **List.find**.
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
getSelectedItemIndex : Model id -> Maybe Int
|
|
||||||
getSelectedItemIndex model =
|
|
||||||
getSelectedItem model
|
|
||||||
|> Maybe.andThen
|
|
||||||
(\selected ->
|
|
||||||
Array.toIndexedList model.allItems
|
|
||||||
|> List.find (\( _, item ) -> item == selected)
|
|
||||||
|> Maybe.map Tuple.first
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, define a custom funcion to determine the boolean:
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
itemIsReleased : VersionData id -> Bool
|
|
||||||
itemIsReleased versionData =
|
|
||||||
case versionData of
|
|
||||||
WorkingVersion _ ->
|
|
||||||
False
|
|
||||||
ReleasedVersion
|
|
||||||
True
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
The original function can now be changed to:
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
hasPrecedingReleasedVersions =
|
|
||||||
case getSelectedItemIndex data.versionData of
|
|
||||||
Just index ->
|
|
||||||
Array.slice 0 index data.versionData.allItems
|
|
||||||
|> Array.toList
|
|
||||||
|> List.any itemIsReleased
|
|
||||||
Nothing ->
|
|
||||||
False
|
|
||||||
```
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Maybe Map"
|
|
||||||
code: "Elm"
|
|
||||||
---
|
|
||||||
|
|
||||||
Here, a tooltip title attribute needs to be added if it is **Just**.
|
|
||||||
|
|
||||||
```elm
|
|
||||||
let
|
|
||||||
divAttributes =
|
|
||||||
[ HA.classList
|
|
||||||
[ ( "my-div", True ) ]
|
|
||||||
]
|
|
||||||
|
|
||||||
combinedAttributes =
|
|
||||||
case settings.tooltip of
|
|
||||||
Just tooltip ->
|
|
||||||
divAttributes ++ [ HA.title tooltip ]
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
divAttributes
|
|
||||||
in
|
|
||||||
H.div
|
|
||||||
combinedAttributes
|
|
||||||
[ content ]
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
This can be easier written with the [Maybe.map](https://package.elm-lang.org/packages/elm/core/latest/Maybe#map) and [Maybe.withDefault](https://package.elm-lang.org/packages/elm/core/latest/Maybe#withDefault) functions.
|
|
||||||
|
|
||||||
```elm
|
|
||||||
|
|
||||||
let
|
|
||||||
divAttributes =
|
|
||||||
[ HA.classList
|
|
||||||
[ ( "my-div", True ) ]
|
|
||||||
]
|
|
||||||
|
|
||||||
tooltipAttribute =
|
|
||||||
Maybe.map (\tooltip -> [ HA.title tooltip ]) settings.tooltip |> Maybe.withDefault []
|
|
||||||
-- or you can do:
|
|
||||||
settings.tooltip |> Maybe.map (\tooltip -> [ HA.title tooltip ]) |> Maybe.withDefault []
|
|
||||||
|
|
||||||
in
|
|
||||||
H.div
|
|
||||||
(divAttributes ++ tooltipAttribute)
|
|
||||||
[ content ]
|
|
||||||
```
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Caesar Cipher"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
The implementation of the [Caesar's Cipher](https://en.wikipedia.org/wiki/Caesar_cipher) in Haskell.
|
|
||||||
|
|
||||||
*Source*: [Programming in Haskell, by Graham Hutton](https://people.cs.nott.ac.uk/pszgmh/pih.html)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
import Data.Char
|
|
||||||
import Prelude
|
|
||||||
|
|
||||||
let2int :: Char -> Int
|
|
||||||
let2int c | isLower c = ord c - ord 'a'
|
|
||||||
| otherwise = ord c - ord 'A'
|
|
||||||
|
|
||||||
int2let :: Int -> Bool -> Char
|
|
||||||
int2let n isLowercase = chr (ord (if isLowercase then 'a' else 'A') + n)
|
|
||||||
|
|
||||||
shift :: Int -> Char -> Char
|
|
||||||
shift n c | isLower c = int2let ((let2int c + n) `mod` 26) (isLower c)
|
|
||||||
| isUpper c = int2let ((let2int c + n) `mod` 26) (isLower c)
|
|
||||||
| otherwise = c
|
|
||||||
|
|
||||||
encode :: Int -> String -> String
|
|
||||||
encode n xs = [shift n x | x <- xs]
|
|
||||||
|
|
||||||
|
|
||||||
ghci> encode 5 "This is a Caesar Cipher"
|
|
||||||
-- "Ymnx nx f Hfjxfw Hnumjw"
|
|
||||||
ghci> encode (-5) "Ymnx nx f Hfjxfw Hnumjw"
|
|
||||||
-- "This is a Caesar Cipher"
|
|
||||||
```
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Conditional expressions and Guarded equations"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
### Conditional expressions
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
signum :: Int -> Int
|
|
||||||
signum n = if n < 0 then -1 else
|
|
||||||
if n == 0 then 0 else 1
|
|
||||||
```
|
|
||||||
|
|
||||||
And a **safetail** function, where an empty list is returned instead of an error when given an empty list.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
safetail :: [a] -> [a]
|
|
||||||
safetail xs = if length xs > 0 then tail xs else []
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Guarded equations
|
|
||||||
|
|
||||||
An alternative to conditional expressions, functions can be defined with guarded equations.
|
|
||||||
|
|
||||||
An example of the **signum** function:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
signum :: Int -> Int
|
|
||||||
signum n | n < 0 = -1
|
|
||||||
| n == 0 = 0
|
|
||||||
| otherwise = 1
|
|
||||||
```
|
|
||||||
|
|
||||||
Here is **safetail** with guarded equations:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
safetail :: [a] -> [a]
|
|
||||||
safetail xs | length xs > 0 = tail xs
|
|
||||||
| otherwise = []
|
|
||||||
```
|
|
||||||
@ -1,71 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Curried functions"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
A function can return another function.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
add' :: Int -> (Int -> Int)
|
|
||||||
add' x y = x+y
|
|
||||||
```
|
|
||||||
|
|
||||||
Here, **add'** is a function that takes an **Int** for an argument and results in a function of type: **Int -> Int**.
|
|
||||||
The function definition takes an integer **x**, followed by an integer **y**, it can be [curried](https://en.wikipedia.org/wiki/Currying).
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
addThree = add' 3 -- This is now a function with type: Int -> Int
|
|
||||||
result = addThree 5 -- Evaluates to 8
|
|
||||||
```
|
|
||||||
|
|
||||||
Another example,
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
mult :: Int -> (Int -> (Int -> Int))
|
|
||||||
mult x y z = x*y*z
|
|
||||||
```
|
|
||||||
|
|
||||||
And is applied as following:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
mult x y z
|
|
||||||
-- Means same as:
|
|
||||||
((mult x) y) z
|
|
||||||
```
|
|
||||||
|
|
||||||
When used, it is like:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
multTwo = mult 2 -- This is now a function with type: Int -> (Int -> Int)
|
|
||||||
multTwoThree = multTwo 3 -- This is: Int -> Int
|
|
||||||
result = multTwoThree 4 -- Evaluates to 2 * 3 * 4 = 24
|
|
||||||
|
|
||||||
-- or just:
|
|
||||||
|
|
||||||
result = mult 2 3 4 -- Also evaluates to 24
|
|
||||||
```
|
|
||||||
|
|
||||||
**Partial application** is about using curried functions, applying only some arguments and getting back a new function.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
double = mult 2 -- This is now a function with type: Int -> (Int -> Int)
|
|
||||||
|
|
||||||
result = double 3 4 -- Evaluates to 2 * 3 * 4 = 24
|
|
||||||
|
|
||||||
quadruple = double 2 -- Now quadruple :: Int -> Int
|
|
||||||
result = quadruple 3 -- Evaluates to 2 * 2 * 3 = 12
|
|
||||||
```
|
|
||||||
|
|
||||||
The arrow function **->** in Haskell types is assumed to associate from the right.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
Int -> Int -> Int -> Int
|
|
||||||
|
|
||||||
-- is:
|
|
||||||
|
|
||||||
Int -> (Int -> (Int -> Int))
|
|
||||||
```
|
|
||||||
|
|
||||||
So, unless tuples are required, all functions in Haskell with multiple arguments are actually defined as curried functions, with a way to reduce excessive parenthesis.
|
|
||||||
@ -1,257 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Programming in Haskell by Graham Hutton"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
This book is what I used to learn the programming language Haskell. This page contains all my exercise answers.
|
|
||||||
|
|
||||||
*Source*: [Programming in Haskell, by Graham Hutton](https://people.cs.nott.ac.uk/pszgmh/pih.html)
|
|
||||||
|
|
||||||
* [Chapter 4 - Defining functions](#Chapter-4)
|
|
||||||
* [Chapter 5 - List comprehensions](#Chapter-5)
|
|
||||||
* [Chapter 6 - Recursive functions](#Chapter-6)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Chapter-4
|
|
||||||
##### Defining functions
|
|
||||||
|
|
||||||
###### exercise 1
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
halve :: [Int] -> ([Int], [Int])
|
|
||||||
halve xs =
|
|
||||||
(take n xs, drop n xs)
|
|
||||||
where n = length xs `div` 2
|
|
||||||
|
|
||||||
halve :: [Int] -> ([Int], [Int])
|
|
||||||
halve xs =
|
|
||||||
splitAt (length xs `div` 2) xs
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 2
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
-- a (head & tail)
|
|
||||||
third :: [a] -> a
|
|
||||||
third xs = head (tail (tail xs))
|
|
||||||
|
|
||||||
-- b (list indexing)
|
|
||||||
third :: [a] -> a
|
|
||||||
third xs = xs !! 2
|
|
||||||
|
|
||||||
-- c (pattern matching)
|
|
||||||
third :: [a] -> a
|
|
||||||
third (_:_:a:_) = a
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 3
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
-- a (conditional expression)
|
|
||||||
safetail :: [a] -> [a]
|
|
||||||
safetail xs = if length xs > 0 then tail xs else []
|
|
||||||
|
|
||||||
-- b (guarded equation)
|
|
||||||
safetail :: [a] -> [a]
|
|
||||||
safetail xs | length xs > 0 = tail xs
|
|
||||||
| otherwise = []
|
|
||||||
|
|
||||||
-- c (pattern matching)
|
|
||||||
safetail :: [a] -> [a]
|
|
||||||
safetail [] = []
|
|
||||||
safetail xs = tail xs
|
|
||||||
-- or:
|
|
||||||
-- safetail (_:xs) = xs
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 4
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
(||) :: Bool -> Bool -> Bool
|
|
||||||
True || _ = True
|
|
||||||
_ || True = True
|
|
||||||
_ = False
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 5
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
-- Use conditional expressions to define &&.
|
|
||||||
(<#>) :: Bool -> Bool -> Bool
|
|
||||||
a <#> b =
|
|
||||||
if a then
|
|
||||||
if b then True else False
|
|
||||||
else
|
|
||||||
False
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 6
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
(<#>) :: Bool -> Bool -> Bool
|
|
||||||
a <#> b =
|
|
||||||
if a then b else False
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 7
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
mult :: Int -> Int -> Int -> Int
|
|
||||||
mult x y z = x*y*z
|
|
||||||
|
|
||||||
-- rewritten to use lambda functions.
|
|
||||||
mult :: Int -> (Int -> (Int -> Int))
|
|
||||||
mult = \x -> (\y -> (\z -> x * y * z))
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 8
|
|
||||||
|
|
||||||
[Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
luhnDouble :: Int -> Int
|
|
||||||
luhnDouble x = x * 2 `mod` 9
|
|
||||||
|
|
||||||
luhn :: Int -> Int -> Int -> Int -> Bool
|
|
||||||
luhn a b c d =
|
|
||||||
sum ((map luhnDouble [a,c]) ++ [b,d]) `mod` 10 == 0
|
|
||||||
|
|
||||||
--ghci> luhn 1 7 8 4
|
|
||||||
--True
|
|
||||||
--ghci> luhn 4 7 8 3
|
|
||||||
--False
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Chapter-5
|
|
||||||
##### List comprehensions
|
|
||||||
|
|
||||||
* exercise 1
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
sum [x^2 | x <- [0..100]]
|
|
||||||
-- 338350
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 2
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
grid :: Int -> Int -> [(Int, Int)]
|
|
||||||
grid n m =
|
|
||||||
[(x,y) | x <- [0..n], y <- [0..m]]
|
|
||||||
|
|
||||||
ghci> grid 1 2
|
|
||||||
-- [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)]
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 3
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
square :: Int -> [(Int,Int)]
|
|
||||||
square n =
|
|
||||||
[(x,y) | (x,y) <- grid n n, x /= y]
|
|
||||||
|
|
||||||
ghci> square 2
|
|
||||||
-- [(0,1),(0,2),(1,0),(1,2),(2,0),(2,1)]
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 4
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
replicate :: Int -> a -> [a]
|
|
||||||
replicate n item =
|
|
||||||
[item | _ <- [1..n]]
|
|
||||||
|
|
||||||
ghci> replicate 4 "test"
|
|
||||||
-- ["test","test","test","test"]
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 5
|
|
||||||
|
|
||||||
[Pythagorean theorem](https://en.wikipedia.org/wiki/Pythagorean_theorem)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
isPythagorean :: Int -> Int -> Int -> Bool
|
|
||||||
isPythagorean x y z =
|
|
||||||
x^2 + y^2 == z^2
|
|
||||||
|
|
||||||
pyths :: Int -> [(Int,Int,Int)]
|
|
||||||
pyths n =
|
|
||||||
[(x,y,z) | x <- [1..n], y <- [1..n], z <- [1..n], isPythagorean x y z]
|
|
||||||
|
|
||||||
ghci> pyths 10
|
|
||||||
-- [(3,4,5),(4,3,5),(6,8,10),(8,6,10)]
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 6
|
|
||||||
|
|
||||||
[Perfect number](https://en.wikipedia.org/wiki/Perfect_number)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
factors :: Int -> [Int]
|
|
||||||
factors n = [x | x <- [1..n], n `mod` x == 0]
|
|
||||||
|
|
||||||
perfects :: Int -> [Int]
|
|
||||||
perfects limit =
|
|
||||||
[x | x <- [1..limit], sum (factors x) - x == x]
|
|
||||||
|
|
||||||
ghci> perfects 10000
|
|
||||||
-- [6,28,496,8128]
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 7
|
|
||||||
*(I did not understand this one)*
|
|
||||||
|
|
||||||
###### exercise 8
|
|
||||||
|
|
||||||
Use the **find** library function in [Data.List 9.8.2](https://downloads.haskell.org/ghc/9.8.2/docs/libraries/base-4.19.1.0-179c/Data-List.html#v:find)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
find :: (a -> Bool) -> [a] -> Maybe a
|
|
||||||
-- The find function takes a predicate and a list and returns the first element in the list matching the predicate, or Nothing if there is no such element.
|
|
||||||
```
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
positions :: Eq a => a -> [a] -> [Int]
|
|
||||||
positions x xs =
|
|
||||||
[i | (x',i) <- zip xs [0..], x == x']
|
|
||||||
|
|
||||||
-- using find function, though I doubt its correct...
|
|
||||||
|
|
||||||
positions :: Eq a => a -> [a] -> [Int]
|
|
||||||
positions x xs =
|
|
||||||
[i | (x',i) <- zip xs [0..], isJust (find (==x) [x'])]
|
|
||||||
|
|
||||||
positions 2 [1,1,0,2,46,6,8,9,2,3,4,2,4,9,2]
|
|
||||||
-- [3,8,11,14]
|
|
||||||
|
|
||||||
-- You can also use:
|
|
||||||
positions :: Eq a => a -> [a] -> [Int]
|
|
||||||
positions x = elemIndices x
|
|
||||||
```
|
|
||||||
|
|
||||||
###### exercise 9
|
|
||||||
|
|
||||||
[Scalar product](https://en.wikipedia.org/wiki/Dot_product)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
scalarproduct :: [Int] -> [Int] -> Int
|
|
||||||
scalarproduct xs ys =
|
|
||||||
sum [x*y | (x,y) <- zip xs ys]
|
|
||||||
|
|
||||||
ghci> scalarproduct [1,2,3] [4,5,6]
|
|
||||||
-- 32
|
|
||||||
```
|
|
||||||
|
|
||||||
###### execise 10
|
|
||||||
|
|
||||||
[Caesar's Cipher](./caesar-cipher)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### Chapter-6
|
|
||||||
##### Recursive functions
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Lambda expressions"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
You can define a function like:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
double :: Int -> Int
|
|
||||||
double x = x + x
|
|
||||||
```
|
|
||||||
|
|
||||||
Which can also be written as an anonymous function:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
\x -> x + x
|
|
||||||
```
|
|
||||||
|
|
||||||
Here, the **\\** symbol represents the Greek letter lambda: **λ**. This is derived from [lambda calculus](https://en.wikipedia.org/wiki/Lambda_calculus).
|
|
||||||
|
|
||||||
Lambda expressions can be used to more explicitly state that a function is returned.
|
|
||||||
|
|
||||||
Consider:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
const :: a -> b -> a
|
|
||||||
const x _ = x
|
|
||||||
```
|
|
||||||
|
|
||||||
This can be written using a lambda expression and added parenthesis in the type definition. This is more explicit in that a function is being returned.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
const :: a -> (b -> a)
|
|
||||||
const x = \_ -> x
|
|
||||||
```
|
|
||||||
|
|
||||||
And as an anonymous function. Consider the difference between these similar functions that return a list of odd numbers:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
odds :: Int -> [Int]
|
|
||||||
odds n = map f [0..n-1]
|
|
||||||
where f x = x*2 + 1
|
|
||||||
|
|
||||||
odds :: Int -> [Int]
|
|
||||||
odds n = map (\x -> x*2 + 1) [0..n-1]
|
|
||||||
|
|
||||||
-- > odds 15
|
|
||||||
-- > [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29]
|
|
||||||
```
|
|
||||||
|
|
||||||
@ -1,124 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Lists"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
Lists are constructed one element at a time starting from an empty **[]** list using the *cons* operator **:**. For example, **[1,2,3]** can be decomposed as:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
[1,2,3]
|
|
||||||
--
|
|
||||||
1 : [2,3]
|
|
||||||
--
|
|
||||||
1 : (2 : [3])
|
|
||||||
--
|
|
||||||
1 : (2 : (3 : []))
|
|
||||||
```
|
|
||||||
|
|
||||||
To verify if a list with 3 numbers starts with the integer **1**, you can use pattern matching.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
startsWithOne :: [Int] -> Bool
|
|
||||||
startsWithOne [1, _, _] = True
|
|
||||||
startsWithOne _ = False
|
|
||||||
```
|
|
||||||
|
|
||||||
### Access elements
|
|
||||||
|
|
||||||
To access an element in a list, the indexing operator **!!** can be used.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
-- Get the third element of a list.
|
|
||||||
third :: [a] -> a
|
|
||||||
third xs = xs !! 2
|
|
||||||
```
|
|
||||||
|
|
||||||
### list comprehension
|
|
||||||
|
|
||||||
* Wikipedia: [List comprehension](https://en.wikipedia.org/wiki/List_comprehension).
|
|
||||||
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
ghci> [x^2 | x <- [1..6]]
|
|
||||||
-- [1,4,9,16,25,36]
|
|
||||||
```
|
|
||||||
|
|
||||||
* The **|** symbol is read as: "*such that*".
|
|
||||||
* The **<-** symbol is read as: "*drawn from*".
|
|
||||||
* And **x <- [1..6]** is called a: "*generator*".
|
|
||||||
|
|
||||||
A list comprehension can have more than one generator.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
ghci> [(x,y) | x <- [1,2,3], y <- [4,5]]
|
|
||||||
-- [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)]
|
|
||||||
```
|
|
||||||
|
|
||||||
Examples of list comprehensions:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
halve :: [Int] -> ([Int], [Int])
|
|
||||||
halve xs =
|
|
||||||
([x | x <- xs, x < 4], [x | x <- xs, x >= 4])
|
|
||||||
|
|
||||||
-- halve [1,2,3,4,5,6]
|
|
||||||
-- ([1,2,3],[4,5,6])
|
|
||||||
```
|
|
||||||
|
|
||||||
How to actually halve the list properly:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
halve :: [Int] -> ([Int], [Int])
|
|
||||||
halve xs =
|
|
||||||
(take n xs, drop n xs)
|
|
||||||
where n = length xs `div` 2
|
|
||||||
-- or
|
|
||||||
splitAt (length xs `div` 2) xs
|
|
||||||
```
|
|
||||||
|
|
||||||
Here the **length** function replaces all elements with a 1 and sums the total:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
length :: [a] -> Int
|
|
||||||
length xs = sum [1 | _ <- xs]
|
|
||||||
length [1,4,8,90]
|
|
||||||
-- 4
|
|
||||||
```
|
|
||||||
|
|
||||||
You can use logical expressions as a **guard**, to filter values created by list comprehensions.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
factors :: Int -> [Int]
|
|
||||||
factors n = [x | x <- [1..n], n `mod` x == 0]
|
|
||||||
|
|
||||||
factors 20
|
|
||||||
-- [1,2,4,5,10,20]
|
|
||||||
factors 13
|
|
||||||
-- [1,13]
|
|
||||||
```
|
|
||||||
|
|
||||||
And you can use this **factors** function to determine **prime** numbers.
|
|
||||||
|
|
||||||
* Wikipedia: [Prime number](https://en.wikipedia.org/wiki/Prime_number)
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
prime :: Int -> Bool
|
|
||||||
prime n = factors n == [1,n]
|
|
||||||
|
|
||||||
prime 15
|
|
||||||
--False
|
|
||||||
prime 13
|
|
||||||
-- True
|
|
||||||
```
|
|
||||||
And with this **prime** function, we can use list comprehension to determine a range of prime numbers!
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
primes :: Int -> [Int]
|
|
||||||
primes n = [x | x <- [2..n], prime x]
|
|
||||||
|
|
||||||
primes 50
|
|
||||||
-- [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]
|
|
||||||
```
|
|
||||||
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Pattern matching"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
An example to determine the third element of a list, (with at least 3 elements):
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
third :: [a] -> a
|
|
||||||
third (_:_:x:_) = x
|
|
||||||
```
|
|
||||||
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Recursive functions"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
Recursion is the basic mechanism for looping in Haskell.
|
|
||||||
|
|
||||||
Determine the [factorial](https://en.wikipedia.org/wiki/Factorial).
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
factorial :: Int -> Int
|
|
||||||
factorial 0 = 1
|
|
||||||
factorial n = n * factorial (n-1)
|
|
||||||
```
|
|
||||||
|
|
||||||
The factorial of 3, actually is calculated as such:
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
factorial 3
|
|
||||||
3 * factorial 2
|
|
||||||
3 * (2 * factorial 1)
|
|
||||||
3 * (2 * (1 * factorial 0))
|
|
||||||
3 * (2 * (1 * 1))
|
|
||||||
```
|
|
||||||
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Software"
|
|
||||||
language: "en"
|
|
||||||
title: "Strings"
|
|
||||||
code: "Haskell"
|
|
||||||
---
|
|
||||||
|
|
||||||
Strings are not primitive types, but a list of characters.
|
|
||||||
|
|
||||||
For example,
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
"abc" :: String
|
|
||||||
-- is actually:
|
|
||||||
['a','b','c'] :: [Char]
|
|
||||||
```
|
|
||||||
Because of this, polymorphic functions on lists, can be used with strings.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
"abcde" !! 2
|
|
||||||
-- 'c'
|
|
||||||
take 3 "abcde"
|
|
||||||
-- "abc"
|
|
||||||
length "abcde"
|
|
||||||
-- 5
|
|
||||||
zip "abc" [1,2,3,4]
|
|
||||||
-- [('a',1),('b',2),('c',3)]
|
|
||||||
```
|
|
||||||
|
|
||||||
And you can use list comprehensions with Strings.
|
|
||||||
|
|
||||||
```haskell
|
|
||||||
count :: Char -> String -> Int
|
|
||||||
count x xs = length [x' | x' <- xs, x == x']
|
|
||||||
|
|
||||||
count 'a' "paragraph"
|
|
||||||
-- 3
|
|
||||||
```
|
|
||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Technical Specialist, Automation"
|
logosub: "Technical Specialist, Automation"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Attachment module"
|
title: "Attachment module"
|
||||||
year: "2017"
|
|
||||||
date: "2017-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Sometimes a project owner wants a feature implemented in their project that the developers somehow are unable to realize. The project was a website containing a form that customers would enter text data on. The project owner asked for a feature which allowed customers to attach files to this form.
|
Sometimes a project owner wants a feature implemented in their project that the developers somehow are unable to realize. The project was a website containing a form that customers would enter text data on. The project owner asked for a feature which allowed customers to attach files to this form.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 1"
|
logosub: "Avans TI student, year 1"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Board of Education Bot"
|
title: "Board of Education Bot"
|
||||||
year: "2012"
|
|
||||||
date: "2012-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
The Board of Education (Ro)Bot is a development platform made by Parallax.
|
The Board of Education (Ro)Bot is a development platform made by Parallax.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Technical Specialist, Automation"
|
logosub: "Technical Specialist, Automation"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Configuration Automation"
|
title: "Configuration Automation"
|
||||||
year: "2016"
|
|
||||||
date: "2016-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
At <a href="https://www.hitachivantara.com/" target="_blank" rel="noopener noreferrer">Hitachi Vantara</a> I worked on automating a configuration process using <a href="https://www.python.org/" target="_blank" rel="noopener noreferrer">Python</a> and several external API.
|
At <a href="https://www.hitachivantara.com/" target="_blank" rel="noopener noreferrer">Hitachi Vantara</a> I worked on automating a configuration process using <a href="https://www.python.org/" target="_blank" rel="noopener noreferrer">Python</a> and several external API.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Backend developer"
|
logosub: "Backend developer"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Digital Experience Platform"
|
title: "Digital Experience Platform"
|
||||||
year: "2023"
|
|
||||||
date: "2023-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
A "Digital Experience Platform" is basically interactive software where data can be maintained, not much different from a regular application. But it's a marketing term, because software also needs to be sold. One such DXP I loved working on was for <a href="https://www.opple.eu/" target="_blank" rel="noopener noreferrer">OPPLE</a>. They are a brand of lighting products and have over 14000 different items.
|
A "Digital Experience Platform" is basically interactive software where data can be maintained, not much different from a regular application. But it's a marketing term, because software also needs to be sold. One such DXP I loved working on was for <a href="https://www.opple.eu/" target="_blank" rel="noopener noreferrer">OPPLE</a>. They are a brand of lighting products and have over 14000 different items.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 3"
|
logosub: "Avans TI student, year 3"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Embedded Internet Radio"
|
title: "Embedded Internet Radio"
|
||||||
year: "2014"
|
|
||||||
date: "2014-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This project gave me the opportunity to work with the SIR120 internet radio made by the company StreamIT. The radio involved connecting to exiting internet streams and interfacing with the <a href="https://en.wikipedia.org/wiki/Liquid-crystal_display" target="_blank" rel="noopener noreferrer">LCD</a> and buttons on the device. The code was written in <a href="https://en.wikipedia.org/wiki/C_(programming_language)" target="_blank" rel="noopener noreferrer">C</a>.
|
This project gave me the opportunity to work with the SIR120 internet radio made by the company StreamIT. The radio involved connecting to exiting internet streams and interfacing with the <a href="https://en.wikipedia.org/wiki/Liquid-crystal_display" target="_blank" rel="noopener noreferrer">LCD</a> and buttons on the device. The code was written in <a href="https://en.wikipedia.org/wiki/C_(programming_language)" target="_blank" rel="noopener noreferrer">C</a>.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 2"
|
logosub: "Avans TI student, year 2"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Festival Simulator"
|
title: "Festival Simulator"
|
||||||
year: "2013"
|
|
||||||
date: "2013-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
A team project in which a festival can be simulated to view how crowds of people behave. It was named: "SimFest-Tycoon". The user can build festivals, roads, snackbars and assign time periods when a band plays at a stage. The project was programmed in Java. A school project made by four people. The software allows users to build their own festival grounds. Snackbarstands, toilets, roads and stages can be placed to view how people form crowds and bottlenecks in certain areas. The user can also assign a band that plays for a certain time at a stage using a scheduler.
|
A team project in which a festival can be simulated to view how crowds of people behave. It was named: "SimFest-Tycoon". The user can build festivals, roads, snackbars and assign time periods when a band plays at a stage. The project was programmed in Java. A school project made by four people. The software allows users to build their own festival grounds. Snackbarstands, toilets, roads and stages can be placed to view how people form crowds and bottlenecks in certain areas. The user can also assign a band that plays for a certain time at a stage using a scheduler.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 4"
|
logosub: "Avans TI student, year 4"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "iOS Airports"
|
title: "iOS Airports"
|
||||||
year: "2015"
|
|
||||||
date: "2015-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
A mobile iPhone application using a <a href="https://sqlite.org/" target="_blank" rel="noopener noreferrer">SQLite</a> database to display airports around the world. With this project I got to experience working with <a href="https://en.wikipedia.org/wiki/Xcode" target="_blank" rel="noopener noreferrer">Xcode</a> and <a href="https://en.wikipedia.org/wiki/Swift_(programming_language)" target="_blank" rel="noopener noreferrer">Swift</a> to develop iOS mobile applications.
|
A mobile iPhone application using a <a href="https://sqlite.org/" target="_blank" rel="noopener noreferrer">SQLite</a> database to display airports around the world. With this project I got to experience working with <a href="https://en.wikipedia.org/wiki/Xcode" target="_blank" rel="noopener noreferrer">Xcode</a> and <a href="https://en.wikipedia.org/wiki/Swift_(programming_language)" target="_blank" rel="noopener noreferrer">Swift</a> to develop iOS mobile applications.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Software developer"
|
logosub: "Software developer"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Kanji flashcard Android application"
|
title: "Kanji flashcard Android application"
|
||||||
year: "2018"
|
|
||||||
date: "2018-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
In my free time I like to learn Japanese. I am married with someone from Japan, so being able talk with her parents in their own language is nice! You also pick up much of the culture through learning the language.
|
In my free time I like to learn Japanese. I am married with someone from Japan, so being able talk with her parents in their own language is nice! You also pick up much of the culture through learning the language.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 2"
|
logosub: "Avans TI student, year 2"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Metroid Horizontal Shooter"
|
title: "Metroid Horizontal Shooter"
|
||||||
year: "2013"
|
|
||||||
date: "2013-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
A simple Java 2D game using Nintendo's <a href="https://en.wikipedia.org/wiki/Metroid" target="_blank" rel="noopener noreferrer">Metroid</a> franchise sprites. This was a school project. This little game I made to practice programming with 2D graphics. It slowly gained more and more features like extra weapons and different levels, because I really enjoyed working on this project.
|
A simple Java 2D game using Nintendo's <a href="https://en.wikipedia.org/wiki/Metroid" target="_blank" rel="noopener noreferrer">Metroid</a> franchise sprites. This was a school project. This little game I made to practice programming with 2D graphics. It slowly gained more and more features like extra weapons and different levels, because I really enjoyed working on this project.
|
||||||
|
|||||||
@ -2,16 +2,12 @@
|
|||||||
logosub: "Hardware tweaker"
|
logosub: "Hardware tweaker"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Raspberry Pi Jukebox"
|
title: "Raspberry Pi Jukebox"
|
||||||
year: "2016"
|
|
||||||
date: "2016-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
I used a <a href="https://www.raspberrypi.org/" target="_blank" rel="noopener noreferrer">Raspberry Pi</a> to stream internet radio. <a href="https://www.python.org/" target="_blank" rel="noopener noreferrer">Python</a> and <a href="https://flask.palletsprojects.com/" target="_blank" rel="noopener noreferrer">Flask</a> were used to create a simple website interface that resided on the Raspberry Pi using the Apache web engine. This simple site had buttons to control the LEDs, the station to stream and to adjust the volume.
|
I used a <a href="https://www.raspberrypi.org/" target="_blank" rel="noopener noreferrer">Raspberry Pi</a> to stream internet radio. <a href="https://www.python.org/" target="_blank" rel="noopener noreferrer">Python</a> and <a href="https://flask.palletsprojects.com/" target="_blank" rel="noopener noreferrer">Flask</a> were used to create a simple website interface that resided on the Raspberry Pi using the Apache web engine. This simple site had buttons to control the LEDs, the station to stream and to adjust the volume.
|
||||||
|
|
||||||
The LEDs were controlled using an <a href="https://www.arduino.cc/" target="_blank" rel="noopener noreferrer">Arduino</a> and a <a href="https://www.analog.com/media/en/technical-documentation/data-sheets/max7219-max7221.pdf" target="_blank" rel="noopener noreferrer">Maxim MAX7219 IC</a>.
|
The LEDs were controlled using an <a href="https://www.arduino.cc/" target="_blank" rel="noopener noreferrer">Arduino</a> and a <a href="https://www.analog.com/media/en/technical-documentation/data-sheets/max7219-max7221.pdf" target="_blank" rel="noopener noreferrer">Maxim MAX7219 IC</a>.
|
||||||
|
|
||||||
I posted a tutorial about this long ago on Instructables: <a href="https://www.instructables.com/Raspberry-Pi-Internet-Radio-With-Flask/" target="_blank" rel="noopener noreferrer">instructables.com/Raspberry-Pi-Internet-Radio-With-Flask</a>
|
|
||||||
|
|
||||||
<figure class="text-center">
|
<figure class="text-center">
|
||||||
<picture class="d-flex justify-content-center">
|
<picture class="d-flex justify-content-center">
|
||||||
<source
|
<source
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 3"
|
logosub: "Avans TI student, year 3"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "SWIV for Pi"
|
title: "SWIV for Pi"
|
||||||
year: "2014"
|
|
||||||
date: "2014-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
A simple vertical space shooter created for the <a href="https://www.raspberrypi.org/" target="_blank" rel="noopener noreferrer">Raspberry Pi</a>. The game is played with regular keyboard and a custom joystick setup. The game was programmed in Python using the <a href="https://www.pygame.org/" target="_blank" rel="noopener noreferrer">PyGame</a> library. This project was mainly to create small game and interface it with a custom hardware setup. The setup uses an analog joystick to control the player's helicopter. An <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter" target="_blank" rel="noopener noreferrer">ADC (Analog Digital Converter)</a> samples the analog data into digital data so that the Raspberry Pi (version 1, type B) could parse the data.
|
A simple vertical space shooter created for the <a href="https://www.raspberrypi.org/" target="_blank" rel="noopener noreferrer">Raspberry Pi</a>. The game is played with regular keyboard and a custom joystick setup. The game was programmed in Python using the <a href="https://www.pygame.org/" target="_blank" rel="noopener noreferrer">PyGame</a> library. This project was mainly to create small game and interface it with a custom hardware setup. The setup uses an analog joystick to control the player's helicopter. An <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter" target="_blank" rel="noopener noreferrer">ADC (Analog Digital Converter)</a> samples the analog data into digital data so that the Raspberry Pi (version 1, type B) could parse the data.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 1"
|
logosub: "Avans TI student, year 1"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "TeslaMaze"
|
title: "TeslaMaze"
|
||||||
year: "2012"
|
|
||||||
date: "2012-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Gaming, Woodcraft and Teamwork!
|
## Gaming, Woodcraft and Teamwork!
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI internship"
|
logosub: "Avans TI internship"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Wi-Fi extension board"
|
title: "Wi-Fi extension board"
|
||||||
year: "2014"
|
|
||||||
date: "2014-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This project was part of my internship at Dazzletek in Breda. They no longer exist and the name "Dazzletek" now seems to belong to an American company. They created intelligent lighting control solutions and were part of Vitelec. My assignment was to create a prototype that would allow a device to communicate over <a href="https://en.wikipedia.org/wiki/Wi-Fi" target="_blank" rel="noopener noreferrer">Wi-Fi</a>. I worked with a <a href="https://en.wikipedia.org/wiki/PIC_microcontrollers" target="_blank" rel="noopener noreferrer">PIC microcontroller</a>.
|
This project was part of my internship at Dazzletek in Breda. They no longer exist and the name "Dazzletek" now seems to belong to an American company. They created intelligent lighting control solutions and were part of Vitelec. My assignment was to create a prototype that would allow a device to communicate over <a href="https://en.wikipedia.org/wiki/Wi-Fi" target="_blank" rel="noopener noreferrer">Wi-Fi</a>. I worked with a <a href="https://en.wikipedia.org/wiki/PIC_microcontrollers" target="_blank" rel="noopener noreferrer">PIC microcontroller</a>.
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
logosub: "Avans TI student, year 4"
|
logosub: "Avans TI student, year 4"
|
||||||
language: "en"
|
language: "en"
|
||||||
title: "Windows 10 Cookbook"
|
title: "Windows 10 Cookbook"
|
||||||
year: "2015"
|
|
||||||
date: "2015-01-01"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This <a href="https://learn.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide" target="_blank" rel="noopener noreferrer">UWP</a> application was built with <a href="https://docs.microsoft.com/en-us/dotnet/csharp/" target="_blank" rel="noopener noreferrer">C#</a> and <a href="https://learn.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-6.0" target="_blank" rel="noopener noreferrer">XAML</a>.
|
This <a href="https://learn.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide" target="_blank" rel="noopener noreferrer">UWP</a> application was built with <a href="https://docs.microsoft.com/en-us/dotnet/csharp/" target="_blank" rel="noopener noreferrer">C#</a> and <a href="https://learn.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-6.0" target="_blank" rel="noopener noreferrer">XAML</a>.
|
||||||
|
|||||||
@ -14,7 +14,7 @@ manufacturer: "Hasegawa"
|
|||||||
purchase_date: "2025-05-20"
|
purchase_date: "2025-05-20"
|
||||||
purchase_store: "Museum shop Tsubasa"
|
purchase_store: "Museum shop Tsubasa"
|
||||||
purchase_venue: "Airpark JASDF Hamamatsu Air Base Museum"
|
purchase_venue: "Airpark JASDF Hamamatsu Air Base Museum"
|
||||||
purchase_location: "浜松市、日本"
|
purchase_location: "Hamamatsu, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
The Blue Impulse T-2.
|
The Blue Impulse T-2.
|
||||||
|
|||||||
@ -14,7 +14,7 @@ manufacturer: "Eduard"
|
|||||||
purchase_date: "2024-10-19"
|
purchase_date: "2024-10-19"
|
||||||
purchase_store: "Eduard"
|
purchase_store: "Eduard"
|
||||||
purchase_venue: "SMC (Scale Model Challenge) 2024"
|
purchase_venue: "SMC (Scale Model Challenge) 2024"
|
||||||
purchase_location: "ヴェトホーフェン、オランダ"
|
purchase_location: "Veldhoven, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The A6M2 Zero Type 21.
|
The A6M2 Zero Type 21.
|
||||||
|
|||||||
@ -13,7 +13,8 @@ release: "2009"
|
|||||||
manufacturer: "AZmodel"
|
manufacturer: "AZmodel"
|
||||||
purchase_date: "2025-12-21"
|
purchase_date: "2025-12-21"
|
||||||
purchase_store: "Aviation Megastore"
|
purchase_store: "Aviation Megastore"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
The Avia Ba-33.
|
The Avia Ba-33.
|
||||||
|
|||||||
@ -14,7 +14,7 @@ manufacturer: "Ōtaki"
|
|||||||
purchase_date: "2025-04-06"
|
purchase_date: "2025-04-06"
|
||||||
purchase_store: "Mischas Model Outlet"
|
purchase_store: "Mischas Model Outlet"
|
||||||
purchase_venue: "Bevrijdende Vleugels modelbouwdag"
|
purchase_venue: "Bevrijdende Vleugels modelbouwdag"
|
||||||
purchase_location: "ソン、オランダ"
|
purchase_location: "Son, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The Kawasaki Ki-100.
|
The Kawasaki Ki-100.
|
||||||
|
|||||||
@ -14,7 +14,7 @@ manufacturer: "Eduard"
|
|||||||
purchase_date: "2025-10-18"
|
purchase_date: "2025-10-18"
|
||||||
purchase_store: "SMC Tombola"
|
purchase_store: "SMC Tombola"
|
||||||
purchase_venue: "SMC (Scale Model Challenge) 2025"
|
purchase_venue: "SMC (Scale Model Challenge) 2025"
|
||||||
purchase_location: "ヴェトホーフェン、オランダ"
|
purchase_location: "Veldhoven, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The MiG 21F 13 interceptor.
|
The MiG 21F 13 interceptor.
|
||||||
|
|||||||
@ -13,8 +13,8 @@ release: "2024"
|
|||||||
manufacturer: "Italeri"
|
manufacturer: "Italeri"
|
||||||
purchase_date: "2025-03-28"
|
purchase_date: "2025-03-28"
|
||||||
purchase_store: "Bevrijdende Vleugels museumwinkeltje"
|
purchase_store: "Bevrijdende Vleugels museumwinkeltje"
|
||||||
purchase_venue: "Bevrijdende Vleugels 博物館"
|
purchase_venue: "Bevrijdende Vleugels Museum"
|
||||||
purchase_location: "ソン、オランダ"
|
purchase_location: "Son, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The Spitfire mark IX.
|
The Spitfire mark IX.
|
||||||
|
|||||||
@ -7,14 +7,15 @@ model_name: "Donald Curtis' Curtiss R3C-0 Fighter Seaplane"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "¥3850"
|
price: "¥3850"
|
||||||
series: "紅の豚"
|
series: "Ghibli, Porco Rosso"
|
||||||
scale: "1/48"
|
scale: "1/48"
|
||||||
number: "FG2"
|
number: "FG2"
|
||||||
release: "2006"
|
release: "2006"
|
||||||
manufacturer: "Finemolds"
|
manufacturer: "Finemolds"
|
||||||
purchase_date: "2025-05-17"
|
purchase_date: "2025-05-17"
|
||||||
purchase_store: "カナリヤ模型店"
|
purchase_store: "Kanariya"
|
||||||
purchase_location: "静岡市、日本"
|
purchase_venue: ""
|
||||||
|
purchase_location: "Shizuoka, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
A beautiful kit of Donald Curtis' Curtiss R3C-0 Fighter Seaplane.
|
A beautiful kit of Donald Curtis' Curtiss R3C-0 Fighter Seaplane.
|
||||||
@ -7,14 +7,15 @@ model_name: "Bulma's Variable No. 19 Motorcycle"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€64,99"
|
price: "€64,99"
|
||||||
series: "ドラゴンボール"
|
series: "Dragonball"
|
||||||
scale: "No scale"
|
scale: "No scale"
|
||||||
number: "5055335"
|
number: "5055335"
|
||||||
release: "2018"
|
release: "2018"
|
||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-11-01"
|
purchase_date: "2025-11-01"
|
||||||
purchase_store: "Geeks Heaven"
|
purchase_store: "Geeks Heaven"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: ""
|
||||||
---
|
---
|
||||||
|
|
||||||
This is Bulma's Variable No. 19 Motorcycle.
|
This is Bulma's Variable No. 19 Motorcycle.
|
||||||
|
|||||||
@ -7,14 +7,15 @@ model_name: "Vol 3. Lunch's One-wheel motorcycle"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€10,99"
|
price: "€10,99"
|
||||||
series: "ドラゴンボール"
|
series: "Dragonball"
|
||||||
scale: "No scale"
|
scale: "No scale"
|
||||||
number: "0216394"
|
number: "0216394"
|
||||||
release: "2017"
|
release: "2017"
|
||||||
manufacturer: "Bandai"
|
manufacturer: "Bandai"
|
||||||
purchase_date: "2025-10-26"
|
purchase_date: "2025-10-26"
|
||||||
purchase_store: "TF Robots"
|
purchase_store: "TF Robots"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Bladel, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
This is Lunch's One-wheel motorcycle.
|
This is Lunch's One-wheel motorcycle.
|
||||||
|
|||||||
@ -7,14 +7,15 @@ model_name: "Vol 4. Son Gokou's Jet Buggy"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€10,99"
|
price: "€10,99"
|
||||||
series: "ドラゴンボール"
|
series: "Dragonball"
|
||||||
scale: "No scale"
|
scale: "No scale"
|
||||||
number: "0216401"
|
number: "0216401"
|
||||||
release: "2017"
|
release: "2017"
|
||||||
manufacturer: "Bandai"
|
manufacturer: "Bandai"
|
||||||
purchase_date: "2025-10-26"
|
purchase_date: "2025-10-26"
|
||||||
purchase_store: "TF Robots"
|
purchase_store: "TF Robots"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Bladel, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
This is Son Gokou's Jet Buggy.
|
This is Son Gokou's Jet Buggy.
|
||||||
|
|||||||
@ -7,14 +7,15 @@ model_name: "Lunamaria Hawke"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€44,99"
|
price: "€44,99"
|
||||||
series: "機動戦士ガンダム SEED Destiny"
|
series: "Mobile Suit Gundam SEED Destiny"
|
||||||
scale: "1/12"
|
scale: "1/12"
|
||||||
number: "5066703"
|
number: "5066703"
|
||||||
release: "2024"
|
release: "2024"
|
||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-11-02"
|
purchase_date: "2025-11-02"
|
||||||
purchase_store: "Mecha Universe"
|
purchase_store: "Mecha Universe"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Barcelona, Spain"
|
||||||
---
|
---
|
||||||
|
|
||||||
A figure of Lunamaria Hawke.
|
A figure of Lunamaria Hawke.
|
||||||
@ -14,7 +14,8 @@ release: "2022"
|
|||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-09-06"
|
purchase_date: "2025-09-06"
|
||||||
purchase_store: "Meijer en Blessing"
|
purchase_store: "Meijer en Blessing"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Rotterdam, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
A figure of Miorine Rembran.
|
A figure of Miorine Rembran.
|
||||||
@ -14,7 +14,8 @@ release: "2022"
|
|||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-09-06"
|
purchase_date: "2025-09-06"
|
||||||
purchase_store: "Meijer en Blessing"
|
purchase_store: "Meijer en Blessing"
|
||||||
purchase_venue: "インターネット"
|
purchase_venue: "Internet"
|
||||||
|
purchase_location: "Rotterdam, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
A figure of Suletta Mercury.
|
A figure of Suletta Mercury.
|
||||||
@ -7,7 +7,7 @@ model_name: "GAT-X370 Raider Gundam"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "€0,00"
|
price: "€0,00"
|
||||||
series: "機動戦士ガンダム SEED"
|
series: "Mobile Suit Gundam SEED"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5063349"
|
number: "5063349"
|
||||||
release: "2022"
|
release: "2022"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "AGX-04 Gerbera Tetra"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: 未開封"
|
status: 未開封"
|
||||||
price: "€29,92"
|
price: "€29,92"
|
||||||
series: "機動戦士ガンダム0083スターダストメモリー"
|
series: "Mobile Suit Gundam 0083: Stardust Memory"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5055886"
|
number: "5055886"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "AMS-129M Zee Zulu"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "¥?"
|
price: "¥?"
|
||||||
series: "機動戦士ガンダムユニコーン"
|
series: "Mobile Suit Gundam Unicorn"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "0171631"
|
number: "0171631"
|
||||||
release: "2011"
|
release: "2011"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "AMX-104 R-Jarja"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€22,99"
|
price: "€22,99"
|
||||||
series: "機動戦士ガンダムΖΖ"
|
series: "Mobile Suit Gundam ZZ"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5055716"
|
number: "5055716"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "ZGMF-1027M Duel Blitz Gundam"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€32,99"
|
price: "€32,99"
|
||||||
series: "機動戦士ガンダム SEED Freedom"
|
series: "Mobile Suit Gundam SEED Freedom"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5066700"
|
number: "5066700"
|
||||||
release: "2024"
|
release: "2024"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "MS-06 Zaku II"
|
|||||||
date: "2025-05-02"
|
date: "2025-05-02"
|
||||||
status: "完成"
|
status: "完成"
|
||||||
price: "€21,99"
|
price: "€21,99"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5061545"
|
number: "5061545"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
@ -17,12 +17,6 @@ purchase_store: "Gameforce"
|
|||||||
purchase_location: "アイントホーフェン、オランダ"
|
purchase_location: "アイントホーフェン、オランダ"
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="alert alert-warning" role="alert">
|
|
||||||
<div>
|
|
||||||
<span>申し訳ありませんが、このページはまだ日本語に翻訳されていません。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
My first completed model, a Bandai Zaku II.
|
My first completed model, a Bandai Zaku II.
|
||||||
|
|
||||||
Named after the army green colour, used for Second World War [Kawasaki airplanes](https://en.wikipedia.org/wiki/Kawasaki_Aerospace_Company).
|
Named after the army green colour, used for Second World War [Kawasaki airplanes](https://en.wikipedia.org/wiki/Kawasaki_Aerospace_Company).
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "MSM-04G Juaggu"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€21,50"
|
price: "€21,50"
|
||||||
series: "機動戦士ガンダムユニコーン"
|
series: "Mobile Suit Gundam Unicorn"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5060399"
|
number: "5060399"
|
||||||
release: "2020"
|
release: "2020"
|
||||||
@ -15,7 +15,7 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2025-10-18"
|
purchase_date: "2025-10-18"
|
||||||
purchase_store: "Domino"
|
purchase_store: "Domino"
|
||||||
purchase_venue: "SMC (Scale Model Challenge) 2025"
|
purchase_venue: "SMC (Scale Model Challenge) 2025"
|
||||||
purchase_location: "ヴェトホーフェン、オランダ"
|
purchase_location: "Veldhoven, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The big nose MSM-04G Juaggu.
|
The big nose MSM-04G Juaggu.
|
||||||
@ -7,7 +7,7 @@ model_name: "Nobell Gundam"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€22,99"
|
price: "€22,99"
|
||||||
series: "機動武闘伝Gガンダム"
|
series: "Mobile Fighter G Gundam"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5055720"
|
number: "5055720"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "NOG-M1A1 Black Knight Squad Shi-ve.A"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€29,99"
|
price: "€29,99"
|
||||||
series: "機動戦士ガンダム SEED Freedom"
|
series: "機動戦士ガンダム シード フリーダム"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5066295"
|
number: "5066295"
|
||||||
release: "2024"
|
release: "2024"
|
||||||
|
|||||||
@ -7,14 +7,15 @@ model_name: "RMS-106 Hi-Zack"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€12,99"
|
price: "€12,99"
|
||||||
series: "機動戦士Ζガンダム"
|
series: "Mobile Suit Zeta Gundam"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5057950"
|
number: "5057950"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-03-10"
|
purchase_date: "2025-03-10"
|
||||||
purchase_store: "Player2 Gamestore"
|
purchase_store: "Player2 Gamestore"
|
||||||
purchase_location: "ウデん、オランダ"
|
purchase_venue: "Winkel"
|
||||||
|
purchase_location: "Uden, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
The RMS-106 Hi-Zack.
|
The RMS-106 Hi-Zack.
|
||||||
@ -7,7 +7,7 @@ model_name: "RX-178 Mk.II"
|
|||||||
date: "2025-10-18"
|
date: "2025-10-18"
|
||||||
status: "完成"
|
status: "完成"
|
||||||
price: "€10,00"
|
price: "€10,00"
|
||||||
series: "機動戦士Ζガンダム"
|
series: "Mobile Suit Zeta Gundam"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5057985"
|
number: "5057985"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
@ -15,15 +15,9 @@ manufacturer: "Bandai Spirits"
|
|||||||
purchase_date: "2024-10-19"
|
purchase_date: "2024-10-19"
|
||||||
purchase_store: "Side7"
|
purchase_store: "Side7"
|
||||||
purchase_venue: "SMC (Scale Model Challenge) 2024"
|
purchase_venue: "SMC (Scale Model Challenge) 2024"
|
||||||
purchase_location: "ヴェトホーフェン、オランダ"
|
purchase_location: "Veldhoven, Netherlands"
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="alert alert-warning" role="alert">
|
|
||||||
<div>
|
|
||||||
<span>申し訳ありませんが、このページはまだ日本語に翻訳されていません。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## About the model
|
## About the model
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@ -7,14 +7,14 @@ model_name: "MSZ-006-3A Zeta Gundam 3A Type"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "¥?"
|
price: "¥?"
|
||||||
series: "機動戦士Ζガンダム"
|
series: "Mobile Suit Zeta Gundam"
|
||||||
scale: "1/144"
|
scale: "1/144"
|
||||||
number: "5060628"
|
number: "5060628"
|
||||||
release: "2020"
|
release: "2020"
|
||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-05-12"
|
purchase_date: "2025-05-12"
|
||||||
purchase_store: "ガンダムベース東京"
|
purchase_store: "The Gundam Base"
|
||||||
purchase_location: "お台場、東京、日本"
|
purchase_location: "Tokyo, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
The MSZ-006-3A Zeta Gundam 3A Type limited from the Gundam Base.
|
The MSZ-006-3A Zeta Gundam 3A Type limited from the Gundam Base.
|
||||||
@ -7,7 +7,7 @@ model_name: "AMS-119 Geara Doga"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "€54,99"
|
price: "€54,99"
|
||||||
series: "機動戦士ガンダム 逆襲のシャア"
|
series: "Mobile Suit Gundam: Char's Counterattack"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5055456"
|
number: "5055456"
|
||||||
release: "2020"
|
release: "2020"
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
logosub: "Plamo"
|
|
||||||
language: "jp"
|
|
||||||
title: "GM Commando"
|
|
||||||
page: "model-kits/gundam/mg/gm-commando"
|
|
||||||
model_name: "RGM-79G GM Command \"Colony Type\""
|
|
||||||
date: "1990-01-01"
|
|
||||||
status: "未開封"
|
|
||||||
price: "€46,99"
|
|
||||||
series: "機動戦士ガンダム0080 ポケットの中の戦争"
|
|
||||||
scale: "1/100"
|
|
||||||
number: ""
|
|
||||||
release: ""
|
|
||||||
manufacturer: ""
|
|
||||||
purchase_date: "2026-01-02"
|
|
||||||
purchase_store: "Player2 Gamestore"
|
|
||||||
purchase_venue: "インターネット"
|
|
||||||
---
|
|
||||||
|
|
||||||
ジム コマンド。
|
|
||||||
@ -7,7 +7,7 @@ model_name: "ZGMF-X56S Force Impulse Gundam"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€54,99"
|
price: "€54,99"
|
||||||
series: "機動戦士ガンダム SEED Destiny"
|
series: "Mobile Suit Gundam SEED Destiny"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5063040"
|
number: "5063040"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "ZGMF-1000/A1 Gunner Zaku Warrior - Lunamaria Hawke Custom"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€49,99"
|
price: "€49,99"
|
||||||
series: "機動戦士ガンダム SEED Destiny"
|
series: "Mobile Suit Gundam SEED Destiny"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5058184"
|
number: "5058184"
|
||||||
release: "2019"
|
release: "2019"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "MS-06S Zaku II"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "製作中"
|
status: "製作中"
|
||||||
price: "€44,95"
|
price: "€44,95"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5061581"
|
number: "5061581"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "MS-07B Gouf"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "€44,99"
|
price: "€44,99"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5061585"
|
number: "5061585"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "MSM-04 Acguy"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€63,99"
|
price: "€63,99"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5063147"
|
number: "5063147"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "OZ-00MS Tallgeese"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€44,99"
|
price: "€44,99"
|
||||||
series: "新機動戦記ガンダムウイング"
|
series: "Mobile Suit Gundam Wing"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5062845"
|
number: "5062845"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "RGM-96X JESTA"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€49,99"
|
price: "€49,99"
|
||||||
series: "機動戦士ガンダムユニコーン"
|
series: "Mobile Suit Gundam Unicorn"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5063148"
|
number: "5063148"
|
||||||
release: "2021"
|
release: "2021"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ model_name: "RGZ-95 ReZEL"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "€64,99"
|
price: "€64,99"
|
||||||
series: "機動戦士ガンダムユニコーン"
|
series: "Mobile Suit Gundam Unicorn"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5063511"
|
number: "5063511"
|
||||||
release: "2022"
|
release: "2022"
|
||||||
|
|||||||
@ -7,14 +7,14 @@ model_name: "RX-78-2"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "未開封"
|
status: "未開封"
|
||||||
price: "¥?"
|
price: "¥?"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "5058910"
|
number: "5058910"
|
||||||
release: "2020"
|
release: "2020"
|
||||||
manufacturer: "Bandai Spirits"
|
manufacturer: "Bandai Spirits"
|
||||||
purchase_date: "2025-05-12"
|
purchase_date: "2025-05-12"
|
||||||
purchase_store: "ガンダムベース東京"
|
purchase_store: "The Gundam Base"
|
||||||
purchase_location: "お台場、東京、日本"
|
purchase_location: "Tokyo, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
The RX-78-2 in gundam Base colours.
|
The RX-78-2 in gundam Base colours.
|
||||||
@ -7,14 +7,14 @@ model_name: "RX-78-2"
|
|||||||
date: "1990-01-01"
|
date: "1990-01-01"
|
||||||
status: "組立完了"
|
status: "組立完了"
|
||||||
price: "¥2767"
|
price: "¥2767"
|
||||||
series: "機動戦士ガンダム"
|
series: "Mobile Suit Gundam"
|
||||||
scale: "1/100"
|
scale: "1/100"
|
||||||
number: "0114215"
|
number: "0114215"
|
||||||
release: "2002"
|
release: "2002"
|
||||||
manufacturer: "Bandai"
|
manufacturer: "Bandai"
|
||||||
purchase_date: "2018-10-28"
|
purchase_date: "2018-10-28"
|
||||||
purchase_store: "Joshin Store"
|
purchase_store: "Joshin Store"
|
||||||
purchase_location: "栄、名古屋、日本"
|
purchase_location: "Sakae, Nagoya, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
The RX-78-2 version Katoki.
|
The RX-78-2 version Katoki.
|
||||||
@ -14,7 +14,7 @@ release: "2021"
|
|||||||
manufacturer: "Wave Corporation"
|
manufacturer: "Wave Corporation"
|
||||||
purchase_date: "2025-05-24"
|
purchase_date: "2025-05-24"
|
||||||
purchase_store: "Mandarake"
|
purchase_store: "Mandarake"
|
||||||
purchase_location: "栄、名古屋、日本"
|
purchase_location: "Sakae, Nagoya, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
A figure of the Raccoon S.A.F.S. type R Maschinen Krieger.
|
A figure of the Raccoon S.A.F.S. type R Maschinen Krieger.
|
||||||
@ -13,9 +13,9 @@ number: "MIM-015-DY"
|
|||||||
release: "2022"
|
release: "2022"
|
||||||
manufacturer: "Cavico"
|
manufacturer: "Cavico"
|
||||||
purchase_date: "2025-05-13"
|
purchase_date: "2025-05-13"
|
||||||
purchase_store: "スモールワールズ 博物館の店"
|
purchase_store: Small Worlds Museum store
|
||||||
purchase_venue: "ミニチュアミュージアム スモールワールズ"
|
purchase_venue: "Small Worlds Miniature Museum"
|
||||||
purchase_location: "有明、江東区、東京、日本"
|
purchase_location: "Ariake district, Kōtō ward, Tokyo, Japan"
|
||||||
---
|
---
|
||||||
|
|
||||||
The Riesen-Panzer III.
|
The Riesen-Panzer III.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user