Apos's recent activity

  1. Comment on Namecheap Expert Summit 2021 in ~tech

    Apos
    (edited )
    Link
    Trailer Started on June 1st, Namecheap Expert Summits are virtual learning conferences where you can watch online classes led by business experts and entrepreneurs. You can watch the videos for...

    Trailer

    Started on June 1st, Namecheap Expert Summits are virtual learning conferences where you can watch online classes led by business experts and entrepreneurs.

    You can watch the videos for free either by registering (you get an email for each new video), or from this YouTube playlist. (Skip over all the trailers.)

    I'm liking the videos so far.

    This is the one from today: https://www.youtube.com/watch?v=XBBLOX3T7xk.

    2 votes
  2. Comment on What programming/technical projects have you been working on? in ~comp

    Apos
    Link
    I finally got my space optimization algorithm to support all the features I wanted. I managed to add negative areas. Essentially, it prevents the rectangles to overlap the red areas. It's so...

    I finally got my space optimization algorithm to support all the features I wanted. I managed to add negative areas. Essentially, it prevents the rectangles to overlap the red areas. It's so satisfying to play with it.

    For my game's pathfinding, this means I'll be able to modify the walkable path at runtime. I'll also be able to add or remove walls.

    4 votes
  3. Comment on Fortnightly Programming Q&A Thread in ~comp

    Apos
    Link Parent
    I don't think it's too hard. The hardest is probably to get started. Once you have a basic project that you can run and test, then it's just about iterating. If you want to try Flutter, they have...

    I don't think it's too hard. The hardest is probably to get started. Once you have a basic project that you can run and test, then it's just about iterating.

    If you want to try Flutter, they have a getting started guide.

    Here is another guide for Xamarin (dotnet C#). There's a playlist with short videos where they run you through the steps. (It will get even easier with .net 6.)

    2 votes
  4. Comment on The documentation system in ~comp

    Apos
    (edited )
    Link Parent
    I think the .fr is new. I've been following those repo for a few months and it's the first time I notice it. Edit: Looks like it happens in April in this commit.

    I think the .fr is new. I've been following those repo for a few months and it's the first time I notice it.

    Edit: Looks like it happens in April in this commit.

    1 vote
  5. Comment on The documentation system in ~comp

    Apos
    Link Parent
    That's something I noticed too. I've started adding example projects in my own repos, and I often check projects that use libraries I'm looking at. For example, here is a simple project that uses...

    That's something I noticed too. I've started adding example projects in my own repos, and I often check projects that use libraries I'm looking at. For example, here is a simple project that uses my camera library. The project sets up a 5 player local multiple game. snip

    I started a discussion here to probe the author.

    4 votes
  6. Comment on The documentation system in ~comp

    Apos
    (edited )
    Link
    I mentioned this a few times in other posts, but I never made a full thread about this. This video explains it pretty well: https://www.youtube.com/watch?v=t4vKPhjcMZg. This site is about the...

    I mentioned this a few times in other posts, but I never made a full thread about this.

    This video explains it pretty well: https://www.youtube.com/watch?v=t4vKPhjcMZg.

    This site is about the theory of writing documentation. "The Grand Unified Theory of Documentation"

    In summary, documentation is split into four parts, each of them requires a distinct mode of writing:

    • Tutorials: lessons that take the reader by the hand through a series of steps to complete a project of some kind
    • How-to-guides: take the reader through the steps required to solve a real-world problem
    • Reference guides: technical descriptions of the machinery and how to operate it
    • Explanation: Explanation, or discussions, clarify and illuminate a particular topic

    People working with software need these four different kinds of documentation at different times, in different circumstances.

    If you can put these principles into practice, it will make your documentation better and your project, product or team more successful - that’s a promise.

    Edit: I just found a different place where this information is hosted: https://diataxis.fr/. It's not just a copy paste.

    5 votes
  7. Comment on Sublime Text 4 in ~comp

    Apos
    Link Parent
    You might be able to find some alternative Discord clients, but unfortunately 3rd party clients are against their ToS.

    You might be able to find some alternative Discord clients, but unfortunately 3rd party clients are against their ToS.

    1 vote
  8. Comment on What programming/technical projects have you been working on? in ~comp

    Apos
    Link
    The other day I posted about the algorithm I wanted to implement snip and I finally have a working implementation: https://gfycat.com/colorlessdefenselessleopard. It's really fun to play with it....

    The other day I posted about the algorithm I wanted to implement snip and I finally have a working implementation: https://gfycat.com/colorlessdefenselessleopard.

    It's really fun to play with it. This space division algorithm will power the pathfinding algorithm in my game. With this implementation, the game will no longer be restricted to movements on a grid.

    I've been thinking about parts of this algorithm since 2014. This improvement is a pretty big milestone.

    In the future, I'd like to use it to code a deterministic physics engine.

    2 votes
  9. Comment on Fortnightly Programming Q&A Thread in ~comp

    Apos
    Link Parent
    In this end this is what I got which is much simpler than the other thing I wrote in my other reply: Let's say I want this, what I do is for each rectangle, I dissect them into two vertical range,...

    In this end this is what I got which is much simpler than the other thing I wrote in my other reply:

    Let's say I want this, what I do is for each rectangle, I dissect them into two vertical range, one on the left of the rectangle and one on the right. The ranges on the same X axis are considered part of the same slab. I merge overlapping ranges. I sweep through those slabs one by one from left to right. Each time a previous slab doesn't have a matching range, a new vertical rectangle is created.

    Another example: this becomes this.

    I got a first implementation done. It's not yet super optimized, but it seems to work really well.

    1 vote
  10. Comment on Is there a way to make sure sent e-mails are opened? in ~tech

    Apos
    Link Parent
    Interesting, I thought it was a CDN that automatically cached everything but looks like it's just a proxy and doesn't prevent tracking when the email was opened.

    Interesting, I thought it was a CDN that automatically cached everything but looks like it's just a proxy and doesn't prevent tracking when the email was opened.

    1 vote
  11. Comment on Is there a way to make sure sent e-mails are opened? in ~tech

    Apos
    Link Parent
    Looking at some emails with images in my gmail, it looks like you don't get served the original image. They are all hosted on Google's own CDN. Doing a quick search, I find this / snip1 / snip2...

    Looking at some emails with images in my gmail, it looks like you don't get served the original image. They are all hosted on Google's own CDN.

    Doing a quick search, I find this / snip1 / snip2 which confirms it.

    In other words, you don't get tracked from the images.

    3 votes
  12. Comment on What programming/technical projects have you been working on? in ~comp

    Apos
    Link
    I coded my first real Rust application: https://github.com/Apostolique/rust-lilypond-invoke-editor. I don't know if I understood everything with the text manipulation that I'm doing, but it was...

    I coded my first real Rust application: https://github.com/Apostolique/rust-lilypond-invoke-editor.

    I don't know if I understood everything with the text manipulation that I'm doing, but it was pretty cool that I could easily get into the Windows system and grab an environment variable.

    It's a replacement for https://lilypond.org/doc/v2.22/Documentation/usage/configuring-the-system-for-point-and-click. afaik I managed to stay compatible with it.

    7 votes
  13. Comment on Fortnightly Programming Q&A Thread in ~comp

    Apos
    Link Parent
    Indeed, I can do a quick query with that, but I was thinking more about the merging itself. But I think I was overthinking it. I just came up with 8 rules that I think will solve this problem. Not...

    Indeed, I can do a quick query with that, but I was thinking more about the merging itself. But I think I was overthinking it. I just came up with 8 rules that I think will solve this problem. Not sure if there are mistakes, but I'll try to code this tomorrow:

    To add to verticals:

    1. Create new vertical (a). Add it to the pending list.
    2. Query existing verticals at that position.
    3. For each vertical:
      1. If vertical fully contains (a), done.
      2. If (a) fully contains vertical, remove vertical.
      3. If vertical matches (a)'s height, remove it. Expand (a) to cover removed vertical.
      4. If (a) pokes vertical vertically, split vertical. Expand (a) to match vertical's top or bottom based on which way it pokes.
      5. If (a) pokes vertical horizontally, shrink (a) to end on the left or right edge of vertical.
      6. If (a) stabs vertical vertically, split vertical, shrink to the left and / or right side of (a).
      7. If (a) stabs all the way through vertical horizontally, split (a), shrink to the left and right of vertical. Add each nodes to the pending list.
      8. If (a) overlaps vertical slightly, split (a), expand part that overlaps vertical, expand vertical if both sides overlap. Add each nodes to the pending list.
    4. Add pending list to vertical.

    Made up a bunch of words. Should be fun to implement that.

    2 votes
  14. Comment on Nornec - Things Adrift (2021) in ~music

    Apos
    Link
    New album from Nornec that came out a few hours ago.

    New album from Nornec that came out a few hours ago.

  15. Comment on Fortnightly Programming Q&A Thread in ~comp

    Apos
    (edited )
    Link
    Let's say I have a world where I can put rectangles in any arbitrary location. The rules are the following: After inserting a new rectangle, no rectangle should be overlapping each others If an...

    Let's say I have a world where I can put rectangles in any arbitrary location. The rules are the following:

    1. After inserting a new rectangle, no rectangle should be overlapping each others
    2. If an overlap happens, rectangles should be split and / or resized such that their verticality is maximized and cover the full area that the rectangles covered (not sure how to explain it better than that but it should be easier to understand from the examples)
    3. If two rectangles next to each others have the same verticality, they should be merged

    Here are some examples of what I mean. The gray rectangles show the initial state. The transparent green rectangle shows the rectangle being inserted. The blue rectangles shows the newly inserted rectangles after running the algorithm.

    Example 01:

    1. Initial state 2 rectangles
    2. Insertion
    3. Final state 5 rectangles

    Example 02:

    1. Initial state 2 rectangles
    2. Insertion
    3. Final state 3 rectangles

    Example 03:

    1. Initial state 1 rectangle
    2. Insertion
    3. Final state 3 rectangles

    Example 04:

    1. Initial state 1 rectangle
    2. Insertion
    3. Final state 1 rectangle

    Example 05:

    1. Initial state 2 rectangles
    2. Insertion
    3. Final state 1 rectangle

    Example 06:

    1. Initial state 1 rectangle
    2. Insertion
    3. Final state 3 rectangles

    Example 07:

    1. Initial state 2 rectangles
    2. Insertion
    3. Final state 2 rectangles

    Example 08:

    1. Initial state 1 rectangle
    2. Insertion
    3. Final state 1 rectangle

    Originally, I was using a brute force approach that stored every rectangle. Every time a new rectangle was added I'd discard these "vertical" rectangles and recompute the whole world. This time though I'm looking for a way to only update locally the rectangles that should change around where the new rectangle is added. Visually, the solution seems obvious, but I can't come up with the right algorithm that's as simple to implement as it looks.

    (Eventually I'd also like to do rectangle removal or updating, but for now adding is enough.)

    Edit: Fixed an issue with example 02. I had missed the rule 3 where I should merge vertically similar rectangles next to each others. snip

    5 votes
  16. Comment on Announcing MonoGameJam3 in ~comp

    Apos
    Link
    Build a game using MonoGame and share it with the world! It will last a bit more than one week, overlapping the first two weekends in June. Theme : TBA Discord : https://discord.gg/monogame Rules:...

    Build a game using MonoGame and share it with the world!
    It will last a bit more than one week, overlapping the first two weekends in June.

    Theme : TBA

    Discord : https://discord.gg/monogame

    Rules:

    • Must be made using MonoGame, FNA, or other XNA derivatives.
    • Do your best to work within the theme.
    • Contestants can partake alone or as a team. Reusing existing code and assets is allowed.
    • Games must be created during the jam.
    • This is a fun jam, there is no minimum experience level. People from all backgrounds are welcome.

    Suggestions:

    • Share code and project files.
    • Write daily dev-logs.
    • Stream the creation process.
    3 votes