From: Michael D. Lowis Date: Sun, 31 May 2020 02:48:57 +0000 (-0400) Subject: moved pages around and added some new notes pages X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=669c5cd350b39666941769cc239f076f57d167d6;p=projs%2Fawiki.git moved pages around and added some new notes pages --- diff --git a/config/editor.html.erb b/config/editor.html.erb index d4b4e54..30a3f1e 100644 --- a/config/editor.html.erb +++ b/config/editor.html.erb @@ -18,8 +18,8 @@ let submit = ()=>{ }; (() => { const keys = { - "Enter": () => !document.execCommand("insertHTML", false, "\n"), - "Tab": () => !document.execCommand("insertHTML", false, " "), + "Enter": () => !document.execCommand("insertText", false, "\r\n"), + "Tab": () => !document.execCommand("insertText", false, " "), }; editor.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true); editor.focus(); diff --git a/config/page.html.erb b/config/page.html.erb index 04904d4..bcdb9ae 100644 --- a/config/page.html.erb +++ b/config/page.html.erb @@ -105,8 +105,8 @@ <%= @site_title %> home - projects - notes + projects + notes sitemap diff --git a/pages/index.md b/pages/index.md index 1b17b3e..038802f 100644 --- a/pages/index.md +++ b/pages/index.md @@ -1,8 +1,24 @@ # About Me I am an Embedded Software Engineer, currently employed at Gentex Corporation in Zeeland, MI. I have a keen interest in the concepts of [Software Craftsmanship](https://en.wikipedia.org/wiki/Software_craftsmanship), software minimalism, and clean software design. This site is meant to showcase some of my own thoughts and projects regarding those concepts. -## Work Experience +## Contact Info +**Email:** mike@mdlowis.com + +## Current Projects +Some of the projects I'm actively working on: + +* [tide](https://git.mdlowis.com/?p=projs/tide.git;a=summary) - + A minimal graphical text editor inspired by [Acme](http://doc.cat-v.org/plan_9/4th_edition/papers/acme/). This is currently my primary text editor. +* [anvil](https://git.mdlowis.com/?p=proto/anvil.git;a=summary) - + A minimal tiling window manager modeled after the window management in [Acme](http://doc.cat-v.org/plan_9/4th_edition/papers/acme/). +* [awiki](https://git.mdlowis.com/?p=projs/awiki.git;a=summary) - + A minimal personal wiki engine for authoring static websites. This is the tool used to author this site. +* [alib](https://git.mdlowis.com/?p=projs/abt.git;a=summary) - + A collection of [header-only](https://en.wikipedia.org/wiki/Header-only) libraries for C. Designed to be cloned and owned into all of my miscellaneous projects to allow reuse without adding external dependencies. +* [atf](https://git.mdlowis.com/?p=projs/atf.git;a=summary) - + A minimal unit testing framework for C distributed as a header-only library. Used to test my other side projects. +## Work Experience ### [Gentex Corporation](https://www.gentex.com), Zeeland MI (Sep 2010 - Present) * **Lead Software Engineer (Sep 2019 - Present)** * **Software Engineer (Sep 2010 - Sep 2019)** @@ -12,6 +28,5 @@ I am an Embedded Software Engineer, currently employed at Gentex Corporation in * **Intern** ## Education - ### [Grand Valley State University](https://www.gvsu.edu/) (Graduated 2009) * **Bachelor of Science, Computer Science** diff --git a/pages/notes.md b/pages/notes.md deleted file mode 100644 index 69212e5..0000000 --- a/pages/notes.md +++ /dev/null @@ -1,18 +0,0 @@ -# Notes - -## Writing -* [Article Ideas](notes/article_ideas.html) - -## General Programming -* [C Programming Rules](c_style.html) - -## Programming Language Design -* [SCLPL Design Notes](sclpl.html) -* [ZINC Abstract Machine](zam.html) -* [Oberon 07](oberon07.html) - -## Miscellaneous -* [Cube Algorithms](misc/cube_alogrithms.html) -* [Recipes](recipes.html) -* [FPGA Development](misc/fpga_dev.html) -* [Open Source Programs](misc/open_source.html) \ No newline at end of file diff --git a/pages/notes/article_ideas.md b/pages/notes/article_ideas.md index 37bbbd8..eef2d85 100644 --- a/pages/notes/article_ideas.md +++ b/pages/notes/article_ideas.md @@ -4,4 +4,7 @@ * reference counting * intrusive data structures * analysis of various open source tools - +* Pratt parser implementation +* Earley parser implementation +* Break down of [tide](https://git.mdlowis.com/?p=projs/tide.git;a=summary) design +* Deferred reference counting diff --git a/pages/c_style.md b/pages/notes/c_style.md similarity index 100% rename from pages/c_style.md rename to pages/notes/c_style.md diff --git a/pages/notes/erlang.md b/pages/notes/erlang.md new file mode 100644 index 0000000..5b8a93d --- /dev/null +++ b/pages/notes/erlang.md @@ -0,0 +1,14 @@ +# Erlang +**Type System:** Dynamically typed
+**Memory Management:** Garbage Collected (Automatic)
+ +## Features +* Single assignment bindings (variables) +* Immutable data structures +* Concurrency based on the actor model +* Isolated processes communicating via message passing +* Pattern matching +* Execution in a virtual machine + +## Reference Material +https://www.erlang.org/docs diff --git a/pages/notes/forth.md b/pages/notes/forth.md new file mode 100644 index 0000000..0cb781c --- /dev/null +++ b/pages/notes/forth.md @@ -0,0 +1,4 @@ +# Forth +**Type System:** None
+**Memory Management:** Manual
+ diff --git a/pages/notes/index.md b/pages/notes/index.md new file mode 100644 index 0000000..d6bda7d --- /dev/null +++ b/pages/notes/index.md @@ -0,0 +1,18 @@ +# Notes +This section of the site is constructed as a wiki (using [awiki](https://git.mdlowis.com/?p=projs/awiki.git;a=summary)). As such, it is a chaotic mess of notes, musings, and useful links. Enter at your own risk... + +## Frequently Accessed +* [Programming Languages](proglangs.html) + +## Writing +* [Article Ideas](article_ideas.html) +* [Random Thoughts](random.html) + +## Miscellaneous +* [Cube Algorithms](misc/cube_alogrithms.html) +* [Recipes](recipes.html) +* [FPGA Development](misc/fpga_dev.html) +* [Open Source Programs](misc/open_source.html) + +## General Programming +* [C Programming Rules](c_style.html) diff --git a/pages/misc/cube_alogrithms.md b/pages/notes/misc/cube_alogrithms.md similarity index 100% rename from pages/misc/cube_alogrithms.md rename to pages/notes/misc/cube_alogrithms.md diff --git a/pages/misc/fpga_dev.md b/pages/notes/misc/fpga_dev.md similarity index 100% rename from pages/misc/fpga_dev.md rename to pages/notes/misc/fpga_dev.md diff --git a/pages/misc/open_source.md b/pages/notes/misc/open_source.md similarity index 72% rename from pages/misc/open_source.md rename to pages/notes/misc/open_source.md index aa1248d..cbb239c 100644 --- a/pages/misc/open_source.md +++ b/pages/notes/misc/open_source.md @@ -2,3 +2,4 @@ * [Pick](https://github.com/mptre/pick) - Fuzzy picker, inspiration for the fuzzy picker in tide * [Nushell](https://www.nushell.sh/book/en/table_of_contents.html) - interesting new command shell with piping of data and metadata +* [ES Shell)(https://github.com/wryun/es-shell) - An extensible shell with higher order functions diff --git a/pages/oberon07.md b/pages/notes/oberon07.md similarity index 100% rename from pages/oberon07.md rename to pages/notes/oberon07.md diff --git a/pages/notes/ocaml.md b/pages/notes/ocaml.md new file mode 100644 index 0000000..1adda7f --- /dev/null +++ b/pages/notes/ocaml.md @@ -0,0 +1,10 @@ +# OCaml +**Type System:** Strongly statically typed with type inference (Hindley-Milner)
+**Memory Management:** Garbage Collected (Automatic)
+ +## Features +* Strong static typing with type inference +* Polymorphic types + +## References +https://ocaml.org/docs/papers.html diff --git a/pages/notes/proglangs.md b/pages/notes/proglangs.md new file mode 100644 index 0000000..83b93ca --- /dev/null +++ b/pages/notes/proglangs.md @@ -0,0 +1,14 @@ +# Programming Languages + +## Designs I'm Working On +* [SCLPL Design Notes](sclpl.html) + +## Language For Inspiration +* [Erlang](erlang.html) +* [Scheme](scheme.html) +* [OCaml](ocaml.html) +* [Oberon 07](oberon07.html) +* [Forth](forth.html) + +## Runtime Design +* [ZINC Abstract Machine](zam.html) diff --git a/pages/notes/random.md b/pages/notes/random.md new file mode 100644 index 0000000..d8b2b4f --- /dev/null +++ b/pages/notes/random.md @@ -0,0 +1,3 @@ +# Random Thoughts +https://untools.co/ - Tools for better thinking + diff --git a/pages/recipes.md b/pages/notes/recipes.md similarity index 100% rename from pages/recipes.md rename to pages/notes/recipes.md diff --git a/pages/notes/scheme.md b/pages/notes/scheme.md new file mode 100644 index 0000000..bc8c799 --- /dev/null +++ b/pages/notes/scheme.md @@ -0,0 +1,14 @@ +# Scheme +**Type System:** Dynamically typed
+**Memory Management:** Garbage Collected (Automatic)
+ +## Features +* S-expression based syntax +* Hygenic macro system +* Proper tail recursion +* First class continuations +* First class functions (closures) +* Full numerical tower + +## References +https://schemers.org/Documents/Standards/R5RS/HTML/ diff --git a/pages/sclpl.md b/pages/notes/sclpl.md similarity index 71% rename from pages/sclpl.md rename to pages/notes/sclpl.md index 1c342d0..0118e16 100644 --- a/pages/sclpl.md +++ b/pages/notes/sclpl.md @@ -40,6 +40,18 @@ Language Requirements: * CSP versus Actor model ## Language Design +### Ideas to Explore +* Expression-only Syntax + * Assignment operator is the only way to define variables and can be, but should not be, used as an expression. + * The entire grammar (almost) is parsed with a Pratt parser. +* Gradually typed type system + * Dynamically typed in absence of annotations + * Annotations allow the compiler to utilize unchecked operations for higher performance + * Typing would be bidirectional to allow for types to be inferred from values or bindings. + * Would allow for unannotated expressions that are still provably safe to utilize unchecked operations +* Deferred reference counting for garbage collection. + * Immutable bindings and data so no cycles to deal with. + * Could use non-atomic increment/decrement and use multiprocessing instead of multithreading. ### Atomic Types * Fixnums diff --git a/pages/zam.md b/pages/notes/zam.md similarity index 100% rename from pages/zam.md rename to pages/notes/zam.md diff --git a/pages/projects.md b/pages/projs/index.md similarity index 100% rename from pages/projects.md rename to pages/projs/index.md