Na.
May 15, 2020 7:36:53
In atburðiken herisad kīs hysk. Þunrē þīs maton ko kø̣blotad, ak kündlico Woðannē þīs spekon blotan ko udrad.
Aisoð Blot
May 15, 2020 19:24:59
Kīs aisoð blotan hjarnaxt ko maknaz. Nēbīdag hyskatburðä TPSin sar. O kọdblotaz, kündlico hilpoz kē nä kīs hyskē ansāren. Var fýrvaksol ko notaz. Vono bokshilen nī blakaz.
Utsynan
May 15, 2020 1:44:29
Furī aif jeraz hjardag ko utsynad. Lang tīðutä það sar! Godud þingar ịðkø̣sar. Jok wiþrstaðan þạrsīðan ko kø̣møtar. Aic aismal wiþrstaðan ko kø̣møtar, furī rans sēz jeraz. Akobä ollad þto donlicut sad kīs Þjudisktongbekas. Aic skamut það mal wurdo sad.
Stimenobä
May 13, 2020 23:18:39
In kīs bokshilas künþar ko stimenanä han. Fyŕvaksanä ko nauðar, ak fīlans ko har. Fyŕ ak in bokshilasä hæticut sor. Vīrtazfyŕvaksanä? Aisan ko har.
Haiðnga
May 12, 2020 0:15:20
Kolut Haiðnga virðar. Nī kọdwit ak do blotans śạdan ko kunar, enku þisas tīðas is COVID-19. Hwaðol künþan ko notan stimenut? Kündlic walþuzanä. Ak hwaþan? Nurðas al UCSC? Ollar þar uft akar? Virðoz ko framut? Sja fīlu aiskar. Nī enku anom kustutä heimas blotan sar. Līko þọntruoz sarla to wostbrut foðes ø drukes. Andīlico umdragnēn ko, kündlicut blotan nä stimenanä han saz.
:O
Apr 3, 2020 18:27:09
Hey there. It's been a while. Another two years have passed.
I'm currently living during the apocalypse. COVID-19 is causing all kinds of mayhem. For me, the only effect so far is that my final quarter of college is online-only, which sucks. I'm hoping everything will be back to normal by my birthday. I've been working on a half-compiler of sorts. Pretty much an LLVM backend that doesn't use any code from LLVM. It compiles to bytecode for my silly VM. It's getting pretty close to completion. The hard parts like register allocation have been dealt with. What remains is converting things like math and logic instructions into their Why.js counterparts, which will be fairly simple to do. I've also been having fun working on amiibo hacking. I've written Animal Crossing card data to blank NTAG215 stickers using a PN532 thing. I've mailed a few to friends. It's nice to have this much control over the island, especially since you can use amiibo to kick out villagers you don't like. I've evicted Olaf and Octavian so far this way.
Hey.
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. ;)
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.
- Fixed locative plural for first declension (ārum → īs)
- Added support for ȳ/Ȳ (for words like Sȳria)
- Combined
ArsLinguarum.Interface.lexicon.valid
andArsLinguarum.Interface.lexicon.update
to prevent going through the lexicon twice when saving (checking the entire dictionary and then parsing the entire dictionary has been replaced with checking entries and adding the parse result into a temporary lexicon that replaces the main one if no invalid entries were found). - IPA tooltips!
[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:
- Phrase lemmas now display gender properly (faba gelātīnōsa instead of faba gelātīnōsus)
- A bit of restructuring to separate my utilities from 3rd party libraries
- A calendar utility (for stating the current date in Latin; for example, today is ad VII Kalendās Māiās MMXV)
- The tooltip for the download icon says either "the dictionary" or "your dictionary" depending on whether the dictionary is modified
- An update to the core lexicon
- The stats page actually does something now, and isn't hideous. It shows the number of each part of speech present in the dictionary.
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!):
- Full syllable divider + elider support to help users write poetry
- Support for particles like conjunctions and prepositions (this will be absolutely trivial)
- The ability to search with either a tag's short form or its long form (currently, you can only use the short form, like "#src:wk" instead of "#Source: Wiktionary")
- Clicking on a tag to search for it now uses the human-friendly version if there is one.
- A proper parser to allow | in strings
- Separate lexicons and the ability to choose desired lexicons while excluding unwanted ones
- Generation and display of the IPA representation of a word's pronunciation
- Ported Wiktionary's la-pronunc module to JS.
- A quiz generator based on a tag or based on manually chosen words
- Completion of deflector.js (support for adjectives, verbs, pronouns and adverbs + a better UI)
- Modularization: making the tab management a bit less haphazard
- Support for quotations in definitions
- Support for usage notes
- Asynchronous searcher (the results list is built as results are found)
- A complete rewrite/restructuring of essentially all previous code
All those changes would probably be are definitely enough (especially the rewrite!) to warrant a major version change.
Why.
Apr 17, 2015 5:03:58
[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:
- Add a backend (beyond the barely-existent current one) to allow things like fetching the default lexicon. Right now, it's served with each page load (not History API ones). This is inefficient, and means that if the default lexicon changes after the page loaded, resetting the lexicon will reset it to the previous version of the default lexicon.
[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:
- localStorage
- History API
box-shadow(removed because I flattened the design a little bit)- Blob construction and window.URL.createObjectURL
- -webkit-canvas and document.getCSSCanvasContext (on WebKit) or -moz-element (on FF)
- window.requestAnimationFrame
- window.devicePixelRatio
- Web Workers
[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:
- localStorage
- History API
- box-shadow
- Blob construction and window.URL.createObjectURL
- -webkit-canvas and document.getCSSCanvasContext
- window.requestAnimationFrame
- window.devicePixelRatio
[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:
- browser (as in word browser, not web browser) tag support (still)
- Cmd-S/Ctrl-S to save the custom dictionary
- an info page that contains information about the project and credits for sources (such as Wiktionary, Lewis & Short, Elementary Lewis, Guy Licoppe's dictionary of modern Latin, Mema Interretialia and O, Eheu!)
- Better dictionary parsing: allowing | in strings (tags and definitions) by making an Actual Parser™
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:
- Given
n|rēs
, it'll deduce that it's a feminine 5th declension noun with genitiverēi
. - Given
n|navis|i
, it'll deduce that it's a feminine 3rd declension noun with genitivenavis
. - Given
n|castra|pl
, it'll deduce that it's a neuter 2nd declension noun with genitivecastrōrum
.
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.