{ "version": "https://jsonfeed.org/version/1", "title": "Feynman Liang", "home_page_url": "http://localhost/", "feed_url": "http://localhost/feed.json", "description": "A personal blog on technical topics.", "items": [ { "id": "http://localhost/posts/rewrote-blog-lume/", "url": "http://localhost/posts/rewrote-blog-lume/", "title": "Rewrote blog with lume... nice!", "content_html": "

In honor of 2022's front-end web trends of eschewing everything old\nfrom SPAs to React to even Node itself, I got my feet wet by rebuilding\nthis blog with Lume.

", "date_published": "2023-01-06T21:43:42Z" }, { "id": "http://localhost/posts/prime-maximal-ideals/", "url": "http://localhost/posts/prime-maximal-ideals/", "title": "Prime and Maximal Ideals", "content_html": "

Consider the natural numbers $\\mathbb{N}$ and order\nthem by divisibility: $a \\leq b$ whenever $b$ divides $a$.\nFor example if I give you the set of numbers\n$${6,12,18,24,30}$$\nThen the "largest" number in terms of divisibility is $6$.

", "date_published": "2018-08-27T01:21:50Z" }, { "id": "http://localhost/posts/noetherian-modules-and-ses-for-quotients/", "url": "http://localhost/posts/noetherian-modules-and-ses-for-quotients/", "title": "Noetherian modules and a short exact sequence for quotients", "content_html": "

Equivalent characterizations of the Noetherian condition\nare plentiful (see Hilbert's Basis Theorem for more)\nand using them interchangably can be a convenient and succinct way\nto express proofs. In this post, we explore yet another characterization\nof Noetherian conditions and bring attention to an important short exact sequence\nrelated to quotient constructions which helps clarify why this condition should hold.

", "date_published": "2018-07-29T22:04:38Z" }, { "id": "http://localhost/posts/hilbert-basis-theorem/", "url": "http://localhost/posts/hilbert-basis-theorem/", "title": "Hilbert's Basis Theorem", "content_html": "

Ambitious goals seem to pop up whenever I have free time, but I have a poor track record of hitting them.\nTo fill the extra time I have over the summer, I started reading\nEisenbud's Commutative Algebra texbook\nas a side project. Let's hope I get far enough to learn something useful.

\n

In this post, I want to write a bit about a result known as Hilbert's Basis Theorem (HBT). We'll motivate\nwhy we should care about it through a use case prevalent in algebraic geometry.

", "date_published": "2018-07-05T23:24:42Z" }, { "id": "http://localhost/posts/mathjax-integration/", "url": "http://localhost/posts/mathjax-integration/", "title": "MathJax and Syntax Highlighting on Ghost", "content_html": "

## MathML Support (MathJax)

\n

Thanks to Patrick Edelman for the reference!

\n

Adding LaTeX to Ghost is very simple. Open up ghost/content/themes/YOUR_THEME_NAME/default.hbs. Before </body>, insert:

\n
{{! Mathjax configuration}}\n<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>\n\n<script type="text/x-mathjax-config">\nMathJax.Hub.Config({\n  tex2jax: {inlineMath: [['$','$'], ['\\$','\\$']]}\n});\n</script>\n
\n

Now test it out: $\\sum \\frac{1}{n} = H\\_n$ should yield $\\sum \\frac{1}{n} = H_n$.

\n

The configuration is not perfect, however. Action items include:

\n
\n
• Overridding Markdown parsing for $...$ enclosed text. In particular, $\\sum_{n=1}^\\infty \\frac{1}{n} = H_n$ fails to render properly because _..._ is used by Markdown for italics. edit: Thanks to Filip Allberg for helping me figure this out, you need to escape your underscores. $\\sum_{n=1}^\\infty \\frac{1}{n} = H_n$ renders fine if the subscripts are escaped (\\_ instead of _) like in $\\sum\\_{n=1}^\\infty \\frac{1}{n} = H\\_n$
• \n
• Math embedding in live preview. I suspect this is not too difficult. edit: I've posted directions on how to do this below.
• \n
\n

## Syntax Highlighting

\n

Did you notice that the HTML/JS code block above was syntax colored?? Fortunately, this is super easy to do.

\n
\n
• Open ghost/content/themes/YOUR_THEME_NAME/default.hbs.
• \n
• Before </body>, insert:
• \n
\n
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>\n
\n
\n
• \n

Specify highlighting and prettyprinting classes using MarkDown:

\n
  prettyprint lang-python\n  def main():\n    print(\n      "Finally... technical writing is as easy as %s" %\n        ' '.join(map(lambda x: str(x), range(1,4))))\n  \n
\n
• \n
\n

## Live Previews

\n

Peter Schmalfeldt wrote a great post on getting syntax highlighting to work in the publisher view as well.

\n

#### Mathjax Live Preview

\n

I was able to adapt Peter's to enable MathJax live previewing. To do so, edit ghost/core/server/views/default.hbs and before </body> add

\n
{{! Load and configure mathjax }}\n<script type="text/javascript"     src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>\n<script type="text/x-mathjax-config">\nMathJax.Hub.Config({\ntex2jax: {inlineMath: [['$','$'], ['\\$','\\$']]}\n});\n</script>\n\n{{! Re-render MathJax in live preview}}\n<script>\nvar timeout,\n    entry = document.getElementsByClassName('entry-markdown');\n\nfunction mathjaxify()\n{\n  var preview = document.getElementsByClassName('rendered-markdown');\n  if (typeof(typeset) == "undefined" || typeset == true) {\n    MathJax.Hub.Queue(["Typeset", MathJax.Hub, preview]);  // renders mathjax if 'typeset' is true (or undefined)\n    typesetStubbornMath();\n  }\n\n  // Render the bits of math that have inexplicably still failed to render, while\n  // leaving the rest alone. (If you try to typeset the whole page, it will break\n  // other things)\n  function typesetStubbornMath() {\n    $(".MathJax_Preview").each( function() {\n if($(this).text() != "") {\n        MathJax.Hub.Queue(["Typeset", MathJax.Hub, \$(this).attr("id")]);\n        }\n        });\n  }\n}\n\n// Listen for Key Presses if on Editor\nif(entry) {\n  jQuery(document).keypress(function(event) {\n      clearTimeout(timeout);\n      timeout = setTimeout(mathjaxify, 2001);\n      });\n}\n\n// Check for Change of Post Selection\nsetTimeout(function(){\n    jQuery('.content-list-content li').click(function(){ mathjaxify(); });\n    }, 500);\n</script>\n
\n

Enjoy!

", "date_published": "2013-10-26T23:29:39Z" } ] }