summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2025-11-16 14:58:12 +0800
committerSadeep Madurange <sadeep@asciimx.com>2025-11-16 14:58:12 +0800
commitd18b728cb306de19b9d60d6226d5d27843ecc585 (patch)
tree68c69e09779642094b438f22632fb3a66ed49ba6
parentfc6763c2d0c3efd4c7f14f3f06cdf392526d5524 (diff)
downloadwww-d18b728cb306de19b9d60d6226d5d27843ecc585.tar.gz
Minor improvements to posts.
-rw-r--r--_archive/neo4j-a-star-search.md20
-rw-r--r--_projects/fpm-door-lock.md2
-rw-r--r--_site/archive/neo4j-a-star-search/index.html18
-rw-r--r--_site/feed.xml2
-rw-r--r--_site/posts.xml2
-rw-r--r--_site/projects/fpm-door-lock/index.html2
6 files changed, 19 insertions, 27 deletions
diff --git a/_archive/neo4j-a-star-search.md b/_archive/neo4j-a-star-search.md
index aae34b9..4db68d6 100644
--- a/_archive/neo4j-a-star-search.md
+++ b/_archive/neo4j-a-star-search.md
@@ -13,13 +13,11 @@ Performance issues with Neo4J’s shortest-path algorithms limited our search to
about 4,000 route points.
A graph is a finite set of vertices, and a subset of vertex pairs known as
-edges. Edges can have weights.
-
-In the case of vessel tracking, the route points can be modeled as a graph
-with the distances between them as weights. For different reasons, people are
-interested in minimizing (or maximizing) the weight of a path through a set of
-vertices. For instance, we may want to find the shortest path between two
-ports.
+edges. Edges can have weights. In the case of vessel tracking, the route points
+can be modeled as a graph with the distances between them as weights. For
+different reasons, people are interested in minimizing (or maximizing) the
+weight of a path through a set of vertices. For instance, we may want to find
+the shortest path between two ports.
Dijkstra's algorithm is one such algorithm that finds the shortest path between
two vertices. The one drawback of this algorithm is that it computes all the
@@ -309,10 +307,8 @@ public class ShortestPathAStar extends Algorithm<ShortestPathAStar> {
```
The heuristic function is domain-specific. If chosen wisely, it can
significantly speed up the search. In our case, we achieved a 300x speedup,
-enabling us to expand our search from 4,000 to 13,000 route points.
-
-The Neo4J graph algorithms open-source project <a
+enabling us to expand our search from 4,000 to 13,000 route points. The <a
href="https://github.com/neo4j-contrib/neo4j-graph-algorithms/releases/tag/3.4.0.0"
-class="external" target="_blank" rel="noopener noreferrer">v3.4</a> shipped
-with my implementation of the A* search algorithm.
+class="external" target="_blank" rel="noopener noreferrer">v3.4.0</a> of the
+Neo4J graph algorithms shipped with the A* search algorithm.
diff --git a/_projects/fpm-door-lock.md b/_projects/fpm-door-lock.md
index 19afa40..2725f36 100644
--- a/_projects/fpm-door-lock.md
+++ b/_projects/fpm-door-lock.md
@@ -54,7 +54,7 @@ The source code of the project, which includes a driver for the R503
fingerprint sensor module, is enclosed in the tarball linked at the end of the
page.
-## The circuit board
+## The PCB
For this project, I designed a custom PCB and had it fabricated by JLCPCB. Like
the software, the circuit is chiefly concerned with optimizing power
diff --git a/_site/archive/neo4j-a-star-search/index.html b/_site/archive/neo4j-a-star-search/index.html
index 92d350d..826ea2c 100644
--- a/_site/archive/neo4j-a-star-search/index.html
+++ b/_site/archive/neo4j-a-star-search/index.html
@@ -50,13 +50,11 @@ Performance issues with Neo4J’s shortest-path algorithms limited our search to
about 4,000 route points.</p>
<p>A graph is a finite set of vertices, and a subset of vertex pairs known as
-edges. Edges can have weights.</p>
-
-<p>In the case of vessel tracking, the route points can be modeled as a graph
-with the distances between them as weights. For different reasons, people are
-interested in minimizing (or maximizing) the weight of a path through a set of
-vertices. For instance, we may want to find the shortest path between two
-ports.</p>
+edges. Edges can have weights. In the case of vessel tracking, the route points
+can be modeled as a graph with the distances between them as weights. For
+different reasons, people are interested in minimizing (or maximizing) the
+weight of a path through a set of vertices. For instance, we may want to find
+the shortest path between two ports.</p>
<p>Dijkstra’s algorithm is one such algorithm that finds the shortest path between
two vertices. The one drawback of this algorithm is that it computes all the
@@ -345,10 +343,8 @@ public class ShortestPathAStar extends Algorithm&lt;ShortestPathAStar&gt; {
</code></pre></div></div>
<p>The heuristic function is domain-specific. If chosen wisely, it can
significantly speed up the search. In our case, we achieved a 300x speedup,
-enabling us to expand our search from 4,000 to 13,000 route points.</p>
-
-<p>The Neo4J graph algorithms open-source project <a href="https://github.com/neo4j-contrib/neo4j-graph-algorithms/releases/tag/3.4.0.0" class="external" target="_blank" rel="noopener noreferrer">v3.4</a> shipped
-with my implementation of the A* search algorithm.</p>
+enabling us to expand our search from 4,000 to 13,000 route points. The <a href="https://github.com/neo4j-contrib/neo4j-graph-algorithms/releases/tag/3.4.0.0" class="external" target="_blank" rel="noopener noreferrer">v3.4.0</a> of the
+Neo4J graph algorithms shipped with the A* search algorithm.</p>
</div>
<p class="post-author right">by Wickramage Don Sadeep Madurange</p>
diff --git a/_site/feed.xml b/_site/feed.xml
index f4a1df1..6c19f3d 100644
--- a/_site/feed.xml
+++ b/_site/feed.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-11-12T21:42:47+08:00</updated><id>/feed.xml</id><title type="html">ASCIIMX | Archive</title><author><name>Wickramage Don Sadeep Madurange</name></author><entry><title type="html">Neo4J A* search</title><link href="/archive/neo4j-a-star-search/" rel="alternate" type="text/html" title="Neo4J A* search" /><published>2025-09-14T00:00:00+08:00</published><updated>2025-09-14T00:00:00+08:00</updated><id>/archive/neo4j-a-star-search</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[Back in 2018, we used the Neo4J graph database to track the movement of marine vessels. We were interested in the shortest path a ship could take through a network of about 13,000 route points. Performance issues with Neo4J’s shortest-path algorithms limited our search to about 4,000 route points.]]></summary></entry><entry><title type="html">MOSFETs</title><link href="/archive/mosfet-switches/" rel="alternate" type="text/html" title="MOSFETs" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>/archive/mosfet-switches</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[Recently, I needed a low-power circuit for one of my battery-operated projects. Much of the system’s power savings depended on its ability to switch off power to components, such as servos, electronically when not needed. That’s how I stumbled upon MOSFETs, transistors capable of controlling circuits operating at voltages far above their own.]]></summary></entry><entry><title type="html">ATmega328P chips</title><link href="/archive/arduino-uno/" rel="alternate" type="text/html" title="ATmega328P chips" /><published>2025-04-10T00:00:00+08:00</published><updated>2025-04-10T00:00:00+08:00</updated><id>/archive/arduino-uno</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[This is a quick reference for wiring up ATmega328P ICs to run at 5V and 3.3V. While the 5V configuration is common, the 3.3V configuration can be useful in low-power applications and when interfacing with parts that themselves run at 3.3V. In this guide, the 5V setup is configured with a 16MHz crystal oscillator, while the 3.3V configuration makes use of an 8MHz crystal oscillator.]]></summary></entry><entry><title type="html">Bare-metal ATSAM3X8E chips</title><link href="/archive/arduino-due/" rel="alternate" type="text/html" title="Bare-metal ATSAM3X8E chips" /><published>2024-10-05T00:00:00+08:00</published><updated>2024-10-05T00:00:00+08:00</updated><id>/archive/arduino-due</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[This article is a step-by-step guide for programming bare-metal ATSAM3X8E chips found on Arduino Due boards. It also includes notes on the chip’s memory layout relevant for writing linker scripts. The steps described in this article were tested on an OpenBSD workstation.]]></summary></entry></feed> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2025-11-16T14:57:59+08:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">ASCIIMX | Archive</title><author><name>Wickramage Don Sadeep Madurange</name></author><entry><title type="html">Neo4J A* search</title><link href="http://localhost:4000/archive/neo4j-a-star-search/" rel="alternate" type="text/html" title="Neo4J A* search" /><published>2025-09-14T00:00:00+08:00</published><updated>2025-09-14T00:00:00+08:00</updated><id>http://localhost:4000/archive/neo4j-a-star-search</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[Back in 2018, we used the Neo4J graph database to track the movement of marine vessels. We were interested in the shortest path a ship could take through a network of about 13,000 route points. Performance issues with Neo4J’s shortest-path algorithms limited our search to about 4,000 route points.]]></summary></entry><entry><title type="html">MOSFETs</title><link href="http://localhost:4000/archive/mosfet-switches/" rel="alternate" type="text/html" title="MOSFETs" /><published>2025-06-22T00:00:00+08:00</published><updated>2025-06-22T00:00:00+08:00</updated><id>http://localhost:4000/archive/mosfet-switches</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[Recently, I needed a low-power circuit for one of my battery-operated projects. Much of the system’s power savings depended on its ability to switch off power to components, such as servos, electronically when not needed. That’s how I stumbled upon MOSFETs, transistors capable of controlling circuits operating at voltages far above their own.]]></summary></entry><entry><title type="html">ATmega328P chips</title><link href="http://localhost:4000/archive/arduino-uno/" rel="alternate" type="text/html" title="ATmega328P chips" /><published>2025-04-10T00:00:00+08:00</published><updated>2025-04-10T00:00:00+08:00</updated><id>http://localhost:4000/archive/arduino-uno</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[This is a quick reference for wiring up ATmega328P ICs to run at 5V and 3.3V. While the 5V configuration is common, the 3.3V configuration can be useful in low-power applications and when interfacing with parts that themselves run at 3.3V. In this guide, the 5V setup is configured with a 16MHz crystal oscillator, while the 3.3V configuration makes use of an 8MHz crystal oscillator.]]></summary></entry><entry><title type="html">Bare-metal ATSAM3X8E chips</title><link href="http://localhost:4000/archive/arduino-due/" rel="alternate" type="text/html" title="Bare-metal ATSAM3X8E chips" /><published>2024-10-05T00:00:00+08:00</published><updated>2024-10-05T00:00:00+08:00</updated><id>http://localhost:4000/archive/arduino-due</id><author><name>Wickramage Don Sadeep Madurange</name></author><summary type="html"><![CDATA[This article is a step-by-step guide for programming bare-metal ATSAM3X8E chips found on Arduino Due boards. It also includes notes on the chip’s memory layout relevant for writing linker scripts. The steps described in this article were tested on an OpenBSD workstation.]]></summary></entry></feed> \ No newline at end of file
diff --git a/_site/posts.xml b/_site/posts.xml
index 837fb10..278003a 100644
--- a/_site/posts.xml
+++ b/_site/posts.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/posts.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2025-11-12T21:42:47+08:00</updated><id>/posts.xml</id><title type="html">ASCIIMX</title><author><name>Wickramage Don Sadeep Madurange</name></author></feed> \ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/posts.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2025-11-16T14:57:59+08:00</updated><id>http://localhost:4000/posts.xml</id><title type="html">ASCIIMX</title><author><name>Wickramage Don Sadeep Madurange</name></author></feed> \ No newline at end of file
diff --git a/_site/projects/fpm-door-lock/index.html b/_site/projects/fpm-door-lock/index.html
index cfa3287..66a578d 100644
--- a/_site/projects/fpm-door-lock/index.html
+++ b/_site/projects/fpm-door-lock/index.html
@@ -91,7 +91,7 @@ physical world around you by uttering a few lines of C code.</p>
fingerprint sensor module, is enclosed in the tarball linked at the end of the
page.</p>
-<h2 id="the-circuit-board">The circuit board</h2>
+<h2 id="the-pcb">The PCB</h2>
<p>For this project, I designed a custom PCB and had it fabricated by JLCPCB. Like
the software, the circuit is chiefly concerned with optimizing power