master
Tait Hoyem 1 year ago
parent 027f6b014b
commit aec7d9deaf

Binary file not shown.

@ -45,6 +45,8 @@ GEM
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 2.0)
jekyll-contentblocks (1.2.0)
jekyll
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-katex (1.0.0)
@ -67,6 +69,9 @@ GEM
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-toc (0.17.1)
jekyll (>= 3.9)
nokogiri (~> 1.11)
jekyll-watch (2.2.1)
listen (~> 3.0)
json (2.5.1)
@ -88,9 +93,14 @@ GEM
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
namae (1.1.1)
nokogiri (1.13.8-aarch64-linux)
racc (~> 1.4)
nokogiri (1.13.8-x86_64-linux)
racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.6)
racc (1.6.0)
rack (2.2.3)
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
@ -109,17 +119,22 @@ GEM
PLATFORMS
aarch64-linux
x86_64-linux
DEPENDENCIES
addressable (~> 2.8)
duktape
execjs
ffi
jekyll
jekyll-contentblocks
jekyll-feed
jekyll-katex
jekyll-minifier
jekyll-scholar
jekyll-seo-tag
jekyll-sitemap
jekyll-toc
kramdown
kramdown-math-katex
rack (>= 2.2.3)

@ -1,6 +1,6 @@
- company: "SAIT (Southern Alberta Institute of Technology)"
position: "Instructor"
years: "June 2022-December 2022"
years: "June 2022-April 2023"
description: "Teaching two full-stack web-development courses. The basics of HTML and CSS to MySQL and PHP. A pinch of Javascript here and there."
- company: "Bytetools Technologies Inc."
position: "Founder"

@ -78,6 +78,6 @@
label: INHERIT
- heading: Friends' Websites
values:
- name: Justin Pilon
value: https://elephantpaw.ca/
- name: Melody Shih
value: https://melody.ms/
label: INHERIT

@ -13,6 +13,12 @@
- skill: "PHP"
- skill: "POSIX-compliant Shell"
- skill: "LaTeX, MathML"
- section: "Frameworks/Environments/Libraries"
skilllist:
- skill: "Flask, Django, Tornado (Python)"
- skill: "Rocket, Actix, Serde, proc_macro (Rust)"
- skill: "JQuery (Javascript)"
- skill: "Jekyll (Ruby)"
- section: "Miscellaneous & Hobbies"
skilllist:
- skill: "3D Printing"

Binary file not shown.

@ -136,6 +136,9 @@ Some other things I would like to do, if I could find the time:
* How to get started with Linux.
* Text-based tutorials from start-to-finish with various frameworks: SpringBoot (Java), Django/Flask (Python), JavaEE.
* Include video tutorials.
* These tutorials should include the use of a text-based DNS editor for simplicity.
* Currently developing this with the `lunanode` crate on [crates.io](https://crates.io/) (TODO: not on there yet).
* Specific programming language instruction in all the basics: C/C++, Bash, Python, Javascript, HTML, Java. Perhaps in the future branch into Rust, Golang, Zig or Haskell.
* Custom-made braille manuals for a set of affordable computer parts which can be purchased to assemble a computer from scratch, without sighted assistance (see [current status of accessible BIOSes](/2021/06/21/uefi-audio/)).
@ -549,3 +552,113 @@ Maybe this would require firmware, who knows.
Dream big, baby!
Might as well, since we gotta live here either way.
## 17. Charity
Most ventures I have above are business ventures, and they should be profitable by default.
However, some of my ideas are *de facto* non-profitable.
Let's take a look at my primary ideas for a charity, what it would do, and how to implement a non-profit model to this idea.
1. Open-Source Assistive Technologies Lab
* There is nothing like it.
* It promotes the use of free and open-source software for the blind and visually impaired (as well as others).
* It can give out grants and award to those who do great work in the field. I can bledge a few hundred dollars a year to this.
2. TODO
## 18. Campus Map With Bluetooth LE Triangulation
When starting at a new school it can be difficult for the average person to navigation a campus they never have before.
Even with campus maps and their phone's native map application, there is a reasonable chance that the student is *still* confused about how to get around.
This applies to consumers in shopping malls as well.
This effect is amplified for those who cannot see.
Using a mesh network of Bluetooth LE devices, it should be possible to create a highly accurate IPS (Indoor-Positioning-System) within a building or set of buildings (campus).
Only some nodes would require GPS, where they would calibrate their locations accurately with a clear view of the sky.
Other units would use their relative location to the other beacons to create relative locations.
Since the end-user (the student trying to find their classroom) does not actually require an accurate GPS location, but simply a location relative to items indoors, the relative locations should be fairly easy to set up relative to the beacons.
Here is an example of a map in JSON format:
```json
[
{
"place_name": "MC304",
"building": "Stan Grad",
"relative_coords": [
{"node": "SGL3_HC_4",
"lat": 0.0,
"lon": 0.0,
"alt": -1.5, /* just above the door */
},
...
],
...
},
{
"place_name": "NN701",
"building": "Senator Burns",
"relative_coords": [
{"node": "NN7_Elevator",
"lat": -0.000024,
"lon": 0.000096,
"alt": -1.520000, /* in meters */
},
...
],
...
},
...
]
```
Now let's take a look at what would be broadcast by each BLE beacon:
```json
{
"node": "SGL0_BSMT_HC_F", /* Stan Grad level 0 (basement) Hallway C, front side */
"pos": { /* calculated by RSSI values from other nodes */
"lat": -51.902334,
"lon": 43.222345,
"alt": 1029.229334
},
...
}
```
In theory, with this inforamtion a client should be able to calculate its internal location within a building and give users a decent idea of where to go.
In addition, BLE 5.1 adds support of directional capture, meaning you can get the radians of the user in relation to the signal.
This is extremely powerful and cuts down guess work by an order of magnitude and very likely will offer accuracy of less than 10cm.
Finally, BLE 5.2 adds support for the broadcasting of audio by BLE devices and automatically receiving them on the client side (given permission).
This is huge! Let's go over just *some* of the use-cases for this:
1. School Campuses
2. Museums
3. Accessible Businesses/Charities
4. Airports
5. Dense urban areas
Wow!
I can't wait for this to become normal.
## 19. Open Calendaring and Note Taking System
Ok, we need to have a talk about this.
Thw open ecosystem *sucks* for calendaring!
For one thing, Android doesn't let you use the standard protocols without a third-party app.
Thanks, Google!
So even the "standards" aren't very standard.
Secondly, most open-source libraries related to the CardDAV/WebDAV/CalDAV ecosystem are written in PHP and Java, and not on a modern alternative like Go/Rust or frankly, even C++ would be acceptable.
Third, those libraries don't mix well together;
they often don't implement all the features of the RFCs or miss an entire section of it because it's complicated.
Fair enough, but as a user of open-source software this is so frusturating!
I thought the freaks and geeks that are a part of the free software movement would be more stringent on application of standards.
Anyway, this brings me to my final point:
Client.
Most of the FOSS clients around handle one protocol fairly well (the way you would expect, following the UNIX principles of design), but when the server is implementing three protocols and the client only implements one, and now you need three clients to interface with one server and one authentication system?
It's a confusing mess if I'm being honest.
I think a comprimise would be to write three separate applications to interface with the server, then have one command that aliases to the other variants.
So, for example: `fdav contact add ...` would exapnd into `fcarddav add ...`
There are some rants I would like to have in a more unstructured setting,
and this is one of the things that I think needs a big spotlight.

@ -7,7 +7,7 @@ description: "Tait Hoyem's website. The home of accessible, simple and secure co
<h1>Tait Hoyem</h1>
<p>I have three goals in my software development career:</p>
<p>I have four goals in my software development career:</p>
<ol>
<li>Strong adherence to the <a href="http://www.catb.org/~esr/writings/taoup/html/ch01s06.html">UNIX principles</a> of software design.</li>

@ -4,15 +4,32 @@ layout: default
# Licenses
I agree with free-culture licenses; I am a hippie at heart.
I license all the content on my site under the [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/).
Full copyright means no derivatives or redistributions may be made in any way, shape or form.
This is an outdated model, I think anyway.
The truth is: free-culture licenses are necessary in a world full of death plus 70 years (or similar) copyright terms.
But I want freedom to be perpetuated, not stolen for corporate greed, hence the GPL above the BSD/MIT and CC-SA above CC.
I have never considered licensing with NC (non-commercial) for one reason: I run a small business;
I know what it's like to have all sorts of licensing restrictions stopping you from making a few bucks.
I license my site content under CC-BY-SA as an act of good faith, with the hope that there is something better than the copyright regime we are currently under.
## Other Licenses
## Alternate Licenses
Despite the overwhelming majority of software and works of art using traditional copyright rules,
there is an alternative available to those who want to give a little bit more freely.
There are variations here all the way from "do what you want", to something called "copyleft".
Let's start with that concept with my favourite license: the GNU General Public License.
### GPL
The GPL is the only license which guarantees code openness.
It allows people to redistribute and modify your code with no restrictions except that they must also share all changes back to the original author.
Code licensed under the GPL cannot be incorporated into a proprietary system;
all projects under the GPL, if used in a project, that project itself must also use the GPL.
In my opinion, the GPL is the only license which guarantees code openness.
There are two variations of the GPL: the LGPL (Library GPL) and the AGPL (Affero GPL).
The LGPL allow the inclusion of code in other proprietary systems without as long as changed to the original program itself are made public.
The AGPL requires that source-code be available for those using an AGPL licensed work over the internet.
So for example, a back-end server using the AGPL license would require source-code availability to all signed-up users of the service.
### MIT/BSD/Apache/Mozilla/etc.
@ -37,12 +54,9 @@ The restrictions are as follows:
I decided to license my site as CC-BY-SA.
This means that as long as I am attributed and the source material is licensed the same as my own site, then redistribution and alteration of the material is permitted.
### Copyright
## Conclusion
I agree with free-culture licenses; I am a hippie at heart.
This included any open-source license (the "permissive" licenses mentioned above), but also copyleft licenses since I think they contain stronger protections for consumers against proprietary code.
I license all the content on my site under the [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/).
Full copyright means no derivatives or redistributions may be made in any way, shape or form.
This is an outdated model, I think anyway.
The truth is: free-culture licenses are necessary in a world full of death plus 70 years (or similar) copyright terms.
But I want freedom to be perpetuated, not stolen for corporate greed, hence the GPL above the BSD/MIT and CC-SA above CC.
I have never considered licensing with NC (non-commercial) for one reason: I run a small business;
I know what it's like to have all sorts of licensing restrictions stopping you from making a few bucks.
I license my site content under CC-BY-SA as an act of good faith, with the hope that there is something better than the copyright regeime we are currently under.

Loading…
Cancel
Save