#tooldev-general

1 messages ¡ Page 131 of 1

worthy cape
#

You might come up with something novel and wildly different, or it may be meh.

golden bane
#

That's fair, all I'm suggesting is that you give it a chance

simple ravine
#

It's part of the process

hazy fiber
#

tbf I had looked into a project to rewrite PoB using a "computation engine" approach in a different language, and just ended up deciding with the amount of effort going into it, you may aswell make your own game

#

its a pretty mammoth task, and most of the rest of the tedious stuff you need in a game can be handled by modern game engines

#

also what do you need out of a computation engine that headless PoB doesnt provide and wouldnt be way easier to implement into PoB?

oak estuary
#

I hear this a lot about Lua, but I don't really understand it. What is so different about it compared to learning any other language? I can accept just not liking it, as @simple ravine said, but I didn't know Lua at all until I stared looking at PoB, but it's pretty straightforward to read.

worthy cape
#

For me, Lua has some preconceived negative notions after seeing it overused as scripting language and extensions to games and other programs.

#

Stretching it to its limits in a setting where it might not quite fit but people insist on hammering it in.

hazy fiber
grave wren
#

compared to other stuff i use theres no good out of the box ide, no straight forward debugging, lots of weird lua dialects

#

it just is not very welcoming at all

#

compare it to python: you can get started easily with a repl, you get great ide support, it has a decent eco system with build tools

simple ravine
#

Another rationale for me is that I literally know 0 Lua right now, and I've done 20 years of .NET. I know enough tricks in C# to make a pretty performing thing.

oak estuary
#

Tooling could definitely be better, but EmmyLua works fine for me for debugging and IDE support. You can also use a repl in the command line, is that what you mean?

grave wren
#

emmylua caused my pycharm to lock up a lot, it didnt seem very stable when i used but yeah these are the main pain points for me and considering i probably wont ever encounter lua professionally i didnt feel like its worth it to delve into it a lot more

#

i delved into groovy for work as well but its similar to lua with the tooling and it being a lot more niche

simple ravine
#

Considering Lua doesn't have first-class class/inheritance system, and relias on metatables etc, how does a Lua program perform when using OOP paradigms?

#

Does it have the notion of heap vs struct types (reference, value types)?

worthy cape
#

Tables all the way down 😉

simple ravine
#

I am starting to scratch a little on the surface how Lua "operates" just to identify the paradigms and design decisions

worthy cape
#

"objects" are tables, which have metatables for overriding operations.

#

You would model a class system on top of that, PoB has a fair bit of fancypantsery for the UI system.

simple ravine
#

I suspect that means there are no efficient ways to leverage generics and interface segregation stuff, and ensure open/closed principles

worthy cape
#

The language is way "simpler" than the ones you're used to, I'd reckon, and not really intended for that kind of stuff.

simple ravine
#

Now that I think more about this, wonder if this actually could benefit more from being written in a purely functional language

oak estuary
#

Lua is designed to be an embedded scripting language, so yeah it doesn't have all the same things you'd see in a proper language (especially OOP things)

simple ravine
#

Oh wait, 90s actually

#

What are the good and the ugly things of the PoB codebase, be it because of the language and/or past design decisions of the code?

#

Would be interesting to hear about both sides

oak estuary
#

The good: Mod parsing and mod storage. While having mods tie directly to their proper values and descriptions as described in the GGPK might be better, parsing arbitrary text works pretty well and allows for new mods to be automatically supported, as well as keeping support for legacy items. Having mods be applied via flags and using bitwise operators to see which mods should apply to something works pretty well

The bad: Frame-based calculation. The graphics library that PoB uses calls the Lua scripts through an OnFrame function, which redraws everything on every frame, and recalculates everything when something has changed from the last time the calculation was done.

I think both of these are via design decisions. One upside of Lua (imo) are its simplicity. There are only a few types, and everything outside of those is a table, so all operations can assume a lot about the data getting passed in. Downsides, like we've mentioned before, are mostly around the lack of tooling/libraries, and lack of community enthusiasm to work on Lua. I'll ping @golden bane as well since he's been spearheading support for a Python rewrite

simple ravine
frank drift
#

python rewrite would be nuts, I'd probably contribute

simple ravine
#

Maybe there's a good reason for this, but when I see huge files like this, it's something that I normally identify as a big problem.

worthy cape
#

You have a different type of modularity here, file-local things are good and encapsulated.

simple ravine
#

Well, I'll only speak for myself, but this is a reason why I didn't pursue looking at PoB last time. It's quite difficult to navigate when you have these huge files

#

The cyclomatic complexity of this code is a bit too rough for a newcomer to deal with easily

golden bane
#

You could refactor this file into 20 small ones, but I don't think there's much to gain from it

oak estuary
#

That file in particular has to deal with every single thing that could affect a character's damage, which in PoE is a lot. I've wrote a couple of tutorials, but haven't gotten around to doing one for the calculation files, mostly because it's pretty straightforward. As Cinnabarit said, you could break it into files/functions, but I don't see much point in doing that unless we're going to cull some of the calculations by only running some of the functions when certain things change

simple ravine
#

Right. It feels like we're likely having quite different ways of looking at application design etc. I am not saying this is wrong or bad. Design decisions has pros and cons, trade-offs ™️

oak estuary
#

And for better or for worse, the design was done well before any of us touched the project 🤷

simple ravine
#

Sure, I mean, I don't really put any weight into how this came to be. 🙂

golden bane
#

PoB is somewhat modularised, but also somewhat of a big ball of mud. I consider this design to be optimal for this application. You could carefully craft some nice abstractions, but the reality is that anything can change every three months in PoE, possibly resulting in major major reworks if the game design collides with your hidden assumptions

simple ravine
#

And I try not to be too cocky, given I haven't tried writing anything my own yet, so..

hazy fiber
#

I have seen OOP done in lua by making a an "object", instancing it, and then you can override functions easily

by doing somthing like

local OLDfunctionName = objectName.functionName 
objectName.functionName = function(self, etc)
  --do stuff
  objectName.OLDfunctionName(self, etc)
end

lets you do some interesting stuff, but can easily be abused and can get messy if you do things like change stuff mid way through execution

hazy fiber
#

But yeah its not ment for OOP

golden bane
simple ravine
#

A good thing about languages such as C# and Java, are that you can create domain models that are guaranteed to be valid after your intended modification, by guarding your business invariants (game rules, etc) within that intent. Now for a calculation engine, that's probably not entirely true, because it's more functional in nature

bronze kestrel
#

Why are there talks about a rewrite? Are there no lua maintainers left?

simple ravine
#

I haven't talked about any rewrite, I'm talking about a general-purpose calculation engine, rather than a UI-bound application

#

Someone else was surfacing the idea of a rewrite in Python, but that's not my goal at least

bronze kestrel
#

I was asking about that. Thought you knew.

#

Just general curiosity.

#

A calc engine for what though? I’m intrigued.

simple ravine
#

I personally don't see a ~4,000-line file with 6 levels of indentation as maintainable

#

The same things PoB calculates, offense/defense/life/etc

#

It'd certainly be possible to add a UI similar to PoB on top of it, but that's not my immediate goal. I think PoB is good enough at what it wants to achieve, even though I ultimately believe having options/alternatives feeds innovation

bronze kestrel
#

That’d be a fun little endeavour. Although I’d wager probably best done in something lower level like Rust / cpp/ c

worthy cape
#

Lots of nice bikesheds.

simple ravine
#

People who prefer those languages can do that. I prefer c#

grave wren
#

i dont think youll get more supporters with c++/c

bronze kestrel
#

Just my two cents but if you’re talking about decoupling the UI from the calcs, you probably want something compiled, fast and with certain safeties in mind.

simple ravine
#

Exactly my point.

bronze kestrel
#

Probably also with async support

#

If you’re trying to be fancy

#

Asynchronous calc engine would absolutely fly and no matter how shit the ui is it wouldn’t drag it down

simple ravine
#

There's literally no point in making something CPU bound async

#

You're just adding overhead, and reduce speed with about ~20%

worthy cape
#

I was quite surprised when digging into the runtime how clever Arl was in the past with subscripts and marshalling to have background calculations.

bronze kestrel
#

On modern CPU’s? I don’t know if agree.

simple ravine
#

Well, I am certainly sure about it.

#

It's not a matter of opinion

bronze kestrel
#

I’d love to see some examples of this

worthy cape
#

@simple ravine In languages where there's less free threading and your mechanism for offloading is workers or other async junk, that's what you use and design around, without all the traditional jank that comes with threading.

simple ravine
#

just take anything CPU intensive, like a prime calculation and wrap it in a state-machine (which async pretty much is)

#

Where async is meaningful is where you offload to something like IOCP

hazy fiber
#

I mean, outside of build optimisation theres no way you run into performance issues

bronze kestrel
#

Probably not

hazy fiber
#

you can calculate thousands of builds in a second on one thread

bronze kestrel
#

Unless you fuck up and write a bunch of weird logic in

simple ravine
#

A library that can calculate many build variations per given time can introduce interesting new possibilities

worthy cape
#

@hazy fiber Stuff gets a bit chuggy with stuff like tree node eval and full DPS and stuff, doesn't it?

hazy fiber
#

iirc PoB does a full recalc per node

#

and with full dps it does it per skill per node

bronze kestrel
#

You also have to have some neat traversal algo that doesn’t shit the bed

hazy fiber
#

it takes about 1.8 seconds on my old ryzen 1700 to calc a full setup of 1500 nodes, and its not a well optimised program, and its in lua instead of somthing like c++

bronze kestrel
#

Idk what pob uses

grave wren
#

webasm pob calc engine when

simple ravine
#

traversal logic for what?

bronze kestrel
#

Also I feel like if you are basing performance purely on language that’s usually the least of your issues

simple ravine
#

really...

bronze kestrel
bronze kestrel
# simple ravine really...

You’d have to be sure that your codebase is perfect for language performance comparison to be a reason for wanting more perf.

grave wren
#

or you could be sure that lua for sure isnt the most optimal and does just fine

simple ravine
#

it does fine for its intended purpose, indeed

bronze kestrel
#

Like I’m not necessarily saying don’t do it. Just stating that if the reason for the rewrite is simply because you think that code ported to another language is magically going to be faster by several factors that’s a naive assumption. It may be. It may not be. Depends on language, depends on code quality, depends on internal optimisations and a lot of other crap.

worthy cape
#

For me, the game-like immediate UI and is frame loop is my biggest bother when it comes to architecture.
It feels fundamentally wrong to have something competing for render cycles and VRAM when you've got a hefty game running as your primary task, and the way the render loop interacts with subscript cross-thread functions is hard to solve.

hazy fiber
#

I mean theres what, a 3x performance boost going from luaJIT to c++?
its already able to handel hundreds of builds and I know PoB isnt super well optimised, theres way bigger gains than 3x to making optimising PoB, and does it really need to handle thousands outside of build optimisation?

grave wren
#

imo pob needs a maintainability boost

#

performance is fine

hazy fiber
#

^

bronze kestrel
#

I think as a project that attempts to just port it to a different language as an excuse to make it more maintainable and has speed benefits as a side effect it makes a lot more sense in terms of justification.

simple ravine
#

I am not talking about rewriting PoB in C# at all.

bronze kestrel
#

Don’t get me wrong @simple ravine I’m not arguing one way or another. Just chatting in general terms based on everyone’s responses. Not necessarily with you in mind as my recipient.

simple ravine
#

That's at least not my primary intention, we'll see what it turns out to be.

bronze kestrel
#

I’d love to see whatever you come up with though. Assuming that’s gonna end up in git

simple ravine
#

Do I think I could make a calculation thing in c# that's faster than an optimized Lua one? For sure. Could someone make an even faster one in c or c++? Most likely.

grave wren
#

same, might actually be useful for my bot cos just parsing the pob xml is limiting but i dont want to have headless lua running either

bronze kestrel
#

Speed also isn’t everything.

#

If you can’t read / maintain the bloody thing, it doesn’t matter how fast it is.

simple ravine
#

That's also a point I've already brought up, a few minutes ago 😉

bronze kestrel
#

Mhm. We agree there for sure.

#

I wonder how annoying it would be to implement this in COBOL…

simple ravine
#

I'll likely do something when generic math hits .net 6 rc1

grave wren
bronze kestrel
simple ravine
#

fuck it, let's go all speed. asm

grave wren
#

nobody likes cobol

#

🙂

simple ravine
#

or ada.

bronze kestrel
#

But knowing cobol means you can walk into a bank, get a job and demand pretty much any salary you want these days.

grave wren
#

if you want to be balling just do it in abap

bronze kestrel
#

Within some sort of reason

grave wren
#

cool i can also do enjoyable things

#

and get a job

bronze kestrel
simple ravine
#

there are still mainframe things in there for sure, but it's being refactored and rewritten

grave wren
#

probably java 6

#

:^)

simple ravine
#

we have a couple of big bank customers who are working on it, and are relying less on cobol people

#

yes, quite a bit of it is becoming java unfortunately

#

some nubanks are doing functional

bronze kestrel
#

I heard that a lot of the trading stuff is still sitting there waiting for some TLC cause seconds of downtime cost millions and nobody wants to fuck with that

simple ravine
#

HFT trading is C and asm

#

they even write their own network stacks to optimize nanoseconds

bronze kestrel
#

Crazy folk

#

You done any projects in Erlang?

simple ravine
#

I haven't. For the past ten-ish years, I have wanted, but never got around to it. I think I'll try Elixir though.

#

It's robust, but computation wise, it's not super fast. It's a trade-off.

#

I am intrigued by the cheap threading (fibers?) and the distributed actor as first-class-citizen

bronze kestrel
#

I quite like the beamvm concept. It’s why I play with it from time to time. For stability - I haven’t found a better language.

#

Elixir is just a nice abstraction over that

#

With some added sprinkles

#

Erlang is a little dated, let’s be honest. But shit, if it ain’t broke..

simple ravine
#

I heard a fun story from a tech-recruiter I know, which I used in the past. He was also hired by a popular fintech company here in Sweden.

#

They had written their entire platform in Erlang. They decided however to rewrite it all on the JVM (likely Clojure/Scala) due to the difficulty of finding talent.

#

It was cheaper to rewrite the platform than paying the extreme recruitment costs of finding good Erlang people

bronze kestrel
#

That sounds about right. Although I can’t recall the last time I saw someone in my space looking for Erlang engineers.

simple ravine
#

Whats your space?

bronze kestrel
#

Broadcasting / News

#

Primarily video processing and distribution via sat / cdn.

#

Not as exciting as fintech probably. But hey, works for me.

simple ravine
#

I'm not in fintech either. Previously in ad-tech, now in distributed cloud systems / consulting

bronze kestrel
#

Ah I had assumed incorrectly from your earlier statements

#

Apologies

#

Most of the stuff at our company is either C for video processing or node/Python for various other micro services. Except that I keep trying to discourage the whole “microservices for everything “ mantra. It’s not a good band aid.

#

And the fact that once higher ups buy into the cool aid - it’s kind of hard to steer them right.

grave wren
#

cmon itll be fine

simple ravine
#

Hah, I have several of these microservice discussions per week, it feels like

#

not sure if I can handle another one on a Sunday

grave wren
#

i saw a big german corp doing micro-monoliths and its aggrevating how they cant handle it

bronze kestrel
#

Yeah Uber already did their 180. First it was “everything microservices “ and I said then and there where I said “they’ll be right back”. And behold, a few weeks ago or so they published an article saying they are now doing “macro services”. Fuck off. You’re back building monoliths cause sometimes they work.

#

Fucking Silicon Valley hipsters.

simple ravine
#

That's a truth with some modification, but sure.

bronze kestrel
#

Allow for creative license.

grave wren
#

if your team cant handle microservices you better not go full microservice

bronze kestrel
#

Or just use common sense

#

Not everything has to be unified into one way of doing things.

simple ravine
#

U guys were in the industry when SOA was the big hype?

#

I digress 😄

#

And before that, Smalltalk and its paradigms.

grave wren
#

no i learnt the horrors in uni

bronze kestrel
#

Might be before my time. I only have a decade under my belt.

#

Or maybe it whooshed right past me cause I was too busy no-lifing something or other. God knows I’m not a person who’s terribly attracted by the “new shiny”.

#

But this is dangerously close to us pointing at agile even. And once that convo starts i become very grumpy.

#

In the sense that we are pointing out flops.

simple ravine
#

If you're not doing agile, you're laughably behind the curve

bronze kestrel
#

It’s not that

grave wren
#

waiting for post-agile to become true

simple ravine
#

inb4 SAP takes over the world and brings us back to the medieval times

grave wren
#

cmon they have rest now

#

its just not called rest

simple ravine
#

let's just say I am not a fan

bronze kestrel
#

It’s literally that agile and blockchain have one very core thing in common - both are like sex in high school. Everyone says they do it. But nobody knows how to actually do it.

#

I say nobody but you get my point

grave wren
#

maybe they'll also abandon their deathgrip on jquery

simple ravine
bronze kestrel
#

It’s hyperbole

#

Of course

#

But in the last five years I have both seen and spoken with people who have shared their experiences about it and everyone understands and does it differently. Some with varying degrees of successes some with tragic failures.

simple ravine
#

Just pick a flavor. Scrum or Kanban.

bronze kestrel
#

Management thinks it’s supposed to be one thing, PM’s / scrum masters think it’s another, devs think it’s something else.

simple ravine
#

if you've not done it before, do it religiously by the book

bronze kestrel
#

The way we made agile work is by telling product to fuck off. And driving it ourselves.

#

And it works. And well. Except that once in a while someone comes by to preach the bible and try to fuck it up

simple ravine
#

geez

#

that's quasi-agile

#

try autonomous teams instead

#

pmo, tech lead, designer, devs in 1 team

#

full autonomy for their particular area of the product

gilded tree
simple ravine
#

wham-bam-thankyoumam

#

u're welcome

#

and don't try to do SAFe before you get that working

bronze kestrel
#

Honestly I think blindly following it without consideration for how your team operates isn’t effective. We do something similar to what you mentioned, but we keep a strict separation from product due to a previous 10 year stint of product driving dev decisions which was fucking hard to sever.

#

It’s a whole long story i think you’d understand why if I blurted it all out. But I neither have the thumb power this late on a Sunday nor the inclination.

simple ravine
#

product needs to be part of the team, otherwise you have silos, and it won't work ... well

#

you might think you're doing well, but.. yeah

bronze kestrel
#

Sure they are. But they no longer force dev direction.

simple ravine
#

not gonna argue this

bronze kestrel
#

They are consulted and included. But implementation detail no longer comes from them. And it used to. And that’s scary

#

Like I said - context here is important.

velvet fog
languid blaze
#

Can someone help me with the https://api.pathofexile.com please? I'm so confused.

https://api.pathofexile.com/profile acts as expected (even though, it some how knows my account name without me entering it anywhere).

But then, right under that GET reference it says, GET /character and returns the accounts characters. I've tried about every combination of commands to get the character list. What am I missing?

#

I'm wanting a specific character. So I've tried the GET /character/<name> and entered a character name. And got missing or unauthorized returns.

languid blaze
#

@earnest radish holy cow I could not figure out swaggerhub for the life of me.

I've been using the character window, get characters, and then whittling that list down to only expedition, then choosing a character from that list. I was hoping there was a way to skip all that and just start with one character.

empty venture
#

@languid blaze
Almost all of Path of Exile's developer APIs require authorization of an existing Path of Exile account to use. This helps us enforce fair rate-limits as well as having a point of contact if anything goes wrong. - https://www.pathofexile.com/developer/docs/authorization
My understanding is that most endpoints won't work "just like that" without OAuth so you can't just test it on swaggerhub

broken cloud
languid blaze
#

get the XP

broken cloud
#

I see... if it's just ease of parsing you're after, try using get-items?character=[CHARNAME] instead, the character property of the response contains the information you need

#

But it also contains the character's entire gear and inventory - lots of wasted data transfer, if that's important to you

languid blaze
#

hmmm that's not to shabby, I thought that one was just the items, but there it is....at the end.

#

thanks a lot!

fluid wave
#

Well that was very fun!

#

The BPL backend held up quite nicely 😄

worthy cape
#

Must've been bugged, the wrong team won 😉

fluid wave
#

😄

#

now to play with the data 🙂

languid blaze
#

Is there documentation anywhere about how many times in what amount of time you can call character-window/get-characters?account name=[NAME] before it stops authorizing it?

broken cloud
#

Check the x-rate-limit-* headers of the response

worthy cape
#

If you're encountering actual auth problems instead of 429s, you probably has some more fun problems than rate limits.

pseudo ocean
#

I was just curious so decided to checkout the api docs, seems like theres hardly anything interactive you can do as most of the API calls i came across were GET requests so mostly read-only workflows

worthy cape
#

Yep.

languid blaze
worthy cape
#

Do note that it's incredibly against the rules to touch client memory.

empty venture
worthy cape
#

It's a bit hard to envision actions for an API that wouldn't turn the tool or website mandatory to play the game, something that is a bit undesirable.

#

One can always make sufficiently cool suggestions tho 🙂

pseudo ocean
#

i mean, websites like poelab or poe trade are almost mandatory for anyone not doing SSF already no?

worthy cape
#

They don't manipulate your account or character state, however.

#

The closest you've got to that is (legacy) things like Acquisition, pricing forum posts for you.

pseudo ocean
#

but as a cool suggestion that will never happen: I saw APIs for grabbing player stashes so it'd be cool if someone made a companion app that'd let you arrange items in your stashes when your really not on your PC

#

again, i know GGG seems to very hesitant of mainpulating player data outside of the game, but one can still wish :>

worthy cape
#

The intent is good, but it'd turn into near-mandatory auto-sorters.

pseudo ocean
#

fair fair

worthy cape
#

It's a worn-out record at this point, but there's a bit of weight to things you loot when you have to manipulate and deal with them yourself.

pseudo ocean
#

i wonder what it would take to make an overlay that can set prices like acquisition, but without leaving the game

worthy cape
#

Reminds me of Destiny 2, where I think you kind of had to use the companion website/app to perform some slightly important action while playing the game, might've been gear swaps or something.

pseudo ocean
#

poe awakened + acquisition essentially exaltThink

empty venture
#

so basicly a bot

#

something that automates parts of "gameplay"

frank drift
#

overlays can already set prices one at a time, that's as much as you're getting

simple ravine
#

it almost feels like optimizing on the wrong place

#

like optimizing a tight for loop by trying to loop-unroll it, and then access something over I/O

empty venture
frank drift
#

even the old AHK trade macro could set prices iirc

rapid pagoda
#

right click, ^A, input price, enter (more or less)

golden bane
#

Idea: complementary to PoE "hard mode", there's also "Reddit mode", where Chris just emails you spreadsheets of your dropped loot you can then post there

simple ravine
#

Hahaha, so you don't even have to kill the mobs?

simple ravine
#

god.. i've been opening VS and stared at this code so many times

#

without progressing

#

frigging bundles

whole ruin
#

😄

empty venture
#

if something is totally broken u kinda have to optimize it 😄

#

like web page loading 1min or something

simple ravine
whole ruin
#

It was an out of context joke

bronze kestrel
simple ravine
#

I blame all the node and python kids 😄

#

Except SnosMe, he writes good js code.. exception that confirms the rule

worthy cape
#

Odd way to spell Brython 😉

civic crane
simple ravine
#

Let's just agree that c# is superior and call it a day

fluid wave
west rover
#

umm.. I have a question regarding a little local web app im making. Its a stash analyzer basically. I saw the developer notes and requested client credentials for Oauth, but isnt there a quick and dirty way to fake the auth with just sessionid?

#

I'd really like to start deving but need my stash data ^^

simple ravine
#

using your browser's POESESSID should work

#

but generally not advisable of course for end-users

west rover
#

no its basically for testing purposes so i dont have to mock data 😄 is there any template somewhere how the http headers shoud look like? especially with CORS...

simple ravine
#

It's just a normal GET/POST, nothing special.

#

It's just a normal GET/POST, nothing special.

#

Use a sensible User-Agent, and make sure you abide by the rate limits etc

worthy cape
#

If you're not an actual browser, there should be very little concern needed for CORS, that's for browsers to protect the user.

west rover
#

yeah Im probably starting chrome in no cors for this, as the cors requirement is set on the resource, no?

worthy cape
west rover
#

hmmm well actually if i let poe.com set the cookie, it wont work cross domain, as the sameSite is set to 'Lax' by the resource Oo and setting the cookie myself for another domain seems to be restricted

simple ravine
#

for a good reason 😉

devout dust
#

Hello guys, any idea where I can ask some programming question(s) about https://www.pathofexile.com/trade/search/ API ?
(I'd like to understand how to search for items programmatically)

frank drift
#

you may want to look at how poeninja constructs queries, if you need an example

devout dust
#

The problem is :
1 - I don't think it's the best way to do this via program, as you should probably use OAuth to login first ?
2 - When I try so, I have HTTP error 403, and error code: 1020

#

I have been searching on the web but I feel like it's really complicated to find an up-to-date documentation

devout dust
simple ravine
#

There's no documentation as it's not a "supported" API

devout dust
#

Indeed, I've tested that meanwhile. There's just one thing that I don't know is how to retrieve more than 100 results for a query ?
When you POST /trade/search the server only gives you the first 100 results

civic crane
worthy cape
#

It's designed around a human scrolling through it, and if you hit the bottom at 100, it's quite likely that the human driver should restrict the search a bit.

devout dust
devout dust
worthy cape
#

What I'm trying to say is that it's less of an oversight and more towards an intentional act of not providing pagination.

devout dust
#

I guess so

foggy hazel
#

hi. maybe useful to no one else, but i wrote a quick bash script to parse the client.txt for map seed id, timestamps entering/leaving, trade whispers (with color!), and poe server connect infos. i use it with mingw64 shell (comes with git-scm, for the ultra lazy of us out there). https://pastebin.com/5kuPEz2c glhf

glacial gyro
#

hey guys, new to useing the poe API, trying to figureout if there is a good way to retrieve the contents of all my stash tabs, going through 1 by 1 seems to hit the rate limit imposed by GGG

#

and thats just for 27 tabs

worthy cape
#

One by one, with patience. 🙂

#

If your use case doesn't fit the API constraints, you might have to reconsider what you're doing or make concessions to fit within the rate limits.

glacial gyro
#

fair, will limit myself to a smaller number for now and revist problem further down road

worthy cape
#

Tools like Exilence Next seem to go down the route of allowing you to select a subset of tabs to monitor, as well as honoring rate limits.

glacial gyro
#

thanks!

empty venture
#

Asked guildmates for a feedback on design of my website. Thats some interesting opinion 😄

#

turns out blueish hue is considered "modern"

frank drift
#

actual bikeshedding

bronze kestrel
#

Sometimes user feedback is nice. But a lot of times it can be outright dumb.

worthy cape
#

Make your theme align with the colours of this dress: https://en.wikipedia.org/wiki/The_dress

The dress is a photograph that became a viral phenomenon on the Internet in 2015. Viewers of the image disagreed on whether the dress depicted was coloured black and blue, or white and gold. The phenomenon revealed differences in human colour perception, which have been the subject of ongoing scientific investigations into neuroscience and visio...

bronze kestrel
#

So if you see this as black and blue, does that mean you’ve got issues?

worthy cape
#

Colour and perception is deeply weird.

bronze kestrel
#

At least we don’t see the world as a rainbow mantis shrimp. Those fuckers can see infrared and circularly polarised light amongst a bunch of other cool things. We’d go mad if we had to deal with that.

simple ravine
#

This is deeply disturbing

empty venture
worthy cape
#

What do you peeps use to prototype and get oversight over a web API, Swagger?

#

Getting a bit tired of manual test driving with cURL when debugging.

#

(not gonna do any codegen on the server side)

bronze kestrel
#

@worthy cape fastApi self documents if you use Python. IIRC it also allows you to test endpoints in the auto generated docs but I could be misremembering. Check the docs for that. For other Langs I’ve only ever heard of swagger as an option.

golden bane
#

@worthy cape With FastAPI, you'll get not only docs, but the same OpenAPI spec Swagger produces, for free. Also, there's automatic validation for everything. https://fastapi.tiangolo.com

worthy cape
#

FastAPI, however fine it may be, isn't the Rust platform I'm using 😄

golden bane
#

Rust and Python go well together though

worthy cape
#

Might be something to look at eventually, but I'm not keen on changing any tech again.

#

Been waffling around on this project forever, I want something complete and working out there so I can find out if it's doable at all.

#

How well would something like that mesh with serving GraphQL requests?

golden bane
#

I don't have any experience with GraphQL, sorry

worthy cape
#

Pondering whether to expose some janky custom query interface, or if it'd be smarter to do something generic like that.

#

So hard to make something when you have no experience or feeling for how to do things 😄

golden bane
#

Going with standards is usually better, as long as you don't have to shoehorn it

bronze kestrel
#

Rust should have some nifty tooling. I know it’s young, but the rust discord has some clever people who should be able to advise you @worthy cape

grave wren
#

If you go the graphql way I'd recommend to go as standard conform as possible

worthy cape
#

How bad is Python (and it’s web libs) at concurrency these days? My requests can be quite heavy and/or many.

bronze kestrel
#

You can write pretty performant async code for it. It all depends on what you use and how good/bad is your code. If you are specifically talking about using Fast API then you’ll be utilising starlette and uvicorn (which is based on uvloop). Uvloop claims that it’s about 2x faster than node and around close to performance compared to Go.

#

So if it’s not busy apologising for shit code, you might be okay. Of course if you do write really clean and performant and thoughtful code and it is still “slow” then maybe look at Rust’s tokio.

#

@worthy cape

golden bane
#

Yeah, async FastAPI is good. The only real trap with Python concurrency is concurrent.futures. Don't use it, it's outdated. Use asyncio instead

bronze kestrel
#

I think you’re sort of using asyncio out of the box with fastapi

#

But I could be wrong

golden bane
#

Yes, just a general tip

#

I wish FastAPI would support trio. It's higher level than asyncio and therefore nicer to use

bronze kestrel
#

As an aside, I don’t really know why it rubs me wrong when people imply Python is slow. Python can be as fast as any high level interpreted language. And in some cases faster, thanks to native C bindings. It’s all down to how you work with it. And if people then start comparing Python to rust or c, that’s when the conversation becomes absurd.

#

Python’s good. It’s always been good. But if you expect to use it and get low-level compiled Lang perf, well then you’re not picking the right tool

#

Blah

golden bane
#

Personally, my experience is that Python is so easy to get started with, that even advanced programmers don't invest the necessary time to write idiomatic code (which is most of the time also the most performant). Like some Boost projects where the programmers basically just write C++ in Python

bronze kestrel
#

I get that. But that then is the fault of a developer. My biggest issue is with all these abundant blog posts and SO threads that anyone starting with the language can just follow — and most of them are absolutely awful, written for fake internet points and at best end up on bad practices. Zero fundamentals. But yeah… this is gonna be me bitching a lot about language comparison and making no particular point. So I will stop.

worthy cape
#

My gut feeling on Python is that it's inherently extremely serial, and I'm not sure how that would work in this setup where my DB queries can be quite long and I write a fair bit of data to disk.

#

The GIL haunts my dreams.

golden bane
#

In a kind of messed up way, the GIL is what makes Python fast

worthy cape
#

I don't even know where to start with concurrent access to things in Python, if at all possible and if it's on by default, how to protect myself.

#

A lot of Python dev feels very YOLO to me 😄

#

Guido take the wheel.

golden bane
golden bane
#

@worthy cape If you're wondering what to read, I recommend "Fluent Python" (ISBN: 9781492056355, 9781492056287). It will help you to really "get" Python, to make the most out of it, and the new edition even comes with some FastAPI examples in the "Asynchronous Programming" chapter

bronze kestrel
#

@golden bane you ever looked at SQLalchemy internals?

#

Like closely read.

worthy cape
bronze kestrel
worthy cape
#

<_<

golden bane
#

That's fine! The chapters are fairly self-contained, so you could just read the few parts that pique your interest the most

#

If you're only going to read one Python book, I recommend this one

worthy cape
#

I like the idea of buying books, but getting this moped brain of mine to settle enough to read and parse them, less so.

#

Still haven't managed to make a dent in the Vulkan book or either of the two Rust books.

golden bane
bronze kestrel
# golden bane Nope. What's in there?

Mostly a lot of really “magical” impl, that sometimes trips you up badly if you’re writing something pythonic. Lately I’ve had a dig in there because no matter what part of the docs I looked at and what I tried (including writing my own implementation to serve as “middleware”), a certain sub query was always evaluating to true when SQLA worked it’s magic during statement rendering. However if you run that same expression in pure Python - it works as intended. While in the statement it’s simply translated to “True” and there’s fuckall you can do about it.

#

There’s certain things in there that are trying too hard to be too “magic” IMO.

golden bane
#

Yeah, I've heard that before. Although this just seems like an obscure bug

worthy cape
golden bane
#

To be fair, most people reach for SQLA because they don't want to know what's going on behind the scenes, so magic is expected

bronze kestrel
#

It’s technically not a bug. I talked with some folks on Gitter who contribute to SQLA and they basically said “not a bug, go read this doc” and it was precisely the doc I had executed every which way in every direction and still got nowhere.

#

So fuck me. Maybe I’m just stupid.

golden bane
#

Eh, if it's too hard to use properly it's still bad

worthy cape
#

Bugs that closely resemble common noobtraps are the best.

bronze kestrel
bronze kestrel
golden bane
bronze kestrel
#

Probably.

#

Before last week I didn’t know it was possible to tunnel vision so much you start writing class methods to return properties, but that happened, I was looking at some repo people who left the company wrote and there was legit a class like this:

class One:
  foo=1
  bar=2

  def get_foo(self):
    return self.foo
  …

Tons of default properties with a method exactly like the one above to match. No other code. Just return self.[prop]

worthy cape
#

Maximum mockability or hooking points?

#

Alternatively, Java developer lost in space.

bronze kestrel
golden bane
#

Ah yes 😄 At my university, I had the pleasure to look at a Python codebase once that tried to replicate a Java program as closely as possible, for some reason. They said they ported it to Python, and they sure did. Literally 🤦

bronze kestrel
#

At first I though - shit maybe this guy is doing some 5head getter/setter magic. I scoured the code. Line by line. 0 results.

#

But I recently found a little gem

#

functools.total_ordering

golden bane
#

You had all the common design patterns you get when you pretend that functions aren't first-class too

bronze kestrel
#

It came in handy for comp population in some custom subclasses

golden bane
#

You could just use dataclasses most of the time though. They support excluding attributes from the comparison

#

(Or attrs if you need __slots__, at least until Python 3.10 is stable)

bronze kestrel
#

I don’t often find that I need this sort of behaviour. But definitely nice to know. 🙂

golden bane
#

Something like this:

from dataclasses import dataclass, field

@dataclass
class C:
    some_attribute: Any = field(compare=False)
bronze kestrel
#

Dataclasses are neat.

#

There’s a very good reason to not turn off / gut the GIL

simple ravine
worthy cape
#

I've got fun memories of STM from Haskell, there was a lot of talk about it back then.

worthy cape
#

(2) is a big problem outside of the GIL too 😉

bronze kestrel
#

¯_(ツ)_/¯

#

And a lot of other stuff is mostly down to what you like / are comfy with.

simple ravine
#

Well, considering the usecases for Python is convenient c-bindings, and not being fast... I mean..

#

yeah

worthy cape
#

Back when I was employed as TA at the uni, we used to split our engineering programmes into two categories - people who needed to mangle data, and people who would have to write actual software.
The first freshman course was Python + Matlab for the former, C + Matlab for the latter.

bronze kestrel
golden bane
#

Python's original goal was to be fun to use, hence the name

simple ravine
#

So what do you use it for, where Python actually excels?

worthy cape
#

I think we sorted CS, physics, and probably chemists into the latter bag; biology, industrial economists, and math peeps into the Python bag.

bronze kestrel
simple ravine
#

But those are just wrappers on top of things written in a different language

golden bane
#

And Python's the best language to actually use them

simple ravine
#

I understand that the language is so convenient that it makes it a good tool to do data exploratory work, I get that.

worthy cape
#

There was some research into a library that took it further and kind of did expression template type things with a numpy interface, not sure how far they got.

simple ravine
#

For web services and distributed services, I would not consider Python a choice. The infrastructure cost of a high throughput service would be prohibitive in comparison to writing them in a statically typed language

bronze kestrel
#

I’m not entirely sure what your point is @simple ravine, that there are faster languages? That’s common sense. But just because there’s something out there that cuts down my run from 1s to 200ms - do I actually care? Not unless those sorts of differences cost me money or cost me some other way.

#

If you can’t saturate the program to a point where those sort of differences actually matter - then there’s no difference in the language of choice for the most part.

golden bane
#

For people that aren't professional programmers (think researchers), Python might be the only option to get anything out of the door at all. Not sure how other programming languages could compete with that, for example

simple ravine
#

What do you mean saturate the program?

golden bane
#

When you don't just wait faster

worthy cape
#

Python powers a lot of the researchers at work.

golden bane
#

Python is a lot more powerful than R. Not that R couldn't be used, but Python can be used in more contexts

worthy cape
#

It'd actively harmful for them to try to write C, Fortran, or some other strict language.

bronze kestrel
simple ravine
#

When requests per second matters.

#

things like that

worthy cape
grave wren
#

Yes but they don't always matter

worthy cape
#

Especially around the recent AI revolution, so much Pythong.

golden bane
worthy cape
#

I did nothing but install Python packages and tell users how to load modules for a year, it felt like.

simple ravine
#

well, a lot comes down to how the runtime handles async, manages threads etc as well not just offload things to a c module

#

if you'd write "microservices" etc

#

sure, you could compare the time (and money) it takes to develop something in python vs insert language to the infrastructure cost - it all depends ™️

bronze kestrel
simple ravine
golden bane
#

I don't get the whole "relying on C modules in Python is cheating" sentiment. Python is implemented in C. Extension modules interface with C. The two languages are inseparable, at least in the most popular implementation. What good is a fast C/C++ library, when there's no convenient/accessible way to use it? Does it really exist on its own? For many people, that's not the case. If Python is the best way to use those libraries, that's Python's achievement

simple ravine
#

But the comparison and discussion around performance and the language is valid. I don't believe in the sentiment of "just throw more hardware at it" or that "programmer efficiency trumps performance"

bronze kestrel
worthy cape
simple ravine
bronze kestrel
golden bane
#

You don't have to branch out to C, you could use anything you'd like. I use Rust, for example

simple ravine
#

Well, whatever u would want to use, don't strawman me 😛

worthy cape
#

pyo3, is it?

golden bane
simple ravine
#

Python definitely has its uses for sure - especially in automation, like automating infrastructure deployments, etc

worthy cape
#

You should see the sea of repositories and attempts at the assorted tools for my current project.

simple ravine
#

python workbooks in azure to automate certain tasks etc is pretty nice

worthy cape
#

Still have no idea how to do the client libraries.

golden bane
grave wren
worthy cape
#

I'm gonna click the Star and then forget all about it until the next time I hear about it, thanks!

grave wren
#

It's astounding how many people don't know basic scripting work

golden bane
simple ravine
#

It should be taught in elementary school

#

Python would be a good entry language

worthy cape
#

Last time I went down the binary build world, I was sad about the state of manylinux

#

Probably still am.

#

"we've now upgraded from RHEL6 to RHEL7" surely.

bronze kestrel
#

I think my whole point this whole time was that it’s annoying to hear people start shoving the whole apples to oranges argument into this. Not talking about you @simple ravine btw - just in general referring to posts/blogs/articles in recent times. It’s either “why Python is amazing” or “why Python sucks”. And it’s done mostly to push either agenda rather than to try and educate newcomers that it’s just another tool. If you wanna write performant code that props up stuff like trading or anything that relies on nanosecond differences - don’t use Python. Python sucks for that. But for most other cases that aren’t as stringent - it’s fine. It’s a good solid choice.

grave wren
#

Had to write a tool to migrate configuration to a newer standard while someone else took a week to migrate them one by one by hand and he fucked up

#

Automated this for all future projects in maybe half a day

worthy cape
simple ravine
#

It's not just about shaving nanoseconds, it's about how many requests a pod in a k8s cluster can handle when you want to saturate your hardware to get the most out of it.

grave wren
#

Yes but if that's the goal you won't use python

simple ravine
#

Or in your serverless environment for that matter

#

well, quite a lot of people do

bronze kestrel
simple ravine
#

But poor articles and frameworks has been around for a long time. I recall when PHP became popular... I think it was just before 2000 or around there. MVC frameworks with opinionated architectural choices that did the developers a lot of disservice... And they did that because they didn't know better - they tried to produce something from their passion, and the result were subpar. It happens to this day.

worthy cape
#

I have to touch Ruby for my $dayjob currently. It hurts.

simple ravine
#

The ruby language can look quite nice to look at though

#

if written well

bronze kestrel
simple ravine
#

I remember someone writing the Advent of Code solutions in Ruby and it looked like a mona lisa

simple ravine
worthy cape
#

Where does things actually happen? Everywhere and nowhere.

grave wren
#

Stop being so nosy zao

#

Be glad it works as nicely as it does before looking at it!

simple ravine
#

Same with SOA and microservices

#

Smalltalk, anyone?

bronze kestrel
grave wren
#

At least XML config is gone mostly

worthy cape
#

Beans.

bronze kestrel
golden bane
#

The cool folks use TOML now

grave wren
#

Wdym last week

#

Had to migrate a 15yo app to a new framework including migrating soap services

#

Doubt it's dying any time soon on big businesses

simple ravine
#

Sometimes, I am glad I don't do development work at work anymore.

#

Is pjax still a thing, or are you doing pre-rendering another way nowadays?

bronze kestrel
simple ravine
#

I was considering making a blog out of my domain sometime, to put some posts on my line of work etc

#

And I think I'll try Svelte, it looks pretty fun

#

but then again, I should probably just do pre-rendered from .md form a github pages thing and call it a day

grave wren
#

Static sites with asciidoc are nice

bronze kestrel
#

It’s made for static site generation afaik

#

As a side effect

simple ravine
#

static sites and a cdn, boom done

#

nothing that will crash, so nice

bronze kestrel
#

It’s basically the whole shebang. Can be as dynamic or as static as you like

simple ravine
#

yeah, but if you're doing static site generation, and the site has just blog and text etc, probably some handlebar templating etc is enough I guess

golden bane
civic crane
golden bane
#

It was really easy. After some light styling and learning like 5 CLI commands, it's really just writing Markdown docs

bronze kestrel
worthy cape
#

I forget what I ran into with Markdown that I really missed when writing my more technical PoE format docs, probably tables.

golden bane
#

Try ReStructuredText 😉

worthy cape
#

I solved all my problems with having a blog by not having a blog anymore.

bronze kestrel
#

Latex everything

#

Go ham

worthy cape
#

Format docs problem still exists, of course.

#

I would like to never touch a line of LaTeX again after the master's thesis.

grave wren
#

Asciidoc is so much nicer than the hundredth markdown flavour

worthy cape
#

I shaved the yaks so hard on that one, even did a 3D model renderer with TikZ.

#

(capped out at around a thousand triangles)

grave wren
#

Adoc is pretty much docbook in a easier to read and write format and doesn't fall back into html

#

End of advertisement slothpeek

worthy cape
#

The good alternative never wins 😉

grave wren
#

Nope but it's good to know it, it replaced Tex completely for me

#

And the support for embedded diagrams is super handy

bronze kestrel
simple ravine
#

and host it in Kubernetes

bronze kestrel
#

This is illegal.

grave wren
#

When can we finally deploy containers on the client side

#

Javascript lads get on it

worthy cape
#

Don't give them ideas.

bronze kestrel
grave wren
#

Fuck yes

bronze kestrel
#

Fuck NO

#

NONONONO

grave wren
#

Thanks JavaScript bros

bronze kestrel
#

This is just smaller shittier VMs.

#

This is Xzibit’s solution to dev environments

#

We put a dev environment in your dev environment… basically. But it now has worse performance overall.

#

So you know how Google are pushing for the FS I/O spec to become a standard? You know - the ability to allow browsers access to your file system bidirectionally? Well stackblitz are banking on it for another big feature.

#

Maybe I’m backwards or whatever, but I don’t think a browser should ever have access to your FS unless it’s to upload a file to somewhere or blindly drop a file from a site into your chosen folder.

#

Imagine ads / tracking - on the web, but also on your pc now.

#

Sure they’re gonna say there’s safeguards and controls.

golden bane
#

Imagine online cryptolockers

bronze kestrel
#

But we all know some Russian teen will find a day 0 exploit.

worthy cape
#

Yay for more clickthrough permission prompts on the web.

#

Every other embedded video player keeps asking me for permission to use my VR headset.

bronze kestrel
# civic crane why? if it asks for you permission

In a perfect world where people build software without flaws or bugs or exploitable holes - that would be great. We don’t live in that world and all it takes is for one group to find a loophole, and now you have massive issues thanks to the breakdown in the sandbox.

civic crane
#

I actually wanted to use this API in my dat viewer, but in spec program files is one of folders that is sensitive and can't be opened... so dead api for me 😄

civic crane
#

web, if it was electron it's already granted

bronze kestrel
#

That’s why I was wondering.

#

Why build a dat viewer for the web though?

#

This is my curiosity asking

civic crane
#

why not, web stack is powerful and I don't have any perf loss compared if it was say in c#

bronze kestrel
#

Oh I’m just wondering if there’s some “hook” that makes it more appealing as a web service

civic crane
#

just compare: add a file access api with you permission, or shipping fat 50mb(packed) electron app just for accessing your fs (and potentially any folder, install miner)... sure, native app is more safe Kapp

bronze kestrel
#

I don’t have much confidence in this based on the trail of modern web failings in recent years.

simple ravine
bronze kestrel
#

It's all fukken fukked m8

#

We're just monkeys that got too smart, got anxiety and learned to make a rock "think" by putting lightning into it.

#

And now we keep writing instructions for these rocks for money. Modern times are bonkers

pseudo ocean
#

So i know tft exists, but do you guys think theres value in having a reputation-based webapp that lists users currently offering in-game-services like helm enchants and let users quickly dm ppl about it?

#

kinda like mercenaries for hire for different services :>

empty venture
#

I was thinking about something like that maybe 3 years ago. I don't remember what it was, but I had some issue with the idea, something that would make it hard to get it to work properly.

simple ravine
pseudo ocean
#

Fair enough, its just something i was thinking about building after work hours to learn some new tech along the way. I think for something like that to truly take off it needs to be build on top of tft and borrow what already exists by using the discord api (i.e they have a rep system, maybe carry that over to the webapp or utilize roles on users to check if a user is offering a certain service in-game). But at that point it just sounds like TFT - The web app.

Also, I have not used the discord api but i am fairly certain there is some sort of authorization in place that stops others from freely accessing info on a server and im fairly certain tft would not be ok with that =/

empty venture
#

It is just my guess at this point, but I think you would need to write a discord bot which would then need to be invited by the server owner in order to access data on that server.

worthy cape
#

The fundamental problem with building systems of reputation and other player interaction is that you're going to have to deal with people and cheating.

#

All the drama llamas.

frank drift
empty venture
#

Yeah, dealing with people might be an issue. Especially when some people take it very seriously and perhaps even RMT is involved

worthy cape
#

I forget what the discord.py message said about the future if server access is going to be severely limited for all bots or just a subset.

#

But yeah, the meatspace side of things is that icky part.

grave wren
#

Can do a user space bot but I'd refrain from collecting that data

worthy cape
#

On something completely different - other people are recommending FastAPI to me as well. I'm going to have to write Python, aren't I?

grave wren
#

Well it's a python framework so naturally

#

Plenty of rest API frameworks for any language if you're not set on python

bronze kestrel
#

Highly recommend

#

If you can look past the 0.5v

worthy cape
#

Current half-arse is with warp, had to disable type hinting in my IDE to read my source.

bronze kestrel
#

Everything starts as a half-arse

grave wren
#

That looks very low level

worthy cape
#

Anchor a route, pull out some state from the request headers and stuff, point it at a handler.
Compose them to build the full set of routes and fallbacks.

#

Not too bad, just types that shouldn't be seen by man.

grave wren
#

From looking at the rocket site that looks way nicer to use

worthy cape
#

Handlers like:

    pub(crate) async fn put_file(
        digest: String,
        storage: Arc<crate::Storage>,
        bytes: bytes::Bytes,
    ) -> Result<impl warp::Reply, warp::Rejection> {
grave wren
#

But I never used rust so dunno

worthy cape
#

Rocket is the old big one, don't remember if I bounced off it for some reason or didn't get around using it, or if they were slow with the new async.

#

Or not at all.

#

Probably too much deep magic getting in the way.

grave wren
#

See id rather have a framework handle the "boring parts" and write my business logic slothpeek

worthy cape
#

Yeah, just eternally burnt by when I have to step outside of whatever nice padded cell I have and run into the gnarly bits inbetween.

#

Anything sufficiently friendly tends to be built on deep magic.

empty venture
#

Is it just me or is AWS super complicated to get started with? :x

worthy cape
#

Designed for maximum vendor lock-in.

#

A lot of it is kind of made for scale and fairly purpose-built, so it can be hard to navigate if you've got a smaller problem or if you're not already experienced in what they do.

long sky
#

As a total dumdum I found Azure pretty easy to get started with, particularly the integration into VSC

empty venture
#

I'm looking into any options to host my django app and I'm super lost

long sky
#

heroku seems to be the general default for a lot of folks for Django

empty venture
#

Heroku seems to be more expensive tho

civic crane
#

aws spot instances are basically free

empty venture
#

or should I say AWS have better free options

#

but having over 100 different services offered it is so confusing

worthy cape
#

Screw having PoE build guides, we want AWS build guides.

#

Path of Clouding

empty venture
#

exactly what I need now

glacial gyro
#

Hi all, just looking at the stash api, I can access all the items within a stash, but there is no category tag to identify what an item is (ring/ammy/sword/ete), am i missing something?

empty venture
#

I've found some tutorial how to deploy on AWS but its from 2016 or something, dunno if I should even read it...

glacial gyro
#

Frametype seems to be item rarity

#

yeh saw that, looks like category has been disc

civic crane
glacial gyro
#

ahh fair thanks!

broken cloud
# glacial gyro Hi all, just looking at the stash api, I can access all the items within a stash...

No simple way to do this if not using the trade API... I maintain a mapping of typeLine to item category, but there are some other annoying traps (typeLine of magic items is polluted by affixes and needs cleaning, for example)

https://raw.githubusercontent.com/briansd9/exile-diary/master/res/data/itemCategories.json
https://github.com/briansd9/exile-diary/blob/8cb9bfb66a0d67700364c89fa44b49a7341e393e/modules/ItemCategoryParser.js#L22

#

If you don't need this level of detail, just parsing the icon data might be sufficient:

https://web.poecdn.com/gen/image/WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9Cb2R5QXJtb3Vycy9Cb2R5RGV4SW50NEMiLCJ3IjoyLCJoIjozLCJzY2FsZSI6MX1d/99efce2041/BodyDexInt4C.png

  • base64 decode the WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9Cb2R5QXJtb3Vycy9Cb2R5RGV4SW50NEMiLCJ3IjoyLCJoIjozLCJzY2FsZSI6MX1d part

[25,14,{"f":"2DItems/Armours/BodyArmours/BodyDexInt4C","w":2,"h":3,"scale":1}]

broken cloud
#

Hmm, that's nice, hadn't noticed that before - seems to be only applied to weapons though
[Edit] woah, is baseType new? Hadn't noticed that either

empty venture
#

When I'm done with setting up everything on AWS I totally need to list every service I used on my github -> a lot of cool phrases for recruiters 😄

grave wren
#

Technology: yes

worthy cape
simple ravine
#

Ooof, that one sucks

frank hare
#

and didn't work out

#

a similar ish service was also tried at some point, I don't know if it's still alive, the guy who made it was kinda sketch and got blacklisted on tft for randomise scamming in harvest

#

poe reforge I think?

#

Anyways the problem with webapp based services for this is that hosting that is hellishly expensive because you basically have to use something automatically scaleable like aws to catch demand if it ever takes off, and there's no money to be made doing it. The main reason TFT works is there are dozens of volunteers pouring hundreds of hours every day into moderating it and cleaning it

#

Having to pay hosting costs in excess of 1-2k a month on top would be a gut punch, especially since this kind of thing does not make you any money

rapid pagoda
frank hare
#

TFT has over 200k users

#

I understand one of the reasons PoE.Reforge went bust is hosting cost

#

And they were really damn small fry in comparison

grave wren
#

how many users of those 200k are remotely active tho

rapid pagoda
#

user counts in big discords are always a little misleading, ratio of passive to active users is always high and tends to get higher as the server grows

frank hare
#

peak user count was pretty high

#

I wanna say 120k interactions a day at peak ritual?

#

anyhow even if you could have the hosting for free for that to be useful you need active moderation and a ton of it

rapid pagoda
#

either way for a simple transactional app that's not a big deal, usually what ends up killing poe-related sites is complexity/cost of working with the stash tab river

frank hare
#

Well if you remade tft as is right now you wouldn't really have to

#

work with the stash tab system, that is

rapid pagoda
#

right, of course

frank hare
#

still given how much sheer effort goes into moderating and handling complaints and given how any rep system is only as good as its reliability, that's a tall order

#

Mind you, I have a conflict of interest

empty venture
#

As said before, human factor is the biggest issue here

grave wren
#

yup, i was also working on a rep bot for the official trade discord until i lost most interest in any trading a few years ago and the tech isnt hard

empty venture
#

I think you're overestimating amount of ppl wanting to use such website

grave wren
#

also in unrelated news updating all brew dependencies on my old macbook air is a fucking nightmare

#

ULV i5 feels so slow

worthy cape
frank hare
empty venture
#

I'm not really sure but I'd say even ur 120k interactions a day isn't such a big deal

frank hare
#

Grabbing the people to process 100+ reports a day? pretty damn hard

#

especially if it's hard and dirty work and you ain't paying

grave wren
#

thats exactly what i said

#

the tech isnt hard

frank hare
#

eh

empty venture
#

you would need to come up with some system that automoderates itself

frank hare
#

you'd be surprised at everything that went into the automation on tft, not that I can or want to talk about that in detail

#

and a lot of scamming cases get quite messy and need mediation, not yes or no type moderation

grave wren
#

which is not a tech issue but a people issue

frank hare
#

yeah but you're underestimating the tech that goes into automoderating

#

not that it's particularly complex for any specific case but even the tech is sort of a human issue in that it eats easily hundreds of hours of dev and sysadmin time

#

that is time from people whose time is valueable

worthy cape
#

Meanwhile, I am fretting about traffic loads while not having my system built yet 😄

empty venture
#

man oh man... AWS is painful when u have no idea what u're doing :/

#

I'm the client...

simple ravine
#

AWS Console is horrendous

empty venture
#

I'm using the console

simple ravine
#

at least was when we were using it back in 2014

#

I'm guessing there's a cli as well

#

like there's Aure CLI?

#

oh I googled boto3 and it said it was an sdk?

simple ravine
#

Yes indeed. Infrastructure as Code, Configuration as Code, Pipelines as Code, Policy as Code

#

Not that difficult actually. The good parts are that it's very declarative, and idempotent

empty venture
#

I have to say following a 5 years old tutorial is semi-optimal 😄

simple ravine
#

One thing I think is pretty nice is Azure's Cloud Shell

#

its connected to a storage container, and u get a full fledged bash (or powershell) environment, where you can run your cli commands, but also edit things, write and store scripts, run them etc

empty venture
#

u can connect to AWS through ssh as well

rapid pagoda
#

AWS has something like a 10:1 ratio of useful core services to managed-service junk 😛 learning which ones are which is the trick

worthy cape
#

Bleh. Ran into my first stumble block with FastAPI, seems like uploads are extremely opinionated as multipart form data and my usual "just jam an octet-stream up the pipe" seems impossible to find out if it's supported.

#

Not super keen on building robust multi-part boundary shenanigans for what should be a big raw sized lump of data.

#

Seems like I might have to dip down into starlette, whatever that is.

rapid pagoda
#

Ever evaluated gRPC? 🙂

golden bane
worthy cape
#

Looks good.

golden bane
worthy cape
frank kayak
#

website:

#

my rendering try:

#

what is the font of the flavourText and descrText? - is it an italic version of the small-caps fontin?

#

or is it italic with only upper case and capitals in a size bigger?

worthy cape
#

OptimusPrincepsSemiBold.ttf ?

#

Hmm, no.

#

I'd lean toward synthetic italics of the regular smallcaps.

#

I assume you have the Fonts dir already.

civic crane
#

it's fontin too

frank kayak
#

:/ - so i have to mess with the smallcaps font manually?

worthy cape
#

If this is web tech, it should be able to slant it for you to do faux-italics.

frank kayak
#

from the font.css:

#

its go - and it sucks with gui stuff

worthy cape
#

Supposedly browsers do it automatically if you have a @font-face but no explicit italic and use the font in an italic context.

frank kayak
#

ill check the woffs out after eating

worthy cape
#

Might have to krangle the underlying font then.

#

Most of the Bing results are on how to not do it 😄

simple ravine
#

Are the fonts in the ggpk different to the web perhaps?

civic crane
#

woff files generated for website are slightly modified because of hinting. use ttf from ggpk

frank kayak
#

i do use the updated fontin ttf from the web

worthy cape
#
Caveat-Bold.ttf     Fontin-SmallCaps.ttf         Thasadith-Bold.ttf
Caveat-Regular.ttf  FrizQuadrataITC.ttf          Thasadith-Italic.ttf
Constantine.ttf     Kanit-Bold.ttf               Thasadith-Regular.ttf
DFPT_B5_POE.ttf     Kanit-Italic.ttf             YDSapphIIM.ttf
Fontin-Bold.ttf     Kanit-Regular.ttf            hkyt.ttf
Fontin-Italic.ttf   OptimusPrincepsSemiBold.ttf
Fontin-Regular.ttf  Quikhand.ttf
frank kayak
#

i just want to see if theres sth

worthy cape
#

Same set of Fontin names there.

frank kayak
#

where can i get those ttfs / how do i extract them? or can you share them here if its legal?

worthy cape
#

Art/2DArt/Fonts in the packs.

frank kayak
#

that optimus seems familiar

#

i guess it is the smallcaps one

#

but im no good in web stuff

empty venture
worthy cape
#

Maybe they got all the cash they wanted out of the auditing and now want an install base again?

#

Wouldn't surprise me if there's some sneaky catch about how long you may use the software or something.

frank kayak
#

if youre using java for sth small noncommercial stay away from oracle

worthy cape
#

AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. Supported platforms include Linux, macOS, Windows, ARM, Solaris, and AIX.

frank kayak
#

why is there a turd on the preview?

worthy cape
#

Your client might've failed to load the image, it's Discord's tasteful default.

frank kayak
#

right...

#

for the item tooltips i posted earlier i needed popups from the gui library - sadly that one doesnt have that. so i dived into the nice x11 internals and modified the windows into popups. did learn a bit about x11 again 👍

worthy cape
#

I wonder if it works in a tiling WM 🙂

#

Had great trouble with things like Eclipse and other Java-based stuff in the past that made some hard assumptions about floats and parenting.

empty venture
#

Any1 got experience with AWS S3? Is it a good idea to put all static files over there? How does pricing of that thing work? There is something about per requests price, does it mean that I get charged for 10 requests when the page I serve got 10 images from S3?

civic crane
empty venture
#

been there, seen that, still too stupid to understand 😦

frank kayak
#

still have quite a bit to work on the gui elements.

#

that tab is supposed to end up similar to acquisition

#

managed to change the app icon via x11 - bit difficult to filter out to filter out the right window id if you dont get an id from the gui lib and the pid or other stuff isnt set as window properties... - it changed the icons of windows of the same name (terminal, file manager) until yesterday when i noticed that i can just save all window ids before opening the window and later comparing with that set

#

systray via dbus will be even more annoying

frank kayak
#

it works somehow... - and if it fails nothing dangerous happens. tool might be without icon, tool might throw that icon at another program... - whatever 😛

#

terminal keeps now its own icon - was a bit confusing when all the programs with the same title had the pale court icon

#

with the dbus library im having problems grokking it

simple ravine
#

Should be possible to do this automatically. It is in azure at least, so i suspect it does in AWS as well

frank kayak
#

hmm - i think wrapping might be a good idea

worthy cape
simple ravine
#

max-width indeed

frank kayak
#

is that some web stuff?

simple ravine
#

css yeah

frank kayak
#

im manually rendering the font into an image

simple ravine
#

but why

frank kayak
#

pure go

#

im already maximizing pain by not using cgo gui libraries and reimplementing the wheel

#

did learn quite a bit with this project - iirc it is the first project with which i learned the language - still not anywhere where its usable

#

would be nice if i manage to add a bit more to the ui and add an update mechanism (one of many half-way completed things...)

frank kayak
simple ravine
#

well, hobby projects are the things you determine what you want to achieve, and I guess you found yours

frank kayak
#

im just very bad at finishing one thing... - when it gets less interesting i pick up a totally different end that seems interesting at the moment or leave the project alone for a few weeks

simple ravine
#

hehe yep im the same

#

i'm also trying to be a perfectionist (and sometimes give up on it, and hate myself for it)

#

hence why I've rewritten poesharp 3 times 😄

frank drift
#

it's the worst being a perfectionist

worthy cape
#

(part fun, part bait)

frank kayak
#

pfft - i copy values a dozen times

simple ravine
#

faux-immutable-by-design

frank kayak
#

started 9 years ago with c++ trying to implement an xpath parser for a generic scraper i had planned - was fun for a bit

#

doesnt c++ get module support? or already has it? - how does that look?

worthy cape
#

Haven't looked, kind of hard to define what a module implies and the benefits from them.

frank kayak
frank kayak
#

thx a lot 🙂

mild sail
#

How come I can't strim in this discord?

worthy cape
mild sail
#

Ah, sorry just didn't see a "Questions about rules" chat.

worthy cape
#

I assume you would talk to mod staff about server stuff, maybe the modmail bot?

mild sail
#

Ah I knew my intuition of your passive-aggressiveness was correct. The ? was a nice touch.

frank kayak
#

anyone here that had to work with the x11 extensions shape and xfixes? trying to pass events through my popups

empty venture
#

So 2 days ago I somehow managed to setup AWS and deploy my app. Yesterday I got an email that I'd exceeded the requests limit for free tier on S3 (2k Put, Copy, Post or List requests). I'm really confused what it counts... Does it count every single file I deploy on EB or what? :x

grave wren
#

reads like that

simple ravine
#

bUt stORagE iS chEAP heh

empty venture
#

so far they're charging me 0.01$, lets hope it won't get too high

#

I've read a comment somewhere that someone wasn't paying much attention to the setup and for some service it defaulted to "huge" version - resulted in 500$ after a month

frank drift
#

stories like that are very common with AWS

worthy cape
#

I felt very old when watching a youtube tutorial on graphql and the person just spins up stuff in the cloud with some CLI tools like it's just how you do things these days.

#

"we need a service for this, so we awsamplifyicate a dingdong and copy this API key and..."

golden bane
#

The "unbounded-ness" of costs that such services incur gives me a kind of anxiety akin to thalassophobia

empty venture
worthy cape
#

"you have a perfectly fine computer under your fingers!"

simple ravine
civic crane
simple ravine
#

Don't AWS have their own CDN offering?

rapid pagoda
empty venture
#

those options seem like an overkill to me

#

all I really want to serve are profile images, thats the only thing I need permanent storage for

#

other assets would be a cool but not really needed I think

civic crane
simple ravine
#

Azure CDN (Akamai, Zeron or Microsoft's own) does $0.081 / GB

#

Cloudflare has $0.085

#

AWS has $0.085 as well

#

So not sure how u get cheaper with Cloudflare?

empty venture
#

I think the main issue with AWS is that they are charging for requests as well, not sure about the others

#

actually, what AWS service do u talk about here?

simple ravine
#

azure cdn don't 🙂

civic crane
simple ravine
#

how much traffic do u get for free?

empty venture
simple ravine
#

I guess it looks free for websites with a minimum 2h TTL cache

civic crane
#

from marketing point unlimeted, but they can ask to upgrade maybe at 100TB/month 🤷‍♂️ even then plans has fixed price instead of /GB, and be honest at this amount of traffic you should have money 😃

empty venture
#

or I could just use imgur like u said 🤔

simple ravine
#

There’s no real limit, or you can’t hit it. Just avoid excessive caching of non-html content like videos, music and other download content.

You upload is limited to 100MB for a single request. So you need to chunk larger files.

#

I guess it's meant for "web sites" so if you start serving just a bunch of images etc, they might, I guess question it

#

AWS is not in Bandwidth Alliance

#

Azure and GCP are though

#

lol... AWS actually charge per HTTP request as well

#

that's bonkers.

rapid pagoda
#

it's $0.40 per million requests

#

AWS has a lot of per-request charges that exist primarily to prevent "well technically it's free" shenanigans

bronze kestrel
worthy cape
#

I'm still a bit bummed that Joyent ended up shutting down their public cloud after Samsung bought them, but I guess that's also a reason why Bryan Cantrill left and founded Oxide.

#

The idea of Triton was to run Linux-branded zones on top of SmartOS (Solaris-derived) in which they ran containers on bare metal, with a docker-like frontend that instead of showing a single local docker host, represented the whole datacenter.

bronze kestrel
#

Whatever happened to that?

worthy cape
#

Samsung seems to have pivoted the company into private on-prem and managed clouds for people who pay more, I guess.

#

While you could still grab SmartOS and Triton to try to run your own, it's probably rather dead in public by now.

#

Never got around running it at home as it required Intel VT and I only had Ryzens at the time.

simple ravine
#

For Private Cloud, you probably would go Open Stack or OpenShift, unless you really want something like Azure Stack Hub

simple ravine
bronze kestrel
#

Just pjsalting a bit

frank kayak
#

pm spam implemented:

#

xpath for the hash /html/body//div/form/div[contains(concat(' ', normalize-space(@class), ' '), ' hash ')]//input[@type="hidden"][@name="hash"]/@value

frank kayak
#

my rate limiter impl still fucks up - should (try to) focus on that next...

frank kayak
empty venture
#

Damn it... Love when creators of a framework make some stupid decision when it comes to some core feature... In Django, for whatever reason, they decided that it is a good idea to make usernames case sensitive. There isn't some easy switch/option to change to make them case insensitive. To make it work you have to use a custom User model. Obviously making that change later on is super tricky.

#

There was a ticket 15 (!) years ago to make it case insensitive. After 6 years they decided that it can't be done without losing backward compatibility so won't happen.

bronze kestrel
#

That’s what you get for using something so opinionated.

#

At the mercy of the djangists

empty venture
#

I'd say authorization part in a web framework is little bit more important than deleting 50k records of history in a browser 😄

#

I can kinda understand that they want to keep backward compatibility forever so a change to an existing User model isn't an option. However, there are steps that could be done to prevent the future pain. The least they could do is stating that in the docs. It isn't documented anywhere that the usernames are case-sensitive. It might get super messy to handle when it's production with a lot of users with duplicated usernames and the client decides they want it case-insensitive.

frank drift
#

the one bug I ever cared about in Firefox ended up getting closed as "wontfix" because no one wanted to bother to make it work on Windows

frank kayak
#

can now send forum pms easily from the shell 😄

#

inbox command is missing (querying is implemented)

#

i hope to create a gui where you can react easily to whispers/pms with pms etc

#

for trade guild other contacts and whatever

empty venture
#

uhm... what is your goal actually?

frank kayak
#

a general helper tool for poe with all kinds of functions

#

trying out this and that...

#

prob trying to get pricing like exilence going too and a stash overview like acquisition with forum posting

#

i have far too many tabs so a tool is needed for that

#

and id like to have somethinf like a todo list for planned crafts or other goals to keep track and refresh trades even after leagues for some long time goals

#

the tool is currently still a mess and not too much exposed in the gui :/

slender zephyr
#

uis there anyway to add certain spectres to POB like They of Tul and arena masters? are these ever going to be part of the relase?

#

I tried adding them to the Spectre Lua text file but I couldn't get them to display in the UI to calculate their stats

worthy cape
#

There's issues open for those two in:
https://github.com/PathOfBuildingCommunity/PathOfBuilding/issues/1515
https://github.com/PathOfBuildingCommunity/PathOfBuilding/issues/1775
Adding spectres is a bit of an art, as the skills and how they're applied may not be entirely obvious.
I'd reckon that to do it properly, you'd start with the .txt files and make sure that they're generating the spectre and skills files from that with the exporter.
Some previous contributions may be enlightening:
https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/2751
https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/2259#pullrequestreview-597457521

frank kayak
#

have now poem pm inbox {,all,important,user,system} as a cli command. defaults to unread only.

#

in the inbox view there is a mode "important" in the dropdown - does anyone know what messages this shows? i dont have any matching messages

#

is that for bans and similar?

#

unread looks atm like this btw:

frank kayak
#

i can now send and receive poe forum pms in the shell 🙂

#

i messed up with the white space inbetween the html nodes...

empty venture
#

do u think it is alright to auto-import guides from the forum to my website?

golden bane
#

They retain full copyright of their submissions

hazy fiber
#

^, even if there wasnt you would still want their permission just out of courtesy

civic crane
empty venture
#

I guess I'll just grab the pastebin then, import it and put the link to original guide

worthy cape
#

Did some parsing for once today, ported my SMD parser to Kaitai.
None of the files I'm sampling at random from my corpus has the optional tail sections that I want to verify...

worthy cape
#

Seems like it's a bit of a dead-end anyway, at least for Rust.
Any uses of switch-on ends up with too much type erasure so I can't actually get to the data I parsed.

#

The generated data structures for C++ uses inheritance, while the Rust ones uses Box<KaitaiStruct> which I can't really do anything meaningful with.

simple ravine
#

Can't u unbox it? 😄

worthy cape
#

Nope.

#

A Box<T> is a wrapper for a dynamically allocated value. While you can get a reference to the held thing, the thing that is held here is rather useless.

#

A reference to a trait only allows you to call functions that are defined in the trait, it is largely unrelated to the type that implements the trait.

#

Kind of think of a dyn Trait as an Interface in your languages, but with no RTTI available to downcast to the concrete type.

simple ravine
#

Ah, so vastly different to Generics in .net then

worthy cape
#

So I have a variable like:

pub body: Option<Box<KaitaiStruct>>,

which is initialized like:

        match self.version {
            2 => {
                self.body = Box::new(PoeSmd__Tail2::new(self.stream, self, _root)?);
            },
            3 => {
                self.body = Box::new(PoeSmd__Tail3::new(self.stream, self, _root)?);
            },
            4 => {
                self.body = Box::new(PoeSmd__Tail4::new(self.stream, self, _root)?);
            },
        }

and the KaitaiStruct trait only offers these functions:

pub trait KaitaiStruct {
    fn from_file(path: &str) -> std::io::Result<Self> where Self : Sized {
        let mut f = std::fs::File::open(path)?;
        Self::new(&mut f, &None, &None)
    }
    
    fn from_bytes(bytes: Vec<u8>) -> std::io::Result<Self> where Self : Sized {
        let mut b = std::io::Cursor::new(bytes);
        Self::new(&mut b, &None, &None)
    }
    
    fn new<S: KaitaiStream>(stream: &mut S,
                            parent: &Option<Box<KaitaiStruct>>,
                            root: &Option<Box<KaitaiStruct>>)
                            -> std::io::Result<Self>
        where Self : Sized;
    
    fn read<S: KaitaiStream>(&mut self,
                             stream: &mut S,
                             parent: &Option<Box<KaitaiStruct>>,
                             root: &Option<Box<KaitaiStruct>>) -> std::io::Result<()> where Self : Sized;
}
#

The recommended workarounds (apart from "don't design it like you're doing OOP") is to provide a function in the trait to cast to Any and use the type ID it exposes to do the downcast.

#

The csharp generator emits classes that all inherit from a public abstract class KaitaiStruct but as you have rich casting in C#, it's fine.

simple ravine
#

Sounds like what you could benefit from in this case are discriminated unions

#

like in F# etc

worthy cape
#

You know how it should be represented?

enum PoeSmd_TailBody {
  Tail2(Box<PoeSmd__Tail2>),
  Tail3(Box<PoeSmd__Tail3>),
  Tail4(Box<PoeSmd__Tail4>),
}
...
pub body: Option<PoeSmd_TailBody>,
simple ravine
#

Never heard of Kaitai, will have to look it uo

simple ravine
worthy cape
#

Err, screwed up the syntax there.

#

Accidentally made it a tuple first 😄

#

I shouldn't write code today...

simple ravine
#

I'm working on making prettier slides for some work stuff.

worthy cape
#

In any way, this Rust runtime for Kaitai is stale and incomplete, and the other attempts are stuck in the quagmire of trying to do compile-time parsing of the YAML to codegen more.

simple ravine
#

Most of these slides are made by people who don't know anything about design. They're horrendous

worthy cape
#

The format is a bit verbose but was capable of representing the format at least.

#

It's just the runtimes that are a bit lacking.

simple ravine
#

Generalist libraries for these things tend to try to please everyone, yet pleases very few

#

Really difficult to make right... or I guess, the thing is that there isn't one right way

#

the c# implementation looks like a pile of hot garbage

worthy cape
#

I think they're a bit tainted by the Java world, having written the compiler in Scala and all.

#

The format is OK, quite expressive and the web IDE is handy, but some of the language runtimes are a bit ... checkbox compliant 😄

glacial gyro
#

hey guys, is there a place to post in the discord for feedback on ideas ? ive built something and would like to get some thoughts on the idea (not live to let others use just yet)

hazy fiber
#

depends what groups feedback, im guessing this about the "giant stash" you posted to reddit?

#

looks good, not really a place to get feedback in here though that I know of

glacial gyro
#

fair enough, yeh posted to reddit, was curious if the discord had a place for this kind of thing

#

no worries, thanks again

worthy cape
#

Yep, over several versions. Documentation and advice that never applies to the current rewrite, technically neat but ends up weird.

#

I think some of my parsers are still some version of nom, unless I've purged them.

golden bane
#

It should be fairly stable now, having released yet another major version recently 😄

worthy cape
#

The big point of Kaitai was to have their visualizer/IDE and a bit of language portability for wherever I and others would like to parse.

#

Especially when exploring a format or figuring out why a parse doesn't apply, nom and other in-language tooling falls quite short unless you record a lot of tracing information and roll your own UI for it.

worthy cape
#

Good to know they're working on nom still tho, the new numeric parsers would be neat.

golden bane
#

Kaitai looks really nice though ...when it works

pseudo ocean
#

guys?

#

...

#

how i know witch server i connected?

frank kayak
#

prob the shadow server not the witch one

#

and wrong channel

#

upper right corner in the game

#

toggle alt key

#

when you start the game you can switch the server

pseudo ocean
#

Okay... thank u

#

unnecessary but okay

#

just forget me....

empty venture
#

The skill tree URL doesn't contain information about tree version, does it? Only version of the URL spec itself, right?

#

How does PoB handle url like this: https://www.pathofexile.com/passive-skill-tree/AAAABAQBAFb62WFeExRNhVLsOAd1ZU2iADkO_Etl8Hj5GJH3Mu98pMJmVP1ubyePYCFVBS31YWhll3nZfDKJwKatje8OOuFhUoZgOlK3Pn7d893YvYIHGNvwHzwtdueygMauqSfTb9w9O7YJlnzZFCALYZo7h2onL702OFN07byfZ5t2rGjysKsUcb6n2sGQbHVOR37-ChR1qZQyfnTxxIKE2c9-GjjqGGegrj4uU5pq45862Ia0pTWDX185my2K8I25kFV_K4d2po0Es0Cg-OuFe-RRhO8nn4KbDjw8Ba9sUEeFp3fX6wnyQe9On9-DzAxwd-XAZiFg8kUir0p9eu8= ?

grave wren
empty venture
#

that ver - from my understanding thats version of the url specification, not version of the skill tree

#

so for older urls the first 4 bytes will always be equal to int 4 and in newer one it will be 5

#

I'd like to know if its a 3.15 tree or maybe 3.3 or whatever

worthy cape
#

Does the actual website tree handle legacy links at all?

#

Or is it fine with just matching whatever is in the URL to the current tree?

empty venture
#

hmm... it seems the website loads that tree as a current one but its kinda broken

#

by broken I mean you can select new nodes but can't deselect anything

#

when importing a pastebin with that url into pob it seems to default to 3.6 (oldest supported version maybe?) but when I imported the tree url itself it didn't switch to old tree version and stayed at 3.15

#

well, I'm guessing that's simply some ancient pob pastebin and I will just ignore that

golden bane
# empty venture hmm... it seems the website loads that tree as a current one but its kinda broke...

If you want to correctly load builds from before game version 3.0.0, you'll need PoB 1.4.170.16 or lower: https://github.com/PathOfBuildingCommunity/PathOfBuilding/releases/tag/v1.4.170.16

GitHub

These are new installers alongside the release of 1.4.170.16.
If you're already using Path of Building Community, you won't need these, since it will update itself.
If you're installing...

empty venture
#

Don't think its really needed. I don't really expect ppl to try to upload such old pastebins 😄

#

I got that broken one while looking through forum, perhaps it was some super old guide

golden bane
#

You could try to filter out all builds with

<PathOfBuilding><Build targetVersion="2_6">

at least

grave wren
#

Hm I always thought the version would apply to the tree - til

pseudo ocean
#

@fringe magnet pls unban me from ur discord 😿

worthy cape
#

This doesn't seem to have overly much to do with tooldev.

#

If a project has taken a direction you don't like, you could try supporting alternatives.

empty venture
#

what is Overwolf?

#

and what does it have to do with the poe overlay?

worthy cape
#

The original software named "PoE Overlay" was moved to use the somewhat sketchy Overwolf game injection/diddling framework, at which point it had some forks to try to keep it usable.

#

Most of the world moved on to APT at that point in time.

pseudo ocean
#

Well, if there was any place to find like minded people that would maybe share a similar opinion, I thought that place would be here. So that's why I posted it. I guess you can say it's not directly related though

empty venture
#

If I were you I'd just move to some other tool. The decision to make it not open source was probably caused by $$$. Because of that the chances for it to switch back are very low.

pseudo ocean
#

True. It's kinda obvious that making money off the project is the main driver, considering it's hosted within overwolf which pays you for your addon (through ad revenue share)

empty venture
#

Thats just my general opinion, never used that tool tho.

pseudo ocean
#

I just don't get why it was suddenly made closed source. It was open source for a long time, even with overwolf

#

There's not even a single comment about it. Just 3 months of silence beforehand

#

Well who cares I guess. Moving on. Thanks for your opinions!

grave wren
#

because overwolf likely paid for it

#

isnt there a community fork for it

pseudo ocean
#

I haven't checked for forks, very possible that there are some.

Also dev just gave a response on the suggestion:
Thanks for your feedback. Most of the project is still open source on GitHub. Feel free to check it out there. Some newer modules have been moved to a private repository which won't be public in the near future.

Also if you really wanted to look at the code of the current version, you likely could do so by de-minifying the shipped js code. It's all there

pseudo ocean
frank kayak
pseudo ocean
#

Oh awesome, thanks for that

worthy cape
#

If a project isn't developed in an open manner anymore, there's not much purpose in a repo but providing legacy source code according to the license and possibly as an issue tracker.

grave wren
#

Not a fan of these markdown dialects, adoc ftw