Asta Areti's Avatar

Asta Areti

@a43ti.bsky.social

Programming student-almost-junior, nearly every day surprised by something new from professional realm https://fed.brid.gy

10 Followers  |  20 Following  |  79 Posts  |  Joined: 31.12.2025  |  2.3418

Latest posts by a43ti.bsky.social on Bluesky

AIS data just straight up written from every message received from the web socket

AIS data just straight up written from every message received from the web socket

AAAA I CONNECTED TO REAL MARINE TRAFFIC! πŸŽ‰πŸŽ‰(⁠╯⁠°⁠░⁠°⁠)⁠╯⁠︡⁠ ⁠┻⁠━⁠┻

(these are real AIS messages from a public source, connected with websocket)
aisstream.io πŸ‘ˆ

#maritime #navigation #geosky #buildinpublic #dotnet

08.02.2026 18:32 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
comparison of different summaries of points somewhere in the sea (or even not)

comparison of different summaries of points somewhere in the sea (or even not)

optimized repository method: intersection with a searched point is found with a raw sql query, a formatted string command. ef core's mapping is used only to find an entity by already known gid (geographical id)

optimized repository method: intersection with a searched point is found with a raw sql query, a formatted string command. ef core's mapping is used only to find an entity by already known gid (geographical id)

history difference of the EEZ entity: i removed the geometry field. apparently it was the problem, EF Core took time mapping geometries to entities in code, and oh have you seen these EEZ geometries when not simplified... (⁠๑⁠‒⁠﹏⁠‒⁠) so as target DTO of what is to be shown on the frontend panel definitely doesn't need geometry, and intersection check is moved from code to raw sql - geometry field could be safely removed πŸ‘

history difference of the EEZ entity: i removed the geometry field. apparently it was the problem, EF Core took time mapping geometries to entities in code, and oh have you seen these EEZ geometries when not simplified... (⁠๑⁠‒⁠﹏⁠‒⁠) so as target DTO of what is to be shown on the frontend panel definitely doesn't need geometry, and intersection check is moved from code to raw sql - geometry field could be safely removed πŸ‘

frontend part of the point summary done βœ…

and optimized endpoint response from 4 s to ~250 ms!
due to:
- querying only GID for intersection, doing it with raw sql
- using EF to find the EEZ by gid
- removed now unneeded geometry field from entity

#buildinpublic #geosky #dotnet #angular #efcore

08.02.2026 11:29 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

I'm making a summary for the clicked point in the marine #gis project

it will display whatever different marine zone(s) the point is within

and will be situated in this cool freshly made side panel <⁠(⁠ ̄⁠︢⁠ ̄⁠)⁠> (post belowπŸ‘‡)

backend endpoint works βœ…

#buildinpublic #dotnet #webdev #api #geosky

06.02.2026 22:05 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
result of the moving - I freed approximately 2.5 Gb and to all the database the connection is successful again (⁠≧⁠▽⁠≦⁠)

result of the moving - I freed approximately 2.5 Gb and to all the database the connection is successful again (⁠≧⁠▽⁠≦⁠)

new folder for data, which I prepared by enabling every possible permission (full control) for user type Network Service - because postgres is a service

new folder for data, which I prepared by enabling every possible permission (full control) for user type Network Service - because postgres is a service

changing the text of the command that starts postgresql service. what is changed in it  is path to the data directory, after the -D flag. as you can see, done with window's sc config utility which manages parameters of Service control

changing the text of the command that starts postgresql service. what is changed in it is path to the data directory, after the -D flag. as you can see, done with window's sc config utility which manages parameters of Service control

result of the Postgres service start command change - visible in its Properties in the familiar services.msc window. also notice that postgres is stopped - it has been the whole time, you absolutely must stop the service before managing its directories

result of the Postgres service start command change - visible in its Properties in the familiar services.msc window. also notice that postgres is stopped - it has been the whole time, you absolutely must stop the service before managing its directories

yesterday I moved PostgreSQL data folder to another drive. each converted shapefile adds hundreds of Mb to it

moved postgres' /data folder contents, allowed Full control of Network service over new folder and modified service invocation command to refer to it

#database #postgres #sql #dev #windows

06.02.2026 14:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

implemented coordinates display of the clicked point, in decimal degrees and with minutes, like in NMEA 0138

data is sent from Leaflet map to Angular components via a Subject observable service

(there will be way more info on this side panel)

#gis #geosky #maps #angular #buildinpublic #webdev

04.02.2026 12:18 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1
these are text shadows from which I am going to compose outlines for the letters, I for some reason decided to set their offset in rem instead of px

these are text shadows from which I am going to compose outlines for the letters, I for some reason decided to set their offset in rem instead of px

css bloopers from new incoming feature of the maritime gis project! :DD

#css #buildinpublic #tailwind #web #webdev

03.02.2026 15:23 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

so far unexpectedly easy... even though I'm applying it for the first time... huge thanks to it for providing layout options, and not just any rigid random stuff (hello bootstrap) but means to make responsive flexy stuff

01.02.2026 14:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
demo screenshot with the first proof that tailwind is added successfully and classes work

demo screenshot with the first proof that tailwind is added successfully and classes work

configuration files necessary to enable tailwind: .postcssrc.json with tailwindcss listed as a plugin, and an import in the global styles file

configuration files necessary to enable tailwind: .postcssrc.json with tailwindcss listed as a plugin, and an import in the global styles file

installed tailwind related packages in the project's npm

installed tailwind related packages in the project's npm

i'm adding tailwind css to my #gis Angular project, wish me luck... (⁠・⁠–⁠・⁠;⁠)β γ‚ž

#tailwind #css #webdev #buildinpublic

01.02.2026 14:04 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

€400? I thought that a switch for gaming is already an outdated thing from 2014, that can be bought on ebay for peanuts and pennies...

31.01.2026 13:23 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

technically had experience, very bad: got banned after a minute of account existing, appealed but got a response "we figured out that you are indeed a harmful bot, so we cant allow you to use this social media like ever again"

31.01.2026 11:51 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

68 posts of .NET & GIS grind and only 6 followers. is this thing on? πŸ”Ž
if you're into c#, sql, or mapping stuff, heart this or say hi. i'm not stopping anyway heh

#devlog #dotnet #gis #buildinpublic

31.01.2026 11:17 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 2    πŸ“Œ 0
initial error case with an attempt to ensure non-nullability with a default instance. all tests in this project regard repositories, and they all identically failed on the preparation stage - during data seeding!

initial error case with an attempt to ensure non-nullability with a default instance. all tests in this project regard repositories, and they all identically failed on the preparation stage - during data seeding!

successful case with null-forgiving operator. non-nullability implemented, no weird extra entities and all tests passed

successful case with null-forgiving operator. non-nullability implemented, no weird extra entities and all tests passed

in EF Core for non-nullable entity properties of Reference types - don't just assign a new default instance! πŸ“’πŸ“’ it Doesn't Work the same as with string.Empty!πŸ“’

that default is added to DbContext too, creating ID conflicts especially (!) during addition

#dotnet #efcore #csharp #dev #entityframework

31.01.2026 01:05 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

its writing XML documentation, as soon as completing the method/class with properties. it already removes those moments of confusion during long hours of coding when you suddenly forget a purpose of some class. and unarguably that's a professional thing to do 😊

30.01.2026 20:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
situation in the web app right after migration to angular, no change in the frontend including css (though I separated custom css from html as it should be in angular) - div with the map collapses to 0 height

situation in the web app right after migration to angular, no change in the frontend including css (though I separated custom css from html as it should be in angular) - div with the map collapses to 0 height

possible workaround - setting exact height just on the map div - comes together with a hard time calculating the right height based on whatever else might I eventually want to add alongside the map

possible workaround - setting exact height just on the map div - comes together with a hard time calculating the right height based on whatever else might I eventually want to add alongside the map

better option of making the component tag, which is a container for the map div, bigger itself. :host pseudo class is the way of an element referring to self. still not perfect, I had to choose that value in vh over some tries, but at least easier to potentially calculate because its less nested than the map div

better option of making the component tag, which is a container for the map div, bigger itself. :host pseudo class is the way of an element referring to self. still not perfect, I had to choose that value in vh over some tries, but at least easier to potentially calculate because its less nested than the map div

today I migrated my #gis project to Angular and already bumped into common issue - map height. now in a component it collapsed

obvious workaround - set exact height in css - too sketchy

right answer - expanding component itself with shadow DOM (:host class)

#buildinpublic #angular #web #css #maps

29.01.2026 22:51 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

can i be in it? :)))

28.01.2026 17:15 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

hmm i checked afaik bluesky doesnt support group chats, so what else... how about discord?

28.01.2026 17:08 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

here or in other social media?

28.01.2026 16:05 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

personally I absolutely want it!!

28.01.2026 16:03 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
look closer, right in the middle of this map fragment near denmark there is a rectangle inscripted ESD 138 and ESD 139. turns out these are military designated zones, where planes and ships are sometimes restricted. link about the first one is in the post, about the second one I could not even find info

look closer, right in the middle of this map fragment near denmark there is a rectangle inscripted ESD 138 and ESD 139. turns out these are military designated zones, where planes and ships are sometimes restricted. link about the first one is in the post, about the second one I could not even find info

...I didn't expect that #OpenStreetMap tiles include military facilities (⁠‒⁠ ⁠▽⁠ ⁠‒⁠;⁠)

(look right in the middle)

(was randomly spinning the map, having fun with completed #eez, found these... danger zones or something)

mapcarta.com/W383490935 - on esd 138

#maps #OSM #geosky #geospatial #sea

28.01.2026 01:09 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

final (!!!) adjustment to #eez streaming!πŸŽ‰βœ¨πŸŒŠ
made the chunks streaming order make sense! :D

on world/continent zooms 1-4 - the closer to viewport center, the sooner on map

on the rest of the zooms - sorted by area: first big chunks, then little crevices

#buildinpublic #dev #geosky #maps #openseas

27.01.2026 02:12 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
to create the bridging, first select Bluesky account on the main page, then you'll see this one, where enter your existing account handle (1/2)

to create the bridging, first select Bluesky account on the main page, then you'll see this one, where enter your existing account handle (1/2)

(2/2) after OAuth authorization existing bridging account looks like this

(2/2) after OAuth authorization existing bridging account looks like this

just bridged this account of mine to fediverse... i'm amazed by this ecosystem, so many apps and connections, probably I don't know a lot more yet πŸ˜…
and don't know maybe some frens will come here from mastodon :)

#fediverse #bridgyfed #bluesky #mastodon

27.01.2026 00:52 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
updated section in the appsettings.json configuration that contains both connection strings now - for local launch and for usage in docker

updated section in the appsettings.json configuration that contains both connection strings now - for local launch and for usage in docker

new code fragment of the api's program.cs, where its determined by the docker's environment variable, is the api running containerized now or not. then the respective configuration section name is selected, the section is deserialized into a settings object according to Options pattern and registered in the dependency container

new code fragment of the api's program.cs, where its determined by the docker's environment variable, is the api running containerized now or not. then the respective configuration section name is selected, the section is deserialized into a settings object according to Options pattern and registered in the dependency container

screenshot of logs of a running container with the api, from the image that was rebuilt after environment detection was added. docker environment is correctly detected

screenshot of logs of a running container with the api, from the image that was rebuilt after environment detection was added. docker environment is correctly detected

analogy to the previous screenshot: console logs of the api running locally after environment detection was added. environment is correctly detected as not docker

analogy to the previous screenshot: console logs of the api running locally after environment detection was added. environment is correctly detected as not docker

(3/3)
so I added both connection strings into the api's appsettings.json

and environment detection logic by the Docker variable in the api's Program.cs part by which the right string is chosen

heh the console logging added earlier came in handy

#docker #devops #dotnet #postgresql #buildinpublic

26.01.2026 18:19 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
updated connection string for postgresql that has Docker url for host

updated connection string for postgresql that has Docker url for host

the first succesful request I made to the containerized api, via mapped http port. showing that both port mapping and postgresql connection finally worked properly

the first succesful request I made to the containerized api, via mapped http port. showing that both port mapping and postgresql connection finally worked properly

such requests include not only database interaction, but also fetching data from external other public apis - which all worked successfully too

such requests include not only database interaction, but also fetching data from external other public apis - which all worked successfully too

such requests involve interaction with the aforementioned background service. which basically is the db interaction again with some chance (like this particular request), or memory cache. still, i wanted to access and test this endpoint too to be sure

such requests involve interaction with the aforementioned background service. which basically is the db interaction again with some chance (like this particular request), or memory cache. still, i wanted to access and test this endpoint too to be sure

(2/3)
turned out that postgres connection string was the culprit. its Host part had value "localhost". it made the api, to no avail, search for DBMS within the container

the right value is host.docker.internal

also re-ran the container with port mappings

#docker #postgresql #devops #buildinpublic

26.01.2026 18:19 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

here we go again, today I dockerized an app of another type - #api with external dependencies, including interaction with postgresql!
though at first there was a fail - a service that saves something into the db every N minutes, crashed the program..
(1/3)

#docker #postgresql #devops #buildinpublic

26.01.2026 18:19 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
fragment of a razor view markup after I just wrote it - I thought that identical "asp-for" are enough for the association

fragment of a razor view markup after I just wrote it - I thought that identical "asp-for" are enough for the association

tried the usual way to associate them by "for" attribute on label + "id" on input

tried the usual way to associate them by "for" attribute on label + "id" on input

then I tried nesting the inputs inside the label tags in addition to the "for" + "id"

then I tried nesting the inputs inside the label tags in addition to the "for" + "id"

the right answer turned out to be adding some actual text to labels + keeping the association by id. apparently without perceivable content (aka text) labels make no sense to static analyzers, and then even the association by id doesn't count. I guess I will just conceal the text with css

the right answer turned out to be adding some actual text to labels + keeping the association by id. apparently without perceivable content (aka text) labels make no sense to static analyzers, and then even the association by id doesn't count. I guess I will just conceal the text with css

#sonarqube linter has some beef with html labels 😦

had some labels, wanted to add text with js, so left them empty in markup - code smell⚠️

okay, added the pair of for + id, still⚠️

also tried nesting, nah⚠️

turns out without text they are not perceivable at all...

#aspnet #razor #dotnet #dev #web

25.01.2026 10:24 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

chunk ids worked as intended - now no holes in #eez!
also I decided to simplify more for speed's sake, completely change from PreserveTopology to just ST_Simplify on first 2 zoom tiers + on 3rd for a few countries with the most complex shorelines

#buildinpublic #dev #postgis #geosky #maps #leaflet

22.01.2026 22:12 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 1
i overdid with simplification this time, this loaded fast but look at these cracked tiles

i overdid with simplification this time, this loaded fast but look at these cracked tiles

comically bricky sea 🌊

(one of the attempts of applying more simplification to #eez on world and continental zooms because the loading speed could be better)

#buildinpublic #dev #gis #geosky #maps

22.01.2026 15:04 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
putting custom headers in the response on backend side: first with necessary info, second - to enable browser to see the first

putting custom headers in the response on backend side: first with necessary info, second - to enable browser to see the first

checking for the custom header on the frontend

checking for the custom header on the frontend

a response example caught in devtools, that has my custom headers

a response example caught in devtools, that has my custom headers

yesterday I used http headers for passing info :000

in these wee few lines of code I learnt whole 2 facts
1 - nowadays we should prefix custom headers with app name, not X
2 - Expose-Headers doesn't work like true/false, we should pass header names to it πŸ˜…

#buildinpublic #web #dev #dotnet #http

22.01.2026 10:01 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
comparison of registration forms filled with different password length, demonstrating that with a password less than 8 characters its impossible to operate

comparison of registration forms filled with different password length, demonstrating that with a password less than 8 characters its impossible to operate

example of a registration attempt rejected because of the password being from the top most common ones list

example of a registration attempt rejected because of the password being from the top most common ones list

example of a password change attempt rejected because in this account the proposed new password was used before

example of a password change attempt rejected because in this account the proposed new password was used before

columns and their types in custom extra tables in the project's IdentityDbContext necessary to implement password change codes, common password rejection and previously used password rejection

columns and their types in custom extra tables in the project's IdentityDbContext necessary to implement password change codes, common password rejection and previously used password rejection

did i tell y'all that the #ecommerce project has proper limitations on passwords? =))

- at least 8 characters
- no passwords from the top 50 most popular list (among 8+ characters)
- no reusing old passwords when recovering

last pic are my extra tables in identity db

#buildinpublic #dotnet #dev

20.01.2026 02:07 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

i'm adding individual ids to chunks of the #eez, without these their viewport presence isn't tracked properly:
- track by at least 1 chunk then eez are loaded incomplete
- track by only when all chunks are on map (its rare) and there will be duplicates

#buildinpublic #dev #gis #geosky #sql

19.01.2026 09:54 β€” πŸ‘ 6    πŸ” 1    πŸ’¬ 0    πŸ“Œ 1

@a43ti is following 20 prominent accounts