]> git.mdlowis.com Git - projs/awiki.git/commitdiff
updated pages and wiki script
authorMichael D. Lowis <mike@mdlowis.com>
Fri, 12 Jun 2020 03:04:56 +0000 (23:04 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Fri, 12 Jun 2020 03:04:56 +0000 (23:04 -0400)
32 files changed:
awiki.rb
config/page.html.erb
pages/20200609230839.md [new file with mode: 0644]
pages/20200610144534.md [new file with mode: 0644]
pages/notes/c_style.md
pages/notes/erlang.md
pages/notes/forth.md
pages/notes/game_prog.md
pages/notes/index.md
pages/notes/linux.md [new file with mode: 0644]
pages/notes/lua.md
pages/notes/misc/cube_alogrithms.md
pages/notes/misc/fpga_dev.md
pages/notes/misc/open_source.md
pages/notes/misc/zettelkasten.md
pages/notes/oberon07.md
pages/notes/ocaml.md
pages/notes/proglangs.md
pages/notes/random.md
pages/notes/recipes.md [deleted file]
pages/notes/recipes/banana_pancakes.md [moved from pages/recipes/banana_pancakes.md with 92% similarity]
pages/notes/recipes/index.md [new file with mode: 0644]
pages/notes/recipes/pancakes.md [moved from pages/recipes/pancakes.md with 91% similarity]
pages/notes/recipes/teriyaki_sauce.md [moved from pages/recipes/teriyaki_sauce.md with 96% similarity]
pages/notes/recipes/zucchini_cookies.md [moved from pages/recipes/zucchini_cookies.md with 98% similarity]
pages/notes/recipes/zucchini_cookies_with_oats.md [moved from pages/recipes/zucchini_cookies_with_oats.md with 92% similarity]
pages/notes/scheme.md
pages/notes/sclpl.md
pages/notes/webdev.md [new file with mode: 0644]
pages/notes/zam.md
pages/projs/archived/index.md
pages/projs/index.md

index 70d3df16295939d4c8a932cb5521a96f918a328a..b15015fa39d0867f49ec2b56d3c1eede0d25821a 100755 (executable)
--- a/awiki.rb
+++ b/awiki.rb
@@ -1,15 +1,17 @@
 #!/usr/bin/env ruby
 require 'open3'
 require 'fileutils'
-require 'webrick'
 require 'redcarpet'
+require 'erb'
 
 # TODO:
+# * Implement search functionality on sitemap
+# * break javascript out to separate files
+# * Add id linking with title and custom text
+# * Add searchable, filterable z-index
+# * Add tagging and tag filtering for search
 # * Add page attachment mechanism
 # * Add save shortcut
-# * Add a create method
-# * Add a delete method
-# * Add a move/rename method
 # * Add git revisioning for pages
 
 SITE_TITLE    = "Michael D. Lowis"
@@ -25,12 +27,67 @@ EDIT_SCRIPT   = <<-eos
   (() => {
     const keys = {
       "e": () => { window.location =  window.location + "?edit=true"; },
-      "s": () => { window.location =  "/sitemap.html"; }
+      "i": () => { window.location =  "/sitemap.html"; },
+      "n": () => { window.location =  "/new"; }
     };
-    document.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true);
+    document.onkeyup = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true);
   })();
   </script>
 eos
+SEARCH_SCRIPT = <<-eos
+  <script>
+    (()=>{
+      let tags = [];
+
+      const filterPages = (allitems) => {
+        const value = search.value.toLowerCase();
+        for (var i = 0; i < pages.children.length; i++) {
+          const child = pages.children[i];
+          if (child.style.display !== "none" || allitems) {
+            if (!child.text) {
+              child.text = child.innerText.toLowerCase();
+            }
+            if (!child.tagmap) {
+              child.tagmap = {};
+              const tags = (child.children[0].dataset.tags || "").split(" ");
+              tags.forEach((c)=>(child.tagmap[c] = true));
+            }
+            const titleMatch = (child.text.toLowerCase().indexOf( value ) !== -1);
+            const tagsMatch = (tags.every((t)=>(child.tagmap[t])));
+            console.log(tagsMatch);
+            child.style.display = ((titleMatch && tagsMatch) ? "list-item" : "none");
+          }
+        }
+      };
+
+      search.onkeyup = (ev) => {
+        filterPages(ev.key === "Backspace");
+        ev.stopPropagation();
+      }
+
+      const oninput = (ev)=>{
+        if ((filterTags.value !== "") && (ev.inputType === "insertReplacementText" || ev.key === "Enter")) {
+          const tagName = filterTags.value.toLowerCase();
+          tags.push(tagName);
+          const link = document.createElement('a');
+          link.href = "#";
+          link.style.margin = "0 5px 0 5px";
+          link.onclick = ()=>{
+            tags = tags.filter((e)=>(e != tagName));
+            link.remove();
+            filterPages(true);
+          };
+          link.appendChild(document.createTextNode("[X] " + filterTags.value.toLowerCase()));
+          activeTags.appendChild(link);
+          filterTags.value = "";
+          filterPages(false);
+        }
+      }
+
+      filterTags.oninput = oninput;
+      filterTags.onkeyup = oninput;
+    })();  </script>
+eos
 
 def html_path(src)
   src.sub(/\.([^.]*)$/, '.html').sub(/^#{PAGES_DIR}/, HTML_DIR)
@@ -40,6 +97,10 @@ def page_path(path)
   (PAGES_DIR + path).sub(/^\/html\//,'').sub(/\.html$/, ".md")
 end
 
+def web_path(path)
+  "/" + path.sub(/^(#{PAGES_DIR}|#{HTML_DIR})/, '').sub(/\.md$/,'.html')
+end
+
 class Page
   def initialize(src)
     @markdown = (File.exist?(src) ? File.read(src) : "")
@@ -48,6 +109,10 @@ class Page
     @page_path = src.gsub(%r{/+},'/')
     @gendate = Time.now.to_s
     @page_title = (@markdown.match(/#\s*(.*)$/) || [])[1]
+    $db[:pages][@page_path] ||= {}
+    $db[:pages][@page_path][:path] = @page_path
+    $db[:pages][@page_path][:title] = @page_title
+    $db[:pages][@page_path][:tags] = []
   end
 
   def generate_graph(graph)
@@ -60,7 +125,7 @@ class Page
     "<p>"+data.sub(/<\?[^?]*\?>/,'')+"</p>"
   end
 
-  def parse_graphs
+  def parse_extras
     graph = nil
     text = []
     @markdown.split("\n").each do |ln|
@@ -72,7 +137,14 @@ class Page
         graph = nil
       elsif graph
         graph << ln
+      elsif ln =~ /^@tags(.*)$/ then
+        $db[:pages][@page_path][:tags] += ($1 || "").split
       else
+        ln.scan(/[a-zA-Z_][a-zA-Z0-9_]*/).map{|w| w.downcase }.each do |w|
+          $db[:words][w] ||= ($db[:nextw] += 1)
+          $db[:pages][@page_path][:words] ||= {}
+          $db[:pages][@page_path][:words][$db[:words][w]] = 1
+        end
         text << ln
       end
     end
@@ -81,7 +153,7 @@ class Page
 
   def view()
     if not @article
-      @markdown = parse_graphs()
+      @markdown = parse_extras()
       @article = $markdown.render(@markdown)
     end
     ERB.new(File.read(VIEW_TEMPLATE)).result(binding)
@@ -103,16 +175,16 @@ def genallpages()
 end
 
 def gensitemap()
-  links = []
-  Dir.glob("#{PAGES_DIR}/**/*.md").each do |f|
-    path = f.sub(/\.([^.]*)$/, '.html').sub(/^#{PAGES_DIR}/, "")
-    title = (File.read(f).match(/#\s*(.*)$/) || [])[1] || path
-    links << { path: path, title: title }
-  end
   File.open("#{PAGES_DIR}/sitemap.md", "w") do |f|
     f.puts "<!-- WARNING: This page autogenerated. Manual changes will be lost -->"
     f.puts "# Sitemap\n\n"
-    links.sort_by{|h| h[:title] }.each {|l| f.puts "[#{l[:title]}](#{l[:path]})<br/>" }
+    f.puts "\n\n<p><label>Search:</label><input id=\"search\" type=\"text\"/></p>\n\n"
+    f.puts "<ul id=\"pages\">"
+    $db[:pages].values.sort_by{|h| h[:title] }.each do |p|
+      f.puts "<li><a href=\"#{web_path(p[:path])}\" tags=\"#{p[:tags].join(" ")}\">#{p[:title]}</a></li>"
+    end
+    f.puts "</ul>"
+    f.puts "\n\n<p>#{SEARCH_SCRIPT}</p>"
   end
 end
 
@@ -129,14 +201,15 @@ def genpage(path, src, force=false)
   end
   gensitemap()
   html = html.sub("<!--EDIT-->",
-    "<a class='navLink shrink' href='#{path}?edit=true'>[edit]</a>")
+    "<a href='new'>[new]</a>" +
+    "<a href='#{path}?edit=true'>[edit]</a>")
   html.sub("<!--EDIT_SCRIPT-->", EDIT_SCRIPT)
 end
 
 def do_post(req, res, path)
   page_path = page_path(path)
   FileUtils.mkdir_p(File.dirname(page_path))
-  markup = req.query["markup"].gsub("\r\n","\n").gsub(/&lt;/,"<").gsub(/&gt;/,">")
+  markup = req.query["markup"].gsub(/<br\/?>/,"\n").gsub("\r\n","\n").gsub(/&lt;/,"<").gsub(/&gt;/,">")
   File.open(page_path, "wb") {|f| f.write(markup) }
   res.status = 302
   res["Location"] = req.path
@@ -149,8 +222,12 @@ def do_edit(req, resp, path, src)
 end
 
 def do_get(req, res, path)
-  if path.end_with?(".html")
+  if path == "/new"
+    res.status = 302
+    res["Location"] = "/#{Time.now.strftime("%Y%m%d%k%M%S")}.html" if path == "/new"
+  elsif path.end_with?(".html")
     page_path = page_path(path)
+    puts path
     if (req.query["edit"] == "true") || (not File.exist?(page_path))
       do_edit(req, res, path, page_path)
     else
@@ -166,6 +243,7 @@ end
 
 #-------------------------------------------------------------------------------
 
+$db = { pages: {}, words: {}, nextw: 0 }
 $plantuml_in, $plantuml_out, _ = Open3.popen2(PLANTUML_CMD)
 
 $markdown = Redcarpet::Markdown.new(
@@ -187,6 +265,7 @@ $markdown = Redcarpet::Markdown.new(
 genallpages()
 
 if ARGV.length > 0 then
+  require 'webrick'
   $server = WEBrick::HTTPServer.new(
    :Port         => SERVER_PORT,
    :SSLEnable    => false,
@@ -196,6 +275,7 @@ if ARGV.length > 0 then
 
   $server.mount_proc '/' do |req, res|
     rqtype = req.request_method
+    puts req.path
     path = (req.path.end_with?("/") ? req.path + "index.html" : req.path)
     if rqtype == "GET"
       do_get(req, res, path)
@@ -204,9 +284,8 @@ if ARGV.length > 0 then
     end
   end
 
-  trap 'INT' do
-    $server.shutdown
-  #  genallpages()
-  end
+  trap 'INT' do $server.shutdown end
   $server.start
 end
+
+#pp $db
\ No newline at end of file
index e7f638ce981e60bb110e160e3dde8db682e58f1d..7f209150e7117254b0a2970d02c6fce7b9ac4599 100644 (file)
@@ -21,7 +21,7 @@
   }
 
   h1, h2, h3, h4, h5, h6 {
-      margin: 1.5em 0em 0rem 0em;
+      margin: 1.5em 0em 0em 0em;
       font-weight: 100;
   }
   h1 { font-size: 2.00em; }
     padding: 0.5em 1em 0.5em 1em;
   }
 
-  .headerLink, .navLink {
+  header a {
     color: #222222;
     text-decoration: none;
-  }
-
-  .headerLink {
     font-size: 1.5rem;
     margin-left: 1rem;
+    flex-grow: 1;
   }
 
-  .navLink {
-    font-size: 1rem;
-    margin-right: 1rem;
-  }
-
-  .box {
-    width: 100%;
+  nav, header {
     display: flex;
     flex-wrap: wrap;
   }
-  .grow { flex-grow: 1; }
-  .shrink { flex-shrink: 1; }
+
+  nav a {
+    font-size: 1rem;
+    margin: 0 1rem 0 0;
+    flex-shrink: 1;
+  }
   </style>
 </head>
 <body>
-  <div class="header">
-    <hr/>
-    <div class="box">
-      <a class="headerLink grow" href="/index.html">
-        <%= @site_title %>
-      </a>
-      <a class="navLink shrink" href='/index.html'>home</a>
-      <a class="navLink shrink" href='/projs/index.html'>projects</a>
-      <a class="navLink shrink" href='/notes/index.html'>notes</a>
-      <a class="navLink shrink" href='/sitemap.html'>sitemap</a>
+  <hr/>
+  <header>
+    <a href="/index.html"><%= @site_title %></a>
+    <nav>
+      <a href='/index.html'>home</a>
+      <a href='/projs/index.html'>projects</a>
+      <a href='/notes/index.html'>notes</a>
+      <a href='/sitemap.html'>sitemap</a>
       <!--EDIT-->
-    </div>
-    <hr/>
-  </div>
+    </nav>
+  </header>
 
-  <article>
+  <hr/>
+  <article id="article">
     <%= @article %>
   </article>
 
-  <div class="footer">
-    <hr style="margin-top: 2em"/>
+  <hr style="margin-top: 2em"/>
+  <footer>
     <div style="text-align: center">
       <%= @gendate %>
     </div>
-  </div>
+  </footer>
   <!--EDIT_SCRIPT-->
 </body>
 </html>
diff --git a/pages/20200609230839.md b/pages/20200609230839.md
new file mode 100644 (file)
index 0000000..2b49c9c
--- /dev/null
@@ -0,0 +1,29 @@
+@tags todo
+
+# Todo List
+
+## Now
+### Release Plugin
+* Fix links on release report
+* Fix up variant handling approach
+* Add support for reports generated by the assembly build
+
+### Miscellaneous
+* Build for Andrew (FCA TT)
+* Build for Ryan (AR0233)
+* release plugin
+* review feedback
+* broken builds
+
+## Soon
+* Allen's review write-up
+* Get a dongle and DiVa setup for Randy
+
+## Later
+* Asciidoc documentation for CVP
+* Update SerDes confluence page
+
+## Follow-Up
+* Corporate Gen 2 Backlight issue on startup
+* AR0233 Development (Will)
+
diff --git a/pages/20200610144534.md b/pages/20200610144534.md
new file mode 100644 (file)
index 0000000..bfa7243
--- /dev/null
@@ -0,0 +1,13 @@
+@tags data-structures trees tries associative-array
+
+# Trie
+A type of tree structure designed for mapping a set of keys to associated values. Each level of the tree is indexed by a character in the key to determine the next node to look at. The bitwise variant of this structure uses the bits of an integer value to index into the structure and retrieve the corresponding data.
+
+## Further Reading
+* [Trie](https://en.wikipedia.org/wiki/Trie)
+* [Radix Tree](https://en.wikipedia.org/wiki/Radix_tree)
+* [Hash Array Mapped Trie](https://en.wikipedia.org/wiki/Hash_array_mapped_trie)
+* https://www.techiedelight.com/trie-implementation-insert-search-delete/
+* http://www.mathcs.emory.edu/~cheung/Courses/323/Syllabus/Text/trie01.html
+* https://github.com/panosalbanis/bitwise-trie/blob/master/trie.c
+* http://www.cs.yale.edu/homes/aspnes/pinewiki/RadixSearch.html
index f769c5e15b93e217d5dfc363114453591c677ccf..950c360f642b222b78cc4a032bd8be0b9bd3edf6 100644 (file)
@@ -1,3 +1,5 @@
+@tags c programming style-guide
+
 # C Programming Guidelines
 This is a suggested set of guidelines to follow when writing C code. It is based on my own experience as well as the influential "The Power of 10: Rules for Developing Safety-Critical Code".
 
index 6340989ac2b42781e8953a1db3fb29f8eba561f8..731d70eb9046bbdd8c1d6d2ccd3805710a1f3257 100644 (file)
@@ -1,3 +1,5 @@
+@tags erlang language programming
+
 # Erlang
 **Type System:** Dynamically typed<br/>
 **Memory Management:** Garbage Collected (Automatic)<br/>
index 560ce8db2b47319f5115912ff1010705b5c48fcc..ec508ae4c86c197d360ace55c1ab646fec640545 100644 (file)
@@ -1,3 +1,5 @@
+@tags forth language programming
+
 # Forth
 **Type System:** None<br/>
 **Memory Management:** Manual<br/>
index 4d2271181b1d04f27553a85f2a14936c2ff101cb..82d29e3b612e5c5eb8ddfffd0062e7d7b856d1a3 100644 (file)
@@ -1,2 +1,6 @@
+@tags game-dev programming
+
 # Game Programming
 * https://github.com/a1studmuffin/SpaceshipGenerator
+* https://github.com/eduard-permyakov/permafrost-engine
+
index e006ea01ee3e5e8e7cbb2dc6f0a039aa10ab181b..f1dd01a7f69dc06bb6baafee65aa9cebe0b09a43 100644 (file)
@@ -1,3 +1,5 @@
+@tags note-index
+
 # Notes
 This section of the site is constructed as an informal 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...
 
@@ -5,6 +7,8 @@ This section of the site is constructed as an informal wiki (using [awiki](https
 * [Programming Languages](proglangs.html)
 * [C Programming Rules](c_style.html)
 * [Game Programming](game_prog.html)
+* [Linux Programming](linux.html)
+* [Web Development](webdev.html)
 
 ## Writing
 * [Article Ideas](article_ideas.html)
@@ -12,7 +16,7 @@ This section of the site is constructed as an informal wiki (using [awiki](https
 
 ## Miscellaneous
 * [Cube Algorithms](misc/cube_alogrithms.html)
-* [Recipes](recipes.html)
+* [Recipes](recipes/)
 * [FPGA Development](misc/fpga_dev.html)
 * [Open Source Programs](misc/open_source.html)
 * [Zettelkasten](misc/zettelkasten.html)
diff --git a/pages/notes/linux.md b/pages/notes/linux.md
new file mode 100644 (file)
index 0000000..b3ae6b1
--- /dev/null
@@ -0,0 +1,7 @@
+@tags linux programming
+
+# Linux Programming
+* [Writing to the framebuffer](http://seenaburns.com/2018/04/04/writing-to-the-framebuffer/)
+* https://news.ycombinator.com/item?id=23391380
+* https://github.com/oasislinux/oasis
+* https://nixos.org/learn.html
index 637fcefbd0fa837d27d34198d0943b7aaa49c3a9..cbdc5c58258eb8ece3898c8671d65c392baf9c11 100644 (file)
@@ -1,3 +1,5 @@
+@tags lua programming language
+
 # Lua
 ## References
 https://www.lua.org/doc/jucs05.pdf
index 8b189c74258296dab1b4211807b664cc7797983c..5523180063799a3dc47f0df30ab6141de1c17340 100644 (file)
@@ -1,3 +1,5 @@
+@tags rubix rubix-cube cube-algorithms
+
 # Cube Algorithms
 
 ## Orient Corners
index 6990d9e7be6ec56fd8839a1f76a9a1e3de8f55b7..c6dd54a17f3e1363e6f2caa79462d2a1bd41f5f3 100644 (file)
@@ -1,5 +1,7 @@
+@tags fpga
+
 # FPGA Development
 
 ## Free Books
 * [Quick Start Guide to VHDL](https://link.springer.com/book/10.1007/978-3-030-04516-6)
-* [Introduction to Logic Circuits & Logic Design with VHDL](https://link.springer.com/book/10.1007/978-3-030-12489-2)
+* [Introduction to Logic Circuits &amp; Logic Design with VHDL](https://link.springer.com/book/10.1007/978-3-030-12489-2)
index 135d7e5024b218bf29f8160abb93225f50c07c8d..c4f058e3e6b4a6d02f574aa6e776ceba46324dbb 100644 (file)
@@ -1,5 +1,9 @@
+@tags note-index open-source
+
 # Open Source Programs
 
 * [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
+* [oksh](https://github.com/ibara/oksh) - Portable OpenBSD ksh
+* [choose](https://github.com/theryangeary/choose) - Alternative to cut or awk for picking fields out of a text stream.
index b310b8cfd8f23070d394c63b8c8d7ca71ef44709..5d951eec9cf006433a46682bdeb8495fbcfa069c 100644 (file)
@@ -1,6 +1,12 @@
+@tags zettelkasten
+
 # Zettelkasten
 
-An interesting approach to note taking that has similarities to a wiki. Should investigate making awiki support some of the ideas here:
+An interesting approach to note taking that has similarities to a wiki. Originally implemented using numbered index cards. Cards can be cross referenced and can link to one another by id. Each card covers one topic in a manner such that the card can be read and is useful standalone (The cards are atomic). Each card has a defined home in the catalog (determined by ID) thus making it easy to perform cross referencing and find cards later.
+
+In digital form, each note is typically given a unique ID based on the date and time it was created. This ID is then used to link notes together and build topical trees. In addition, notes can be "tagged" to indicate related topics or otherwise categorize the note. These tags can then be used to find the notes later.
+
+Should investigate making awiki support some of the ideas here:
 
 * https://zettelkasten.de/tools/
 * https://writingcooperative.com/zettelkasten-its-like-gtd-for-writing-and-here-s-why-you-should-consider-it-7dddf02be394
index 363928a5b6204e3ccf37a4b147ea695d9b18f73d..980ce3555b8aac29b4e7fcd6e93e0d9095d6b489 100644 (file)
@@ -1,3 +1,5 @@
+@tags oberon programming language
+
 # Oberon 07
 
 ## Declarations and scope rules
index 1adda7fd860e363c58c54dee40bd760426141eb9..e975077f3dc8d6b1b7138448f372e79625e518ac 100644 (file)
@@ -1,3 +1,5 @@
+@tags ocaml programming language
+
 # OCaml
 **Type System:** Strongly statically typed with type inference (Hindley-Milner)<br/>
 **Memory Management:** Garbage Collected (Automatic)<br/>
index 4fe1601d92b392f98c94cca1d07343b8ee919631..f07c8f5a9b01b8aadfff00357ff0ddd33ba43e93 100644 (file)
@@ -1,3 +1,5 @@
+@tags note-index programming
+
 # Programming Languages
 
 ## Designs I'm Working On
 * [Oberon 07](oberon07.html)
 * [Forth](forth.html)
 * [Lua](lua.html)
+* [Postfix](https://cs.wellesley.edu/~cs251/s05/postfix.pdf)
 
 ## Compiler Design
 * https://inf.ethz.ch/personal/wirth/CompilerConstruction/index.html
 * https://inf.ethz.ch/personal/wirth/ProjectOberon/index.html
+* https://sr.ht/%7Emcf/cproc/
 
 ## Runtime Design
 * [ZINC Abstract Machine](zam.html)
index d8b2b4f5d9f1b22993e91cac42113a40b3dae229..e7a61a179304d95a94dacf29f16ff2db65529e6d 100644 (file)
@@ -1,3 +1,5 @@
+@tags note-index
+
 # Random Thoughts
 https://untools.co/ - Tools for better thinking
 
diff --git a/pages/notes/recipes.md b/pages/notes/recipes.md
deleted file mode 100644 (file)
index 4c0ab9c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Recipes
-
-* [Banana Brown Sugar Pancakes](recipes/banana_pancakes.html)
-* [Plain Old Pancakes](recipes/pancakes.html)
-* [Teriyaki Sauce](recipes/teriyaki_sauce.html)
-* [Zucchini Cookies](recipes/zucchini_cookies.html)
-* [Zucchini Cookies With Oats](recipes/zucchini_cookies_with_oats.html)
similarity index 92%
rename from pages/recipes/banana_pancakes.md
rename to pages/notes/recipes/banana_pancakes.md
index 5c22db0cd2386a1ea21fb49bcbe95158c5207395..31c31437084aab87c75b7d0a8c9221f76912e2b0 100644 (file)
@@ -1,3 +1,5 @@
+@tags recipe pancakes
+
 # Banana Brown Sugar Pancakes
 
 Makes 10 Pancakes
diff --git a/pages/notes/recipes/index.md b/pages/notes/recipes/index.md
new file mode 100644 (file)
index 0000000..3a9d1f4
--- /dev/null
@@ -0,0 +1,8 @@
+@tags recipes note-index
+
+# Recipes
+* [Banana Brown Sugar Pancakes](banana_pancakes.html)
+* [Plain Old Pancakes](pancakes.html)
+* [Teriyaki Sauce](teriyaki_sauce.html)
+* [Zucchini Cookies](zucchini_cookies.html)
+* [Zucchini Cookies With Oats](zucchini_cookies_with_oats.html)
similarity index 91%
rename from pages/recipes/pancakes.md
rename to pages/notes/recipes/pancakes.md
index 5e8a847b4b66dc665b10adcd4c9b45deb1e26dc7..0cc2ff357ab836f82761ccc2de6422f22f187d4d 100644 (file)
@@ -1,3 +1,5 @@
+@tags recipe pancakes
+
 # Plain Old Pancakes
 
 ## Ingredients
similarity index 96%
rename from pages/recipes/teriyaki_sauce.md
rename to pages/notes/recipes/teriyaki_sauce.md
index bcd25986344ab390a3e4f4a4a93304549c37ff38..cc7f665afcb2a4d6379312d0a044432d4962f260 100644 (file)
@@ -1,3 +1,5 @@
+@tags recipe sauce
+
 # Teriyaki Sauce
 ## Ingredients
 
similarity index 98%
rename from pages/recipes/zucchini_cookies.md
rename to pages/notes/recipes/zucchini_cookies.md
index 51bec4fa7543d8a05843b52d962a4a401ba615ec..c0825a65afc85e6e123125fad800927f867b6667 100644 (file)
@@ -1,3 +1,5 @@
+@tags recipe cookies
+
 # Zucchini Cookies
 
 Makes 96 cookies. Takes 45 minutes.
similarity index 92%
rename from pages/recipes/zucchini_cookies_with_oats.md
rename to pages/notes/recipes/zucchini_cookies_with_oats.md
index 8b25c8ceb1968c97e0eede73b18f96de10f81702..8cd8a5091162088c16e6e9a9de563fc537192fbe 100644 (file)
@@ -1,3 +1,5 @@
+@tags recipe cookies
+
 # Zucchini Cookies With Oats
 
 ## Ingredients
@@ -16,7 +18,7 @@
 
 ## Directions
 
-1. preheat oven to 350° F. Lightly grease baking sheets.
+1. preheat oven to 350 F. Lightly grease baking sheets.
 2. combine flour, cinnamon and baking soda in small bowl.
 3. Beat butter and sugar in large mixer bowl until well combined.
 4. Add egg and vanilla extract, beat well.
index bc8c799435555aeab3fb9535e3f1fab633d2061d..967247a7046110a0ac94e4187e4752693f5eece6 100644 (file)
@@ -1,3 +1,5 @@
+@tags scheme programming language
+
 # Scheme
 **Type System:** Dynamically typed<br/>
 **Memory Management:** Garbage Collected (Automatic)<br/>
index 0118e16da45e634159c85035e215f49480c2b9bf..161502976dc42a1860017db341ca168d0bcf6c9f 100644 (file)
@@ -1,3 +1,5 @@
+@tags sclpl programming language language-design
+
 # SCLPL Design Notes
 
 Language Requirements:
diff --git a/pages/notes/webdev.md b/pages/notes/webdev.md
new file mode 100644 (file)
index 0000000..d9b1c97
--- /dev/null
@@ -0,0 +1,4 @@
+@tags web-dev programming
+
+# Web Development
+* [Preview of links using an iframe](http://jsfiddle.net/yboss/q29tP/)
index e3a793a37bf2fa7036e82f4441ebfe576e342976..bcaf53df9ad919d76462d57a862db9e5246c654b 100644 (file)
@@ -1,3 +1,5 @@
+@tags vm language-design runtime
+
 # ZINC Abstract Machine
 
 ## Registers
index 5a6e6e45ccbdc14419ace35b221d9cbbf0224886..6f9356ce8ba01e2ed81b80c49f63950b2843ef93 100644 (file)
@@ -1,3 +1,5 @@
+@tags archived
+
 # Archived Projects
 No longer developed but still contain useful bits of code.
 
index 6f0dca9710d2a4a457a64c4e211e14df3e3998fb..7db2f6c88e17cbeec94fa8f518c47c7fab5ae374 100644 (file)
@@ -1,4 +1,4 @@
-# Projects
+# Project Organization
 I have a large number of side projects and ideas that I am exploring. In order to keep these things organized, I split these projects up into three distinct categories as defined below:
 
 * [Projects](projects/): Matured ideas that have moved past the proof of concept phase and may even be in active use.