1

FRC programming

This commit is contained in:
Evan Pratten 2019-06-21 16:12:23 -04:00
parent b704090e58
commit 69865e43a7
16 changed files with 696 additions and 179 deletions

View File

@ -37,13 +37,13 @@
</div>
<!-- Scripts -->
<script src="{{ " assets/js/jquery.min.js " | absolute_url }}"></script>
<script src="{{ " assets/js/jquery.scrolly.min.js " | absolute_url }}"></script>
<script src="{{ " assets/js/jquery.scrollex.min.js " | absolute_url }}"></script>
<script src="{{ " assets/js/skel.min.js " | absolute_url }}"></script>
<script src="{{ " assets/js/util.js " | absolute_url }}"></script>
<script src="{{ "assets/js/jquery.min.js " | absolute_url }}"></script>
<script src="{{ "assets/js/jquery.scrolly.min.js " | absolute_url }}"></script>
<script src="{{ "assets/js/jquery.scrollex.min.js " | absolute_url }}"></script>
<script src="{{ "assets/js/skel.min.js " | absolute_url }}"></script>
<script src="{{ "assets/js/util.js " | absolute_url }}"></script>
<!--[if lte IE 8]><script src="{{ "assets/js/ie/respond.min.js" | absolute_url }}"></script><![endif]-->
<script src="{{ " assets/js/main.js " | absolute_url }}"></script>
<script src="{{ "assets/js/main.js " | absolute_url }}"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytic_track }}"></script>

View File

@ -1,9 +1,9 @@
<head>
<title>{{ site.title }}</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="{{ "assets/js/ie/html5shiv.js" | relative_url }}"></script><![endif]-->
<link rel="stylesheet" href="{{ "assets/css/main.css" | relative_url }}" />
<!--[if lte IE 9]><link rel="stylesheet" href="{{ "assets/css/ie9.css" | relative_url }}" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="{{ "assets/css/ie8.css" | relative_url }}" /><![endif]-->
</head>
<title>{{ site.title }}</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="{{ "assets/js/ie/html5shiv.js" | relative_url }}"></script><![endif]-->
<link rel="stylesheet" href="{{ "assets/css/main.css " | relative_url }}" />
<!--[if lte IE 9]><link rel="stylesheet" href="{{ "assets/css/ie9.css" | relative_url }}" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="{{ "assets/css/ie8.css" | relative_url }}" /><![endif]-->
</head>

View File

@ -0,0 +1,51 @@
---
layout: post
title: "What I have learned from 2 years of FRC programming"
description: "Robots are pretty cool"
date: 2019-06-21 15:14:00
categories: frc
---
Over the past two years (2018 / 2019), I have been a member of my school's [FRC](https://www.firstinspires.org/robotics/frc) team, [Raider Robotics](frc5024.github.io). Specifically, a programmer.
## My roles
In my first year, I joined the team as a programmer and had a fun time learning about embedded programming and development with hardware. Then, in my second year, I was promoted to programming co-lead along with [@slownie](https://github.com/slownie). I much preferred my second season because I had a better understanding of the technology I was working with, and we got to play with some cool tools throughout the season.
## What I have learned
Starting with our 2018 season, PowerUP. We learned early on that there is a practical limit to the number of programmers that 5024 can handle. That year, we had too many, and our situation was not helped by the fact that some members preferred scrolling through Instagram over writing code. This issue was almost entirely fixed by the introduction of a mandatory skill exam at the start of the season. Sam and I did not really care about the scores of the exam because, from reading the results, we could see who was actually motivated to join the team. Thanks to the test, we entered the season with seven excited programmers.
During the PowerUP season, I also learned the importance of student involvement. Most of the code from the season was written by mentors with the students just watching on a projecter. After talking with other team members, I learned that none of them through this was a good method of teaching, and many felt powerless. In the 2019 season, I completely reversed this. All students worked together on the codebase, and the mentors worked on other projects and provided input where needed.
### Version Control
During the 2018 season, code was shared around by USB. This lead to crazy conflicts, confusion over what was running on the robot, and general frustration during competitions. In 2019, I moved the team over to a [GitHub](https://github.com) organization account and sent an email to support to get us unlimited private repos (thanks GitHub!). For the team members that where not comfortable in the terminal, I set them up with [GitKracken PRO](https://www.gitkraken.com/) accounts, and they enjoyed using the program. The rest of us stuck with GIT cli, or various plugins for VSCode.
### Alpha test
I got our team on board with the 2019 toolchain alpha test the week it was released in order to get everyone used to the new tools before the season (and help find bugs for the WPILib team). The new buildsystem, Gradle, worked great and I could even run it on the chromebook I was using for development at the time! To further assist the team, I set up a CI pipeline for automatic testing and code reviews of Pull Requests, and a doxygen + GitHub pages CD pipeline for our new documentation webpage.
### Webdocs
A significant amount of my time was spent answering repetitive questions from the team. I enjoy helping people out, but explaining the same things over and over was starting to frustrate me. This was caused by a lack of documentation or bits of documentation spread over multiple websites. To solve this problem, I started the [Webdocs Page](https://frc5024.github.io/webdocs/#/). This website is designed to house a mix of team-specific notes, guides, low-level documentation, and documentation from all FRC vendors. This site was published after the season, so I will find out how usefull it really is during the 2020 season.
### Command base
"Command based programming is great. But..." is probably the best way to describe my suggested changes for 2020.
I have been learning from other teams, and from mentors about better ways to control our robot. During the offseason, I am playing with new ways to write robot code. Here are some of my changes:
- Use a custom replacement for WPILib's [Subsystem](https://first.wpi.edu/FRC/roborio/release/docs/java/edu/wpi/first/wpilibj/command/Subsystem.html) that buffers it's inputs and outputs
- This reduces load on our CAN and Ethernet networks
- Offload all camera and vision work to a Raspberry PI
- Every subsystem must push telemetry data to NetworkTables for easy debugging and detailed logs
- Use a custom logging system that buffers writes to stdout. This reduces network strain
I am working on many other changes over on the [MiniBot](https://github.com/frc5024/MiniBot) codebase.
## My plans for 2020
I have been re-selected to be the sole lead of the 5024 programming team for 2020. Here are my goals:
- Switch the team from C++ to Java
- Easier for prototyping
- Better memory management for high-level programmers
- Better documentation from vendors
- It is taught in our school's compsci classes
- Remove the skills exam in favour of weekly homework for the first 8 weeks
- Provide writeups of lessons
- Have mentors do "guest presentations"
- Dedicate a day to robot driving lessons
- Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -113,13 +112,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -113,13 +112,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -79,6 +78,86 @@
<div class="inner">
<header class="major">
<h1>What I have learned from 2 years of FRC programming</h1>
</header>
<p>2019-06-21 11:14:00 -0400</p>
<p><p>Over the past two years (2018 / 2019), I have been a member of my schools <a href="https://www.firstinspires.org/robotics/frc">FRC</a> team, <a href="frc5024.github.io">Raider Robotics</a>. Specifically, a programmer.</p>
<h2 id="my-roles">My roles</h2>
<p>In my first year, I joined the team as a programmer and had a fun time learning about embedded programming and development with hardware. Then, in my second year, I was promoted to programming co-lead along with <a href="https://github.com/slownie">@slownie</a>. I much preferred my second season because I had a better understanding of the technology I was working with, and we got to play with some cool tools throughout the season.</p>
<h2 id="what-i-have-learned">What I have learned</h2>
<p>Starting with our 2018 season, PowerUP. We learned early on that there is a practical limit to the number of programmers that 5024 can handle. That year, we had too many, and our situation was not helped by the fact that some members preferred scrolling through Instagram over writing code. This issue was almost entirely fixed by the introduction of a mandatory skill exam at the start of the season. Sam and I did not really care about the scores of the exam because, from reading the results, we could see who was actually motivated to join the team. Thanks to the test, we entered the season with seven excited programmers.</p>
<p>During the PowerUP season, I also learned the importance of student involvement. Most of the code from the season was written by mentors with the students just watching on a projecter. After talking with other team members, I learned that none of them through this was a good method of teaching, and many felt powerless. In the 2019 season, I completely reversed this. All students worked together on the codebase, and the mentors worked on other projects and provided input where needed.</p>
<h3 id="version-control">Version Control</h3>
<p>During the 2018 season, code was shared around by USB. This lead to crazy conflicts, confusion over what was running on the robot, and general frustration during competitions. In 2019, I moved the team over to a <a href="https://github.com">GitHub</a> organization account and sent an email to support to get us unlimited private repos (thanks GitHub!). For the team members that where not comfortable in the terminal, I set them up with <a href="https://www.gitkraken.com/">GitKracken PRO</a> accounts, and they enjoyed using the program. The rest of us stuck with GIT cli, or various plugins for VSCode.</p>
<h3 id="alpha-test">Alpha test</h3>
<p>I got our team on board with the 2019 toolchain alpha test the week it was released in order to get everyone used to the new tools before the season (and help find bugs for the WPILib team). The new buildsystem, Gradle, worked great and I could even run it on the chromebook I was using for development at the time! To further assist the team, I set up a CI pipeline for automatic testing and code reviews of Pull Requests, and a doxygen + GitHub pages CD pipeline for our new documentation webpage.</p>
<h3 id="webdocs">Webdocs</h3>
<p>A significant amount of my time was spent answering repetitive questions from the team. I enjoy helping people out, but explaining the same things over and over was starting to frustrate me. This was caused by a lack of documentation or bits of documentation spread over multiple websites. To solve this problem, I started the <a href="https://frc5024.github.io/webdocs/#/">Webdocs Page</a>. This website is designed to house a mix of team-specific notes, guides, low-level documentation, and documentation from all FRC vendors. This site was published after the season, so I will find out how usefull it really is during the 2020 season.</p>
<h3 id="command-base">Command base</h3>
<p>“Command based programming is great. But…” is probably the best way to describe my suggested changes for 2020.</p>
<p>I have been learning from other teams, and from mentors about better ways to control our robot. During the offseason, I am playing with new ways to write robot code. Here are some of my changes:</p>
<ul>
<li>Use a custom replacement for WPILibs <a href="https://first.wpi.edu/FRC/roborio/release/docs/java/edu/wpi/first/wpilibj/command/Subsystem.html">Subsystem</a> that buffers its inputs and outputs
<ul>
<li>This reduces load on our CAN and Ethernet networks</li>
</ul>
</li>
<li>Offload all camera and vision work to a Raspberry PI</li>
<li>Every subsystem must push telemetry data to NetworkTables for easy debugging and detailed logs</li>
<li>Use a custom logging system that buffers writes to stdout. This reduces network strain</li>
</ul>
<p>I am working on many other changes over on the <a href="https://github.com/frc5024/MiniBot">MiniBot</a> codebase.</p>
<h2 id="my-plans-for-2020">My plans for 2020</h2>
<p>I have been re-selected to be the sole lead of the 5024 programming team for 2020. Here are my goals:</p>
<ul>
<li>Switch the team from C++ to Java
<ul>
<li>Easier for prototyping</li>
<li>Better memory management for high-level programmers</li>
<li>Better documentation from vendors</li>
<li>It is taught in our schools compsci classes</li>
</ul>
</li>
<li>Remove the skills exam in favour of weekly homework for the first 8 weeks</li>
<li>Provide writeups of lessons</li>
<li>Have mentors do “guest presentations”</li>
<li>Dedicate a day to robot driving lessons</li>
<li>Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers</li>
</ul>
</p>
<header class="major">
<h1>Blogs I Read</h1>
</header>
<p>2019-06-18 09:18:00 -0400</p>
<p><p>This is a copy-pastable list of rss feeds I subscribe to:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://www.firstinspires.org/robotics/frc/blog-rss
https://lukesmith.xyz/rss.xml
https://daniellockyer.com/feed.xml
http://www.windytan.com/rss.xml
http://psy-lob-saw.blogspot.com/rss.xml
https://retrylife.ca/feed.xml
</code></pre></div></div>
</p>
<header class="major">
<h1>I made a new song!</h1>
</header>
@ -360,13 +439,13 @@ pip3 install tensorflow-gpu #for gpu processing
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -151,13 +150,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -163,13 +162,13 @@ pip3 install tensorflow-gpu #for gpu processing
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -1,4 +1,64 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2019-06-17T22:09:49-04:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">Evan Pratten</title><subtitle>Computer wizard, student, &lt;a href=&quot;https://github.com/frc5024&quot;&gt;@frc5024&lt;/a&gt; programming team lead, and radio enthusiast.</subtitle><entry><title type="html">I made a new song!</title><link href="http://localhost:4000/music/2019/06/17/AMM2M1-release.html" rel="alternate" type="text/html" title="I made a new song!" /><published>2019-06-17T06:20:00-04:00</published><updated>2019-06-17T06:20:00-04:00</updated><id>http://localhost:4000/music/2019/06/17/AMM2M1-release</id><content type="html" xml:base="http://localhost:4000/music/2019/06/17/AMM2M1-release.html">&lt;p&gt;I am currently taking a class in school called &lt;a href=&quot;https://www.facebook.com/studio225beal/&quot;&gt;Music and computers (AMM2M)&lt;/a&gt;, where as part of the class, whe get together into bands, and produce a song. After taking a break from music production for over a year, we have released our song for the class (we do two songs, but the second is not finished yet).&lt;/p&gt;
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2019-06-21T16:12:12-04:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">Evan Pratten</title><subtitle>Computer wizard, student, &lt;a href=&quot;https://github.com/frc5024&quot;&gt;@frc5024&lt;/a&gt; programming team lead, and radio enthusiast.</subtitle><entry><title type="html">What I have learned from 2 years of FRC programming</title><link href="http://localhost:4000/frc/2019/06/21/Robot-Experiences.html" rel="alternate" type="text/html" title="What I have learned from 2 years of FRC programming" /><published>2019-06-21T11:14:00-04:00</published><updated>2019-06-21T11:14:00-04:00</updated><id>http://localhost:4000/frc/2019/06/21/Robot-Experiences</id><content type="html" xml:base="http://localhost:4000/frc/2019/06/21/Robot-Experiences.html">&lt;p&gt;Over the past two years (2018 / 2019), I have been a member of my schools &lt;a href=&quot;https://www.firstinspires.org/robotics/frc&quot;&gt;FRC&lt;/a&gt; team, &lt;a href=&quot;frc5024.github.io&quot;&gt;Raider Robotics&lt;/a&gt;. Specifically, a programmer.&lt;/p&gt;
&lt;h2 id=&quot;my-roles&quot;&gt;My roles&lt;/h2&gt;
&lt;p&gt;In my first year, I joined the team as a programmer and had a fun time learning about embedded programming and development with hardware. Then, in my second year, I was promoted to programming co-lead along with &lt;a href=&quot;https://github.com/slownie&quot;&gt;@slownie&lt;/a&gt;. I much preferred my second season because I had a better understanding of the technology I was working with, and we got to play with some cool tools throughout the season.&lt;/p&gt;
&lt;h2 id=&quot;what-i-have-learned&quot;&gt;What I have learned&lt;/h2&gt;
&lt;p&gt;Starting with our 2018 season, PowerUP. We learned early on that there is a practical limit to the number of programmers that 5024 can handle. That year, we had too many, and our situation was not helped by the fact that some members preferred scrolling through Instagram over writing code. This issue was almost entirely fixed by the introduction of a mandatory skill exam at the start of the season. Sam and I did not really care about the scores of the exam because, from reading the results, we could see who was actually motivated to join the team. Thanks to the test, we entered the season with seven excited programmers.&lt;/p&gt;
&lt;p&gt;During the PowerUP season, I also learned the importance of student involvement. Most of the code from the season was written by mentors with the students just watching on a projecter. After talking with other team members, I learned that none of them through this was a good method of teaching, and many felt powerless. In the 2019 season, I completely reversed this. All students worked together on the codebase, and the mentors worked on other projects and provided input where needed.&lt;/p&gt;
&lt;h3 id=&quot;version-control&quot;&gt;Version Control&lt;/h3&gt;
&lt;p&gt;During the 2018 season, code was shared around by USB. This lead to crazy conflicts, confusion over what was running on the robot, and general frustration during competitions. In 2019, I moved the team over to a &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt; organization account and sent an email to support to get us unlimited private repos (thanks GitHub!). For the team members that where not comfortable in the terminal, I set them up with &lt;a href=&quot;https://www.gitkraken.com/&quot;&gt;GitKracken PRO&lt;/a&gt; accounts, and they enjoyed using the program. The rest of us stuck with GIT cli, or various plugins for VSCode.&lt;/p&gt;
&lt;h3 id=&quot;alpha-test&quot;&gt;Alpha test&lt;/h3&gt;
&lt;p&gt;I got our team on board with the 2019 toolchain alpha test the week it was released in order to get everyone used to the new tools before the season (and help find bugs for the WPILib team). The new buildsystem, Gradle, worked great and I could even run it on the chromebook I was using for development at the time! To further assist the team, I set up a CI pipeline for automatic testing and code reviews of Pull Requests, and a doxygen + GitHub pages CD pipeline for our new documentation webpage.&lt;/p&gt;
&lt;h3 id=&quot;webdocs&quot;&gt;Webdocs&lt;/h3&gt;
&lt;p&gt;A significant amount of my time was spent answering repetitive questions from the team. I enjoy helping people out, but explaining the same things over and over was starting to frustrate me. This was caused by a lack of documentation or bits of documentation spread over multiple websites. To solve this problem, I started the &lt;a href=&quot;https://frc5024.github.io/webdocs/#/&quot;&gt;Webdocs Page&lt;/a&gt;. This website is designed to house a mix of team-specific notes, guides, low-level documentation, and documentation from all FRC vendors. This site was published after the season, so I will find out how usefull it really is during the 2020 season.&lt;/p&gt;
&lt;h3 id=&quot;command-base&quot;&gt;Command base&lt;/h3&gt;
&lt;p&gt;“Command based programming is great. But…” is probably the best way to describe my suggested changes for 2020.&lt;/p&gt;
&lt;p&gt;I have been learning from other teams, and from mentors about better ways to control our robot. During the offseason, I am playing with new ways to write robot code. Here are some of my changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a custom replacement for WPILibs &lt;a href=&quot;https://first.wpi.edu/FRC/roborio/release/docs/java/edu/wpi/first/wpilibj/command/Subsystem.html&quot;&gt;Subsystem&lt;/a&gt; that buffers its inputs and outputs
&lt;ul&gt;
&lt;li&gt;This reduces load on our CAN and Ethernet networks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Offload all camera and vision work to a Raspberry PI&lt;/li&gt;
&lt;li&gt;Every subsystem must push telemetry data to NetworkTables for easy debugging and detailed logs&lt;/li&gt;
&lt;li&gt;Use a custom logging system that buffers writes to stdout. This reduces network strain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am working on many other changes over on the &lt;a href=&quot;https://github.com/frc5024/MiniBot&quot;&gt;MiniBot&lt;/a&gt; codebase.&lt;/p&gt;
&lt;h2 id=&quot;my-plans-for-2020&quot;&gt;My plans for 2020&lt;/h2&gt;
&lt;p&gt;I have been re-selected to be the sole lead of the 5024 programming team for 2020. Here are my goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switch the team from C++ to Java
&lt;ul&gt;
&lt;li&gt;Easier for prototyping&lt;/li&gt;
&lt;li&gt;Better memory management for high-level programmers&lt;/li&gt;
&lt;li&gt;Better documentation from vendors&lt;/li&gt;
&lt;li&gt;It is taught in our schools compsci classes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Remove the skills exam in favour of weekly homework for the first 8 weeks&lt;/li&gt;
&lt;li&gt;Provide writeups of lessons&lt;/li&gt;
&lt;li&gt;Have mentors do “guest presentations”&lt;/li&gt;
&lt;li&gt;Dedicate a day to robot driving lessons&lt;/li&gt;
&lt;li&gt;Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><summary type="html">Over the past two years (2018 / 2019), I have been a member of my schools FRC team, Raider Robotics. Specifically, a programmer.</summary></entry><entry><title type="html">Blogs I Read</title><link href="http://localhost:4000/random/2019/06/18/Blogs-I-Read.html" rel="alternate" type="text/html" title="Blogs I Read" /><published>2019-06-18T09:18:00-04:00</published><updated>2019-06-18T09:18:00-04:00</updated><id>http://localhost:4000/random/2019/06/18/Blogs-I-Read</id><content type="html" xml:base="http://localhost:4000/random/2019/06/18/Blogs-I-Read.html">&lt;p&gt;This is a copy-pastable list of rss feeds I subscribe to:&lt;/p&gt;
&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://www.firstinspires.org/robotics/frc/blog-rss
https://lukesmith.xyz/rss.xml
https://daniellockyer.com/feed.xml
http://www.windytan.com/rss.xml
http://psy-lob-saw.blogspot.com/rss.xml
https://retrylife.ca/feed.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name></name></author><summary type="html">This is a copy-pastable list of rss feeds I subscribe to:</summary></entry><entry><title type="html">I made a new song!</title><link href="http://localhost:4000/music/2019/06/17/AMM2M1-release.html" rel="alternate" type="text/html" title="I made a new song!" /><published>2019-06-17T06:20:00-04:00</published><updated>2019-06-17T06:20:00-04:00</updated><id>http://localhost:4000/music/2019/06/17/AMM2M1-release</id><content type="html" xml:base="http://localhost:4000/music/2019/06/17/AMM2M1-release.html">&lt;p&gt;I am currently taking a class in school called &lt;a href=&quot;https://www.facebook.com/studio225beal/&quot;&gt;Music and computers (AMM2M)&lt;/a&gt;, where as part of the class, whe get together into bands, and produce a song. After taking a break from music production for over a year, we have released our song for the class (we do two songs, but the second is not finished yet).&lt;/p&gt;
&lt;h2 id=&quot;my-contribution&quot;&gt;My contribution&lt;/h2&gt;
&lt;p&gt;My main contribution to the project was a mix of live drumming, and most of the songs MIDI work. The song is far from perfect, but pretty good for the time we had to produce it.&lt;/p&gt;

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -127,13 +126,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -140,13 +139,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -165,13 +164,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -0,0 +1,190 @@
<!DOCTYPE html>
<!--
Forty by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<header id="header" >
<a href="http://localhost:4000//" class="logo"><strong>Evan Pratten</strong> <span>retrylife</span></a>
<nav>
<!-- <a href="#menu">Menu</a> -->
</nav>
</header>
<!-- Menu -->
<!-- <nav id="menu">
<ul class="links">
<li><a href="http://localhost:4000//">Home</a></li>
<li><a href="http://localhost:4000/all_posts.html">All posts</a></li>
</ul>
<ul class="actions vertical">
<li><a href="#" class="button special fit">Get Started</a></li>
<li><a href="#" class="button fit">Log In</a></li>
</ul>
</nav> -->
<!-- Main -->
<div id="main" class="alt">
<!-- One -->
<section id="one">
<div class="inner">
<header class="major">
<h1>What I have learned from 2 years of FRC programming</h1>
</header>
<p><p>Over the past two years (2018 / 2019), I have been a member of my schools <a href="https://www.firstinspires.org/robotics/frc">FRC</a> team, <a href="frc5024.github.io">Raider Robotics</a>. Specifically, a programmer.</p>
<h2 id="my-roles">My roles</h2>
<p>In my first year, I joined the team as a programmer and had a fun time learning about embedded programming and development with hardware. Then, in my second year, I was promoted to programming co-lead along with <a href="https://github.com/slownie">@slownie</a>. I much preferred my second season because I had a better understanding of the technology I was working with, and we got to play with some cool tools throughout the season.</p>
<h2 id="what-i-have-learned">What I have learned</h2>
<p>Starting with our 2018 season, PowerUP. We learned early on that there is a practical limit to the number of programmers that 5024 can handle. That year, we had too many, and our situation was not helped by the fact that some members preferred scrolling through Instagram over writing code. This issue was almost entirely fixed by the introduction of a mandatory skill exam at the start of the season. Sam and I did not really care about the scores of the exam because, from reading the results, we could see who was actually motivated to join the team. Thanks to the test, we entered the season with seven excited programmers.</p>
<p>During the PowerUP season, I also learned the importance of student involvement. Most of the code from the season was written by mentors with the students just watching on a projecter. After talking with other team members, I learned that none of them through this was a good method of teaching, and many felt powerless. In the 2019 season, I completely reversed this. All students worked together on the codebase, and the mentors worked on other projects and provided input where needed.</p>
<h3 id="version-control">Version Control</h3>
<p>During the 2018 season, code was shared around by USB. This lead to crazy conflicts, confusion over what was running on the robot, and general frustration during competitions. In 2019, I moved the team over to a <a href="https://github.com">GitHub</a> organization account and sent an email to support to get us unlimited private repos (thanks GitHub!). For the team members that where not comfortable in the terminal, I set them up with <a href="https://www.gitkraken.com/">GitKracken PRO</a> accounts, and they enjoyed using the program. The rest of us stuck with GIT cli, or various plugins for VSCode.</p>
<h3 id="alpha-test">Alpha test</h3>
<p>I got our team on board with the 2019 toolchain alpha test the week it was released in order to get everyone used to the new tools before the season (and help find bugs for the WPILib team). The new buildsystem, Gradle, worked great and I could even run it on the chromebook I was using for development at the time! To further assist the team, I set up a CI pipeline for automatic testing and code reviews of Pull Requests, and a doxygen + GitHub pages CD pipeline for our new documentation webpage.</p>
<h3 id="webdocs">Webdocs</h3>
<p>A significant amount of my time was spent answering repetitive questions from the team. I enjoy helping people out, but explaining the same things over and over was starting to frustrate me. This was caused by a lack of documentation or bits of documentation spread over multiple websites. To solve this problem, I started the <a href="https://frc5024.github.io/webdocs/#/">Webdocs Page</a>. This website is designed to house a mix of team-specific notes, guides, low-level documentation, and documentation from all FRC vendors. This site was published after the season, so I will find out how usefull it really is during the 2020 season.</p>
<h3 id="command-base">Command base</h3>
<p>“Command based programming is great. But…” is probably the best way to describe my suggested changes for 2020.</p>
<p>I have been learning from other teams, and from mentors about better ways to control our robot. During the offseason, I am playing with new ways to write robot code. Here are some of my changes:</p>
<ul>
<li>Use a custom replacement for WPILibs <a href="https://first.wpi.edu/FRC/roborio/release/docs/java/edu/wpi/first/wpilibj/command/Subsystem.html">Subsystem</a> that buffers its inputs and outputs
<ul>
<li>This reduces load on our CAN and Ethernet networks</li>
</ul>
</li>
<li>Offload all camera and vision work to a Raspberry PI</li>
<li>Every subsystem must push telemetry data to NetworkTables for easy debugging and detailed logs</li>
<li>Use a custom logging system that buffers writes to stdout. This reduces network strain</li>
</ul>
<p>I am working on many other changes over on the <a href="https://github.com/frc5024/MiniBot">MiniBot</a> codebase.</p>
<h2 id="my-plans-for-2020">My plans for 2020</h2>
<p>I have been re-selected to be the sole lead of the 5024 programming team for 2020. Here are my goals:</p>
<ul>
<li>Switch the team from C++ to Java
<ul>
<li>Easier for prototyping</li>
<li>Better memory management for high-level programmers</li>
<li>Better documentation from vendors</li>
<li>It is taught in our schools compsci classes</li>
</ul>
</li>
<li>Remove the skills exam in favour of weekly homework for the first 8 weeks</li>
<li>Provide writeups of lessons</li>
<li>Have mentors do “guest presentations”</li>
<li>Dedicate a day to robot driving lessons</li>
<li>Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers</li>
</ul>
</p>
</div>
</section>
</div>
<!-- Footer -->
<footer id="footer">
<div class="inner">
<ul class="icons">
<li><a href="https://twitter.com/ewpratten" class="icon alt fa-twitter" target="_blank"><span class="label">Twitter</span></a></li>
<li><a href="https://gitlab.com/u/ewpratten" class="icon alt fa-gitlab" target="_blank"><span class="label">GitLab</span></a></li>
<li><a href="https://github.com/ewpratten" class="icon alt fa-github" target="_blank"><span class="label">GitHub</span></a></li>
<li><a href="/feed.xml" class="icon alt fa-rss" target="_blank"><span class="label">RSS</span></a></li>
</ul>
<ul class="copyright">
<li>&copy; Evan Pratten retrylife</li>
<li>Design: <a href="https://html5up.net" target="_blank">HTML5 UP</a></li>
</ul>
</div>
</footer>
</div>
<!-- Scripts -->
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-74118570-2');
</script>
</body>
</html>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -121,6 +120,30 @@
<section id="one" class="tiles">
<article>
<span class="image">
<img src="" alt="" />
</span>
<header class="major">
<h3><a href="/frc/2019/06/21/Robot-Experiences.html" class="link">What I have learned from 2 years of FRC programming</a></h3>
<p>Robots are pretty cool</p>
</header>
</article>
<article>
<span class="image">
<img src="" alt="" />
</span>
<header class="major">
<h3><a href="/random/2019/06/18/Blogs-I-Read.html" class="link">Blogs I Read</a></h3>
<p>The constantly updating list</p>
</header>
</article>
<article>
<span class="image">
<img src="" alt="" />
@ -169,30 +192,6 @@
<article>
<span class="image">
<img src="" alt="" />
</span>
<header class="major">
<h3><a href="/frc/2019/04/30/FRC-Languages.html" class="link">The language hunt</a></h3>
<p></p>
</header>
</article>
<article>
<span class="image">
<img src="" alt="" />
</span>
<header class="major">
<h3><a href="/devrant/2018/06/27/BecomeRanter.html" class="link">Using a python script to create devRant posts based on the style and content of another user</a></h3>
<p></p>
</header>
</article>
@ -249,13 +248,13 @@
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -7,16 +7,15 @@
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
@ -124,13 +123,13 @@ Your browser does not support audio players
</div>
<!-- Scripts -->
<script src="http://localhost:4000/%20assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/%20assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/%20assets/js/skel.min.js"></script>
<script src="http://localhost:4000/%20assets/js/util.js"></script>
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/%20assets/js/main.js"></script>
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>

View File

@ -0,0 +1,146 @@
<!DOCTYPE html>
<!--
Forty by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Evan Pratten</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<!--[if lte IE 8]><script src="/assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="/assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="/assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/css/ie8.css" /><![endif]-->
</head>
<body>
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<header id="header" >
<a href="http://localhost:4000//" class="logo"><strong>Evan Pratten</strong> <span>retrylife</span></a>
<nav>
<!-- <a href="#menu">Menu</a> -->
</nav>
</header>
<!-- Menu -->
<!-- <nav id="menu">
<ul class="links">
<li><a href="http://localhost:4000//">Home</a></li>
<li><a href="http://localhost:4000/all_posts.html">All posts</a></li>
</ul>
<ul class="actions vertical">
<li><a href="#" class="button special fit">Get Started</a></li>
<li><a href="#" class="button fit">Log In</a></li>
</ul>
</nav> -->
<!-- Main -->
<div id="main" class="alt">
<!-- One -->
<section id="one">
<div class="inner">
<header class="major">
<h1>Blogs I Read</h1>
</header>
<p><p>This is a copy-pastable list of rss feeds I subscribe to:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://www.firstinspires.org/robotics/frc/blog-rss
https://lukesmith.xyz/rss.xml
https://daniellockyer.com/feed.xml
http://www.windytan.com/rss.xml
http://psy-lob-saw.blogspot.com/rss.xml
https://retrylife.ca/feed.xml
</code></pre></div></div>
</p>
</div>
</section>
</div>
<!-- Footer -->
<footer id="footer">
<div class="inner">
<ul class="icons">
<li><a href="https://twitter.com/ewpratten" class="icon alt fa-twitter" target="_blank"><span class="label">Twitter</span></a></li>
<li><a href="https://gitlab.com/u/ewpratten" class="icon alt fa-gitlab" target="_blank"><span class="label">GitLab</span></a></li>
<li><a href="https://github.com/ewpratten" class="icon alt fa-github" target="_blank"><span class="label">GitHub</span></a></li>
<li><a href="/feed.xml" class="icon alt fa-rss" target="_blank"><span class="label">RSS</span></a></li>
</ul>
<ul class="copyright">
<li>&copy; Evan Pratten retrylife</li>
<li>Design: <a href="https://html5up.net" target="_blank">HTML5 UP</a></li>
</ul>
</div>
</footer>
</div>
<!-- Scripts -->
<script src="http://localhost:4000/assets/js/jquery.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrolly.min.js"></script>
<script src="http://localhost:4000/assets/js/jquery.scrollex.min.js"></script>
<script src="http://localhost:4000/assets/js/skel.min.js"></script>
<script src="http://localhost:4000/assets/js/util.js"></script>
<!--[if lte IE 8]><script src="http://localhost:4000/assets/js/ie/respond.min.js"></script><![endif]-->
<script src="http://localhost:4000/assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-74118570-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-74118570-2');
</script>
</body>
</html>