lupyuen.org/index.html
2022-06-14 11:19:56 +08:00

5054 lines
176 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
<title>LEE Lup Yuen</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<style>
/********************************************
* reset from
* http://meyerweb.com/eric/tools/css/reset/
*******************************************/
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
vertical-align: baseline;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/****************
* COMMONS
****************/
body,
html {
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-size: 13px;
color: #40484f;
font-weight: 400;
letter-spacing: 0;
line-height: 1.46153846;
text-align: left;
-webkit-text-size-adjust: 100%;
}
p {
display: block;
margin-bottom: 1.3em;
}
a {
color: #0095ff;
text-decoration: none;
}
a:hover {
color: #0c65a5;
text-decoration: underline;
}
ul {
margin-top: 1rem;
}
li {
list-style-type: square;
list-style-position: outside;
margin-left: 1.3em;
}
.highlights>li>p {
margin-bottom: 0.5em;
}
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.67rem;
}
h3 {
font-size: 1.27rem;
}
em {
color: #757575;
}
blockquote {
margin-bottom: 1em;
}
strong {
font-weight: 700;
}
/* main container */
#resume {
padding: 1rem;
margin-top: 2rem;
}
/* every section wrapper */
.section {
margin-bottom: 1rem;
}
section .location {
margin-right: .5em;
color: #606d76;
font-weight: 700;
}
#contact {
margin-top: .5rem;
}
#profiles .item {
padding: 0;
}
#header>#profiles,
#header>#contact,
#skills,
#languages,
#interests {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
flex-flow: row wrap;
-webkit-justify-content: flex-start;
justify-content: flex-start;
}
#header>div {
line-height: 1.5;
}
#header>div>div {
margin-right: 1.2em;
}
#header h1.name {
font-size: 2.8rem;
font-weight: 100;
line-height: 100%;
}
#header h2.label {
color: #202931;
font-size: 1.47rem;
font-weight: 300;
}
#header .picture {
width: 11em;
float: right;
border-radius: 4px;
}
.main-summary {
background: #f1f8ff;
padding: 1.2em 1em;
margin-top: 1rem;
}
.main-summary p {
margin: .15em 0 0;
}
h2.section-title {
display: inline-block;
background: #fff;
padding: 0 1em 0.3em 0;
color: #ff6d1f;
text-transform: uppercase;
font-weight: 600;
border: none;
font-size: .9rem;
}
.section>header {
position: relative;
}
.fa {
margin-right: 0.25em;
}
.section>header::after {
position: absolute;
left: 0;
top: .7em;
height: 1px;
background: #ccc;
content: "";
width: 100%;
z-index: -100;
display: block;
}
.section.main-summary>section {
margin: 0;
}
.section>section>header {
font-size: 1.38rem;
position: relative;
margin-top: .7em;
}
.section>section>header:first-of-type {
margin: 0;
}
.section>section>header .space-left {
position: absolute;
left: -1.56rem;
top: 5px;
color: #aaa;
line-height: 1;
opacity: 0;
}
.position,
.company,
.organization,
.institution,
.date,
.area,
.studyType,
.title,
.awarder {
display: inline;
}
.position,
.studyType,
.area,
.title,
.language,
.name {
font-weight: 600;
}
.company::before,
.institution::before,
.organization::before,
.awarder::before {
content: "at "
}
.company,
.institution,
.organization,
.awarder {
color: #606d76;
font-weight: 400;
}
.section header .date {
font-size: 1rem;
display: inline-table;
padding: .1em 0;
font-weight: 600;
}
ul.keywords,
ul.courses {
margin-top: .5em;
}
ul.keywords li,
ul.courses li {
display: inline-block;
margin: 2px 2px 2px 0;
padding: 4px 5px 5px;
font-size: .9rem;
line-height: 1;
text-transform: lowercase;
color: #3e6d8e;
background-color: #dfeaf1;
border: 0 solid #dfeaf1;
white-space: nowrap;
}
ul.keywords li:hover,
ul.courses li:hover {
background: #dfeaf0;
}
.item {
padding: .5em 0;
}
.gpa {
padding-bottom: .5em;
}
.fa.social {
font-size: 1.1em;
}
/* Social Media Brand Colors */
.google-plus {
color: #dd4b39;
}
.tumblr {
color: #32506d;
}
.foursquare {
color: #0072b1;
}
.facebook {
color: #3b5998;
}
.linkedin {
color: #007bb6;
}
.pinterest {
color: #cb2027;
}
.dribbble {
color: #ea4c89;
}
.instagram {
color: #517fa4;
}
.twitter {
color: #00aced;
}
.soundcloud {
color: #ff3a00;
}
.wordpress {
color: #21759b;
}
.youtube {
color: #bb0000;
}
.github {
color: #171515;
}
.stack-overflow {
color: #828386;
position: relative;
}
.flickr {
color: #ff0084;
}
.stack-overflow::after {
position: absolute;
left: 0;
content: '\f16c';
color: #f68a1f;
overflow: hidden;
height: 100%;
}
.telegram {
color: #2291c3;
}
#languages .item,
#skills .item,
#interests .item {
width: 15em;
padding: 0 .5em .5em 0;
border-bottom: none;
}
#skills .item {
width: 16em;
}
#skills .item .keywords {
width: 15em;
}
/* Skill chart */
.level {
margin-bottom: .5em;
}
.level .bar {
border: 1px solid #ddd;
display: block;
width: 10em;
height: 5px;
position: relative;
}
.level .bar::after {
position: absolute;
content: " ";
top: 0;
left: 0;
background: black;
height: 5px;
}
.level.beginner .bar::after {
background: #EB5F51;
width: 2.5em;
}
.level.intermediate .bar::after {
background: #ffdf1f;
width: 5em;
}
.level.advanced .bar::after,
.level.fluent .bar::after {
background: #5CB85C;
width: 7.5em;
}
.level.master .bar::after,
.level.native.speaker .bar::after {
background: #59C596;
width: 10em;
}
#references .item {
padding-left: .5em;
border-left: 5px solid #ff6d1f;
}
.toggle-item {
visibility: hidden;
}
/******************
* HELPER CLASSES
******************/
.clear::after {
content: "";
display: table;
clear: both;
}
.display {
display: block;
opacity: 1 !important;
}
.margin1 {
margin-bottom: .5rem;
}
/****************
* TABLET
****************/
@media screen and (min-width: 602px) {
#resume {
width: 80%;
margin: 0 auto;
}
}
/****************
* LAPTOP
****************/
@media screen and (min-width: 1025px) {
li {
margin-left: 1.5em;
}
#resume {
width: 820px;
margin: 2rem auto;
}
.section>section>header .space-left {
opacity: 1;
cursor: pointer;
}
.section>section {
margin-left: 1.67rem;
}
.toggle-item {
transform: translate(-9999px);
}
.toggle-item+label {
display: block;
margin-top: -16px;
}
.toggle-item:checked+label:after {
content: '\f0d7';
}
.toggle-item+label:after {
float: left;
cursor: pointer;
margin-left: -20px;
color: #aaa;
font-size: 16px;
content: '\f0da';
font-family: Fontawesome;
}
.toggle-item~.item {
height: 0;
opacity: 0;
}
.toggle-item:checked~.item {
height: auto;
opacity: 1;
transition: all .5s linear;
}
.company::before,
.institution::before,
.organization::before,
.awarder::before {
content: "| ";
}
.header-left {
float: left;
width: 70%;
word-break: normal;
}
.section header .date {
float: right;
padding: .2em;
}
.display {
display: none;
}
.display:not(.none) {
display: block;
}
}
@media print {
#resume {
margin: 0;
padding: 0;
-ms-word-wrap: break-word;
word-wrap: break-word;
line-height: 1.3;
/*font-family: Arial, Georgia, "Lucida Grande", sans-serif;*/
}
@page {
margin: 1cm 1.4cm;
}
.item-count {
display: none;
}
.company::before,
.institution::before,
.organization::before,
.awarder::before {
content: "at ";
}
.main-summary {
padding: 2rem 0;
}
.section {
margin: .8rem 0;
padding: 0;
}
.section header {
padding-bottom: .15rem;
}
.section .location {
padding-bottom: .15rem;
}
.stack-overflow::after {
content: "";
}
.fa.social {
color: #828386;
}
ul {
margin-top: .4em;
}
ul,
li {
padding: 0;
}
ul.keywords li,
ul.courses li {
margin: 0;
padding: 0;
font-size: .8rem;
text-transform: lowercase;
}
ul.keywords li::after,
ul.courses li::after {
padding: 0 0 0 .1rem;
content: " |";
}
ul.keywords::before,
ul.courses::before {
font-size: .8rem;
font-weight: 600;
}
ul.keywords::before {
content: "Skills acquired: ";
}
#skills .keywords::before {
content: '';
}
.section p {
margin: 0;
padding: 0;
}
ul.courses::before {
content: "Major courses: ";
}
ul.keywords li:last-of-type::after,
ul.courses li:last-of-type::after {
content: "";
}
.level em {
font-style: normal;
padding: .1em 0;
}
.level .bar {
display: none;
}
#profiles .item {
padding: 0;
}
.item.display {
display: block;
opacity: 1 !important;
}
}
</style>
</head>
<body>
<div id="resume">
<header id="header" class="clear">
<img class="picture" src="https://lupyuen.github.io/images/lupyuen.jpg" alt="LEE Lup Yuen" />
<div class="middle">
<h1 class="name">LEE Lup Yuen</h1>
<h2 class="label">Techie and Educator in IoT</h2>
</div>
<span class="location">
<span class="region">Singapore</span>
<span class="countryCode">SG</span>
</span>
<div> Born in 1969</div>
<div id="contact">
<div class="website">
<span class="fa fa-external-link"></span>
<a target="_blank" target="_blank" href="https://lupyuen.github.io">https://lupyuen.github.io</a>
</div>
<div class="email">
<span class="fa fa-envelope-o"></span>
<a href="mailto:luppy@appkaki.com">luppy@appkaki.com</a>
</div>
</div>
<div id="profiles">
<div class="item">
<div class="username">
<span class="fa fa-linkedin linkedin social"></span>
<span class="url">
<a target="_blank" href="https://www.linkedin.com/in/lupyuen">lupyuen</a>
</span>
</div>
</div>
<div class="item">
<div class="username">
<span class="fa fa-github github social"></span>
<span class="url">
<a target="_blank" href="https://github.com/lupyuen">lupyuen</a>
</span>
</div>
</div>
<div class="item">
<div class="username">
<span class="fa fa-twitter twitter social"></span>
<a target="_blank" href="https://twitter.com/MisterTechBlog">MisterTechBlog</a>
</div>
</div>
<div class="item">
<div class="username">
<span class="fa fa-download-pdf download-pdf social"></span>
<span class="url">
<a target="_blank" href="https://lupyuen.github.io/lupyuen.pdf">Download PDF</a>
</span>
</div>
</div>
<div class="item">
<div class="username">
<span class="fa fa-json json social"></span>
<span class="url">
<a target="_blank" href="https://lupyuen.github.io/resume.json">JSON</a>
</span>
</div>
</div>
</div>
</header>
<section class="section main-summary">
<section>
<div><p>Hands-on IoT advisor and educator. Passionate about helping everyone create IoT products that make a difference to the man and woman on the street. 'Top Writer In Internet of Things' at medium.com</p></div>
</section>
</section>
<section class="section margin1">
<header>
<h2 class='section-title'>Skills</h2>
</header>
<section id="skills">
<div class="item">
<h3 class="name">
Internet of Things (IoT)
</h3>
<div class="level master">
<em>Master</em>
<div class="bar"></div>
</div>
<ul class="keywords">
<li>NB-IoT</li>
<li>Sigfox</li>
<li>LoRa</li>
<li>AWS IoT</li>
<li>Google Cloud IoT</li>
<li>Azure IoT</li>
<li>thethings.io</li>
<li>Embedded Rust</li>
<li>Embedded C</li>
<li>Mynewt</li>
<li>ESP8266</li>
<li>STM32</li>
<li>nRF52</li>
<li>BL602</li>
</ul>
</div>
<div class="item">
<h3 class="name">
Cloud Computing
</h3>
<div class="level master">
<em>Master</em>
<div class="bar"></div>
</div>
<ul class="keywords">
<li>AWS</li>
<li>Google Cloud</li>
<li>Azure</li>
<li>S3</li>
<li>SageMaker</li>
<li>RDS</li>
<li>DynamoDB</li>
<li>Lambda</li>
<li>API Gateway</li>
<li>Cloud Functions</li>
<li>AppEngine</li>
<li>TensorFlow</li>
<li>BigQuery</li>
<li>Node.js</li>
<li>Go</li>
</ul>
</div>
<div class="item">
<h3 class="name">
Mobile Application Development
</h3>
<div class="level master">
<em>Master</em>
<div class="bar"></div>
</div>
<ul class="keywords">
<li>iOS</li>
<li>Android</li>
<li>Swift</li>
<li>React Native</li>
<li>Xcode</li>
<li>Responsive Mobile Web</li>
<li>Bootstrap</li>
</ul>
</div>
</section>
</section>
<section class="section">
<header>
<h2 class='section-title'>Work Experience <span class="item-count">(5)</span></h2>
</header>
<section id="work">
<section class="work-item">
<input id="work-item-0" type="checkbox" class="toggle-item" checked="checked" />
<label for="work-item-0"></label>
<header>
<div class="position">Adjunct Lecturer</div>
<div class="company">Temasek Polytechnic</div>
<div class="date">
<span class="startDate">April 2015</span>
<span class="endDate">- February 2019</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(SG)</span>
<span class="region">Singapore</span>
</span>
<span class="website">
<a target="_blank" href="http://www.tp.edu.sg">http://www.tp.edu.sg</a>
</span> <div class="item" id="work-item">
<div class="summary">
<p><p>Responsible for teaching and mentoring the next generation of professionals in IoT technologies. He taught the following courses:</p></p>
</div>
<ul class="highlights">
<li><p>IoT Application Development: He prepared and presented lessons and labs for training working adults with IoT programming skills, based on AWS IoT, Sigfox, Ubidots and Arduino. He created the training platform with various AWS services: AWS IoT, Lambda, API Gateway, S3, DynamoDB, SNS, Elasticsearch, Kibana. His students included IT professionals from Agility, IBM, SAP, Ericsson, Canon and ITE.</p></li>
<li><p>IoT Project: He supervised the students in creating innovative IoT products (based on AWS IoT and Sigfox) that solve real-world problems like dementia patient tracking, elderly home monitoring, food safety, campus security, AED management, realtime asset tracking.</p></li>
</ul>
</div>
</section>
<section class="work-item">
<input id="work-item-1" type="checkbox" class="toggle-item" checked="checked" />
<label for="work-item-1"></label>
<header>
<div class="position">Chief Technology Officer</div>
<div class="company">UnaBiz</div>
<div class="date">
<span class="startDate">August 2016</span>
<span class="endDate">- April 2018</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(SG)</span>
<span class="region">Singapore</span>
</span>
<span class="website">
<a target="_blank" href="https://unabiz.com">https://unabiz.com</a>
</span> <div class="item" id="work-item">
<div class="summary">
<p><p>As former CTO of UnaBiz, he was responsible for creating new tools and systems to help people get onboard with Sigfox the quickest way possible.</p></p>
</div>
<ul class="highlights">
<li><p>(1) UnaLocation - Enhanced Sigfox Geolocation with Machine Learning; (2) UnaRadar - Sigfox Network Finder mobile web app; (3) UnaMap - Sigfox Coverage Web Map; (4) UnaShield - Sigfox Shield for Arduino; (5) UnaBell - Smart Button on Sigfox; (6) sigfox-gcloud - Open Source Sigfox Server for Google Cloud; (7) sigfox-aws - Open Source Sigfox Server for Amazon Web Services</p></li>
</ul>
</div>
</section>
<section class="work-item">
<input id="work-item-2" type="checkbox" class="toggle-item" checked="checked" />
<label for="work-item-2"></label>
<header>
<div class="position">Principal Consultant</div>
<div class="company">Konica Minolta Business Innovation Centre</div>
<div class="date">
<span class="startDate">November 2014</span>
<span class="endDate">- September 2016</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(SG)</span>
<span class="region">Singapore</span>
</span>
<span class="website">
<a target="_blank" href="https://bic.konicaminolta.asia">https://bic.konicaminolta.asia</a>
</span> <div class="item" id="work-item">
<div class="summary">
<p><p>He heads the software development/engineering team that architects, develops and executes proof-of-concept (POC) projects for incubating new businesses for Konica Minolta. He was also consulted for technical due diligence in investment projects and acquisitions.</p></p>
</div>
<ul class="highlights">
<li><p>(1) Straight-Through Food & Beverage Ordering System with iOS and Android mobile apps and Kitchen Display System; (2) Bluetooth Beacon Location Analytics for Android and iOS</p></li>
</ul>
</div>
</section>
<section class="work-item">
<input id="work-item-3" type="checkbox" class="toggle-item" checked="checked" />
<label for="work-item-3"></label>
<header>
<div class="position">Chief Technology Officer</div>
<div class="company">SingTel L!feLabs</div>
<div class="date">
<span class="startDate">June 2009</span>
<span class="endDate">- November 2014</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(SG)</span>
<span class="region">Singapore</span>
</span>
<span class="website">
<a target="_blank" href="https://singtel.com">https://singtel.com</a>
</span> <div class="item" id="work-item">
<div class="summary">
<p><p>Reports directly to CEO Group Digital L!fe, Mr Allen Lew. Responsible for scanning of innovative ICT technologies worldwide and executing proof-of-concept (POC) projects for the SingTel Group. He was also consulted for technical due diligence in SingTel Innov8 investment projects and SingTel Group Strategy acquisitions.</p></p>
</div>
<ul class="highlights">
<li><p>(1) Internet of Things (IoT); (2) Indoor Positioning; (3) Smart Retail; (4) Social Recommendation based on Facebook profiling; (5) Speech Recognition for Singapore English; (6) Image Recognition for Retail; (7) Motion Gesture User Experience; (8) Augmented Reality; (9) Cloud Gaming; (10) Virtual Reality; (11) Video Streaming and Distribution; (12) Home Automation</p></li>
</ul>
</div>
</section>
<section class="work-item">
<input id="work-item-4" type="checkbox" class="toggle-item" checked="checked" />
<label for="work-item-4"></label>
<header>
<div class="position">Principal Consultant</div>
<div class="company">NCS Pte Ltd</div>
<div class="date">
<span class="startDate">September 1994</span>
<span class="endDate">- September 2012</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(SG)</span>
<span class="region">Singapore</span>
</span>
<span class="website">
<a target="_blank" href="https://www.ncs.com.sg">https://www.ncs.com.sg</a>
</span> <div class="item" id="work-item">
<div class="summary">
<p><p>Lead Enterprise Architect for Microsoft .NET technologies in Singapore's largest system integrator</p></p>
</div>
<ul class="highlights">
<li><p>(1) IRAS Inland Revenue Integrated System; (2) Singapore Health Services Outpatient Administrative System; (3) Digital library systems for National Library Board, Singapore Polytechnic, Temasek Polytechnic, Singapore Airlines Engineering, SASCO; (4) Web portals for IDA MyeCitizen Portal, MINDEF NS Portal, MediaCorp MOBTV Portal; (5) YW8, Singapores first mobile payment system by NETS, DBS, SingTel, M1, StarHub</p></li>
</ul>
</div>
</section>
</section>
</section>
<section class="section">
<header>
<h2 class='section-title'>Education <span class="item-count">(2)</span></h2>
</header>
<section id="education">
<section class="education-item">
<input id="education-item-0" type="checkbox" class="toggle-item" checked="checked" />
<label for="education-item-0"></label>
<header>
<div class="header-left">
<div class="studyType">
Master of Science,
</div>
<div class="area">
Computer Science
</div>
<div class="institution">
University of Illinois at Urbana-Champaign
</div>
</div>
<div class="date">
<span class="startDate">
1991
</span>
<span class="endDate">
- 1992
</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(US)</span>
<span class="region">USA</span>
</span>
<div class="item">
<div class="summary">
<p><p>Research Assistant for CHOICES Object-Oriented Operating System</p></p>
</div>
</div>
</section>
<section class="education-item">
<header>
<div class="header-left">
<div class="studyType">
Bachelor of Science,
</div>
<div class="area">
Computer Science
</div>
<div class="institution">
University of Toronto - University College
</div>
</div>
<div class="date">
<span class="startDate">
1988
</span>
<span class="endDate">
- 1990
</span>
</div>
</header>
<span class="location">
<span class="fa fa-map-marker"></span>
<span class="countryCode">(CA)</span>
<span class="region">Canada</span>
</span>
<div class="item">
</div>
</section>
</section>
</section>
<section class="section">
<header>
<h2 class='section-title'>Publications</h2>
</header>
<section id="publications">
<section class="publication-item">
<input id="publication-item-0" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-0"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/iot">Build an IoT App with Zig and LoRaWAN</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 June 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Let's build a complex IoT App with Zig and LoRaWAN... And run it on RISC-V BL602 with Apache NuttX RTOS</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-1" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-1"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/zig">Zig on RISC-V BL602: Quick Peek with Apache NuttX RTOS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
2 June 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we run Zig on the BL602 RISC-V SoC... With Apache NuttX RTOS</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-2" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-2"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/auto2">(Mostly) Automated Testing of Apache NuttX RTOS on PineDio Stack BL604 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 May 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Pine64 is about to launch the PineDio Stack BL604 RISC-V Board with LoRa and Touch Screen... Here's how we automatically flash and test every new release of Apache NuttX RTOS for PineDio Stack</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-3" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-3"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/expander">NuttX GPIO Expander for PineDio Stack BL604</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
3 May 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>PineDio Stack BL604 RISC-V Board has an interesting problem on Apache NuttX RTOS... Too many GPIOs! Let's fix this with a GPIO Expander</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-4" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-4"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/touch">NuttX Touch Panel Driver for PineDio Stack BL604</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 April 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we created the Apache NuttX RTOS Driver for Hynitron CST816S I2C Touch Panel... For PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-5" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-5"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/pinedio2">PineDio Stack BL604 runs Apache NuttX RTOS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
12 April 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Running Apache NuttX RTOS on PineDio Stack BL604 RISC-V board... With ST7789 Display, LVGL Graphics and LoRaWAN</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-6" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-6"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/st7789">ST7789 Display with LVGL Graphics on Apache NuttX RTOS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
2 April 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>RISC-V BL602 SoC with ST7789 SPI Display and LVGL Graphics Library... Let's make it work on Apache NuttX RTOS!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-7" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-7"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rusti2c">Rust talks I2C on Apache NuttX RTOS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 March 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Reading the Bosch BME280 I2C Sensor with Rust Embedded HAL... On BL602 RISC-V SoC and Apache NuttX RTOS</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-8" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-8"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/bme280">Apache NuttX Driver for BME280 Sensor: Ported from Zephyr OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
10 March 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Apache NuttX OS talks I2C with Bosch BME280 Sensor on BL602 RISC-V SoC... Thanks to the BME280 Driver ported from Zephyr OS</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-9" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-9"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/ikea">Connect IKEA Air Quality Sensor to Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
12 February 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we expose the UART Port on IKEA VINDRIKTNING Air Quality Sensor... And read the PM 2.5 data with PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-10" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-10"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/loader">BL602 EFlash Loader: Reverse Engineered with Ghidra</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
2 February 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What's inside the EFlash Loader that flashes all firmware to the BL602 RISC-V SoC</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-11" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-11"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/auto">Auto Flash and Test NuttX on RISC-V BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
26 January 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we automagically flash and test the daily build of Apache NuttX OS on BL602 RISC-V SoC</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-12" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-12"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rust2">Rust on Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
12 January 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we run Rust programs on Apache NuttX OS... And transmit a LoRa Message with Rust</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-13" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-13"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/cbor2">Encode Sensor Data with CBOR on Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
10 January 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Compressing Sensor Data with CBOR on Apache NuttX OS... By calling TinyCBOR Library</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-14" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-14"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lorawan3">LoRaWAN on Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
3 January 2022
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Porting Semtech's LoRaWAN Stack to Apache NuttX OS... And testing it on PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-15" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-15"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/sx1262">LoRa SX1262 on Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 December 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Porting the LoRa Driver for Semtech SX1262 from Linux to Apache NuttX OS... And testing it on PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-16" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-16"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/spi2">SPI on Apache NuttX OS</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
13 December 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we transmit and receive data over SPI on Apache NuttX OS... By coding a NuttX Device Driver</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-17" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-17"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/nuttx">Apache NuttX OS on RISC-V BL602 and BL604</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
24 November 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build, flash and test the Apache NuttX operating system on BL602 and BL604 RISC-V SoCs</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-18" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-18"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/gateway">PineDio LoRa Gateway: Testing The Prototype</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
11 November 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we test the pre-production PineDio LoRa Gateway by Pine64... And connect it to The Things Network</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-19" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-19"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/usb">Build a Linux Driver for PineDio LoRa SX1262 USB Adapter</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
28 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build a LoRa SX1262 Driver for PineDio USB Adapter... And test it on Pinebook Pro</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-20" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-20"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/prometheus">Monitor IoT Devices in The Things Network with Prometheus and Grafana</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we monitor our IoT Sensor Devices connected to The Things Network... With Prometheus Time Series Database and Grafana Dashboards</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-21" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-21"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/payload">CBOR Payload Formatter for The Things Network</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we decode CBOR Sensor Data inside The Things Network... With a CBOR Payload Formatter</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-22" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-22"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/tsen">Internal Temperature Sensor on BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
14 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we read the Internal Temperature Sensor on the BL602 and BL604 RISC-V SoCs... And transmit to The Things Network</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-23" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-23"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/roblox">IoT Digital Twin with Roblox and The Things Network</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
8 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Can we use Roblox to monitor and control an IoT Device... Through LoRaWAN and The Things Network?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-24" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-24"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/cbor">Encode Sensor Data with CBOR on BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
5 October 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we compress Sensor Data with CBOR... And transmit over LoRaWAN on the BL602 / BL604 RISC-V SoC</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-25" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-25"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/grafana">Grafana Data Source for The Things Network</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
27 September 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we visualise Sensor Data from The Things Network... With a Custom MQTT Data Source in Grafana</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-26" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-26"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/ttn">The Things Network on PineDio Stack BL604 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 September 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we join The Things Network and send data to the cloud on the new PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-27" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-27"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lorawan2">LoRaWAN on PineDio Stack BL604 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
16 September 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we test LoRaWAN on the new PineDio Stack BL604 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-28" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-28"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rhai">Rust on RISC-V BL602: Rhai Scripting</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 September 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Can we drag-and-drop Rhai Scripts... And run them on WebAssembly and BL602 RISC-V SoC?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-29" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-29"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/pinedio">PineDio Stack BL604 RISC-V Board: Testing The Prototype</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
29 August 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What's it like to create Open Source Software for brand new prototype hardware? Read on to find out!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-30" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-30"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rustsim">Rust on RISC-V BL602: Simulated with WebAssembly</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
16 August 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Can we run Rust Firmware for BL602 RISC-V SoC in a Web Browser... Simulated with WebAssembly?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-31" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-31"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/adc">Rust on RISC-V BL602: Is It Sunny?</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
3 August 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we create Rust Firmware that reads Analog Inputs... With the Analog-to-Digital Converter on RISC-V BL602</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-32" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-32"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/bl706">RISC-V BL706 Audio Video Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
14 July 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What's inside the Bouffalo Lab RISC-V BL706 Audio Video Board... And how it differs from BL602</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-33" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-33"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/wifi">Reverse Engineering WiFi on RISC-V BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
7 July 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What happens inside the WiFi Driver on RISC-V BL602... And how we found the incomplete source code for the driver</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-34" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-34"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/tflite">Machine Learning on RISC-V BL602 with TensorFlow Lite</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 June 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we run TensorFlow Lite on RISC-V BL602... To create a Glowing LED</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-35" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-35"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/boot">BL602 Bootloader</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
9 June 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>All about the BL602 RISC-V Bootloader... And how it loads the Application Firmware into XIP Flash Memory</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-36" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-36"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/wasm">Simulate RISC-V BL602 with WebAssembly, uLisp and Blockly</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
27 May 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we simulate the BL602 RISC-V SoC with uLisp in WebAssembly... And preview Blockly uLisp Apps in the Web Browser</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-37" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-37"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lisp">uLisp and Blockly on PineCone BL602 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
14 May 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Porting the uLisp Interpreter to PineCone BL602 RISC-V Board... And writing graphical programs with Blockly (Scratch)</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-38" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-38"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lorawan">PineCone BL602 Talks LoRaWAN</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
11 May 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we connect PineCone BL602 RISC-V Board to LoRaWAN... With the Pine64 RFM90 LoRa Module</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-39" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-39"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/wisgate">Build a LoRaWAN Network with RAKwireless WisGate Developer Gateway</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
30 April 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we set up our own LoRaWAN Network with RAKwireless RAK7248 WisGate Developer D4H Gateway... And test it with RAKwireless WisBlock in Arduino</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-40" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-40"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rust">Run Rust RISC-V Firmware with BL602 IoT SDK</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 April 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build, flash and run Rust firmware on BL602 RISC-V SoC... With the BL602 IoT SDK</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-41" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-41"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lora2">PineCone BL602 RISC-V Board Receives LoRa Packets</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 April 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How PineCone BL602 RISC-V Board with SX1276 receives LoRa packets... Transmitted by RAKwireless WisBlock</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-42" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-42"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/wisblock">RAKwireless WisBlock talks LoRa with PineCone BL602 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
11 March 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we receive LoRa packets transmitted by PineCone BL602 RISC-V Board ... With RAKwireless WisBlock in Arduino</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-43" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-43"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/lora">Connect PineCone BL602 to LoRa Transceiver</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
7 March 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we transmit LoRa packets on PineCone BL602 RISC-V Board ... With Semtech 1276 or Hope RF96</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-44" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-44"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/book">The RISC-V BL602 Book</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
20 February 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Your free open-source resource for learning RISC-V BL602 SoC</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-45" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-45"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/uart">PineCone BL602 Talks UART to Grove E-Ink Display</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
19 February 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we render an image with PineCone BL602 RISC-V Board ... On Grove Triple Colour E-Ink Display with UART Interface</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-46" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-46"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/display">PineCone BL602 Blasting Pixels to ST7789 Display with LVGL Library</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
16 February 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we render text and graphics on PineCone BL602 RISC-V Board ... With ST7789 SPI Display and LVGL Graphics Library</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-47" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-47"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/spi">PineCone BL602 talks SPI too!</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
7 February 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>PineCone BL602 RISC-V Board talks to BME280 Sensor over SPI... Let's find out how</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-48" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-48"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/i2c">PineCone BL602 talks to I2C Sensors</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
29 January 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we call the BL602 RISC-V Hardware Abstraction Layer to access the BME280 I2C Sensor</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-49" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-49"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/gpio">Mynewt GPIO ported to PineCone BL602 RISC-V Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 January 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we ported the BL602 RISC-V Hardware Abstraction Layer to Apache Mynewt ... Starting with GPIO</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-50" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-50"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/led">Control PineCone BL602 RGB LED with GPIO and PWM</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
6 January 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Explore the BL602 GPIO and PWM Demo Firmware... And how they call the GPIO and PWM Hardware Abstraction Layer</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-51" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-51"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/flash">Flashing Firmware to PineCone BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
1 January 2021
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What happens when we flash RISC-V firmware to PineCone BL602 Board... And what's inside the BL602 Boot Image, Partition Table, Device Tree and EFuse Configuration</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-52" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-52"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/mynewt">Porting Mynewt to PineCone BL602</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 December 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we port Apache Mynewt embedded operating system to the PineCone BL602 RISC-V Board</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-53" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-53"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/advocate">Better Open Source Advocate</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 December 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>I made mistakes in 2020... Here's how I'll do better in 2021</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-54" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-54"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/debug">Debug Rust on PineCone BL602 with VSCode and GDB</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
14 December 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build and debug Embedded Rust Firmware for PineCone BL602... With VSCode and GDB</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-55" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-55"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/openocd">Connect PineCone BL602 to OpenOCD</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
11 December 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we connect PineCone BL602 Evaluation Board to OpenOCD... For flashing and debugging RISC-V firmware</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-56" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-56"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/pinecone">Quick Peek of PineCone BL602 RISC-V Evaluation Board</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
29 November 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>What's inside the PineCone BL602 Evaluation Board... And how we're using it to contribute to the RISC-V Open Source Ecosystem</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-57" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-57"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/handdrawn">(UNFINISHED) Draw your own PineTime Watch Face... From WebAssembly to Embedded Rust</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 November 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build a hand-drawn Watch Face for PineTime Smart Watch... Starting from WebAssembly to Embedded Rust</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-58" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-58"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/watchface">Create Your Own PineTime Watch Face in Rust... And Publish on crates.io</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
17 October 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build PineTime Watch Faces with Rust and LVGL... And publish them on crates.io</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-59" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-59"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/timesync">Bluetooth Time Sync and LVGL on PineTime Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
16 October 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How PineTime syncs the time over Bluetooth LE with Mynewt and NimBLE... And how we create Watch Faces with LVGL</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-60" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-60"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-riot/articles/watch_face">Porting PineTime Watch Face from C to Rust On RIOT with LVGL</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
13 September 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Converting Embedded C to Rust is not that hard... Here's how we convert a PineTime Watch Face with LVGL from C to Rust on RIOT</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-61" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-61"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://summit.riot-os.org/2020/wp-content/uploads/sites/15/2020/09/s4-2-Lup-Yuen-Lee.pdf">Safer, Simpler Embedded Programs with Rust on RIOT (Presentation)</a>
</span>
</span>
<span class="publisher">
in RIOT Summit
</span>
</div>
<span class="date">
11 September 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Tired of pointer problems on Embedded C? Its time to switch over to a safer, simpler way of coding: Embedded Rust. Well look at Rust hosted on RIOT and how its used to create LVGL watch apps for PineTime Smart Watch.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-62" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-62"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://www.youtube.com/watch?v&#x3D;LvfCSnOM1Hs">Safer, Simpler Embedded Programs with Rust on RIOT (Video)</a>
</span>
</span>
<span class="publisher">
in RIOT Summit
</span>
</div>
<span class="date">
11 September 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Tired of pointer problems on Embedded C? Its time to switch over to a safer, simpler way of coding: Embedded Rust. Well look at Rust hosted on RIOT and how its used to create LVGL watch apps for PineTime Smart Watch.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-63" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-63"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/simulator">Preview PineTime Watch Faces in your Web Browser with WebAssembly</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
19 August 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build and preview PineTime Watch Faces with only a web browser... No computer needed!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-64" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-64"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/cloud">Build PineTime Firmware in the Cloud with GitHub Actions</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
27 July 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Learn to build PineTime Smart Watch Firmware in the Cloud... No computer needed!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-65" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-65"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/wayland">Wayland and LVGL on PinePhone with Ubuntu Touch</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
25 July 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Learn about Wayland and Ubuntu Touch on PinePhone... And how we build PinePhone Apps with LVGL</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-66" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-66"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/ast">(UNFINISHED) Auto Convert Go to Dart with an Abstract Syntax Tree</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
9 July 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we convert Go code to Dart and Flutter automatically with an Abstract Syntax Tree</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-67" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-67"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/bloc">Flutter State Management with Bloc for PineTime Companion App</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
27 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we manage state with the Bloc Library in the Flutter Companion App (Android and iOS) for PineTime Smart Watch</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-68" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-68"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/pinetime">PineTime doesn&#x27;t run Linux... But that&#x27;s OK!</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
19 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Getting started with PineTime Smart Watch</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-69" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-69"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/gotk3">Your First GTK App with Go and VSCodium</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Creating desktop apps on Linux doesn't have to be hard... Let's build GTK+ 3 apps in Go with the gotk3 library!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-70" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-70"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/companion">Convert Go to Flutter and Dart for PineTime Companion App</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
17 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How we build the Flutter Companion App (Android and iOS) for PineTime Smart Watch by converting Go to Dart</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-71" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-71"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/flutter">Your First Bluetooth Low Energy App with Flutter</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Bluetooth Low Energy apps are ridiculously easy to code with Flutter and Dart, let me show you how!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-72" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-72"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/micropython">Porting MicroPython and wasp-os to Mynewt on PineTime Smart Watch (nRF52)</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
2 June 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Making wasp-os truly awesome with full multitasking, interoperable firmware updates and a common companion app</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-73" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-73"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/dfutest">Wireless Firmware Update In Action on PineTime Smart Watch (nRF52)</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
20 May 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Observe step-by-step the Wireless Firmware Update running on PineTime Smart Watch (nRF52) with MCUBoot Bootloader, NimBLE Bluetooth LE Stack and Apache Mynewt</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-74" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-74"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/mcuboot">MCUBoot Bootloader for PineTime Smart Watch (nRF52)</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 May 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Wireless Firmware Updates done right on PineTime Smart Watch... With the open source MCUBoot Bootloader from Apache Mynewt and Zephyr</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-75" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-75"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/spiflash">Configure Mynewt for SPI Flash on PineTime Smart Watch (nRF52)</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 May 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Configure Mynewt OS to enable access to SPI Flash Memory on PineTime Smart Watch</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-76" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-76"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/dfu">Firmware Update over Bluetooth Low Energy on PineTime Smart Watch</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
11 May 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Flash any firmware to PineTime from our mobile phone... Without opening the watch!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-77" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-77"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/pinetime-rust-mynewt/articles/chip8">CHIP-8 Game Emulator in Rust for PineTime Smart Watch</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
5 March 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Running Retro Games with Rust is not that hard on PineTime Smart Watch. Here's how I ported a CHIP-8 Game Emulator to PineTime</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-78" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-78"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://github.com/lupyuen/visual-embedded-rust">Visual Rust for PineTime Smart Watch</a>
</span>
</span>
<span class="publisher">
in Visual Studio Marketplace
</span>
</div>
<span class="date">
5 March 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Create and edit Embedded Rust programs visually by dragging and dropping blocks</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-79" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-79"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/my-first-week-as-embedded-foss-advocate">My First Week As Embedded FOSS Advocate</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 February 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Have humans become so greedy for profit… That we have forgotten how to teach one another and advance our species?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-80" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-80"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/@ly.lee/debug-riot-os-on-pinetime-with-vscode-12f00c69c120">Debug RIOT-OS on PineTime with VSCode</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
2 February 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>VSCode debugging configuration for RIOT</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-81" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-81"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/@ly.lee/if-youre-in-the-east-please-consider-rust-23fa05873397">If youre in the East, please consider Rust!</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
24 January 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Coding in Embedded C is like building a skyscraper without scaffolding</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-82" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-82"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/debug-rust-mynewt-firmware-for-pinetime-on-raspberry-pi">Debug Rust+Mynewt Firmware for PineTime on Raspberry Pi</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
23 January 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Using only a Raspberry Pi, we can debug the firmware on PineTime Smart Watch: Step into the flashed program line by line, set a breakpoint to pause execution at a line, inspect variables at runtime, … Just like the Embedded Pros!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-83" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-83"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/openocd-on-raspberry-pi-better-with-swd-on-spi">OpenOCD on Raspberry Pi: Better with SWD on SPI</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 January 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Instead of sending SWD data over GPIO one bit at a time, what if we could blast out the data over Raspberry Pis SPI interface?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-84" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-84"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/build-and-flash-rust-mynewt-firmware-for-pinetime-smart-watch">Build and Flash Rust+Mynewt Firmware for PineTime Smart Watch</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
8 January 2020
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Programming a PineTime is not that hard… All you need is a Raspberry Pi, some wires and a little creativity!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-85" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-85"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt">Optimising PineTimes Display Driver with Rust and Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
29 December 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Simple tweaks like Batched Updates and Non-Blocking SPI can have a huge impact on rendering performance</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-86" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-86"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch">Porting [druid] Rust Widgets to PineTime Smart Watch</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
14 December 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Code Watch Apps in Rust the Declarative Way</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-87" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-87"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/my-5-year-iot-mission">My 5-Year IoT Mission</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 December 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>5 years ago I decided to fix every link in the IoT Chain so that we can create really useful and affordable IoT gadgets, the Lean and Agile Way</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-88" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-88"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/hey-gd32-vf103-on-risc-v-i-surrender-for-now">Hey GD32 VF103 on RISC-V: I surrender… For now</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
23 November 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Porting Mynewt OS to GD32 VF103 on RISC-V was a nightmare</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-89" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-89"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller">Building a Rust Driver for PineTimes Touch Controller</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 November 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Programming the Hynitron CST816S Capacitive Touch Controller</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-90" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-90"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot">Sneak Peek of PineTime Smart Watch… And why its perfect for teaching IoT</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 November 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>PineTime is the spiritual successor to BBC micro:bit</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-91" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-91"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/porting-apache-mynewt-os-to-gigadevice-gd32-vf103-on-risc-v">Porting Apache Mynewt OS to GigaDevice GD32 VF103 on RISC-V</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
30 October 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Many GD32 VF103 RISC-V developer boards are coming real soon... And Mynewt OS would be perfect for them</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-92" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-92"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/bluetooth-mesh-with-nrf52-and-apache-mynewt">Bluetooth Mesh with nRF52 and Apache Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 October 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Set up an nRF52 mesh network, step by step, without any coding</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-93" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-93"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/coding-nrf52-with-rust-and-apache-mynewt-on-visual-studio-code">Coding nRF52 with Rust and Apache Mynewt on Visual Studio Code</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
3 October 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>nRF52 works with popular open-source tools on Windows and macOS like VSCode, OpenOCD, Rust and ST-Link</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-94" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-94"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/build-an-nb-iot-gps-tracker-on-stm32-l476-with-apache-mynewt-and-embedded-rust">Build an NB-IoT GPS Tracker on STM32 L476 with Apache Mynewt and Embedded Rust</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
22 September 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Lets build a simple gadget that determines its current location based on received GPS signals… And transmits the location to a server via NB-IoT</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-95" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-95"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/quick-peek-of-huawei-liteos-with-nb-iot-on-ghostyu-nb-ek-l476-developer-kit">Quick Peek of Huawei LiteOS with NB-IoT on Ghostyu NB-EK-L476 Developer Kit (STM32L476RCT6)</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 September 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Peek into the LiteOS + Application source code that was bundled with the NB-IoT Developer Kit</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-96" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-96"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/low-power-nb-iot-on-stm32-blue-pill-with-apache-mynewt-and-embedded-rust">Low Power NB-IoT on STM32 Blue Pill with Apache Mynewt and Embedded Rust</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
30 August 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Learn to optimise the power consumption of the NB-IoT Sensor Application in the previous tutorial</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-97" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-97"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/visual-embedded-rust-programming-with-visual-studio-code">Visual Embedded Rust Programming with Visual Studio Code</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
17 August 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Create and edit Embedded Rust programs for STM32 Blue Pill and Apache Mynewt… By dragging and dropping blocks!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-98" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-98"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/advanced-topics-for-visual-embedded-rust-programming">Advanced Topics for Visual Embedded Rust Programming</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
17 August 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Watch what happens behind the scenes when you create a Visual Embedded Rust program</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-99" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-99"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/rust-rocks-nb-iot-stm32-blue-pill-with-quectel-bc95-g-on-apache-mynewt">Rust Rocks NB-IoT! STM32 Blue Pill with Quectel BC95-G on Apache Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
4 August 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Hardly anyone writes embedded programs in Rust for microcontrollers (like STM32 Blue Pill), we all use C. But we really should switch to Rust!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-100" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-100"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/connect-stm32-blue-pill-to-nb-iot-with-quectel-bc95-g-and-apache-mynewt">Connect STM32 Blue Pill to NB-IoT with Quectel BC95-G and Apache Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
25 July 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Lets build an IoT sensor with a real microcontroller — STM32 Blue Pill — and a real NB-IoT module — Quectel BC95-G!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-101" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-101"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/get-started-with-nb-iot-and-quectel-modules">Get Started with NB-IoT and Quectel modules</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
15 July 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How to use a Quectel evaluation board to send a CoAP message to the CoAP server hosted at thethings.io</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-102" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-102"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/@ly.lee/visual-programming-with-embedded-rust-yes-we-can-with-apache-mynewt-and-google-blockly-8b67ef7412d7">Visual Programming with Embedded Rust? Yes we can with Apache Mynewt and Google Blockly!</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
11 July 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Simpler embedded coding, the visual way</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-103" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-103"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/safer-simpler-embedded-rust-with-apache-mynewt-on-stm32-blue-pill">Safer, Simpler Embedded Rust with Apache Mynewt on STM32 Blue Pill</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
7 July 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Declarative and Procedural Macros (plus bindgen and tips for Visual Studio Code) to protect Embedded Rust coders from stumbling into embedded traps</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-104" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-104"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/hosting-embedded-rust-apps-on-apache-mynewt-with-stm32-blue-pill">Hosting Embedded Rust apps on Apache Mynewt with STM32 Blue Pill</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
9 June 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Its time to drop our legacy programming practices and adopt smarter, safer ways to exploit these microcontrollers… starting with Apache Mynewt and Rust.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-105" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-105"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/build-your-iot-sensor-network-stm32-blue-pill-nrf24l01-esp8266-apache-mynewt-thethings-io">Build Your IoT Sensor NetworkSTM32 Blue Pill + nRF24L01 + ESP8266 + Apache Mynewt + thethings.io</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
27 May 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Let's build a Sensor Network running on two Blue Pills with nRF24L01 and ESP8266</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-106" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-106"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/super-blue-pill-like-stm32-blue-pill-but-better">Super Blue PillLike STM32 Blue Pill, But Better!</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
21 May 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Friendlier for newbies, supports ESP8266 WiFi and nRF24L01</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-107" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-107"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/connect-stm32-blue-pill-to-esp8266-with-apache-mynewt">Connect STM32 Blue Pill to ESP8266 with Apache Mynewt</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
20 April 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>And WiFi Geolocation with ESP8266</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-108" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-108"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/create-your-iot-gadget-with-apache-mynewt-and-stm32-blue-pill">Create your IoT gadget with Apache Mynewt and STM32 Blue Pill</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
26 March 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Apache Mynewt is a free, open-source realtime operating system for microcontrollers</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-109" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-109"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194129/https://medium.com/@ly.lee/push-aws-iot-sensor-data-to-redshift-with-kinesis-firehose-385506264a00?source&#x3D;friends_link&amp;sk&#x3D;bd45be8b48fbb328ed1d65d10a8d7c38">Push AWS IoT sensor data to Redshift with Kinesis Firehose</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
10 March 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>AWS IoT Rules Engine and Kinesis Firehose were designed to stream live sensor data into Redshift for storage and analysis</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-110" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-110"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194022/https://medium.com/@ly.lee/transform-and-import-a-json-file-into-amazon-redshift-with-aws-glue-3371006e03ca?source&#x3D;friends_link&amp;sk&#x3D;a57bcec30f5b6b1c978dc4f35d8d6427">Transform and Import a JSON file into Amazon Redshift with AWS Glue</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
8 March 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>With AWS Glue its now possible to keep our Redshift data warehouses in sync with JSON-based data stores… So we may exploit the full potential of business analytics and machine learning in AWS!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-111" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-111"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194031/https://medium.com/@ly.lee/connecting-aws-lambda-node-js-to-redshift-or-postgresql-try-aws-lambda-layers-78e60c27f39b?source&#x3D;friends_link&amp;sk&#x3D;84d0f78bddfece6049c2395741824e58">Connecting AWS Lambda Node.JS to Redshift or PostgreSQL? Try AWS Lambda Layers!</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
6 March 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>With Lambda Layers its really easy to connect our Node.js Lambda Function to Redshift or PostgreSQL</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-112" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-112"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-bootloading-the-webusb-bootloader">STM32 Blue PillBootloading the WebUSB Bootloader</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
25 February 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How do we upgrade the Bootloader when its always running in the background, waiting for flashing requests? This article explains a special technique I used to upgrade the MakeCode Bootloader over WebUSB… I call it “Baseloading”</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-113" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-113"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-dissecting-the-webusb-bootloader-for-makecode">STM32 Blue PillDissecting the WebUSB Bootloader for MakeCode</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
16 February 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Explore the innards of the MakeCode Bootloader that I have ported to Blue Pill</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-114" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-114"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-unit-testing-with-qemu-blue-pill-emulator">STM32 Blue Pill — Unit Testing with Qemu Blue Pill Emulator</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
7 February 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Computing sensor values in IoT devices can be prone to bugs… And Unit Testing can help to stop the bugs before they pollute the entire IoT chain</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-115" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-115"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-shrink-your-math-libraries-with-qfplib">STM32 Blue Pill Shrink your math libraries with Qfplib</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
30 January 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Filling in tiny math functions with nano-float</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-116" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-116"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-analyse-and-optimise-your-ram-and-rom">STM32 Blue PillAnalyse and Optimise Your RAM and ROM</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
24 January 2019
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Learn the tips and tools to prevent Blue Pill Bloat</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-117" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-117"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://lupyuen.github.io/articles/stm32-blue-pill-usb-bootloader-how-i-fixed-the-usb-storage-serial-dfu-and-webusb-interfaces">STM32 Blue Pill USB BootloaderHow I fixed the USB Storage, Serial, DFU and WebUSB interfaces</a>
</span>
</span>
<span class="publisher">
in lupyuen.github.io
</span>
</div>
<span class="date">
18 December 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>STM32 Blue Pill is a remarkable microcontroller for US$ 2. I proved it by running the USB Storage, USB Serial, USB DFU (Direct Firmware Upgrade) and WebUSB interfaces all on the same Blue Pill concurrently, without any additional hardware!</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-118" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-118"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194221/https://medium.com/@ly.lee/work-in-progress-stm32-blue-pill-visual-programming-with-makecode-codal-and-libopencm3-422d308f252e?source&#x3D;friends_link&amp;sk&#x3D;b39519335652415d5f4aa17c9e4af1d2">STM32 Blue Pill Visual Programming with MakeCode, CODAL and libopencm3</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
9 December 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>This work-in-progress document describes an incomplete implementation of STM32 Blue Pill visual programming</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-119" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-119"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194157/https://medium.com/@ly.lee/sigfox-teacher-answers-your-questions-7e47122716dc?source&#x3D;friends_link&amp;sk&#x3D;7668c0b2ecc6333cd60ff8e536501ebd">Sigfox Teacher Answers Your Questions</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
7 December 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>I teach Sigfox to working professionals. Here are their questions…</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-120" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-120"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://www.kidscoding8.com/98097.html">以 thethings.iO 來將 BBC micro:bit 感測器圖形化</a>
</span>
</span>
<span class="publisher">
in 少儿编程教程网
</span>
</div>
<span class="date">
29 November 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>如果您可以將您以電池供應電力的BBC micro:bit設置在城市裡的任何一個角落來收集感測資料 … 或者是隨時查看從家裡、學校、工作場所即時更新的感測資料 … 不是很酷嗎?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-121" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-121"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194120/https://medium.com/@ly.lee/visualising-bbc-micro-bit-sensors-with-thethings-io-5689fb613531?source&#x3D;friends_link&amp;sk&#x3D;a8cfc404362ecbe3a26823f6a70fa5cb">Visualising BBC micro:bit sensors with thethings.iO</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
17 November 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Wouldnt it be cool if you could plant your BBC micro:bit anywhere in the city (powered by batteries) to collect sensor data… And watch live updates of the sensor data from your home, school, workplace, … Even on the go?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-122" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-122"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://makerpro.cc/2018/11/connect-bbc-microbit-and-sigfox-iot/">連接 BBC micro:bit 與 Sigfox 物聯網</a>
</span>
</span>
<span class="publisher">
in MakerPRO
</span>
</div>
<span class="date">
13 November 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>使用 BBC micro:bit 連接 Sigfox 物聯網網路會是一個很好幫助孩子們理解感測器與感測網路如何運作的理想方式。micro:bit 是新式以電池提供電力的感測器裝置典範具備充足的處理能力並支援大多數的感測器類型。在教育用途上Sigfox 可能是今日用於城市規模測試的感測網路之中,最為便宜的方案。</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-123" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-123"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/connect-bbc-micro-bit-to-sigfox-4d1603d19350">Connect BBC micro:bit to Sigfox</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
5 November 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>BBC micro:bit connected to the Sigfox IoT network is the perfect way to help kids understand how Sensors and Sensor Networks operate. The micro:bit is a good representation of a modern battery-powered sensor device, with ample processing power and support for most types of sensors. For education, Sigfox is likely the cheapest option today for experimenting with a city-wide sensor network.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-124" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-124"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://makerpro.cc/2018/11/connect-blue-pill-with-sigfox-part-one/">連接 STM32F103C8T6 Blue Pill 開發板與 Sigfox 物聯網</a>
</span>
</span>
<span class="publisher">
in MakerPRO
</span>
</div>
<span class="date">
17 October 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>以 STM32 微處理器為核心的 STM32F103C8T6 Blue Pill 開發板連接 Sigfox 收發器模組來接取 Sigfox 物聯網網路可能會是設計一款低功率物聯網裝置的最佳組合。</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-125" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-125"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/connect-stm32-blue-pill-to-sigfox-28c6f91bddc1">Connect STM32 Blue Pill to Sigfox</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
28 September 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>STM32 “Blue Pill” microcontroller connected to a transceiver module for the Sigfox IoT network might be the best combination for low-power IoT devices right now.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-126" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-126"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/watch-stm32-blue-pill-juggle-two-spi-sensors-with-dma-20cd1aa89869">Watch STM32 Blue Pill Juggle Two SPI Sensors With DMA</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
19 September 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>This article that explains all that I have learnt about SPI ports, DMA and interrupts on the Blue Pill</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-127" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-127"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/program-your-first-fpga-with-gowin-gw1n-4-b0d5c22b9fea">Program Your First FPGA With GOWIN GW1N-4</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
5 September 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>As we learn how to program the FPGA, well soon realise that FPGA programming is really extraordinary, unlike any other kind of programming we have done before</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-128" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-128"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/juggling-stm32-blue-pill-for-arduino-jugglers-edf6820dc808">Juggling STM32 Blue Pill For Arduino Jugglers</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
27 August 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Upsizing from Arduino Uno to a 32-bit STM microcontroller doesnt have to be hard</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-129" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-129"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/juggling-sigfox-downlink-and-arduino-sensors-with-cocoos-4594be59bf1b">Juggling Sigfox Downlink And Arduino Sensors With cocoOS</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
20 August 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Using the cocoOS task scheduler to run Sensor Tasks concurrently while waiting for the Network and UART Tasks</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-130" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-130"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/juggling-arduino-sensors-with-cocoos-403e14ec28be">Juggling Arduino Sensors With cocoOS</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
11 August 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Juggle multiple Arduino sensors, using an open source library for cooperative processing: cocoOS</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-131" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-131"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/why-use-fpga-for-iot-heres-what-i-think-e513772514d6">Why use FPGA for IoT? Heres what I think…</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
31 July 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Since FPGAs are already mainstream, could we use them to create IoT devices that are more power-efficient than current devices based on microcontrollers?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-132" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-132"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/coding-the-stm32-blue-pill-with-rust-and-visual-studio-code-b21615d8a20">Coding the STM32 Blue Pill with Rust and Visual Studio Code</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
10 July 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Let's learn Rust, a modern systems programming language that promotes safe, concurrent low-level coding</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-133" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-133"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/making-my-first-ever-pcb-with-seeed-fusion-pcb-assembly-service-9af5736016b3">Making my first ever PCB with Seeed Fusion PCB assembly service</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
5 July 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Heres the story of the first gadget that I have ever created, with help from the brilliant minds at Seeed in Shenzhen</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-134" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-134"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/running-rust-and-freertos-on-the-padi-iot-stamp-fb36c5ef4844">Running Rust and FreeRTOS on the PADI IoT Stamp</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
18 June 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Better tools for building robust and reliable programs for microcontrollers</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-135" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-135"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194108/https://medium.com/@ly.lee/first-impressions-of-alibaba-cloud-aliyun-688dc46fa9b8?source&#x3D;friends_link&amp;sk&#x3D;0685f5028f4ce9575dfae9cc9515143d">First Impressions of Alibaba Cloud (Aliyun)</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
21 May 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Could Alibaba Cloud be the economical cloud for high volume IoT?</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-136" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-136"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/multitasking-on-the-arduino-with-a-finite-state-machine-and-why-youll-need-it-for-sigfox-d52dafc55d8e">Multitasking on the Arduino with a Finite State Machine And why youll need it for Sigfox Downlink</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
13 May 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How to implement a Finite State Machine on the Arduino Uno</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-137" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-137"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/coinmonks/realtime-sensor-data-processing-with-thethings-io-and-amazon-web-services-kinesis-e12ebb022106">Realtime sensor data processing with thethings.io and Amazon Web Services Kinesis</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
1 May 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>How to experiment with IoT today while minimising the security and performance risks, and keeping costs low</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-138" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-138"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/@ly.lee/i-teach-iot-heres-what-you-ll-learn-3e0d1b997dd0">I Teach IoT. Heres what youll learn</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
24 April 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Arduino, Low Power Networks, IoT Networks, IoT Analytics, ...</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-139" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-139"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://www.opengovasia.com/articles/developing-cost-effective-energy-efficient-iot-solutions-for-outdoor-as-well-as-indoor-applications">Developing cost-effective, energy efficient IoT solutions for outdoor as well as indoor applications</a>
</span>
</span>
<span class="publisher">
in OpenGov
</span>
</div>
<span class="date">
20 March 2018
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Lup Yuen talks about two classes of IoT, deep IoT and wide IoT. Deep IoT devices require high bandwidth and power supply. UnaBiz looks at wide IoT, which refers to devices that are very light, battery-powered and operate on pervasive networks. They can work anytime, anywhere in Singapore and do not rely on WiFi or the cellular network.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-140" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-140"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194035/https://medium.com/@ly.lee/how-to-build-your-sigfox-server-version-1-0-6763732692fd?source&#x3D;friends_link&amp;sk&#x3D;641f65c458ec59fa27dddbe7735b118a">How To Build Your Sigfox Server (Version 1.0)</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
14 October 2017
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Building highly reliable, robust and scalable systems for processing Sigfox messages</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-141" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-141"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/https://medium.com/@ly.lee/story-of-the-unashield-ff9e78fd7726">Story of the UnaShield</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
5 July 2017
</span>
</header>
<div class="item">
<div class="summary">
<p><p>Co-created with Upton Lai, the brilliant guy who could make anything</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-142" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-142"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://web.archive.org/web/20191204194240/https://medium.com/@ly.lee/iot-is-a-bad-word-9003d9fab638?source&#x3D;friends_link&amp;sk&#x3D;f7d58ebca338f326b6be8dcb79c7d6f5">IoT is a Bad Word</a>
</span>
</span>
<span class="publisher">
in Medium
</span>
</div>
<span class="date">
26 May 2017
</span>
</header>
<div class="item">
<div class="summary">
<p><p>IoT is about solving real problems (not imaginary ones) in a sustainable way</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-143" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-143"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://goo.gl/wLhDYo">Overcoming Productivity Challenges in the F&amp;B Industry</a>
</span>
</span>
<span class="publisher">
in Retail World Asia 2015
</span>
</div>
<span class="date">
23 April 2015
</span>
</header>
<div class="item">
<div class="summary">
<p><p> </p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-144" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-144"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="https://goo.gl/vt6WZf">Sigfox and Google Cloud Platform</a>
</span>
</span>
<span class="publisher">
in Google Developer Group Singapore DevFest
</span>
</div>
<span class="date">
20 October 2014
</span>
</header>
<div class="item">
<div class="summary">
<p><p> </p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-145" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-145"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="http://patentscope.wipo.int/search/en/detail.jsf?docId&#x3D;WO2012002906">Patent: Enlargement of video content streamed from the internet</a>
</span>
</span>
<span class="publisher">
in US Patent Office WO/2012/002906
</span>
</div>
<span class="date">
30 June 2010
</span>
</header>
<div class="item">
<div class="summary">
<p><p>This invention relates to a system for displaying video content streamed from a network in a full screen mode. The system receives receiving a network address based on a selection from a user. The system then transmits a request for content from the network address and subsequently receives the content associated with the network address. A search is performed on the content for data that provides displaying a video content in a full screen mode. Upon detecting the data, the process generates the data and displays video content in full screen mode.</p></p>
</div>
</div>
</section>
<section class="publication-item">
<input id="publication-item-146" type="checkbox" class="toggle-item" checked="checked" />
<label for="publication-item-146"></label>
<header>
<div class="header-left">
<span class="name">
<span class="website">
<a target="_blank" href="http://patentscope.wipo.int/search/en/detail.jsf?docId&#x3D;WO2008004981">Patent: A system and method for providing mobile services</a>
</span>
</span>
<span class="publisher">
in US Patent Office WO/2008/004981
</span>
</div>
<span class="date">
27 June 2007
</span>
</header>
<div class="item">
<div class="summary">
<p><p>A system and method for providing mobile services, the system comprising: a mobile device executing a client application for generating a mobile service request; and a hub server for receiving and processing the mobile service request, wherein the mobile service request comprises location data of the mobile device, and the hub server pushes one or more mobile service offers to the mobile device based on the location data. The method comprises executing a client application for generating a mobile service request on a mobile device; receiving and processing the mobile service request at a hub server; and pushing one or more mobile service offers from the hub server to the mobile device based on location data, wherein the mobile service request comprises location data of the mobile device.</p></p>
</div>
</div>
</section>
</section>
</section>
<section class="section margin1">
<header>
<h2 class='section-title'>Languages</h2>
</header>
<section id="languages">
<div class="display">
<h3 class="language">
English
</h3>
<div class="item">
<div class="level fluency native speaker">
<em>Native speaker</em>
<div class="bar"></div>
</div>
</div>
</div>
<div class="display">
<h3 class="language">
Mandarin
</h3>
<div class="item">
<div class="level fluency native speaker">
<em>Native speaker</em>
<div class="bar"></div>
</div>
</div>
</div>
<div class="display">
<h3 class="language">
Cantonese
</h3>
<div class="item">
<div class="level fluency fluent">
<em>Fluent</em>
<div class="bar"></div>
</div>
</div>
</div>
</section>
</section>
<section class="section margin1">
<header>
<h2 class='section-title' class='section-title'>Interests</h2>
</header>
<section id="interests">
<div class="item">
<h3 class="name">
How was this JSON Resume created?
</h3>
<div class="summary">
<p><p>https://github.com/lupyuen/lupyuen.github.io/blob/master/README.md</p></p>
</div>
</div>
</section>
</section>
</body>
</html>