#tooldev-general
1 messages ¡ Page 131 of 1
That's fair, all I'm suggesting is that you give it a chance
That's fine. I've rewritten PoeSharp 3 times already
It's part of the process
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?
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.
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.
only annoying quirk is indexing starts at 1, but otherwise its pretty straight forward to understand given knowledge of other languages imo
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
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.
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?
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
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)?
Tables all the way down đ
I am starting to scratch a little on the surface how Lua "operates" just to identify the paradigms and design decisions
"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.
I suspect that means there are no efficient ways to leverage generics and interface segregation stuff, and ensure open/closed principles
The language is way "simpler" than the ones you're used to, I'd reckon, and not really intended for that kind of stuff.
Now that I think more about this, wonder if this actually could benefit more from being written in a purely functional language
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)
Well, I don't see the necessity to keep those things out because it's a scripting language, to be honest. I understand however that it's a language that has a lot of history, coming from the '70s, and what that brings with it
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
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
python rewrite would be nuts, I'd probably contribute
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.
You have a different type of modularity here, file-local things are good and encapsulated.
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
Sometimes, especially in game-centric code, there's just a lot of stuff to do, without meaningful abstractions
You could refactor this file into 20 small ones, but I don't think there's much to gain from it
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
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 â˘ď¸
And for better or for worse, the design was done well before any of us touched the project đ¤ˇ
Sure, I mean, I don't really put any weight into how this came to be. đ
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
And I try not to be too cocky, given I haven't tried writing anything my own yet, so..
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
or using some other ref to the base functions
like https://github.com/FAForever/fa/blob/7542596ea1c16be28615fdc40cc9bf9c8bb5481a/units/UEB0103/UEB0103_script.lua
But yeah its not ment for OOP
Here's how PoB does classes: https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/master/src/Modules/Common.lua#L32-L133
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
Depends on how you architect it, right? You could have the whole thing done with generalised abstractions, but at some point too much magic is too much. Itâs finding the balance.
Why are there talks about a rewrite? Are there no lua maintainers left?
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
I was asking about that. Thought you knew.
Just general curiosity.
A calc engine for what though? Iâm intrigued.
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
Thatâd be a fun little endeavour. Although Iâd wager probably best done in something lower level like Rust / cpp/ c
There's been musings about whether it'd be worth Doing It Right, and the benefits/drawbacks of various approaches.
Lots of nice bikesheds.
People who prefer those languages can do that. I prefer c#
i dont think youll get more supporters with c++/c
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.
Exactly my point.
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
There's literally no point in making something CPU bound async
You're just adding overhead, and reduce speed with about ~20%
I was quite surprised when digging into the runtime how clever Arl was in the past with subscripts and marshalling to have background calculations.
On modern CPUâs? I donât know if agree.
Iâd love to see some examples of this
@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.
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
I mean, outside of build optimisation theres no way you run into performance issues
Probably not
you can calculate thousands of builds in a second on one thread
Unless you fuck up and write a bunch of weird logic in
A library that can calculate many build variations per given time can introduce interesting new possibilities
@hazy fiber Stuff gets a bit chuggy with stuff like tree node eval and full DPS and stuff, doesn't it?
You also have to have some neat traversal algo that doesnât shit the bed
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++
Idk what pob uses
webasm pob calc engine when
traversal logic for what?
Also I feel like if you are basing performance purely on language thatâs usually the least of your issues
really...
Passive nodes
Youâd have to be sure that your codebase is perfect for language performance comparison to be a reason for wanting more perf.
or you could be sure that lua for sure isnt the most optimal and does just fine
it does fine for its intended purpose, indeed
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.
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.
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?
^
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.
Like I said earlier... When the suggestion of starting with contributing to the PoB codebase first, I stated that I know nothing about Lua to make good decisions, meanwhile I've done 20 years of .NET development, and really enjoy optimizing performance in C# with semi-low-level things, so I would enjoy that far more.
I am not talking about rewriting PoB in C# at all.
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.
That's at least not my primary intention, we'll see what it turns out to be.
Iâd love to see whatever you come up with though. Assuming thatâs gonna end up in git
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.
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
Speed also isnât everything.
If you canât read / maintain the bloody thing, it doesnât matter how fast it is.
That's also a point I've already brought up, a few minutes ago đ
Mhm. We agree there for sure.
I wonder how annoying it would be to implement this in COBOLâŚ
cmon just do it in haskell
I donât like Haskell.
fuck it, let's go all speed. asm
or ada.
But knowing cobol means you can walk into a bank, get a job and demand pretty much any salary you want these days.
if you want to be balling just do it in abap
Within some sort of reason
not anymore
Have they stopped looking for ancient beings who know the old tongue?
there are still mainframe things in there for sure, but it's being refactored and rewritten
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
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
HFT trading is C and asm
they even write their own network stacks to optimize nanoseconds
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
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..
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
That sounds about right. Although I canât recall the last time I saw someone in my space looking for Erlang engineers.
Whats your space?
Broadcasting / News
Primarily video processing and distribution via sat / cdn.
Not as exciting as fintech probably. But hey, works for me.
I'm not in fintech either. Previously in ad-tech, now in distributed cloud systems / consulting
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.
cmon itll be fine
Hah, I have several of these microservice discussions per week, it feels like
not sure if I can handle another one on a Sunday
i saw a big german corp doing micro-monoliths and its aggrevating how they cant handle it
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.
That's a truth with some modification, but sure.
Allow for creative license.
if your team cant handle microservices you better not go full microservice
Or just use common sense
Not everything has to be unified into one way of doing things.
U guys were in the industry when SOA was the big hype?
I digress đ
And before that, Smalltalk and its paradigms.
no i learnt the horrors in uni
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.
If you're not doing agile, you're laughably behind the curve
Itâs not that
waiting for post-agile to become true
inb4 SAP takes over the world and brings us back to the medieval times
let's just say I am not a fan
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
maybe they'll also abandon their deathgrip on jquery
lol what, everyone is doing agile that I work with.
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.
Just pick a flavor. Scrum or Kanban.
Management thinks itâs supposed to be one thing, PMâs / scrum masters think itâs another, devs think itâs something else.
if you've not done it before, do it religiously by the book
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
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
isn't this way older? I remember the posts about uber and macro services on reddit but that was 1 or 2 years ago
wham-bam-thankyoumam
u're welcome
and don't try to do SAFe before you get that working
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.
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
Sure they are. But they no longer force dev direction.
not gonna argue this
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.
@rapid pagoda the monster link in https://oriath.net/ had changed to https://poedb.tw/us/Frightened_Citizen
thanks -- fixed
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.
@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.
@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
What do you want to do with that one character? There are many API endpoints that take character name as a parameter.
get the XP
https://pathofexile.com/character-window/get-characters?accountName=[NAME] works great, but like I said, it's a bunch of extra lines to get it whittled down to the one i want.
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
hmmm that's not to shabby, I thought that one was just the items, but there it is....at the end.
thanks a lot!
Must've been bugged, the wrong team won đ
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?
If you're encountering actual auth problems instead of 429s, you probably has some more fun problems than rate limits.
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
Yep.
Thank you, that's what I was looking for.
Finally narrowed down the memory offsets for what I need though, so I can skip the calls and just use the offsets.
Do note that it's incredibly against the rules to touch client memory.
What did you expect tho? What kind of actions did you want to do?
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 đ
i mean, websites like poelab or poe trade are almost mandatory for anyone not doing SSF already no?
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.
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 :>
The intent is good, but it'd turn into near-mandatory auto-sorters.
fair fair
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.
i wonder what it would take to make an overlay that can set prices like acquisition, but without leaving the game
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.
poe awakened + acquisition essentially 
overlays can already set prices one at a time, that's as much as you're getting
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
tbh I had no idea, haven't played trade in a while
even the old AHK trade macro could set prices iirc
right click, ^A, input price, enter (more or less)
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
Hahaha, so you don't even have to kill the mobs?
I think you're describing http://progressquest.com/
god.. i've been opening VS and stared at this code so many times
without progressing
frigging bundles
This isn't 1995 man! Today you ignore optimization then blame users for having too little ram/threads
đ
if something is totally broken u kinda have to optimize it đ
like web page loading 1min or something
What does that has to do with optimizing the wrong thing in your play time?
It was an out of context joke
You joke, but half of Silicon Valley got built on that concept.
I blame all the node and python kids đ
Except SnosMe, he writes good js code.. exception that confirms the rule
Odd way to spell Brython đ
probably just because I refactor it periodically thanks to MS's investment into vs code and TS đ python's type hints is an afterthought which work 50/50 and that reminds me about c++ templates goto in ide
Let's just agree that c# is superior and call it a day
Pythons type hints with mypy is pretty damn good now
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 ^^
using your browser's POESESSID should work
but generally not advisable of course for end-users
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...
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
If you're not an actual browser, there should be very little concern needed for CORS, that's for browsers to protect the user.
yeah Im probably starting chrome in no cors for this, as the cors requirement is set on the resource, no?
No idea about any of that but itâs a client-side interpretation of things servers tell it, which it sounds like you may have a limited way of mitigating in your Real Browser and which isnât a problem in anything else.
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
for a good reason đ
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)
you could ask here, or maybe TFT, mostly same people
you may want to look at how poeninja constructs queries, if you need an example
In fact, I have seen the details about trade API search queries via my browser, basically it's :
POST https://www.pathofexile.com/api/trade/search/Expedition
GET https://www.pathofexile.com/api/trade/fetch/result1,result2,result3...
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
Indeed, poe ninja is close to what I want to do, are you thinking of a specific URL/document ?
There's no documentation as it's not a "supported" API
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
can you tollerate some items skipped? use min price filter. Can't? use public stash api. Why trade website doesn't return more than 100? because there is no reason to do this.
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.
I understand that but anyway when you design a search function susceptible to return more than 100 results it's common sense to handle parameters to go past the 100 đ¤
Thanks for the suggestion, using price is probably a good option đ
What I'm trying to say is that it's less of an oversight and more towards an intentional act of not providing pagination.
I guess so
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
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
example output
What's the use case?
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
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.
fair, will limit myself to a smaller number for now and revist problem further down road
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.
thanks!
Asked guildmates for a feedback on design of my website. Thats some interesting opinion đ
turns out blueish hue is considered "modern"
actual bikeshedding
https://dribbble.com - inspiration
Your first mistake was asking them for their opinion.
Sometimes user feedback is nice. But a lot of times it can be outright dumb.
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...

So if you see this as black and blue, does that mean youâve got issues?
Colour and perception is deeply weird.
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.
This is deeply disturbing
I had a feeling that something is off with the layout but had no idea what that was. Eventually the feeling went away but I ended up changing the theme anyway which turned to be a little bit better.
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)
@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.
@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
FastAPI framework, high performance, easy to learn, fast to code, ready for production
FastAPI, however fine it may be, isn't the Rust platform I'm using đ
Rust and Python go well together though
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?
I don't have any experience with GraphQL, sorry
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 đ
Going with standards is usually better, as long as you don't have to shoehorn it
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
If you go the graphql way I'd recommend to go as standard conform as possible
How bad is Python (and itâs web libs) at concurrency these days? My requests can be quite heavy and/or many.
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
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
I think youâre sort of using asyncio out of the box with fastapi
But I could be wrong
Yes, just a general tip
I wish FastAPI would support trio. It's higher level than asyncio and therefore nicer to use
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
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
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.
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.
In a kind of messed up way, the GIL is what makes Python fast
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.
It's absolutely the fault of the developer, but they still blame the language for it
Lots of reading. đ
@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
Neato. Too bad I'm horrible at reading books.
Is it cause youâre a cat, as the picture suggests?
<_<
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
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.
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.
Yeah, I've heard that before. Although this just seems like an obscure bug
Reminds me of this unrelated gem: https://twitter.com/paulgb/status/919692780309565445
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
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.

Eh, if it's too hard to use properly it's still bad
Bugs that closely resemble common noobtraps are the best.
I really like it in spite of the shortcomings. Mainly because it provides a really nice interface around database objects. And when it works - itâs great. But itâs that 2-5% that really annoys you when it rolls you over.
Bugmeleons?
I think a big part of it is that it's still Python code and not some DSL
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]
Literally nothing was done with them in the code beyond just retrieving those props.
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 đ¤Ś
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
You had all the common design patterns you get when you pretend that functions aren't first-class too
It came in handy for comp population in some custom subclasses
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)
I donât often find that I need this sort of behaviour. But definitely nice to know. đ
Something like this:
from dataclasses import dataclass, field
@dataclass
class C:
some_attribute: Any = field(compare=False)
Dataclasses are neat.
This is also pretty cool https://www.attrs.org/en/stable/
Thereâs a very good reason to not turn off / gut the GIL
To be fair, a lot of people (aspiring professional developers, hobbyists etc) use Python because it's easy to learn, not because it's the right tool. It is slower than other tools in the tool shed (statically compiled), and sometimes that's OK, sometimes, that's a significant drawback that ought to be mentioned.
I've got fun memories of STM from Haskell, there was a lot of talk about it back then.
Hello from HPC \o/ /o\
(2) is a big problem outside of the GIL too đ
These days itâs way past the point of mentioned. Itâs outright misquoted, conveniently leaving out context and other considerations. What nobody bothers to teach / learn is that if you pick a hammer to sand a plank of wood with, youâre an idiot. Not the hammer or the wood.
ÂŻ_(ă)_/ÂŻ
And a lot of other stuff is mostly down to what you like / are comfy with.
Well, considering the usecases for Python is convenient c-bindings, and not being fast... I mean..
yeah
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.
Itâs fast enough for what it is. It was never made to compete with C and other compiled STLâs
Python's original goal was to be fun to use, hence the name
So what do you use it for, where Python actually excels?
I think we sorted CS, physics, and probably chemists into the latter bag; biology, industrial economists, and math peeps into the Python bag.
Data work, web services, scripts, automation, distributed services, etc.
But those are just wrappers on top of things written in a different language
And Python's the best language to actually use them
I understand that the language is so convenient that it makes it a good tool to do data exploratory work, I get that.
The interface where they cut is interesting as it lends a lot of power into a language where it's easier to express the operations you want to do.
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.
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
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.
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
What do you mean saturate the program?
When you don't just wait faster
Python powers a lot of the researchers at work.
Python is a lot more powerful than R. Not that R couldn't be used, but Python can be used in more contexts
It'd actively harmful for them to try to write C, Fortran, or some other strict language.
As in - if your workload for the code isnât some specialised heavy duty computation that absolutely warrants you squeezing every inch out of it and the available resources.
Very much this. Lots of Python, R, Matlab; and that's what they should use.
Yes but they don't always matter
Especially around the recent AI revolution, so much Pythong.
And at that point, you could just move that part to an extension module written in a compiled language
I did nothing but install Python packages and tell users how to load modules for a year, it felt like.
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 â˘ď¸
Yup precisely my point. WHEN it matters. It doesnât always.
I never said it always matter. It does a lot of the time in the business world though
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
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"
A lot of people I used to work with (mainly clinicians working in research ) love their R.
The language I reached for when I wanted to test if the FFI for my bundle library was ergonomic was Python.
Well a big selling point of Python is the convenience of the language, and if you have to branch out to C to produce "acceptable results" (whatever that is in the given context), the selling point is to some degree watered down.
Plus I keep seeing Rust - Python cross pollination now. Like this: https://github.com/ijl/orjson
You don't have to branch out to C, you could use anything you'd like. I use Rust, for example
Well, whatever u would want to use, don't strawman me đ
pyo3, is it?
Correct. It's great
Python definitely has its uses for sure - especially in automation, like automating infrastructure deployments, etc
You should see the sea of repositories and attempts at the assorted tools for my current project.
python workbooks in azure to automate certain tasks etc is pretty nice
Still have no idea how to do the client libraries.
Get the maturin Python library, and you'll be able to build an importable module in an instant
I store these locally in my bigger projects for support tasks saved me so much repetitive work already
I'm gonna click the Star and then forget all about it until the next time I hear about it, thanks!
It's astounding how many people don't know basic scripting work
It's as easy as ``maturin develop --release` (well, release is optional)
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.
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.
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
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.
Yes but if that's the goal you won't use python
I still maintain that this, for example, is dumb: https://blog.stackblitz.com/posts/introducing-webcontainers/
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.
I have to touch Ruby for my $dayjob currently. It hurts.
Iâve recently heard the zoomers are slowly rediscovering SSR and MVC. And theyâre astounded as if this is something new.
I remember someone writing the Advent of Code solutions in Ruby and it looked like a mona lisa
Hehe, yeah those things have been around since the beginning of the web times. I'm an alive witness to that
Where does things actually happen? Everywhere and nowhere.
Man I wish I saved those tweets. These guys were like âwoaaah you donât have to construct your whole site in the browser using React! 𤯠â. Weâve come full circle right back to the beginning. Long live Pyramid, Django and Turbogears (I donât know non Python MVC frameworks⌠donât shame me)
At least XML config is gone mostly
Beans.
My man⌠last week I had to work with SOAP
The cool folks use TOML now
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
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?
Not a thing in my space at least
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
Just use sveltekit
Static sites with asciidoc are nice
Itâs basically the whole shebang. Can be as dynamic or as static as you like
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
Pikzen (a contributor) and I made good use of Jekyll to cobble together https://pathofbuilding.community/
A powerful build planner for Path of Exile
awakened also uses jekyll https://github.com/SnosMe/awakened-poe-trade/tree/gh-pages
It was really easy. After some light styling and learning like 5 CLI commands, it's really just writing Markdown docs
Yeah if you donât care about any hydration for interactivity - why bother with overkill. Just grab something simple. I am doing mine on GitHub pages (as a profile site) and all Iâm using is static data
I forget what I ran into with Markdown that I really missed when writing my more technical PoE format docs, probably tables.
Try ReStructuredText đ
I solved all my problems with having a blog by not having a blog anymore.
Format docs problem still exists, of course.
I would like to never touch a line of LaTeX again after the master's thesis.
Asciidoc is so much nicer than the hundredth markdown flavour
I shaved the yaks so hard on that one, even did a 3D model renderer with TikZ.
(capped out at around a thousand triangles)
Adoc is pretty much docbook in a easier to read and write format and doesn't fall back into html
A brief, side-by-side comparison of AsciiDoc and Markdown.
End of advertisement 
The good alternative never wins đ
Nope but it's good to know it, it replaced Tex completely for me
And the support for embedded diagrams is super handy

and host it in Kubernetes
This is illegal.
Don't give them ideas.
@grave wren dude I literally posted this
Fuck yes
Thanks JavaScript bros
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.
Imagine online cryptolockers
why? if it asks for you permission
But we all know some Russian teen will find a day 0 exploit.
Yay for more clickthrough permission prompts on the web.
Every other embedded video player keeps asking me for permission to use my VR headset.
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.
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 đ
On electron?
web, if it was electron it's already granted
Thatâs why I was wondering.
Why build a dat viewer for the web though?
This is my curiosity asking
why not, web stack is powerful and I don't have any perf loss compared if it was say in c#
Oh Iâm just wondering if thereâs some âhookâ that makes it more appealing as a web service
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
No it isnât. But thatâs not a reason to make the browser less secure.
I donât have much confidence in this based on the trail of modern web failings in recent years.
The track record on non-web things are worse
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
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 :>
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.
If it's executed properly maybe. I'm not sure if it solves enough of a pain-point though, considering TFT is quite popular for people who want to buy/sell services.
Probably quite fun to develop and test though.
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 =/
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.
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.
you need permission from a discord to add a bot to it yes
Yeah, dealing with people might be an issue. Especially when some people take it very seriously and perhaps even RMT is involved
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.
Can do a user space bot but I'd refrain from collecting that data
On something completely different - other people are recommending FastAPI to me as well. I'm going to have to write Python, aren't I?
Well it's a python framework so naturally
Plenty of rest API frameworks for any language if you're not set on python
Rocket is a web framework for the Rust
programming language that makes it simple to write fast web applications
without sacrificing flexibility or type safety.
Highly recommend
If you can look past the 0.5v
Current half-arse is with warp, had to disable type hinting in my IDE to read my source.
Everything starts as a half-arse
That looks very low level
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.
From looking at the rocket site that looks way nicer to use
Handlers like:
pub(crate) async fn put_file(
digest: String,
storage: Arc<crate::Storage>,
bytes: bytes::Bytes,
) -> Result<impl warp::Reply, warp::Rejection> {
But I never used rust so dunno
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.
See id rather have a framework handle the "boring parts" and write my business logic 
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.
Is it just me or is AWS super complicated to get started with? :x
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.
As a total dumdum I found Azure pretty easy to get started with, particularly the integration into VSC
I'm looking into any options to host my django app and I'm super lost
heroku seems to be the general default for a lot of folks for Django
Heroku seems to be more expensive tho
aws spot instances are basically free
or should I say AWS have better free options
but having over 100 different services offered it is so confusing
exactly what I need now
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?
I've found some tutorial how to deploy on AWS but its from 2016 or something, dunno if I should even read it...
under extended key, but you will need oauth https://www.pathofexile.com/developer/docs/reference
ahh fair thanks!
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
WzI1LDE0LHsiZiI6IjJESXRlbXMvQXJtb3Vycy9Cb2R5QXJtb3Vycy9Cb2R5RGV4SW50NEMiLCJ3IjoyLCJoIjozLCJzY2FsZSI6MX1dpart
[25,14,{"f":"2DItems/Armours/BodyArmours/BodyDexInt4C","w":2,"h":3,"scale":1}]
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
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 đ
Technology: yes
@simple ravine I heard you like Azure: https://twitter.com/amiluttwak/status/1437898746747097090
@GossiTheDog This is even more severe. The RCE is the simplest RCE you can ever imagine. Simply remove the auth header and you are root. remotely. on all machines. Is this really 2021? https://t.co/iIHNyqgew4
769
1656
Ooof, that one sucks
tft the webapp was brainstormed and even tried at some point
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
you're overestimating the costs of hosting by a few orders of magnitude
You mean a website with a high availability, very high user count, tens of thousands of entries a day, a fully fledged moderation system, a blacklist, a ticketing system?
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
how many users of those 200k are remotely active tho
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
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
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
Well if you remade tft as is right now you wouldn't really have to
work with the stash tab system, that is
right, of course
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
As said before, human factor is the biggest issue here
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
I think you're overestimating amount of ppl wanting to use such website
also in unrelated news updating all brew dependencies on my old macbook air is a fucking nightmare
ULV i5 feels so slow

Rep bot? Not that hard. Automatic ranking system that fails and recovers gracefully? Significantly harder.
I'm not really sure but I'd say even ur 120k interactions a day isn't such a big deal
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
eh
you would need to come up with some system that automoderates itself
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
which is not a tech issue but a people issue
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
Meanwhile, I am fretting about traffic loads while not having my system built yet đ
man oh man... AWS is painful when u have no idea what u're doing :/
I'm the client...
AWS Console is horrendous
I'm using the console
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?
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
I have to say following a 5 years old tutorial is semi-optimal đ
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
u can connect to AWS through ssh as well
AWS has something like a 10:1 ratio of useful core services to managed-service junk đ learning which ones are which is the trick
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.
Ever evaluated gRPC? đ
Starlette is basically WSGI 2.0. I guess you're looking for something like this? https://fastapi.tiangolo.com/advanced/using-request-directly/
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Looks good.
Here's the Starlette side of things too: https://www.starlette.io/requests/#request-files
The little ASGI library that shines.
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?
OptimusPrincepsSemiBold.ttf ?
Hmm, no.
I'd lean toward synthetic italics of the regular smallcaps.
I assume you have the Fonts dir already.
it's fontin too
:/ - so i have to mess with the smallcaps font manually?
If this is web tech, it should be able to slant it for you to do faux-italics.
Supposedly browsers do it automatically if you have a @font-face but no explicit italic and use the font in an italic context.
ill check the woffs out after eating
Might have to krangle the underlying font then.
Most of the Bing results are on how to not do it đ
Are the fonts in the ggpk different to the web perhaps?
woff files generated for website are slightly modified because of hinting. use ttf from ggpk
i do use the updated fontin ttf from the web
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
i just want to see if theres sth
Same set of Fontin names there.
where can i get those ttfs / how do i extract them? or can you share them here if its legal?
Art/2DArt/Fonts in the packs.
that optimus seems familiar
i guess it is the smallcaps one
trying to find sth in https://github.com/meta-is-beta/horadric-helper
but im no good in web stuff
I'm really confused here... they made it paid like 3 years ago or something
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.
if youre using java for sth small noncommercial stay away from oracle
cough cough https://adoptopenjdk.net/
why is there a turd on the preview?
Your client might've failed to load the image, it's Discord's tasteful default.
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 đ
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.
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?
been there, seen that, still too stupid to understand đŚ
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
That sounds race:y.
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
Put a CDN between your storage and the client (S3 as an upstream)
Should be possible to do this automatically. It is in azure at least, so i suspect it does in AWS as well
hmm - i think wrapping might be a good idea

max-width indeed
is that some web stuff?
css yeah
but why
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...)
i dont see any easier possibility with the libraries ive found
well, hobby projects are the things you determine what you want to achieve, and I guess you found yours
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
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 đ
it's the worst being a perfectionist
Saw this today, not the worst advice: https://twitter.com/olafurw/status/1438933870401949707
For your next hobby programming project using C++, copy every single value. No pass by reference, no out variables, etc. Everything is a copy.
Then measure and make changes where you think you'll gain the most performance. Were you right?
(part fun, part bait)
pfft - i copy values a dozen times
faux-immutable-by-design
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?
Haven't looked, kind of hard to define what a module implies and the benefits from them.
does someone have an idea what the path of the contraband symbol is?
replica, synth, influences have this form: https://web.poecdn.com/image/item/popup/experimented-symbol.png
seems like a lock symbol - isnt "locked" though...
and its a bit difficult to find json of contraband items because of its nature
thx a lot đ
How come I can't strim in this discord?
I recommend reading #rules-and-info and #đvoice-help-and-rulesđ , as they cover when and how you can stream. This place is for people who make tools, not server problems.
Ah, sorry just didn't see a "Questions about rules" chat.
I assume you would talk to mod staff about server stuff, maybe the modmail bot?
Ah I knew my intuition of your passive-aggressiveness was correct. The ? was a nice touch.
anyone here that had to work with the x11 extensions shape and xfixes? trying to pass events through my popups
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
reads like that
bUt stORagE iS chEAP heh
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
stories like that are very common with AWS
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..."
The "unbounded-ness" of costs that such services incur gives me a kind of anxiety akin to thalassophobia
yeah, and u end up with a tutorial like this: https://i0.wp.com/seths.blog/wp-content/uploads/2014/01/6a00d83451b31569e2019aff29b7cd970c-450wi.jpg?ssl=1
"you have a perfectly fine computer under your fingers!"
Make sure you don't serve files to clients (via web or something) directly from the S3 bucket
if you really want to save look at https://www.backblaze.com/b2/cloud-storage-pricing.html
+
https://www.cloudflare.com/en-gb/bandwidth-alliance/
Don't AWS have their own CDN offering?
cloudfront, but it's more expensive than serving direct from s3 so you probably don't want that
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
use imgur or just say users that you will use gravatar.com asociated with email
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?
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?
azure cdn don't đ
I mean it's free and since it in bandwidth alliance you don't pay for egress traffic from storage (from B2)
how much traffic do u get for free?
now that I've looked into CloudFront, yeah, I totally need CDN đ
I guess it looks free for websites with a minimum 2h TTL cache
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 đ
or I could just use imgur like u said đ¤
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.
technically yes but it's usually insignificant unless you have a lot of metadata requests, or requests for tiny files
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
Which is why AWS is a shit choice among other reasons. Thereâs pretty much a better and cheaper alternative for every one of their offerings.
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.
Whatever happened to that?
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.
For Private Cloud, you probably would go Open Stack or OpenShift, unless you really want something like Azure Stack Hub
I understand where this might be coming from, but for companies who value the value-adds which makes it not fair to do a 1:1 comparison to like a dedicated host in a datacenter is greater than getting cheaper metal
I mean.. yeah. I just spoke from a personal perspective. My company uses AWS. I personally do not and donât want to. Itâs whatever. If peeps wanna use it - who am I to say anything.
Just pjsalting a bit
pm spam implemented:
xpath for the hash /html/body//div/form/div[contains(concat(' ', normalize-space(@class), ' '), ' hash ')]//input[@type="hidden"][@name="hash"]/@value
my rate limiter impl still fucks up - should (try to) focus on that next...
the recipients fields doesn't make any sense to me
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.
Thatâs what you get for using something so opinionated.
At the mercy of the djangists
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.
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
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
uhm... what is your goal actually?
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 :/
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
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
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:
i can now send and receive poe forum pms in the shell đ
i messed up with the white space inbetween the html nodes...
do u think it is alright to auto-import guides from the forum to my website?
No. If you look at 10. d) of the ToU (https://www.pathofexile.com/legal/terms-of-use-and-privacy-policy), you can see that while there is an agreement between the poster and GGG, no such agreement exists between you and them
They retain full copyright of their submissions
^, even if there wasnt you would still want their permission just out of courtesy
You can index them tho, and it's already done by at least 3 projects https://github.com/poe-tool-dev/awesome-poe#:~:text=Build guide Indexers
I guess I'll just grab the pastebin then, import it and put the link to original guide
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...
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.
Can't u unbox it? đ
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.
Ah, so vastly different to Generics in .net then
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.
Sounds like what you could benefit from in this case are discriminated unions
like in F# etc
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>,
Never heard of Kaitai, will have to look it uo
Right, that's "discriminated unions"
Err, screwed up the syntax there.
Accidentally made it a tuple first đ
I shouldn't write code today...
I'm working on making prettier slides for some work stuff.
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.
Most of these slides are made by people who don't know anything about design. They're horrendous
The spec here is roughly this: https://gist.github.com/zao/e2d0df51db4e865a59d76e2056c1a5e6#file-poe_smd-ksy
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.
Given this hand-written spec: https://zao.github.io/poe-doc/smd.html
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
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 đ
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)
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
fair enough, yeh posted to reddit, was curious if the discord had a place for this kind of thing
no worries, thanks again
Have you looked into nom?
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.
It should be fairly stable now, having released yet another major version recently đ
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.
vs. stuff like 010's bt:s and Kaitai, https://i.imgur.com/nyip44b.png
Good to know they're working on nom still tho, the new numeric parsers would be neat.
Kaitai looks really nice though ...when it works
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
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= ?
Can't link to POB but this is what I did with my bot: https://github.com/poediscord/poediscordbot/blob/de7b1c2dd4dc8ea95a66312218235f3207f202f3/poediscordbot/pob_xml_parser/tree/poe_tree_codec.py#L39
that ver - from my understanding thats version of the url specification, not version of the skill tree
https://www.pathofexile.com/forum/view-thread/3074491 here's a thread by Novynn
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
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?
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
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
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
You could try to filter out all builds with
<PathOfBuilding><Build targetVersion="2_6">
at least
Hm I always thought the version would apply to the tree - til
https://poe-overlay.convas.io/feedback/make-the-software-open-source-again-cku5nv9ol1711583yn11wkz9kjc help upvote my suggestion to make the PoE overlay open source again. đŻ
@fringe magnet pls unban me from ur discord đż
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.
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.
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
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.
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)
Thats just my general opinion, never used that tool tho.
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!
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
Also I have more indicators that lead me to believe that overwolf paid for something there. But i'll keep those reasons to myself as that would only be destructive
@pseudo ocean https://github.com/PoE-Overlay-Community/PoE-Overlay-Community-Fork - never used it myself. but this seems like the most active fork on the first look
Oh awesome, thanks for that
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.
i do like the foldins in Markdown a lot
Not a fan of these markdown dialects, adoc ftw