This profile might be incomplete.
Open on mastodon.social Gregory
Wall 485 posts
Gregory
Today's discovery: vim knows what TypeScript is and does syntax highlighting correctly. As opposed to Sublime Text 2, in which I had to select ActionScript for it to highlight anything at all. Even code completion via YouCompleteMe works 🤯
Gregory
Another small #Smithereen update. I've added og: meta tags to profiles and posts because I became tired of there being no preview cards whenever I send someone a link to my instance. Now, for example, this post link should have a card here: https://friends.grishka.me/posts/6442
Show previous comments
Gregory
#Smithereen update! Image attachments. The UI currently looks fugly, but hey, it works for now at least. I'll make it prettier when I get to all this JS/AjaxLayout stuff, which is the next thing on my todo list anyway. Took me too long because I participated in the Telegram developer contest, and also because it just takes so much thinking to figure out how to keep files in sync with the database. Hopefully I'll be able to reuse this code wherever I need image uploads.
Alexey Skobkin
@grishka Там ведь будет поддержка разных бэкендов для загружаемых файлов? Чтобы можно было не только локально, но ещё на S3, например, хранить?
Gregory
Why do people put selfies behind content warnings 🤔
Gregory
Ой, смотрите-ка, ВК лежит)
[DATA EXPUNGED]
Gregory
Is this another weird "privacy" feature in Mastodon? The web profile is publicly accessible, but the corresponding #ActivityPub actor doesn't even have the "url" field that my code expects. The web profile contains a name, a profile picture, a cover image, 2 fields and a summary, but those are nowhere to be seen in the actor. Just... why?
Gregory
#Smithereen update: mentions. They now actually work. There now are two kinds of mentions: Here's how these look: https://friends.grishka.me/posts/4845
Gregory
I thought I knew everything about Java but... it turns out you are allowed to have a public field with matching name and type in a class and in its superclass. And which one is being used depends on the type of the variable you use to access the field. That's why my mentions had wrong URLs in them.
Gregory
Also this is pretty dumb. Generics work by generating casts at compile time. An empty list is type-agnostic because it's empty and throws an exception when you try adding anything to it. Yet Idea shows this warning, implying there's something fundamentally wrong with your code.
Gregory
Another day, another flawed library. Found out the HTML sanitizer I use needlessly escapes too much, including emojis and @ signs. Had to implement an HTML writer (thankfully there's an interface exposed for that) that doesn't do any of this. Literally the only characters it touches are <, > and " (in attribute values), those do legitimately need escaping.
Gregory
#Smithereen update: I now support timezone detection for those of you who happen to not live in GMT+3. For now the implementation is sorta ugly and requires a page refresh, but that's a start. Also requires JavaScript but I'll probably add a manual setting at some point.
Gregory
#Smithereen update: language setting and English translation. It turns out the Spark framework (or is it Jetty?) is smart enough to parse the Accept-Language header and make a ready-to-use Locale object. Handy for initial language detection.
Gregory
Rick and Morty makes a classical science-fiction mistake: most intelligent life speaks English and every single planet and space station has a human-breathable atmosphere.
Blooming garden [咲く庭] :debian:
Gregory
When you've worked at VKontakte for 5 years, everything you make ends up looking like VKontakte.
Show previous comments
:ggc: Niklas
@grishka New fediverse software?Looks really very good 👍 I have a VK account but never actively used it.Anyway the interface looks somehow familiar to me 😃 I think I'll have to setup a instance when it's ready 🤔
Gregory
#Smithereen source code is now finally available!
Show previous comments
ma1uta
@grishka good! And a few remaks ;)
Gregory
#Smithereen update: reposts! These are a bit half-assed tbh because I keep them in the feed table so they don't show up in the profile, and there's also no reply thread loaded for them (yet) if there isn't one available already. But at least they are no longer ignored altogether.
Gregory
Fixed some more edge cases with post formats — namely, it turns out some Pleroma posts lack "url" and "published" properties. NullPointerExceptions are no more but I can still use some more stringent validation here. Also the amount of non-public posts I receive (and reject) is surprising. I also made a favicon and a new, more proportional logo.
Gregory
#Smithereen update: the news feed now uses a separate helper/lookup table in the database. This enables a feed that not only contains posts but other things like photos, photo tags and "X added Y as a friend". I'll also probably use this to implement "boosts" which are effectively not posts themselves but acts of sharing someone else's posts. Side note: my own reposts won't be like that, IMO it's better when each repost has its own comment thread.
Gregory
Interestingly, Mastodon boosts (or are those retoots after all?) do have unique IDs as if they are posts of their own, but if you try dereferencing that, you'll get redirected to the boosted toot to whatever instance that is on:
Gregory
It's been 4 days so far but it still creeps me out that the year no longer has the form of 201x.
Gregory
#Smithereen is now able to fully federate with itself. You can now send friend requests to people on other servers and make posts on the walls of users on other servers. That is, as soon as there are other servers. Currently there's only one, lol. Also addressing (to/cc) is now validated more strictly for incoming posts. |