Contains 0% CMS!


Dec 10, 2017 2:59:55

Long time no see, right? Like, it's been a really, really long time. I haven't posted anything in over two years.

Anyway, the language I mentioned a few posts back is called Frisktong now, and there's a pretty nice utility for it in the style of Ars Linguarum.

Ars 2 never got very far beyond the dictionary support. It seems I was so focused on the editing and the user system and on user interface things like the loading animation that I gave up before I ever got around to actually implementing any of the features that made Ars 1 so great.

Developing Frisktol is much nicer than developing Ars 2 was. Ars 2 used Angular 1, which was a bit of a hideous mess in retrospect, despite how neat and cutting-edge I thought it was at the time. Frisktol, on the other hand, uses React, and JSX makes it so much more pleasant to write components. The mindset is also a better fit for me.

Also, wow, looking back on the earlier entries here has been pretty fascinating. They started during the later part of the 2014-2015 period of my life (the gap year). I have great memories of finally getting libdrc to work (and nearly losing my old laptop's hdd in the process!) and of going to Disneyland with friends and of watching Steven Universe while visiting Santa Barbara to check out UCSB. That was also when I didn't need parental approval to use my own money (shocking, right?), so I stopped by Level Up very frequently back then. I kinda get the sense that I grew a fair amount back then, but I can't really recall any specifics. I certainly did learn a lot, having developed Ars 1 and joined Nintendo's Wii U developer program back then, but no specific examples of personal growth are coming to mind.

I think that of all the periods in my life, the gap year is the one I feel most nostalgic about. I wish I had more records of that time, but I didn't use Snapchat back then as extensively as I do now, so I mostly have to rely on my own recollection. Freshman year was also pretty nice in many regards—it was my first time living pretty much on my own, and I think living in the dorms was really good for me. Because of the physical proximity, I felt a lot more connected to the campus back then than I do now. Compared to freshman year, my sophomore year was totally mundane. Not much new or exciting happened, with the sole exception of May 18, 2017 (I'm going to skip over the events of that day here, but I can't imagine my future self will have any difficulty understanding what I'm referencing). I'm now at the end of the first quarter of my junior year, and things are even less exciting now. My schedule has been complete and utter garbage and I've had very little free time; it's really sort of sad to look at my gaming history and realize just how little I've been able to play this quarter. In addition to the crushing weight of all my academics, there's also the fact that fewer and fewer of the TPS members I first met in my fall quarter of freshman year now remain. So many people have graduated now, and once the next school year begins, I'll be the oldest (non-gradschool) member and the sole survivor of Upsilon class. The newer members are all fantastic, but it was with the older members that I formed my first memories of TPS, so it's sad to see them all graduate.

If everything goes well, though, the future has a fair chance of turning out great. My goal is to leave this hot mess of a country behind as soon as I'm done with my undergrad degree and flee to Germany to get a PhD eventually. I'm practicing my German every day in preparation for that. Given how much more Germany means to me (in addition to the fact that I'm currently living in a country that I'm embarrassed to be a citizen of), I feel I could do a lot better if I moved there.

[2.2.0] Ars Linguārum 2

Oct 20, 2015 3:26:32

The collaborative part of Ars is pretty much done. Each lexicon has an author (the owner of lexicon, with complete control over it), plus a list of editors (who can edit a lexicon and change the list of editors). There's an interface to add and remove editors and publish or unpublish the lexicon (an unpublished lexicon is invisible to anyone who isn't an author or editor). Furthermore, it's possible to edit cached lexica and reupload them (provided you have the permission, of course). I still need to add a way to create lexica, but that'll be easy.

To achieve feature parity with Ars 1, I'll need to implement parsing, searching, browsing and tabling (in other words, a very large amount of work). I suppose I also have to add gamepad support too, because Ars 1 had that as an experimental addon. This time, I could use the Gamepad API. (I switched back to Chrome as my main browser; Safari doesn't support the Gamepad API as of this writing, so back when I used it as my main browser, I had to make a native app communicate via Socket.IO to a server that sends the button inputs to the web client. Huge disgusting mess.)

Ars 2 is pretty impressive by now, despite the glaring absence of any ways to use the lexica (right now it's pretty much a pastebin). I've implemented lots of neat stuff, and there's even more to add, so this is a great project to be working on. Maybe when I'm more convinced that the code isn't garbage, I'll put it on GitHub under my account not associated with my real name. ;)

Ars 2 Screenshots

NP: Que Sera

[2.1.0] Ars Linguārum 2

Oct 12, 2015 23:55:22

I got interested in actually learning Angular, so I did. I've been writing Ars Linguārum 2 in it, and I've made huge amounts of progress. There's a backend with users and lexica and everything, and the design is really nice and clean.

Najþiŋan to māknār

Sep 15, 2015 2:24:03

Nūs nāman jī skoksum jo nūx nāūðr. Lāxhāftut nūsān nāmen sār. Gūter nāmut "friskoks" (wūrðālþ "frisk" nā "skoks") kund sān.

Skenz skoksy

Sep 13, 2015 1:41:35

Skoksn tjān "skenz" jo kālzr jo māknārkø.

I'm still alive

Sep 11, 2015 10:23:51

I'm definitely still alive, even though I haven't posted any progress updates. That's because I haven't really done any work. :P I've been learning a bit of Angular (which is what I plan to use to make Ars 2), but very slowly because I'm incredibly lazy.

[1.5.3] Final Ars Linguārum 1.x.x release

May 5, 2015 23:25:40

Though the last of the changes was made a few days ago, it's now that I've decided to call Ars Linguarum 1.x complete, so I'm making this post to provide an update on the last features added.

The rewrite for 2.0 has already begun. After the rewrite, I'll add the features from the checklist below.

[1.5.2] Ars Linguārum: Miscellaneous Updates

Apr 25, 2015 18:14:22

It's been nearly a month since the last changelog entry. A bit has changed. Mostly cleanups and such. Here's what I can recall:

There are almost certainly other things, but I can't recall what they are right now. Maybe I'll be able to dig through the code backups eventually and look for the differences.

Plans for the next update (1.6! maybe even 2.0!):

All those changes would probably be are definitely enough (especially the rewrite!) to warrant a major version change.


Apr 17, 2015 5:03:58

I have never been so disgusted in my entire life.

[1.5.1-1] Ars Linguārum: Controller Antics

Mar 30, 2015 22:48:26

I'm currently working on PS3 controller support for Ars Linguarum. Safari doesn't support the Gamepad API, so what I decided to do instead was write an app in Swift that uses DDHidLib (an excellent Obj-C wrapper for controllers) and sends controller inputs to a Socket.IO server. Since this is a shared webhost and doesn't support node (or, at the very least, I haven't tried, and I'm not sure whether I can bind to arbitrary ports), the Socket.IO server is on a different server (one that I have a shell account on). Luckily, Socket.IO doesn't have any cross-origin issues (I presume it uses Access-Control-Allow-Origin). This method is surprisingly smooth. If you wiggle both joysticks a lot, the app uploads around 10 KB/s (or 6 KB/s for a single joystick), which isn't that bad. It uses a minimum threshold of 1000 (from a range of -65536 to 65535 or so) so it doesn't send too much data. I've implemented channel support (so people don't receive controller input from other people), but both the web app and the controller client currently autojoin a default channel for convience. I plan to implement an on-screen keyboard so you can type search queries or edit the dictionary.

And if you're wondering what the point is: I'm doing this simply because I can. At the very least, it's a good exercise for learning Swift and especially how to use Obj-C code from Swift. I've also been learning through this how to make GUI apps with Swift, because up until now I've only done console programs with Swift.

[1.5.1] Ars Linguārum: Deep Parsing

Mar 23, 2015 18:15:37

I removed the loading animation because it froze Safari (8.0.5, MBP w/ OS X 10.10.3). I replaced it with animated rotation transforms for the logo. Parsing has been improved: it can now quickparse 4th declension nouns with -ubus dat/abl pl (e.g. quercus, -ūs f.), and deep parsing support has been added (just for nouns right now). Deep parsing looks up all the forms of all the lexicon entries and checks for matches, so it will definitely be slower than quickparsing with a large enough lexicon (right now, the speed difference is unnoticeable). Deep parsing uses the same query syntax as quickparsing, but with !dparse instead of !parse.

To do:

[1.5.0] Ars Linguārum: Async Searching

Mar 22, 2015 18:55:50

I used Web Workers to make searching async. This also meant I could add a loading animation, so I added the one I made earlier. You can test it by doing a search with "!wait 5 " before the query, such as "!wait 5 #food".
I also made a logo and added it to the navbar. It's also in the center of the loading animation. HTML5/CSS3/other cool features used so far:

[1.4.1] Ars Linguārum

Mar 20, 2015 23:26:10

Fixed a bug that caused the loader to freeze the browser (Safari 8.0.3 on Mac OS X 10.10.2) at n=69.18. Also some other things probably, but I can't remember them. #qualitycoding

[1.4.0] Ars Linguārum Update

Mar 20, 2015 4:56:14

Entries now have image support. I pretty much added this just so I could add dank memes to the entries about dank memes (memīcīda is my favorite so far). Also, I've begun work on the deflector (un-inflector). Currently, it works with nouns, but I plan to add support for more parts of speech. You can use it by doing a search like "!parse amicus" or "!parse %ami_co_" (the % indicates that macrons shouldn't be ignored). I've also made a nifty loader animation using canvas (including -webkit-canvas on WebKit; excellent feature). It's not used anywhere as of this writing, but you can add it yourself by doing a search and then running new BackgroundLoader(50).apply($("#tab-results").css({minHeight: "80px"})). Pretty neat, right? I plan to use the loader when a search is being performed, as complex queries will take a noticeable amount of time when the lexicon is large. Web Workers will come in handy for that.

These are the HTML5/CSS3/etc things I've used for Ars Linguārum so far:

It's great that no one has to care about IE support anymore.

[1.3.0] Ars Linguārum Update: Tags

Mar 17, 2015 6:32:53

I added tag support. Tag entries are now viewable (and can contain links to sources) and have a link to do a search for all entries that have that tag. In addition, every entry has a list of tags at the bottom. Clicking on a tag will take you to that tag's entry if it has one, or do a search for the tag otherwise. Tags can have human-friendlier names; if a tag has an alternate name, its alternate name will be shown to the user, with the original name visible as a tooltip.

[1.2.1] Ars Linguārum Update

Mar 16, 2015 23:32:19

I've added quite a few dank maymays. Noun phrases have been added too; so far, I've added "Ars Linguārum" (of course). They're treated like nouns, and under the hood, they're almost identical in structure. Noun phrases still have a noun type but contain their entry[1].word is an instantiation of ArsLinguarum.nounPhrase, which is has mostly the same structure as ArsLinguarum.noun but does inflection and lemma storage differently.

To do:

Update 2015-03-17 04:07:33: Added adjective support for noun phrases (they previously accepted only nouns). I also un-abbreviated field names in various part of speech classes, but that's not a change that's visible to a user.

[1.2.0] Syntax Highlighting

Mar 13, 2015 7:52:51

I added syntax highlighting to Ars Linguarum. It's magic. Also, the verb tabler won't die if it doesn't find any imperatives for ?-declension verbs; instead, it'll skip over them. Same for some indicative/subjunctive forms. To do: add tag support to the browser (as in letting it show both tag entries and the tags of an entry) and add support for noun phrases (e.g. "acipēnser crūdus" being declinable as "acipēnserī crūdo", "acipēnseris crūdī" and so on, rather than "acipēnser crūdī", "acipēnser crūdō", "acipēnser crūdōrum", etc.).

I'm also adding some internet humor and meme-related entries to the default dictionary from Mema Interretialia and O, Eheu!

[1.1.0] Ars Linguarum Update: History and Custom Dictionary

Mar 10, 2015 2:21:24

Ars Linguarum now uses the History API (HTML5 is a wonderful thing!) via History.js. In addition, the user can modify, save and reset the dictionary. Dictionary modifications are stored with localStorage. Next to add is support for download custom dictionaries as .txt files.

Update 02:54:08: Download support is complete.

[1.0.0] Ars Linguarum Status

Mar 9, 2015 5:11:44

Ars Linguarum is pretty polished now, and it has basically all the features I wanted to add. All that's currently left on the to-do list is to add a display of tags in search results and inflection tables, and also to add a Tags category to the Browse Dictionary section. (An entry in said category would give an explanation of the tag; e.g. no ppp => Applied to verbs that lack a perfect passive participle, such as deponent or active-only verbs.)

[0.9.0] Parser

Mar 9, 2015 3:00:45

I finished making a recursive descent parser that I plan to use for tag searching in Ars Linguarum. It'll be possible to do searches like "type:noun & ~(food | drink)" once I add support to Ars Linguarum. I finalized the parser at 3:00 AM too. :)

Update 03:42:46: The search bar works! However, right now all it does is display a list of the lemma form of each result.
Update 05:00:10: Now it displays results separated into lists by type and then sorted alphabetically within each type. Clicking on a result will show its inflection table in the Browse Dictionary tab.

Ars Linguarum Interface Improvements

Feb 24, 2015 18:38:08

I'm currently working on some major interface improvements to the Ars Linguarum page. Instead of a barebones button + textarea combo, it's going to have some overdone Bootstrap UI (~classic web developer~ amirite?).

[0.2.1] Ars Linguarum Cleanup

Feb 23, 2015 23:39:40

I've been working on cleaning up Ars Linguarum. The most recent backup (made a minute or so ago) is very messy. Nouns, adjectives, pronouns and verbs are all represented pretty differently. Some use a plain old constructor, one uses a static .parse() method, and the other returns a function that just calls a static allForms function from ArsLinguarum.verbs.conjugation with arguments from the parsed text. It's a horrible mess. So I've been working on remedying this. I'm currently working on the verbs to make them a bit nicer.

Update Feb 24 1:07:44: The cleanup is finally done (until I find something else to clean, that is). T_T

Ludus Finalis Prorsusque Celatus Artis Linguarum Incepti

Feb 23, 2015 4:33:11

Ars Linguarum's endgame is to be the foundation of a planned project. I haven't named it yet, but it's going to automatically generate a story. I plan to manually do part-of-speech tagging on (and other analysis of) some stories, including my own Modificatio Aeneidis, and write a program to generate characters, settings and plots to produce an entire story. It's perhaps a bit ambitious (not sure how I'm going to do the plot-generation part), but it can't hurt to try.

5:04:36 AM: Vocabitur Artem Fabularum.

[0.2.0] Ars Linguārum: Pronouns

Feb 17, 2015 20:47:22

I added pronoun support to Ars Linguarum. It can handle tricky ones like quis (common + neuter in the singular, masc + fem + neuter in the plural).

[0.1.1] More conjugations

Feb 15, 2015 22:26:04

I added more verb conjugations to Ars Linguarum (1st, 2nd, 3rd and 4th deponent + 3rd, 3.5th and 4th). Fun. I plan to add guessing support to verbs. Principal parts unambiguously provide all necessary information to fully conjugate a regular verb, so it should be easy.

[0.1.0] Ars Linguārum

Feb 14, 2015 2:54:38

I've been working on this thing that inflects Latin words. Its name (probably subject to change) is Ars Linguarum. It's pretty cool, so you should check it out. A pretty cool feature is that it's good at guessing missing parts of noun entries. Examples:

It autofills verb forms for regular verbs (though 2nd and 3rd conjugation require multiple principal parts). For 1st conjugation, it only requires the first principal part!

Previously, it guessed that laus,laudis:f is 2nd declension (as though it were laus,laī:m!) and pretty much discarded its genitive, but I fixed that by making it check the genitive to make sure it also looks like it's 2nd declension.