Add FLL to portfolio

master
Maik de Kruif 2 months ago
parent 537dcd6536
commit d92074b59b
No known key found for this signature in database
GPG Key ID: DB1A8C782DD43CB3
  1. BIN
      assets/img/portfolio/first-lego-league/cover.jpg
  2. BIN
      assets/img/portfolio/first-lego-league/nationals-invitation.jpg
  3. BIN
      assets/img/portfolio/first-lego-league/robot.jpg
  4. 1
      config/_default/hugo.toml
  5. 78
      content/portfolio/first-lego-league.md
  6. 1
      content/portfolio/learn-to-program.md
  7. 11
      themes/maik-blog/assets/scss/_portfolio.scss
  8. 15
      themes/maik-blog/assets/scss/_portfolios.scss
  9. 3
      themes/maik-blog/i18n/en.toml
  10. 8
      themes/maik-blog/layouts/_default/single.html
  11. 20
      themes/maik-blog/layouts/portfolio/list.html
  12. 41
      themes/maik-blog/layouts/portfolio/single.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 KiB

@ -43,6 +43,7 @@ enableEmoji = true
dateformShort = "Jan 2"
dateformNum = "2006-01-02"
dateformNumTime = "2006-01-02 15:04 -0700"
dateformMonth = "Jan, 2006"
# Metadata mostly used in document's head
description = "Hey there, my name is Maik de Kruif, I create websites, bots and other kinds of software. At the moment, I'm still studying computer science at Avans University of Applied Sciences. I am also a big fan of open-source software, which is why you'll find many of my projects on Github. And last but not least, I love playing around with cyber-security related stuff."

@ -0,0 +1,78 @@
+++
author = "Maik de Kruif"
title = "FIRST LEGO League"
start_date = 2014-04-01
end_date = 2017-02-01
company_name = "Brainbuddies"
company_url = "https://www.brainbuddies.nl/"
cover = "img/portfolio/first-lego-league/cover.jpg"
description = "Together with the other members of Brainbuddies, I participated twice in the FIRST LEGO League competition. We reached the Benelux finals and received prizes for both our Robot and Core Values presentations."
skills = [
"Teamwork",
"Programming",
"Robot design",
"Presentation skills",
]
+++
Together with the other members of Brainbuddies, I participated twice in the FIRST LEGO League competition. We reached the Benelux finals and received prizes for both our Robot and Core Values presentations.
FIRST LEGO League (FLL) is an international competition for elementary and middle school students. Each year in August FIRST LEGO League introduces a scientific and real-world challenge for teams to focus and research on. The robotics part of the competition involves designing and programming LEGO Mindstorms robots to complete tasks. The students also work out a solution to a problem related to the theme (changes every year) and then meet for regional, national and international tournaments to compete, share their knowledge, compare ideas, and display their robots.
## The beginning
The story starts in 2014. Being 12 years old at the time, the amount of things you need to manage as a team can be overwhelming.
The FLL challenge consists of three parts; research a real-world problem, design a solution, and create a LEGO robot to complete missions related to the theme. At the finals, the teams also present their research project and robot design to judges, demonstrating their creativity, problem-solving skills, and teamwork.
Our team consisted of six people, one of which being [Raymon](https://raymon.dev/). Since we each had different strenths, we each were in charge of own subject. My primary focus was on developing the robot.
## Robot design and programming
When I started, I had hardly any knowledge of LEGO Mindstorms, let alone how to program one. I had played around a bit with [Scratch](https://en.wikipedia.org/wiki/Scratch_(programming_language)) at the time, which is what got me interested in programming, but never developed something tangible.
As a team we went to work on an old track from a previous edition first. This way, we could increase our knowledge of LEGO Mindstorms, and how its programming works. In the beginning it was quite a challenge. As it turns out, physics is a real thing, and telling the robot to go straight doesn't mean it actually will:smiling_face_with_tear:. In the end we were able to solve most of the challenges from this previous edition.
Since we were young and had plenty of other things to distract us, we took our time, and worked on the robot on and off for a few years. As we were perfecting the previous track, the new theme was announced: Hydrodynamics. The track that came with it was on a completely different level. It took us quite some time to adapt.
{{< figure class="small" src="/img/portfolio/first-lego-league/robot.jpg" title="Our robot around 2016" >}}
## Regionals
It's now November 24th 2017, regional finals time!
There were many teams present. Each and every one of them prepared themselves and now the competition can truly begin. All the teams were putting the finishing touches on their robot, and it was fun to see the creative solutions the other teams came up with.
### The Robot Competition
In the first round we got 80 points, which gave us first place for the first round. After that we remained high, but the Facimus team overtook us in the second round. In the third round we were unfortunately again overtaken, this time by the Robodirck team. We eventually came third in the robot section.
### The Project Presentation
When we walked into the jury room, and put the project on the table, you could already see that the jury was impressed. The presentation itself went well, and they thought it was a nice project.
### The Core Values presentation
The core values presentation went fantastically, we were able to tell a lot about our team, how we worked and how we experienced it. The jury gave us full points, they really liked our team and presentation.
### The Robot presentation
Finally we showed our robot. We explained how we came up with the robot, how we first we had an internal competition within the team to experiment, and later had brought back the best aspects of all robots in one new robot. This presentation was also well received.
### The award ceremony
Finally the most exciting moment came, the award ceremony. We were not called forward for the 'smaller' prizes for the separate components, which we thought was a bit strange having received very good feedback from the juries. But in the end we turned out to have won the main prize!!! This meant that we could go straight to the Benelux finals. A moment never to forget.
{{< figure class="small" src="/img/portfolio/first-lego-league/nationals-invitation.jpg" title="Invitation to the Benelux finals" >}}
_Note: Benelux is an intergovernmental union of Belgium, the Netherlands, and Luxembourg._
## The Benelux finals
The moment we won the regional finals, we could breathe again. The pressure from the regionals came of, but was partly replaced by the upcoming finals. Luckily there was quite a bit of time between the events, and we needed it. We decided to mainly work on improving our robot. We gained a lot of experience from the regional finals, and our most important lesson was that changing the robot for the different challenges took far too long. The runs on the table are time limited, and we were losing half our time changing the extensions. Extensions were the LEGO constructions that we were adding to the robot to perform certain tasks. We had to think of a different design and create it quickly.
Unfortunately, we couldn't win this one:cry:. The competition was simply too fierce.
## Looking back
Looking back at this all, I learned a lot. Working with a team on a complex project at that age, was an experience that helped me throughout my early career. To all kids between age 9 and 15 I would say to try and participate in an event like this if they have the chance. I certainly would do it again.

@ -9,6 +9,7 @@ cover = "img/portfolio/learn-to-program/screenshot.png"
description = "This website was created for a school assignment. It was created with HTML and CSS only and no frameworks were used."
skills = [
"Pure HTML and CSS",
"Web design",
]
+++

@ -13,12 +13,6 @@
max-width: 600px;
}
&-start-date {
&:after {
content: "";
}
}
&-title {
font-size: 2.625rem;
margin: 0 0 20px;
@ -32,6 +26,11 @@
}
}
&-timespan {
margin-top: -20px;
font-size: 0.9em;
}
&-tags {
display: block;
margin-bottom: 20px;

@ -72,19 +72,16 @@
}
&-company {
font-size: 1rem;
font-size: .9rem;
margin: 5px 0 5px 0;
}
&-year {
padding-top: 6px;
margin-right: 1.8em;
font-size: 1.6em;
@include dimmed;
&-meta {
font-size: .8em;
}
@media #{$media-size-tablet} {
margin: -6px 0 4px;
}
&-content {
margin-top: 12px;
}
&-item {

@ -37,4 +37,5 @@ other = "{{ .Count }} Words"
[post]
pageViews = "Views"
unknownViews = "Unknown"
unknownViews = "Unknown"
present = "Present"

@ -28,6 +28,10 @@
<p class="post-subtitle">{{ . | markdownify }}</p>
{{- end }}
{{- if .Params.Cover }}
{{- partial "image.html" (dict "path" .Params.Cover "alt" (.Title | plainify) "class" "post-cover") }}
{{- end }}
{{- if .Params.toc }}
<hr />
<aside id="toc">
@ -37,10 +41,6 @@
<hr />
{{- end }}
{{- if .Params.Cover }}
{{- partial "image.html" (dict "path" .Params.Cover "alt" (.Title | plainify) "class" "post-cover") }}
{{- end }}
<div class="post-content">
{{ .Content }}
</div>

@ -18,21 +18,15 @@
<div class="portfolio-meta">
{{- if .Params.start_date }}
<span class="portfolio-start-date">
{{- if eq (printf "%T" .Params.start_date) "time.Time"}}
{{ .Params.start_date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
{{- else }}
{{ .Params.start_date }}
{{- end }}
{{- $dateFormat := default "Jan, 2006" .Site.Params.dateformMonth }}
{{ dateFormat $dateFormat .Params.start_date }}
</span>
<span class="portfolio-end-date">
{{- if eq (printf "%T" .Params.end_date) "time.Time"}}
{{- if lt .Params.end_date now }}
{{ .Params.end_date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
{{- else }}
Present
{{- end }}
{{- if and .Params.end_date (lt .Params.end_date now) }}
{{ dateFormat $dateFormat .Params.end_date }}
{{- else }}
{{ .Params.end_date }}
{{ i18n "post.present" }}
{{- end }}
</span>
{{- end }}
@ -60,7 +54,7 @@
{{- end }}
</div>
{{- with .Params.skills }}
<h3 class="portfolio-skills-title">Skills used:</h3>
<h3 class="portfolio-skills-title">Skills developed:</h3>
<ul class="portfolio-skills">
{{- range . }}
<li class="portfolio-skill">{{ . }}</li>

@ -25,26 +25,41 @@
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</h1>
<p class="portfolio-timespan">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-calendar">
<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect>
<line x1="16" y1="2" x2="16" y2="6"></line>
<line x1="8" y1="2" x2="8" y2="6"></line>
<line x1="3" y1="10" x2="21" y2="10"></line>
</svg>
{{- if .Params.start_date }}
{{- $dateFormat := default "Jan, 2006" .Site.Params.dateformMonth }}
{{ dateFormat $dateFormat .Params.start_date }} — {{ if and .Params.end_date (lt .Params.end_date now) }}{{ dateFormat $dateFormat .Params.end_date }}{{ else }}{{ i18n "post.present" }}{{ end }}
{{- end }}
</p>
{{- if .Params.Cover }}
{{- partial "image.html" (dict "path" .Params.Cover "alt" (.Title | plainify) "class" "portfolio-cover") }}
{{- end }}
{{- if .Params.toc }}
<hr />
<aside id="toc">
<div class="toc-title">{{ i18n "tableOfContents" }}</div>
<h2>{{ i18n "tableOfContents" }}</h2>
{{ .TableOfContents }}
</aside>
<hr />
{{- end }}
{{- if .Params.Cover }}
{{- partial "image.html" (dict "path" .Params.Cover "alt" (.Title | plainify) "class" "portfolio-cover") }}
{{- end }}
<div class="portfolio-content">
{{ .Content }}
</div>
<div>
{{- with .Params.skills }}
<h2 class="portfolio-skills-title">Skills used:</h2>
<h2 class="portfolio-skills-title">Skills developed:</h2>
<ul class="portfolio-skills">
{{- range . }}
<li class="portfolio-skill">{{ . }}</li>
@ -85,6 +100,20 @@
{{ i18n "wordCount" .Page.WordCount }}
</p>
{{- if and (default true .Params.showPageViews) (default true .Site.Params.showPageViews) }}
{{- if .Site.Params.goatCounter }}
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-activity">
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
<circle cx="12" cy="12" r="3"></circle>
</svg>
{{- partial "page_views.html" . -}}
</p>
{{- end }}
{{- end }}
{{- if .GitInfo }}
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"

Loading…
Cancel
Save