HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
clay-ferguson
meta64
HISTORICAL RECORD2016–2017
clay-ferguson / meta64 · Not publicly available

meta64

Discover this repository through its Hacker News conversations.

3Distinct people
6Mentions
0Explicit recommenders
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day6 dated mentions

Observed mentions: 2016-12-20 04:50:00 UTC to 2017-01-08 06:35:46 UTC.

0122016-12-20 00:00:00 UTC to 2016-12-21 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsDec 202016-12-21 00:00:00 UTC to 2016-12-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-22 00:00:00 UTC to 2016-12-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-23 00:00:00 UTC to 2016-12-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-24 00:00:00 UTC to 2016-12-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-25 00:00:00 UTC to 2016-12-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-26 00:00:00 UTC to 2016-12-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-27 00:00:00 UTC to 2016-12-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-28 00:00:00 UTC to 2016-12-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-29 00:00:00 UTC to 2016-12-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsDec 292016-12-30 00:00:00 UTC to 2016-12-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-12-31 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2017-01-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-02 00:00:00 UTC to 2017-01-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-03 00:00:00 UTC to 2017-01-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-04 00:00:00 UTC to 2017-01-05 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-05 00:00:00 UTC to 2017-01-06 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-06 00:00:00 UTC to 2017-01-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-07 00:00:00 UTC to 2017-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-08 00:00:00 UTC to 2017-01-09 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 8

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Dec 202016-12-20 00:00:00 UTC2016-12-21 00:00:00 UTC101
Dec 212016-12-21 00:00:00 UTC2016-12-22 00:00:00 UTC000
Dec 222016-12-22 00:00:00 UTC2016-12-23 00:00:00 UTC000
Dec 232016-12-23 00:00:00 UTC2016-12-24 00:00:00 UTC000
Dec 242016-12-24 00:00:00 UTC2016-12-25 00:00:00 UTC000
Dec 252016-12-25 00:00:00 UTC2016-12-26 00:00:00 UTC000
Dec 262016-12-26 00:00:00 UTC2016-12-27 00:00:00 UTC000
Dec 272016-12-27 00:00:00 UTC2016-12-28 00:00:00 UTC000
Dec 282016-12-28 00:00:00 UTC2016-12-29 00:00:00 UTC000
Dec 292016-12-29 00:00:00 UTC2016-12-30 00:00:00 UTC000
Dec 302016-12-30 00:00:00 UTC2016-12-31 00:00:00 UTC000
Dec 312016-12-31 00:00:00 UTC2017-01-01 00:00:00 UTC000
Jan 12017-01-01 00:00:00 UTC2017-01-02 00:00:00 UTC000
Jan 22017-01-02 00:00:00 UTC2017-01-03 00:00:00 UTC000
Jan 32017-01-03 00:00:00 UTC2017-01-04 00:00:00 UTC000
Jan 42017-01-04 00:00:00 UTC2017-01-05 00:00:00 UTC202
Jan 52017-01-05 00:00:00 UTC2017-01-06 00:00:00 UTC202
Jan 62017-01-06 00:00:00 UTC2017-01-07 00:00:00 UTC000
Jan 72017-01-07 00:00:00 UTC2017-01-08 00:00:00 UTC000
Jan 82017-01-08 00:00:00 UTC2017-01-09 00:00:00 UTC101

What Hacker News says

6 sources
I'm not talking about namespaces. I mean stuff like "srch" in https://github.com/Clay-Ferguson/meta64/blob/master/src/main... Also, singletons are simply bad practice so that's just another sign that your code is far from "state of the art". > Yes it's inverted from the way the rest most people are still doing it, but what I'm doing is the future. Of course you consume JSON through a REST API and let the client handle HTML generation when building an SPA. "The future" you're speaking of has been industry standard for 10 years. Nothing radical or innovative about it. How do you think React, Vue or Angular work?
In Ask HN: Are there any solid arguments against SPAs in 2017?
Your metaphorical engine weighs a metric ton and it’s very difficult to imagine how it’ll develop into anything resembling a racer. I’d put more effort into the car analogies but they’re making me physically ill. > The architecture is state-of-the-art. You should also probably back this statement up with something. Right now it appears to be a lot of self-horn-tooting. But hey, sure, let’s spend the same half-minute to talk about the code. I open to a random TypeScript file – thank goodness you’re using TypeScript, because the JavaScript you’ve put under version control for some reason would make any non-vendor code in the language difficult to find in this time – https://github.com/Clay-Ferguson/meta64/blob/d9f3740118e8099.... declare var Dropzone; Oh okay I guess we’re not using types here let config: Object = { ⋮ var submi
Read the rest
tButton = document.querySelector("#" + thiz.id("uploadButton")); This… this isn’t how you reference elements in your “state-of-the-art” architecture, right? if (!submitButton) { console.log("Unable to get upload button."); } submitButton.addEventListener("click", function(e) { I guess the state of the art means you can’t use your browser’s debugger. Or it’s just for consistency given that you’re circumventing the rest of the browser too. this.on("queuecomplete", function(file) { meta64.refresh(); }); What? I have no idea what this does (`meta64` isn’t declared, I guess because this file is allergic to modules. it also appears to be a singleton or global, neither of which particularly screams “good design” when named in reference to your app) but it looks like some kind of indiscriminate state update given that nothing is being passed to it. Maybe it’s not that, but no time to find out. We’re running out of seconds here. Wait, back up a moment: submitButton.addEventListener("click", function(e) { //e.preventDefault(); dropzone.processQueue(); }); Isn’t a major aspect of most of these fancy SPA frameworks that you don’t have to do this? $("#" + this.id("dropzone-form-id")).dropzone(config); > This… this isn’t how you reference elements in your “state-of-the-art” architecture, right? oh no it is. Bonus points for kebab-case when the other two we’ve seen so far are camel. I’m nitpicking style because a meaningless literary device involving cars made me irritable. Sorry. let ret: boolean = false; for (let file of this.fileList) { if (file["name"].toLowerCase().endsWith(".zip")) { return true; } } return ret; That was a useful variable! I would write this: return this.fileList.some(isZipFile); and then probably not write this in the end because it’s a filename check but we’re here to talk about architecture or something, not that: const isZipFile = /\.zip$/i!test; `!` is a macro for bound property access in my state-of-the-art architecture. runButtonEnablement = (dropzoneEvt: any): void => { if (dropzoneEvt.getAddedFiles().length > 0 || dropzoneEvt.getQueuedFiles().length > 0) { $("#" + this.id("uploadButton")).show(); } else { $("#" + this.id("uploadButton")).hide(); } } I would think a F1 racer ninja rockstar architecture would be able to bind the visibility of this button to some state. More bonus points for not using `toggle()` and the same select-by-id antipattern. $("#" + this.id("uploadPathDisplay")).html("Path: " + render.formatPath(attachment.uploadNode)); Select-by-id again. I’ve suppressed the urge to gag by this point. `.html()` instead of binding this to some appropriate component? Nothing new. Mysterious global `render` due to declaring things allergy? Par for the course. Let me know if you would like a review of any other files so I can decline and spare my mental health thanks
In Ask HN: Are there any solid arguments against SPAs in 2017?
https://github.com/Clay-Ferguson/meta64 --> is still a work in progress, but if you want to see a great example of modern architecture in a web app, check it out. Yes it's mine. It's running Google Polymer, JQuery, TypeScript, SpringBoot (with embedded Tomcat), Apache Oak JCR, and is a SPA that only updates the portion of the screen that changes. It never reloads the page. Full page reloads as a part of webapp architure has been totally obsolete and bad desing for at least 7 years now. SPAs are the best architecture for a lot of different reasons. There is one part of it that is mildly interesting (on the site itself) which is the RSS reader capability here: http://meta64.com/?id=/rss/feeds
In Ask HN: Are there any solid arguments against SPAs in 2017?
In my 15 years I've come to realize that HTML code-generation via JavaScript (or now TypeScript actually) is vastly superior to any type of templating (like JSP, JSF, Velocity, Mustache). Both ways (templating v.s. straight generation) have exactly one sort of 'level of indirection' so they are on the same order of complexity, but generating HTML rather than templating it is a billion times more powerful, so it is just better. To prove my point: Here's the code for the Audio Player in meta64. https://github.com/Clay-Ferguson/meta64/blob/master/src/main... No one can possibly argue that an HTML template for that would be easier to read, than the TypeScript I've written. I think the way meta64 uses Polymer, TypeScript, generated-HTML, etc is the ideal architecture for the modern app. BTW: I just picked a random example of my generated code
Read the rest
from meta64. I do agree the CSS embedded in that would be better as a CSS class. I am not arguing for dynamically created CSS, but only dynamically created HTML (i.e. no templates). My point was that if you have clean code, you can make your HTML-code-generation look almost like the HTML itself, or be 'as readable' as it would be if it were an HTML template. Readability is the key here. That's all that counts. If you can achieve that in JS/TS then it beats a template approach easy, because of its power in terms of OOP, reuse, etc, which templates are just awkward with.
In 15 years trying to make everyone separate HTML, JavaScript, CSS – and then

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.