#tooldev-general

1 messages ยท Page 46 of 1

simple ravine
#
 "local_accuracy_rating": {
    "alias": {
      "when_in_main_hand": "main_hand_local_accuracy_rating",
      "when_in_off_hand": "off_hand_local_accuracy_rating"
    },
    "is_aliased": true,
    "is_local": true
  }
#
  "main_hand_local_accuracy_rating": {
    "alias": {},
    "is_aliased": false,
    "is_local": false
  }
timid hemlock
#

Yeah, that's how weapon-local stats work

simple ravine
#

why would it say local false on the alias?

timid hemlock
#

Probably because once the alias is resolved, the local flag no longer matters

simple ravine
#

well played, GGG

#

thankfully the json separates them

#

but the plaintext is more difficult

timid hemlock
#

Even then, having to work it out based on crafted/non-crafted/unique is just stupid

#

I'd wager there's very, VERY few people outside GGG (and probably within, too) that could even tell you whether a given instance of flat accuracy is global or local

#

And that's just daft

simple ravine
#

well, I hope at least if you can filter out possible modifiers based on if it's a normal explicit, crafted mod or an implicit

#

and from there have one single outcome left

timid hemlock
#

Sure, but that shouldn't be necessary

#

And FWIW, I don't even bother in the program ATM

#

I just assume local, as the part of the code that works with local modifiers can't tell if the stat came from crafted or non-crafted

simple ravine
#

I understand you completely. I've been working on an 'item info / trade macro' alternative, and it's nasty

#

because the user is intersted in knowing quickly how many prefixes and suffixes, what tier it is.. because people are quite hung up on those things

#

and separating composite mods is just ... nasty

timid hemlock
#

Yeah... that's one of those things that PoB could do, but I really, really can't be bothered dealing with that mess

simple ravine
#

I'm using your application and I love it. But when I am using it, in that context I don't care about tiers of items etc

#

That information really have no value in that situation

timid hemlock
#

Well if you're not using a trade/item info macro, copying an item into the program is a quick way to get DPS etc

#

I do that all the time ๐Ÿ˜›

simple ravine
#

I'm using the AHK one

timid hemlock
#

So having the program figure out the affixes could be useful

simple ravine
#

but that is more when dealing with loot

timid hemlock
#

Indeed

simple ravine
#

when determining how an item would affect my build, absolutely paste it into your app

#

now when I remember it, there's a couple of things I wish Path of Building had

#

#1. Determine redundant nodes in your tree

#2. Showing "power" on selected nodes (red / blue)

#

That would be very handy (for me at least, because i suck), when trying to come up with different approaches tree-wise

timid hemlock
#

#2 isn't done currently for technical reasons; calculating the node power for the 800-odd unique nodes requires a few shortcuts due to the processing power required, and it can't handle node deallocation

#

And doing the allocated nodes using the usual non-shortcut method is too slow

#

#1 is in the bin of QoL improvements that I'd like to add for the passive tree if I ever get around to it ๐Ÿ˜‰

simple ravine
#

hm, interesting

#

the way you display the non-allocated power, would it make sense to use the same way for the allocated (by when calculating it's "power", calculate its value as if it was de-allocated)

timid hemlock
#

Ok so, the way the node power shortcut works, is that the program does most of the setup required for an offence/defence calculation pass (sets up active skills, adds base stats, item stats, passive tree stats), then saves the state, then for each node it adds the node stats, does the offence/defence stuff, then resets the state

#

You can add more stats (say, from a passive node) just fine, but removing them isn't so straightforward

simple ravine
#

so when I hover over with the mouse

#

it tells me what i'll lose if i deallocate that node

timid hemlock
#

Yeah, because it does a full setup and calculation pass when initialising the tooltip

#

So it can remove nodes that it would otherwise add

#

It's fine doing that for one node, but for 100+ nodes it is rather slow

simple ravine
#

I'm not trying to be right at any cost, but it would be interesting to see how it would perform

#

Unsure how Lua works with threads, but if you'd have N copies of the states, and compute in parallel

timid hemlock
#

I'd need to speed up the setup phase of the calculation pass, or find a way to remove the node modifiers easily

#

Actually, I may need to do the former anyway, as I'm currently running into issues with the next update, in which I'm adding sort-by-DPS to the gem list

simple ravine
#

because - memory is something modern computers have a lot of

sly oracle
#

That would require ALOT of memory

simple ravine
#

OH NO YOU DIDN'T!

#

That's awesome!

timid hemlock
#

Unfortunately Lua doesn't have support for simultaneous threading

#

Although I do have a limited form of it implemented in this program; it is used for background update checks and page downloads

simple ravine
#

PoB takes up 215 MB or RAM, not sure how much of that is tree state

timid hemlock
#

Not very much ๐Ÿ˜›

simple ravine
#

so take that times 8

#

probably not too much

timid hemlock
#

The item, passive tree and skill stats take up most of the memory

#

But anyway, we'll see how I go with the DPS sort thing

#

There's no way to avoid a complete setup phase with that, so I'll need to optimise it a little

simple ravine
#

if this was in c#, i'd be offering a helping hand

#

but with a new language, i'd probably just slow you down

timid hemlock
#

Hehe

#

Lua is probably the easiest language to learn in the history of the universe ๐Ÿ˜›

simple ravine
#

one of my employees said the same thing about Ruby and Erlang too

#

i find my self writing more "procedural" code than object oriented sometimes, because that's where i started

#

DOS ftw

#

I did take a peek at your code, and it wasn't too hard to understand the code, but because I didn't have the full picture and undestand the limitations of Lua, I had a difficult time undestanding the reasoning behind some of the architectural choices made

timid hemlock
#

Ahh

#

Well the use of Lua to write a desktop application is an unusual architectural choice, so there's that too ๐Ÿ˜ƒ

simple ravine
#

That comment has run past my mind ๐Ÿ˜ƒ

#

If I knew more about functional programming, I'd take a stab at making a calculation engine in f#

sly oracle
#

functional programming is pretty fun imo

sly oracle
#

I started out writing C++, so it's OO all the way.

#

All the kids were learning Java and Javascript, but my friend's dad was a C++ programmer, and he had 10000000000000s of book

summer burrow
#

JS can be functional

sly oracle
#

Definitely

summer burrow
#

actually, there's a huge push for it to be functional these days

#

especially when managing state within webapps

sly oracle
#

meh

#

it's always had functional aspects

#

cause closures are the only way to have private variables

summer burrow
#

right, i'm talkin more about things like redux which force functional purity

#

in order to work

#

and composing functions

#

relying on higher order functions, etc

sly oracle
#

javascript has always been like that

#

before "in order to work" was a much lower standard

summer burrow
#

i know

#

i'm just saying functional programming is making a comeback in JS lately

#

over prototypical

obtuse citrus
#

@timid hemlock I've see lua being extended all the time. Surely there is a (multi-?) threaded version or extension to include the runtime out there somewhere?

simple ravine
#

meh, i was talking about real functional

mortal bone
#

Haskell or gtfo

simple ravine
#

kek

mortal bone
#

JS can't be a functional language because it isn't proven to be

simple ravine
#

I hate my day when I have to write JS

#

I'm seriously wanting to learn more about Erlang and perhaps Elixir

mortal bone
#

Base js is rather annoying, but if you use jquery or similar extenders it is a ton better

#

Also, elixir looks really nice

simple ravine
#

jquery? heh.. i haven't used that one in a long time xD

summer burrow
#

really? i love JS, but i'm mostly a Java dev

#

so

simple ravine
#

it is good for some things

#

that should be single threaded by nature

timid hemlock
#

@obtuse citrus As far as I know there aren't any that allow multithreading with a shared state, and even if one existed, since I'm using a third-party JIT, it wouldn't be compatible

#

The best you can do is have multiple states that can pass information between them, but I'm already using such a system

simple ravine
#

SIMD / GPU calculations? ๐Ÿ˜„

pseudo ocean
#

openCL

simple ravine
#

cuBLAS โค

pseudo ocean
#

that's only nvidia :\

simple ravine
#

who cares about ATI/AMD?

pseudo ocean
#

opencl is supported by both!

simple ravine
#

seen any computing grids that focus on AMD instead of NVidia?

#

but sure for consumer grade applications, i suppose you should try to support both

inland wedge
#

@simple ravine i do care about ati amd

#

AMd rules btw

gritty olive
#

Js is only annoying when you want it to be something other than JS

simple ravine
#

But rarely the best at any task, except for when it's the only choice you've got (e.g. browser)

#

But it's often the easiest choice

lapis drift
#

it's the best at developing very fast crossplatform mobile, desktop, web and backend apps

simple ravine
#

which ones did you compare when reaching that conclusion?

lapis drift
#

are there many choises?

simple ravine
#

that didnt answer the question

#

assuming that you're meaning the webapps (and not the frontend, as that's the only language), and not just popping in for some good'ol trolling

lapis drift
#

no, I mean literally anything

simple ravine
#

one size does not fit all.

lapis drift
#

I can only name C# as a potential choise but I've no much experience with it

simple ravine
#

so if we exclude frontend javascript (browser code), there are variety of languages that compete

lapis drift
#

and the development speed is not fast enough

simple ravine
#

but saying it is the best, you surely must have some experience and done your research, right?

lapis drift
#

well JS is not only the browser code nowdays

simple ravine
#

ok, what other languages do all the major browsers support?

lapis drift
#

you can use another language and compile it into JS

#

for modern ones see Dart and Kotlin

simple ravine
#

lol

#

derp.

#

I rather shoot my leg off than working woth Dart or Kotlin

lapis drift
#

true

simple ravine
#

I guess I am just curious to what made you say that JS is the best language etc

#

not even trying to troll you, im just curious

lapis drift
#

there are no such thing as the best language, each has its own pros and cons

simple ravine
#

I am refering to this comment:
"it's the best at developing very fast crossplatform mobile, desktop, web and backend apps"

lapis drift
#

yeah

#

the development speed is extremely fast

#

basically you can write frontend-like code that runs in native mobile, desktop and web apps

simple ravine
#

yeah, it's super fast and easy to produce hair-thinning bugs and defects in as well

#

if you really must use Javascript, I would suggest using TypeScript

lapis drift
#

Flow is much better

simple ravine
#

why?

simple ravine
#

is that your opinion or someone elses?

lapis drift
#

it's the fact you can check yourself

simple ravine
#

๐Ÿ‘Œ

simple ravine
#

So I read up on Typescript vs Flow from a few sources, and I disagree that it is much better. It comes from two differnet places.

#

And some of these article authors have little clue on what they're covering.

#

ugh

#

Javascript has become the new PHP-community. Full of entusiastic and opinionated/biased people, pouring out opinions and code that doesn't make sense ๐Ÿ˜

lapis drift
#

not really

#

it's just JS has grown into something bigger than a scripting language for browsers, but some people can't just accept it

simple ravine
#

were you around when PHP became popular 20 years ago?

lapis drift
#

nope

#

but after 20 years PHP still doesn't make any sense

simple ravine
#

so you're just taking the opposite side just for the lulz, i guess.

lapis drift
#

do you like PHP?

simple ravine
#

I don't

#

But I've worked with it for several years

lapis drift
#

then I guess we can agree that it sucks more than anything else

simple ravine
#

there are equally bad languages, and worse

#

Javscript being in one of those bins.

lapis drift
#

well I don't agree

simple ravine
#

That's perfectly fine

gritty olive
#

There is no such thing as a bad language, just poor implementation and reasoning

#

C++ / C# / Java / Javascript so far are the cross-platform languages they all can do a fine job if a good developer is behind them

simple ravine
#

@gritty olive Tried Malbolge? ๐Ÿ˜ƒ

gritty olive
#

I've heard of it

simple ravine
#

That is a bad language.

gritty olive
#

Is my favorite

#

I don't think there is a "bad language"

simple ravine
#

I disagree.

gritty olive
#

That's fine

#

Doesn't make opinions true though ๐Ÿค”

#

These are just opinions at the end of the day

simple ravine
#

As it's not a fact, rather an opinion - I can have my own

gritty olive
#

Thats what I mean

simple ravine
#

"There is no such thing as a bad language" <-- that is a fact statement fyi

gritty olive
#

Because there isn't, since it's all opinion

pseudo ocean
#

When i plan a software that involves serverside computing and is not a simple website, i always write the server runtime in mono compatible c# code and the frontend in HTML/CSS/JS for maximum compatibility

#

currently working with PHP at work with the zend framework and makes me wanna vomit each day

#

well... i must admit, 50% of my "vomit feeling" comes from the guys here who build that software had no clue what they're doing and now i can handle that legacy shit for them...

#

xD

#

C# itself, as a language, is just a language, but the .NET framework behind is what makes it a blast for me as experienced dev, im just not willing to code everything from scratch and thats where the FW takes SO much work away from you

gritty olive
#

I write in whatever is best for the job, right now that happens to be C / Lua at work

pseudo ocean
#

yes, right tool for right job ๐Ÿ˜„ but also = the tool you can work the best with

#

nothing worse than a dev thinking "oh c is the best for this" when only ever did javascript... that will not work well

simple ravine
#

there is a large fundamental difference between kids learning to program today than 20+ years ago, though.

pseudo ocean
#

kids do that today?

simple ravine
#

most pick up python or javascript

#

and doesn't learn how a computers actually works

pseudo ocean
#

i thought all they can do is drag&drop on toolbox websites

#

i mean everything more complex than facebook... nope... ? isnt that the case?

gritty olive
#

I find that not to be true given hiring but eh

pseudo ocean
#

you hire kids?

#

isnt that illegal? XDDD

gritty olive
#

I hire interns, so yes

#

Not illegal when you work with a college

pseudo ocean
#

was joking ofc

#

bad joke ofc

#

idk dude, i first started with BASIC on my C64/128D

#

and i was 6 or 7 back then

gritty olive
#

I started with VB6 then did ASM / C / Java / Perl / Lua ... blah blah blah

pseudo ocean
#

VB ouch xD

#

VB is the only language that IS a bad language, at least for beginners

gritty olive
#

Amazing language / IDE tbh

#

Ahead of its time

#

Seeing that is where JS will end up in two years

pseudo ocean
#

i mean syntax like its really really bad

gritty olive
#

Probably, I look at it more from how it work functionally

pseudo ocean
#

it makes you having a hard time understanding the syntax of common languages like java,c/c++, etc

#

did you ever try F#?

gritty olive
#

Yeah, I prefer OCaml

pseudo ocean
#

I have so little time to look at todays changes in the coding world -.-

#

I wish i would be unemployed lol

#

But then i would not have all that money lol...

simple ravine
#

I did QuickBASIC and Pascal back in the day, 20-some years ago

pseudo ocean
#

But then i would have time to code something to get my own money...

#

head explodes

#

how old are you guys? im 31

simple ravine
#

32

pseudo ocean
#

best age

gritty olive
#

26

pseudo ocean
#

at 30 you feel like a young god

#

xD

simple ravine
#

heh

#

well, i quit my job and founded a company with some friends

pseudo ocean
#

it works well?

simple ravine
#

grand total, we have around 80-90 some employees

pseudo ocean
#

or more like "one chore for the other"

#

yeah not talking about size or money, just the feeling

#

i mean... you only have one life

simple ravine
#

best thing i've ever done

#

even if u'd take the money away

pseudo ocean
#

id rather work employed forever before putting me in a chore, regardless money

#

kk nice

simple ravine
#

i'd say it has been the most self-defining and rewarding thing I've done

gritty olive
#

Depends on the work for me

pseudo ocean
#

what i wanna try in 2 or 3 years is joining the content creation market

#

started on twitch and got insane channel growth, but then new job, no time, but kept it in mind

simple ravine
#

you mean like envato?

pseudo ocean
#

envato?

simple ravine
pseudo ocean
#

nono haha as content creator myself

#

not the industry

simple ravine
#

yeah

#

you create and sell your content, themes, code, video, graphics etc

#

on there

pseudo ocean
#

haha with "content" i mean VoD (youtube) and livestreams (twitch)

simple ravine
#

oh

#

yeah, i've thought about that too

pseudo ocean
#

already started to write a nice twitch bot for myself, with nice key features like viewer analyzing and voice control

simple ravine
#

One of my employees wrote a Discord thing to analyze emoticons used for some speed gaming charity challenge

#

this bot thing is exploding lol

#

it's quite cheesy way it's growing, but i think the end result is going to be good for all

#

'conversational ui' is going to take a much larger space in our daily life

pseudo ocean
#

i like all that automation

#

really, automation is the reason i got into coding

#

first thing i coded was a bot for a german chatroom

gritty olive
#

and automation will take us out

#

funny how that works heh

pseudo ocean
#

not really, writing code autmated isnt possible and (in our lifespan) will never be

simple ravine
#

technology has always been evolving what we do for money

gritty olive
#

It already has started

simple ravine
#

industrial revolution, anyone?

pseudo ocean
#

xD

simple ravine
#

it's just a repeat, with a new take

gritty olive
#

conveyer belts of code

pseudo ocean
#

and still in wetsern industrial world unemployed rates arent really high plus not everyone is cleaning floors ๐Ÿ˜„

#

old jobs die (metal industry) new jobs are born (robot/automation engineer)

#

evolution ๐Ÿ˜„

simple ravine
#

yep

#

people are just afraid, and that creates hatred towards unknown

#

funny how humanity hasn't figured that one out yet

pseudo ocean
#

xD

#

humanity is split

#

how about making a char evolution tool for PoE? like... a tool that automatically mirrors your profile in set intervals and then assembles a video from it, that you can also look at frame by frame and be able to hover over the chars items like you would ingame, to see the properties?

simple ravine
#

just for the fun of it, or?

pseudo ocean
#

no, for selling access to it for 50$ per month xD

#

ahaha ofc for fun

simple ravine
#

lol

#

no i mean

#

personally i am more into QoL-improving stuff

pseudo ocean
#

idk, with enough data you could also highligh that persons favourite/most chosen nodes in the skill tree all times or over periods etc.

simple ravine
#

but i'm sure there's an audience for novelty stuff like that

pseudo ocean
#

would just be for analyzing, informational

#

maybe can link to the internet to builds that "match" your general taste

simple ravine
#

i had an idea, where you'd take the top N from the ladder and analyze commonalities

#

cluster/categorize, etc

pseudo ocean
#

and partnership with shop sites that suggest weapons you often use xD

#

idk man, would be like a google-analytics for your PoE account rofl

simple ravine
#

and also had an idea on a shop indexer site, which is personalized based on the character you're playing

#

helping you find items that would match your build

pseudo ocean
#

yes sth. like that in later instances, like V3 or V4

simple ravine
#

and recommend builds that are similar based on ladder etc

#

well, i've thought about that one for quite a while

pseudo ocean
#

V1 would only be collecting data and making it beautiful for looking at it

simple ravine
#

but i haven't really gotten that far yet

pseudo ocean
#

im not a fan of mashing together 1 million ideas and working on all of them from V1, then got a buggy V1.0 with 50% of the features not working etc.

#

since i got my own jira-instance running im working WAY more structured

simple ravine
#

right.. I just mentioned my similar ideas ๐Ÿ˜ƒ

#

that i've been sketching on, so to say

pseudo ocean
#

๐Ÿ˜›

simple ravine
#

@pseudo ocean you working on any PoE related stuff right now?

pseudo ocean
#

no

#

dont have any project running

ornate gale
#

@pseudo ocean good call on jira, I cant work without a tracker anymore

#

I suspect not having one before was the main cause of the heaps of unfinished side projects marauderthinking

pseudo ocean
#

Ohhh yes

#

I did manage my ark stuff with Jira too, trades, long term projects, breeding etc. because that game can overwhelm one with multiple plannings xD

#

Its real power is its extreme flexibility

#

Well and 10 bucks per year

ornate gale
#

yeah, cant complain about the price either

#

last year I paid 30 bucks for jira bitbucket and confluence since the project was collaborative

pseudo ocean
#

I'm planning on doing my real-life stuff with kanban style xD

ornate gale
#

cant tell I regret a since dollar out of it

deft jolt
#

did something happen on the 20th?

#

my bandwidth went up 12x that day

pseudo ocean
#

Bitbucket we use at work too, it's very nice, wish we would use hip chat too

ornate gale
#

it's quickly expensive for companies though

#

but yea, I have it at work too and it's a real QoL to have the whole ecosystem - even if it means developing a Stockholm syndrome with Atlassian

pseudo ocean
#

ahahah yes everything has negatives, but when i look for alternatives its either the price or the ui/functions that make me vomit

#

i would like to code a discord integration for it as well as for jenkins

#

that would be sick for public projects, then adding github support on top, full toolchain integrated

#

my company is using it completely wrong, even the customers have jira accounts... dont wanna know how expensive that is, theres a customer support component where you only pay for the supporter accounts...

#

also im a bit worried that specific customers have full r/w access to jira, they can see all timesheets, booked time of the devs etc.

gilded herald
#

It quickly starts feeling like work when I use Jira for a side project. Helps a lot, but feels weird ya know?

pseudo ocean
#

yes, it helps if your general discipline isnt very high, or if you are generally a chaos type dev xD

#

any1 using jenkins and jira?

gilded herald
#

jenkins works well if you are used to using it. I find that for smaller projects that something like circle or travis work much better unless you are willing to put in the time to setting everything up.
I guess if you were working on a lot of things you could just use jenkins for everything and then you would get a bit more use out of it.
Man now its really work if I have to set up a jenkins instance lol (I work as an SDET for a startup in atlanta).

pseudo ocean
#

haha idk man, i always try to match latest industry standards for the whole toolchain i use in private projects, that way you can even boost your value as employee while unemployed, because you constantly get in touch with them and build up additional knowledge

gilded herald
#

Agreed, of the clock learning is always a good thing!

pseudo ocean
#

maybe its overkill sometimes, but building up useless knowledge with nichetools actually hurts me more than a bit overkill

gritty olive
#

Hm

#

The character progress thing would be nice

compact isle
#

that ggg tracker is too fast sometimes

torpid mesa
#

i saw your post ;)

desert needle
#

it checks every 30s iirc, pretty crazy. My bot only checks every minute or two.

civic sluice
#

< I was working under the assumption that all affixes of the same group were pretty much the same but from different tiers

#

that's mostly accurate but totally wrong

#

๐Ÿ˜ฆ now I'm going to need to rework how I handle them

civic sluice
#

much better

simple ravine
#

(Accuracy% || Accuracy) && Light Radius is one of them

#

makes it a little trickier ๐Ÿ˜ƒ

civic sluice
#

I'm going to strip the numbers/underscores off the end of the mod name and use that instead for the mod groups for now.

outer jay
#

@timid hemlock Where does PoB save it's build if you have the installer version?

timid hemlock
#

In your Documents folder

#

Easy way to see the path is to open the options window, then hover over the "Build save path" option; it'll tell you the exact location

outer jay
#

Got it

#

Thanks!

#

Switched from portable to installed version so I had to move over my builds

severe stratus
#

@timid hemlock Bastion of Hope still doesn't seem to have support in PoB - just an "is Bastion of Hope active" with the 50% boost would be enough

civic sluice
#

I've updated the PoeSimCraft tool with another pre-alpha build, no new features, just work making the UI clearer and fixing bugs

simple ravine
#

That is a 2-stat modifier

#

which modifier am I able to condition?

#

uh.. yeah im too stupid to operate that program lol

deft jolt
#

Stash api http timeouts have started to be a problem

#

Are they on my side or ggg's

#

I can't tell

timid hemlock
#

@severe stratus Ah, that should be easy to add; it'll be in the next update.

pseudo ocean
#

@timid hemlock do you use the .Net entity framework?

timid hemlock
#

Nope

simple ravine
#

Entity Framework in LUA? exalt

pseudo ocean
#

It's c#

simple ravine
#

yes it is

pseudo ocean
#

I'm very happy to see more and more of those tiny game tools being done with c# :D

timid hemlock
#

PoB isn't written in C#

#

It uses Lua

pseudo ocean
#

PoeSimCraft was what I was checking out, I guess I asked the wrong person for the EF lel

timid hemlock
#

Indeed

pseudo ocean
#

Stupid me

simple ravine
#

I like how EF is evolving though

#

I rememver Entity Framework 4, and how much I used to swear at it

#

And how some others would hate EF by waving with NHibernate

pseudo ocean
#

xD

#

i really wanna do some stuff with .net again, i feel kinda stupid working with php all day at work in a project that is a giant pile of garbage because people didnt give a shit about following even the simplest rules and standards (you should see the classes with 5000+ lines of code >. <)

simple ravine
#

ugh

#

brush up on your .net by checking out new coolness in .net core and netstandard

#

it is fast

pseudo ocean
#

xD i am so split man... on one hand i wanna help my company to get more efficient and better code, on the other hand i need to keep up my own value for the next job... so in my free time i have to decide doing research for my current company or educating my self in .net stuff xD

simple ravine
#

do 50/50?

#

or just learn more about general architecture

#

most of it is applicable to both PHP and other languages

pseudo ocean
#

na i meant more like actual code or stuff, i could for example chime in to a open source .net project, or i could frkn finally research how to bring back composer to our project at work, because some idiot removed it after installing the project initially (4 yrs ago LoL)

#

working on 4 yrs old librarys... i tell ya... not fun

simple ravine
#

sounds like a company me and my business partners bought a few years ago.

#

huge tech debt in a messy php code base

#

on another note, i'm working on some .net related PoE stuff

#

it's a bit messy and just a bunch of domain logic in class libraries right now .. (building the fundamentals)

hushed relic
#

ew php

#

yay .net

simple ravine
#

hey @hushed relic, how u doing? we never got to continue our conversation the other day

hushed relic
#

mm quite good, juggling between work, poe-projects, personal projects and trying to get everything to a stable state before I jump into 3.0

simple ravine
#

sounds fun ๐Ÿ˜ƒ

hushed relic
#

constantly getting sidetracked by real life - it's reminding me that things like sleep, friends, gf and family exists

#

it is! but it's very time consuming

simple ravine
#

heh yeah tell me about it, i have a 3 year old running around here, and working from home ๐Ÿ˜ƒ

#

time consuming is a good thing though! and a choice most ๐Ÿ˜ƒ

pseudo ocean
#

XD

simple ravine
#

I seriously need to make a tool that goes through my stash tabs and tells me what's garbage and not

#

sorting my dump tabs is a pain

simple ravine
#

omg who does that

pseudo ocean
#

i have no idea, but someone in comment mentioned a teacher in IT class actually TOLD ppl to do that xD

#

ahahahaha

simple ravine
#

shut that school down right nao

ornate gale
#

lolwut

#

what in Oblivion is that marauder

pseudo ocean
#

braces, who needs them? MOVE EM OUT OF MY WAY

#

like the senior in my company actively sabotages/prevents the usage of a automatic code-formatter

#

well, one of the seniors

simple ravine
#

.editorconfig ftw

pseudo ocean
#

everyone using php-storm, everyone could just plug in PSR2

#

but nono, formatting by hands is what a good dev does while coding

#

then he looks up who commited code where a space is missing

#

and goes to the person and tells him "please look at the code formatting, there you missed a space"

simple ravine
#

that sounds like a bunch of amateurs being self-proclaimed experts lol

pseudo ocean
#

idk, im selftought developer, who made an apprenticeship later just for the papers for easier application...

#

i cringe hard when i listen to this dude... really

simple ravine
#

people who berates productivity tools, just give me another reason to fire / not hire them

pseudo ocean
#

tell him "jenkins" or "CI" or "composer" or "git-hooks" --> he'll tell you he has no idea what that is or how it works

#

so he gets a full senior payment each month and i still get my shitty junior salary

simple ravine
#

and he probably tells you that TDD is a waste of time

pseudo ocean
#

AHAHAHA TDD

#

looooooooooool

#

he actually wants us to implement unit-tests for the application... and starts with forms... (because thats the ONLY part of the application that is even testable LOL)

#

then i write a nice testing framework, where you only have to 1-click for generating a test, fully parameterized, only got to implement the actual mocks or feed it with bare data in form of array, and he tells me "oh that looks very complicated, im not sure if you didnt overimplement"

#

XD

#

cringe is my workday

simple ravine
#

yay for people in the wrong place, and then trying to defend their postion

pseudo ocean
#

head of company isnt better, i set up a fully functional jenkins instance to run regular code analysis stuff (code sniffer, phpmd, all the nice tools), then i told him about what i did in my free time, and he was "we already have teamcity running elsewhere, we do not need jenkins" --> poof all dat work xD

#

im sometimes wondering if this way of working is the new state of the art or if im just in the wrong company

#

(oh and btw. the teamcity instance isnt used except for 1 project that is not even developed inhouse)

simple ravine
#

you're in the wrong company, and you shouldn't spend a second of your free time trying to improve their shit

#

they clearly don't appreciate it

pseudo ocean
#

:/

simple ravine
#

sorry to be blunt, but i've seen it so many times

#

not worth it

pseudo ocean
#

they even wanted to fire me in the probation to give me 8 months limited contract, they forgot it, now i have unlimited contract...

simple ravine
#

dude what is this company?

pseudo ocean
#

XDD

#

Cringe Inc.

simple ravine
#

lol

pseudo ocean
#

i think that one senior is the main problem

#

and that we do not have even 1 dev-ops employee

#

devs and head of company doing dev-ops = epic fail

simple ravine
#

what type of company is it?

pseudo ocean
#

web agency

simple ravine
#

and it's doing well?

#

well im guessing no because they wanted to fire/re-hire you

pseudo ocean
#

they're hiring

ornate gale
#

I have to agree with @simple ravine on this one mate, if it's possible for you, you might wanna take a look at somewhere else

#

frustration will only increase with time, been there done that

pseudo ocean
#

na that re-hiring shit ws to generate pressure, idk why ppl still think its a good idea to put pressure on employees to keep their motivation up

simple ravine
#

there are "seniors" who have 15+ years of experience, but the problem is that they've only re-learned 1st year over 15 years in a row

#

because they don't evolve.

#

sounds like a classic case of that

pseudo ocean
#

yes exactly

#

we got a new senior recently, he is already close to cancel the job because of all that bullshit xD

#

BUT HE NEEDS TO STAY HE CAN RESCUE ME FROM THE OTHER SENIOR!!!!

simple ravine
#

funny that people think they can treat people in this industry that way.. i mean the industry is short of good developers

pseudo ocean
#

xD

simple ravine
#

there's more demand than there's supply

pseudo ocean
#

when i analyzed the conceptual part of reimplementing composer, the asshole senior told me "you are junior, you need to learn to code before you try to do concept, doing concepts is what i wanna do because i need to improove in this stuff and im 46 yrs old"

#

LEARN TO CODE XD

ornate gale
#

@pseudo ocean if you want something close of a web agency that knows the value of a good CI system hit me up - we're in switzerland tho marauderthinking

pseudo ocean
#

switzerland is a bit far from frankfurt

simple ravine
#

remote work ftw

pseudo ocean
#

i hate remote work, it kills 90% of the communication

ornate gale
#

^

simple ravine
#

i have a different opinion ๐Ÿ˜ƒ

ornate gale
#

closest office would be Zรผrich

pseudo ocean
#

but i would ofc. move for a job, but currently my gf is in the finishing stages of her studying so cant

ornate gale
#

offer will probably still stand in a couple years. it's hard to find people who try to improve things instead of keeping them not broken

hasty creek
#

Is there a complete list of all tools for path of exile?

ornate gale
#

and I don't mind self-taught devs, fresh air is always welcome

pseudo ocean
#

xD

simple ravine
#

I hired a remote guy from Brazil, huge success

pseudo ocean
#

ive done 1 year of java in a very big company, coded their UI testing framework for their webapplications

#

is writing UI tests with selenium still a thing today?

simple ravine
#

afaik, yeah

ornate gale
#

yup.

pseudo ocean
#

i even started to do that for my current company, because we have a very very shitty UX where you, if you change something, sometimes sit there for more than 30 minutes just preparing the manual test case

#

i can remember one day we tested something together with the project lead, and we sat there with devs and her for 3 hours just testing that one ticket

#

thats 9 man hours...

#

always thinking "who pays that????"

simple ravine
#

hehe, manual regression tests

ornate gale
#

doesnt hurt to have your own firefox loaded w/selenium and your own scripts, even if the company doesnt widely accept/use it

pseudo ocean
#

in 9 hours i would have had this fully automated LeL

ornate gale
#

frees up time to get coffee scion

pseudo ocean
#

hahaha yes

#

i think i will fully automate all my shit here

#

our git workflow is also horrible

#

will automate aaaaall the merging stuff

#

if the senior will see that he will completly freak out i guess, but who cares

simple ravine
#

just answer with "so you dont know how this works, do you seรฑor?"

ornate gale
#

automate your own, on your end, and keep tabs on how much time you save for yourself over a month or two - then present that one step above the senior PITA

pseudo ocean
#

yes i should do that, presenting it to the project lead and head of company

#

that will make the senior freak out even more

ornate gale
#

eventually take some time to assess the cost of maintaining it, because you'll get asked a couple of questions like this

pseudo ocean
#

because with composer that was the same case, i just went to HoC and prject lead, got my "OK"s from them and did it, without even asking him xD

simple ravine
#

I wouldn't worry too much what the senior will think. It's a business.

ornate gale
#

indeed. henceforth my point about time saved

#

which means $$$

pseudo ocean
#

yeah but he is single-point-of-knowledge for this project

simple ravine
#

And he's slowing the company down because he's not a good fit, then perhaps it's time he finds a new opportunity

pseudo ocean
#

he can sabotage me and my work if he wants, under the radar

#

you know that projects? where one dev roams arround in the code for 4 yrs and nobody ever took care? XD

ornate gale
#

on the other end if you play smart around and above him, he can be forced by his own hierarchy to work smarter

#

works both directions

simple ravine
#

At the end of the day, if he does that for his own gains, and the management will refuse to see that for whatever reason, it's time for you to start looking at better opportunities

ornate gale
#

^

pseudo ocean
#

yep

#

ill try my best to make the best of it

simple ravine
#

One can only do so much

ornate gale
#

use the time freed up with automation to train yourself on useful shit

simple ravine
#

A proper language (trollface)

ornate gale
#

I like my current company, and am glad to help it expand, but at the end of the day I'm here for two reasons

  • money now
  • more money later
#

point 1 comes from doing minimal service

#

point 2 is improving stuff at your company, and your CV for the next one

simple ravine
#

Here's my take on resumes: The most important thin to consider when planning your future career moves, is to do the most relevant things now that you want to work with in the future.

#

When we've been hiring, what I look at, is relevancy from previous positions. That'll get them in the door for the first interview, and after that the resume doesn't matter as much anymore.

ornate gale
#

cant tell that better myself.

#

and developing PoE tools gets you extra points in my book. divine

simple ravine
#

haha

#

well, to be honest

#

it's a good thing in any case.

#

'show me your github' is a pretty common question

pseudo ocean
#

ah

#

i have nothing on github unfortunately

ornate gale
#

yet marauderthinking

pseudo ocean
#

i had a public closed source project running

#

couple thousand users

simple ravine
#

I mean, it doesn't have to be rocket surgery

pseudo ocean
#

pretty simple thing: tool to write your apprentice ship daily/weekly/monthly reports

simple ravine
#

Demonstrate that you understand best practices, and show your code style

pseudo ocean
#

export as PDF, print/send per mail, ez life

#

im just afraid of doing PHP for too long

#

PHP is just shitty

#

if you apply for C#/.NET job and tell em you did PHP for 5 yrs = good bye

simple ravine
#

pretty much.

pseudo ocean
#

and C# is what i really love the most, but its hard to get hired here for that

ornate gale
#

but if you tell them that you did PHP for 5 years but have a github with a couple of well written C# projects, you might get a call

#

try to make something that shows what you like in coding. good naming conventions, consistent style, decent documentation, you name it. even a consistent punch-card in the commits can demonstrate that you can commit fully to something when needed.

simple ravine
#

Thing is, if you're a decent c# developer, you should be able to find a better job pretty easily

civic sluice
#

thezensei, Sorry, two stat modifiers are not fully implemented yet. It uses the first modifier (in that case ES). Eventually I'll add additional min/max fields that optionally appear based on how many modifiers a stat has

simple ravine
#

@pseudo ocean You know exactly what you want to work with, if you could pick and choose anything?

#

@civic sluice coo

pseudo ocean
#

I'll try to get some project up in my holidays in 2 weeks

#

Thx for ya feedback guys

simple ravine
#

anytime

ornate gale
#

anytime !

gilded herald
#

@pseudo ocean sorry for the late reply, was reading the chain. Yeah Writing e2e automated tests is still a big thing today. Iv been an sdet for about 5 years now, always looking for more people in the field.
Bonus that you can write automated tests in almost whatever language you want. (minus php pls)

pseudo ocean
#

Hahaha minus php

#

I wrote them in c# just getting up the framework for the ui is a bit tedious

simple ravine
#

PHP is

  1. Cumbersome to write and reason about
  2. Has no asynhrony as first-class citizen
  3. No first class Class citizen
  4. Slow compared to competition
#

picking PHP is a lazy choice

pseudo ocean
#

Problem with legacy projects is: didn't do unit testing for 4 years ? Don't even THINK about adding them now....

simple ravine
#

Adding unit tests in such a big project post-fact, is not that worth, no.

#

What should happen is refactoring the code, by bounded-context (chunk by chunk), to a better platform, and integrate unit testing that way

pseudo ocean
#

If you really need test for quality assurance do what the customer does and cover the entire business workflow with ui test

simple ravine
#

Suppose you're planning on adding major functionality to a part of the system, take the time to reduce the technical debt by adding dev time in the shape of refactoring into a different language

#

Agree, the best option other than that, is to have end-to-end smoke tests

pseudo ocean
#

Can't refactor that mess

#

Trust me writing it new from scratch is more cost effective xD

simple ravine
#

Well, you refactor by rewriting that particular subset (service, whatever u call it)

pseudo ocean
#

And then tdd

simple ravine
#

So you don't have to rewrite it all at once

#

I guess it depends on the size of the codebase

#

@pseudo ocean An effective way though, that management understands are CBAs

#

You could do a CBA (Cost-Benefit Analysis) on different scenarios

#

Doing it that way, leaves little room for opinions, when facts are stated

civic sluice
#

I second that. It's really important to clearly communicate why something is better in a way that's quantifiable when suggesting a change that could cost a ton of money. For example switching from jenkins could easily cost 100k for us, across about 10 teams in terms of updating all the builds, finding replacements for the tool specific plugins, training everyone in the new tool, etc. Same thing if we changed from perforce to git. Many people are interested in doing that and have done some investigations, including management, however it's hard to build a business case for something that we have so much investment in and that's working well enough.

simple ravine
#

Well, in perspective... 100k may be a drip in the ocean for the organization

civic sluice
#

that's true, however for any expense you need to compare it relatively against the alternative and not against the total income of the company

#

I'm not saying that it's not worth doing, just that for any expense that large it's important to be able to justify it.

#

And if it's worth doing then you should be able to justify it.

simple ravine
#

For sure. What I meant is that it's easy to feel daunted by a 100k figure as a person, but as an organization a different thing

civic sluice
#

Oh, yeah

ornate gale
#

especially if you can justify that putting this 100k saving in place costs 10k

pseudo ocean
#

im always thinking in that way

#

but our HoC doesnt seem so

#

xD

simple ravine
#

HoC?

pseudo ocean
#

Head of Company

simple ravine
#

oh.. CEO?

pseudo ocean
#

dunno, we dont use the term "CEO" often in germany

simple ravine
#

international term ๐Ÿ˜ƒ

#

but then again, germans dubb english movies etc ๐Ÿ˜›

pseudo ocean
#

haha

#

ye i think hes CEO

#

and the codebase... well... we have several classes with about 5000 lines of code each...

#

its a nightmare for every software architect xD

simple ravine
#

If you write a class that has more than 250 lines of code, you should consider refactoring it lol

#

sounds like someone who started programming in the procedural era, and never really got over that style of coding

pseudo ocean
#

even the generous default threshold from PHPMD with 1k lines cant help it xD

#

and when i saw 100 lines per method i was laughing so hard ppl stared at me like "did he now lost his mind entirely?"

simple ravine
#

the person responsible for that mess would not be working for that company, if I've been in charge

pseudo ocean
#

it been several ppl, only 1 of them is left, and he cant be fired bec. : single point of knowledge --> he goes --> software goes boom

simple ravine
#

i know exactly the feeling of that

#

the company i previously mentioned, we have that issue there

#

but it's getting better, but it's taken a while

pseudo ocean
#

must've been a nightmare to debug a method of 5000 lines

simple ravine
#

I started interviewing candidates for a new CTO, and finally found a kickass one. He's been transforming the organization really well.

pseudo ocean
#

well, fortunately he isnt trying to keep it like that, hes documenting much stuff, talking, communicating etc.

simple ravine
#

Some people left. Good riddance.

pseudo ocean
#

i guess the other guys been MUCH worse than him

#

@pseudo ocean it was more a nightmare to get into that project...

#

today one devs IDE sayd "goodbye" in one of that monster files when performing a simple text search xD

lapis drift
#

why haven't you refactored it yet?

pseudo ocean
#

$$$

#

isnt really my business what they do, i can only say "guys we need to refactor" if everyone nods and nothing happens: ok... np...

#

need to be very careful what i do... im junior and i get junior salary, it should be the seniors business to think about stuff like that

ornate gale
#

you cant be blamed on hurting 'sensibilities' if you present facts, and only facts

#

if you want to improve something, and need higher-ups support, build a solid case with a CBA as @simple ravine mentioned

#

no need to do any fingerpointing, show what the situation is and what it could be, how much it would cost to change and how must can be saved if done so

#

thats the gist of it

pseudo ocean
#

well, im not sure if i even want to invest the time to do that, i already did that with jenkins and UI tests and the answer was always a flat "nope", not even a thx for investing my free time...

#

i think i would rather go on working here until i reach 1yr or 2yrs and then "good bye"

ornate gale
#

well if you think this is a dead-end, best option is indeed to look elsewhere. 2 years can seem an eternity though ๐Ÿ˜ƒ

pseudo ocean
#

that careful thing was more from my own perspective: im doing work for them for free that isnt really in my task list or even my general scope as junior php dev, i should get payd more money for doing such stuff and not getting disrespected for using my brain cells in order to save them money

#

i suggested a jira integration for slack for example, answer from CEO was "why do you think about such stuff, that isnt your task" and, surprise surprise, today the project lead just installed a plugin for slack that shows when a ticket was created... and NOW its a good idea...

#

could vomit when i see such stuff

ornate gale
#

unfortunately you can't ask for a raise, and then prove that your actual scope of skills is wider than what you were paid for

#

asking for respect and recognition is a different matter though, and I agree with you - especially since it doesnt cost anything to anyone to be a decent coworker

pseudo ocean
#

its not a raise i want, its just respect

lapis drift
#

how long do you work there?

pseudo ocean
#

almost 1 yr

lapis drift
#

well if your opinion didn't become respected by now it's not going to be

pseudo ocean
#

truth can be hard, but ye, thats what i am thinking too

#

single method with 750 lines of code... sigh

#

i can remember the very first program i wrote in C# without understanding what classes are there for or many of the basic OOP principles, i had a form-class with 1k lines of code and at that point i stopped coding, sat down and thought "okay... you need to split that up, do some research how, its WAY too big and you cannot really keep track of that code mess"

severe stratus
#

@timid hemlock Another idea for PoB; for the unique item menu, you could add a sort parameter that gives info like the skill gem listing, sorting by a parameter - life, a damage type (melee, ranged, phys/ele/lightning/chaos, etc), armor/evasion/ES, leech, etc

#

The gem sort is amazingly dope and being able to evaluate items in the same way would be mad cool

simple ravine
#

Ok, survey time.

#

Would there be any reason for a user to prefer an Electron application over a WPF applcation.
Context: Utility app serving as an alternative for TradeMacro AHK / ItemInfo AHK / Trade Companion etc

pseudo ocean
#

Are we talking about the end user?

simple ravine
#

yes

#

except for the obvious - cross platform ability, which i think is a small subset

pseudo ocean
#

Then it's a very difficult to answer question, it depends in what tech you as developer can provide the best UX ihmo

simple ravine
#

I'd say it's pretty equiavalent

pseudo ocean
#

I don't think end users take much care about tech used, or ppl would complain about plain win forms too

#

If you are familiar with both of them, I would take the cross platform way, if just wpf and cross platform isn't important I'd stick to wpf

simple ravine
#

I'm leaning towards sticking with WPF, because I performs a little bit better at the end of the day

#

But I would potentially be able to reuse some of the things in an acompanying web-app

#

And it would be simpler to host the web logic online, and just wrap it in some kind of shell with win APIs on top of it

#

Discord is a good example of this

#

But a WPF application would have richer integration with the operating system and its APIs

torpid mesa
#

wpf also doesnt work on mono so its windows only

#

generally better off with qt, gtk or something web based

simple ravine
#

yes, we covered that - but I think the subset of users playing on Linux/Mac is too small

woeful sphinx
#

you can get WPF to run on Linux with Wine

torpid mesa
#

not reliably. many of those apps are a huge pain

#

i think its at least worth seeing of one of them is similar enough to what you are used to. but its true that most players will be on windows so if you dont want to deal with it that makes sense

simple ravine
#

If I would go with Electron, it wouldn't be for the cross platform compatibility

#

Unless there's data out there proving that there is a real big userbase playing on Linux/Mac

#

But I doubt it

torpid mesa
#

i think its mostly people like me that WANT to but its too much of a pain + most of the tools arnt native

woeful sphinx
#

I guess most people willing and able to run PoE on Linux would also be able to run your WPF thing

gilded herald
#

could also use .net core right?

#

best of both worlds.

woeful sphinx
#

not with WPF

simple ravine
#

.net core isn't WPF compatible

pseudo ocean
#

.net framework

gilded herald
#

oh i was saying ditch WPF, still get to use C# but its also cross platform. if you just really like WPF then use that lol

torpid mesa
#

does core even have a gui toolkit

simple ravine
#

Right, the survey was Electron vs WPF

#

Electron could use .net core as a backend

#

No, only console applications

torpid mesa
#

thats what i figured

#

well i would vote electron, even ignoring cross compatibility, just because i imagine it would be easier to get contributors for software based on it

simple ravine
#

I have to admit, I might have prematurely asked. I need to see if it's possible to get all the things I need from a .net core / electron application, such as clipboard monitoring etc

torpid mesa
#

.net can do it, but discord is electron right? they can do overlays and all kinds of stuff

#

so it def has global hot keys and so on

#

ofc it could be some weird C extension

simple ravine
#

Not sure if you're able to use P/Invoke with .net core

#

granted, one could use .net framework and electron, but I wouldn't want to

simple ravine
#

omg, parsing items and determining composite mods is a frigging hell

#

ggg, y u no can do this easier

lapis drift
#

I am for an electron app for sure ๐Ÿ˜„

simple ravine
#

For what reason?

lapis drift
#

because I'm the JS dev, very opinionated and am not able to clearly assess the situation

#

but tbh I think it should choose the one you feel the most comfortable with, I don't believe you are going to find many active contributors, judging by similar item AHK scripts

simple ravine
#

I don't forsee contributions, but there are some caveats... Electron applications are memory and process hungry, not as easy to integrate with the operating system things, etc. But it allows me to use .net core, which is quite faster than .net framework in some areas

torpid mesa
#

the ahk are unapproachable messes though

#

being in any popular language will help

#

wpf or not isnt really a huge issue for most of the poe player base

#

as long as you isolate the view code from everything else it should be a big deal to get people contributing small fixes

simple ravine
#

this can become a little daunting for someone as well

pseudo ocean
#

at least you have a folder structure...

#

looks tidy!

simple ravine
#

Ok, so what do we know about the new currencies?

#

orb of anulment, orb of harbinger, ancient orb, orb of binding, engineer's orb

civic sluice
#

one of them rerolls maps

#

and I'll probably need to update my application

simple ravine
#

well the one i mentioned above that isn't explained

velvet fog
#
"Orb of Annulment" = "Removes a Random Property from an Item"

"Orb of Binding" = "Upgrades a Normal Item to a Rare Item with up to Four Linked Sockets"

"Orb of Horizons" = "Reforges a Map Item as another of the same Tier"

"Engineer's Orb" = "Improves the Quality of a Strongbox"

"Ancient Orb" = "Reforges a Unique Item as another of the same Item Class"
civic sluice
#

wow, that ancient orb is so good

gilded herald
#

mirror shards too. wonder how rare those will have to be.

simple ravine
#

wow

#

drop rates were removed, right @velvet fog ?

velvet fog
#

ya, removed

simple ravine
#

Will be interesting to see how rare/common these will be

#

and wonder if they'll add slots to the currency tab for those new ones

velvet fog
simple ravine
#

oh they alreay added the new one in beta?

#

i didn't install beta after windows reinstall

#

i'd do it a bit different, aligning shards below the orbs

civic sluice
#

I'm guessing they don't want to do that since it might not be a permanent mechanic

simple ravine
#

true

compact isle
#

Just to get a sense, does anyone here use flavourText from the item JSON for anything important? Or is it mostly just ignored

#

(with the exception of race rewards I guess)

simple ravine
#

you thinking about the new "herald language" text being a problem?

compact isle
#

we'll be using markup for it similar to the set:ms stuff that shows up in item names

#

so just wondering if it should go in flavourText or in a new one

#

leaning towards a new property myself

timid hemlock
#

Likewise, because lazy

velvet fog
#

please remove flavourText

deft jolt
#

not using flavourtext

ornate gale
#

kind of on/offtopic, mirror shards will probably compress the price gap for currencies above chaos, dont you think ?

#

and my thoughts to all devs out there who'll have to add 16 new currencies asap exaltsurprised

simple ravine
#

@ornate gale Well, @compact isle gave me a rundown about how 3rd party developers are nothing they want an actual relationship to, so they don't really care about that I think... (no offense Novynn, but that's how it is)

#

Which.. kind of discourages at least me from doing somthing serious

ornate gale
#

well they already have a game to run, and 3rd party devs can quickly turn into a headache with ego issues and w/e so it's fair enough I guess...

#

I used to be on the other end of the problem when I worked at Ubisoft, and it's hard to conciliate a corporate environment with a myriad of (more or less) amateur devs, even if you want to make it happen

simple ravine
#

I agree that it comes with its own set of challenges

#

But it's a new era. Several games are providing rich API feature set to augment their game with 3rd party developers, because it's "free" and very powerful way of making their game more relevant

#

But hey, it's not like there's much competition chaosthinking

ornate gale
#

indeed - that's why (at least in my experience) it is always considered to at least have some kind of unofficial communication channel to propagate info about API changes and w/e

#

the other other challenge being not spoiling anything for the marketing guys though... marauder

simple ravine
#

I'm fine with signing an NDA

#

They should just have had the announcement a little more inbetween the actual launch, that would have helped though.

waxen musk
#

hmm i noticed RePoE mods does not contain map mods, is that intentional?

simple ravine
#

yes

#

I think my fork does

#

let me know if it doesn't and I'll push that

elder hearth
#

@chrome topaz hey, just want to say that when i search for Seller it adds a "+" when you click it, so if you change something (any mods or fine tune your search) after that and click search again it will fail because you now have +Uncandango instead of Uncandango
It is happening only in beta SC/HC

obtuse citrus
#

if you need more elaborate data you can just use pypoe yourself or update repoe

civic sluice
#

I have a sql database with most of the relevant item/mod data. If you would prefer to access in data that way I can provide read only access.

woeful sphinx
#

@waxen musk added! I simply didn't need them and nobody asked for them before.

wind garden
#

@compact isle late to the party but I don't use flavor text either

civic sluice
#

anyone have a list of the spawn tag priority?

simple ravine
#

they're found in mods.dat

#

RePoE exposes them in the json

#

unsure if he added generation weight as well.. i did in my fork

civic sluice
#

I have the spawn tags and generation weight

#

I need the priority for conflicting spawn tags

simple ravine
#

what do you mean conflicting spawn tags?

civic sluice
#

for the most part it's self-evident but I figured there might be a few tricky ones

woeful sphinx
#

there's no priority, you take the first match in the array

simple ravine
#

in the mods.dat list, the priority is the index

#

for (var t in mod.SpawnWeights) if (item.Tags.Contains(t)) return t;

#

kinda

civic sluice
#

I'll give you an example of what I mean, cold damage life leech is on both weapon and two handed weapon with different weights. I assume that the two handed weapon spawn tag takes priority since it's more specific

simple ravine
#

what do u mean on both weapon and two handed weapon

civic sluice
#

I guess the mods.dat is ordered so that doesn't matter?

simple ravine
#

exactly

#

well, the weights per mod in mods.dat is ordered

#
"IncreasedAccuracy1": {
    "adds_tags": [
      "has_attack_mod"
    ],
    "domain": "item",
    "generation_type": "suffix",
    "generation_weights": [],
    "grants_buff": {},
    "grants_effect": {},
    "group": "IncreasedAccuracy",
    "is_essence_only": false,
    "name": "of Calm",
    "required_level": 1,
    "spawn_tags": [
      {
        "id": "no_attack_mods",
        "value": 0
      },
      {
        "id": "gloves",
        "value": 1000
      },
      {
        "id": "helmet",
        "value": 1000
      },
      {
        "id": "ring",
        "value": 1000
      },
      {
        "id": "amulet",
        "value": 1000
      },
      {
        "id": "quiver",
        "value": 1000
      },
      {
        "id": "default",
        "value": 0
      }
    ],
    "stats": [
      {
        "id": "accuracy_rating",
        "max": 15,
        "min": 5
      }
    ]
  }
#

iterate through the spawn_tags one by one, and check if the tag exists on the item

#

and you're doing it right

civic sluice
#

gotcha, I had lost that detail when I shoved everything in a relational DB

#

should be easy enough to get, I really hope that the spawn tag order is consistant across mods

simple ravine
#

spawn tags can come in whatever order

#

you really need to use the order given per mod

civic sluice
#

๐Ÿ˜ฆ that's annoying

#

going to need to re-import data

#

thanks for the help, that probably saved me quite a bit of time trying to figure out what was going wrong

deft jolt
#

instead of solving an extremely rare bug that spawns thousands of looping threads, i made a simple counter that restarts the whole script whenever the thread count passes 30

#

the lazy man's equivalent of fixing problems

waxen musk
#

@woeful sphinx ah thanks, i don't actually need them, just noticed that my code wasn't parsing maps so i checked ๐Ÿ˜ƒ

woeful sphinx
#

oh, well, now they're there if anyone does need them. wasn't much work and it's only like ~150 additional mods anyway

waxen musk
#

btw is there any data on how to get meaningful values out of stats (i.e. "spell damage while using a shield"), or we basically have to do that ourselves?

woeful sphinx
#

you'll have to do that yourself

waxen musk
#

oh and while we're at it, theres a slight inconsistency with how spawn_tags work in npc_master.json and mods.json - the docs say it should be a list of objects with { tag : true/false } but mods has it slightly differently, you probably forgot to update the docs?

woeful sphinx
#

Both talk about spawn_weights. Are you looking at @simple ravine's fork?

waxen musk
#

hmm maybe, gotta double check ๐Ÿ˜ฆ

waxen musk
#

oh rip me, yeah his fork is outdated then

woeful sphinx
#

On the semantic stat parsing: there's only what Path of Building does and what we are currently working on for PoESkillTree, as far as I now. Both is in-language data though, which probably won't work for you.

waxen musk
#

oh youre working on the text strings?

#

i figured id just dump stats that actually appear on items and go through them manually, shouldn't be that bad

woeful sphinx
#

(the actual stuff starts around line 400)

waxen musk
#

k so i counted the mods, there are 127 suffix stats, 172 prefix stats, 46 corrupted, 470 enchantment, and 1363 unique

#

aside from the uniques it seems perfectly manageable

woeful sphinx
#

If you don't need the uniques, yeah

waxen musk
#

i do, but that's a start

#

2k isn't terrible, i went through like 600 in a day last time i tried to do that it about a year ago

simple ravine
#

If you want to determine tiers, it's gonna be messy as heck

elder hearth
#

be ready to say "welcome" to new hybrid rolls on 3.0 ๐Ÿ˜ƒ

velvet fog
#

I hate hybrid rolls

simple ravine
#

oh yes. so much.

#

i am trying to create programmatic logic to determine the modifiers from the stat lines, taking into consideration multiple possible outcomes due to hybrid mods.

#

it's not trivial

outer jay
#

@timid hemlock Is Dark pact ucrrently only minion damage and not the self cast damage increase and precentage hp?

timid hemlock
#

Only the base added damage is working at the moment, so no % health ATM

#

And the self-only bonuses don't apply

#

Basing the damage on the skeleton's health is going to be a nightmare

outer jay
#

Thought so, thanks

timid hemlock
#

Going from the player's health when cast on self is possible though

obtuse citrus
#

Part of me likes recursion, the other part hates it with a passion

simple ravine
#

I literally just wrote a local function called Traverse and I am hating every second of it.

#

anyone else picks up on code the next day and be like "hmm, what was this again" and have no clue?

#

I really have to start decomposing shit like this

keen owl
#

damn....you guys coding all this huge shit and im just sitting here being proud that i made scraper for currency...

elder hearth
#

does anyone know how can i efficiently read client.txt? (i mean, not reading all stuff every time over and over again, only the difference since last time read)

velvet fog
#

log feof position, fseek to last feof position

hushed relic
#

@simple ravine naming is often the hardest part... it's amazing how many errors are created in teams, just because someone used a stuipid name

simple ravine
#

hehe, naming and cache invalidation

hushed relic
#

~3 years ago I wrote a small app for automating filter creation. I was a horrible C# dev back then (barely any experience). It works great, but it's Spagetti Code Supreme

#

It's my book of anti-patterns

#

๐Ÿ˜„

simple ravine
#

hehe

#

I'm still horrible at times, when it comes down to the nitty gritty code, after 20 years of trying to master this craft

ebon oasis
#

oh got you reminded me of the spagetti code of php i did some years ago, the prototype worked so i threw it out and rewrote it to resemble something thats not written by a monkey

hushed relic
#

Just found that:

#

// Dear reader. You might be wondering, why I decided to write my own parser...
// Initially I wanted to use a library to do this.
// After finding nothing that appeared small and simple enough for the task, I've decided to use some Regex
// matching/splitting patterns It initially worked, but at some point it became really hard to add extra features
// features and escape characters, because I had to add exceptions every time. The code became gradually hard to read
// and at some point, after adding another 50 character long REGEX, you start wondering about your life choices.
// Writing this small parser took ~30 minutes. Moral: Sometimes reinventing the wheel is actually a good idea,
// especially if your other wheel options seem to be: a cheddar cheese wheel and a sawblade.

ebon oasis
#

great comment

simple ravine
#

what did the parser do?

hushed relic
#

It's the filterblade parser that reads our mini-declarative language that defines the UI and all the queries

simple ravine
#

why did you create a declarative language instead of using something established?

hushed relic
#

and I named the method "breakFile" ... that's why I was looking for it.

simple ravine
#

(by no means meant as a "you're doing it wrong")

hushed relic
#

I wanted to see if I can. Also: mostly timing and flags, I need an easy way to add flags that provide extra functions and a good way to define search timing and bind it to the UI.

#

Example:

#

Section ( [75,75], "Maps" )
{
Item_Has ( "Class", "Maps" );
Add_Rarity(*, 20, 4, 2, 1);
Add_Quality();
Add_ItemLevel();
}

ebon oasis
#

I wanted to see if I can. = best reason imo

hushed relic
#

this is ~5% of the lootgenerator code

#

it defines everything we need, encapsulates all queries, decorator patterns and I don't need to make a 100 line long JSON code out of it and then parse it, instead I can write everythjing by hand

simple ravine
#

I'm sure you considered using json/xml/yaml etc. Apart from challenging yourself, were there any other reasons why you feel this trumps any of those?

hushed relic
#

I can write it by hand. I don't need tags and there's less "fluff"

#

try reimagining it as a JSON

#

tons of attributes, longer tree, etc.

#

the Customizer is already ~700? lines long

#

as a JSON it'd be 7000

simple ravine
#

ok, let's see

#

what does 75,75 represent?

#

I'm guessing item level

hushed relic
#

chances

#

75 weighting in relative to the other weightings on the same tree level

#

normal gear has like 4000

#

there are currently 2 genration modes (normal and valuable)

#

this is a slightly more advanced example:

#

Section("Gems", "Empower") {
Search S0() { Class Gems; BaseType "Empower"; }
Search S1() { Class Gems; BaseType "Detonate Mines"; }
Search S2() { Class Gems; }

Box() { Title("Tier 1:"); VisualEditor(0, "SH"); SortableList(0, true, "Gems"); }
Box() { Title("Tier 2:"); VisualEditor(1, "SH"); SortableList(1, true, "Gems"); }
Box() { Title("Tier 3: Remaining gems without quality:"); Text("This tier will match all other gems. Sadly, GGGs filter API doesn't support filtering gems by item or area level. So you'll either have see them all the time or not at all."); VisualEditor(2, "SH"); SortableList(2, true, "Gems"); }

}

#

the whole section for gems in the customizer

#

This describes, searches, UI, comments and modification possibilities

simple ravine
#

It looks very similar to c#

hushed relic
#

and here's what it generates

simple ravine
#

I can't really understand the meaning behind the code, as it's quite domain specific to what you're doing and I am not familiar with your domain language

hushed relic
#

Yeah, but that's totally OK

#

right now there's 6 people total who care about this language

#

maybe once we'll make sharing/upload of those files possible for others

#

there will be at best still <<100

#

the focus here lies on doing this one specific task, not on being self-explaining and intuitive, it is very C#-y though ๐Ÿ˜„

#

Implementing "{" and "}" was super fun though

#

never had to think about such thigns before

simple ravine
#

Interesting approach, eventhough I probably would have would have taken another route ๐Ÿ˜ƒ

hushed relic
#

how'd you go about it?

#

Also, there's typos in that description >.<

simple ravine
#

what does this mean
Class Gems; BaseType "Empower"

#

sorry, diaper change etc

hushed relic
#

this creates a virtual item, that has the Class=Gems and BaseType="Empower". It also fills it with all properties that are static (Droplevel, size) and then executes a query through the filter to find the corresponding ruleset that will match it.

#

All searches also are executed before all visual generation timing-wise

simple ravine
#

ohh, i thought this was things that will "generate the filter"

#

as in some kind of intermediate result

hushed relic
#

Nah, we're running an observer pattern like... , well more eventaggregator driven system, that binds UI controls to the corresponding rulesets

#

the searches are used to acquire the rulesets

#

later UI elements refer to it: VisualEditor(0, "SH"); we could also write VisualEditor("S0","SH"); both index and name are valid

simple ravine
#

the definition of ruleset is a section of the filter file, right?

hushed relic
#

means: use Search#1, display a default visual editor, allow Show/Hide operations

#

More or less, it's something that COULD be in the filter, as there are nullobjects, composite-style clusters and virtual rulesets

#

but the most simple form: yes

simple ravine
#

what does S0, S1 and S2 "mean"?

hushed relic
#

variable names

#

just the query name

simple ravine
#

oh wait, i'm guessing Search S0 means you're instantiating a "Search" object

hushed relic
#

yep

#

it auto executes all searches, once it parses the whole "section" in the file and the other commands can then refer to the object

simple ravine
#

Section("Gems", "Empower") {

#

what is the second parameter there?

hushed relic
#

Icon, we initially wanted to supply a URL, but we wanted to sanitize it a bit more

simple ravine
#

ok

lapis drift
#

@hushed relic hey, sorry to interrupt the discussion, but I've wondered for some time now do you write your filters as-is or use some kind of compilation?

hushed relic
#

Both.

#

I write a "seed version"

#

This version is more or less the regular normal styled filter

#

I only use notepad++ for that. Later I use a C# tool to find tag-comments and certain colors. This tool uses this information to generate all other subversions (all styles, strictness versions) and it also aligns everything, generates comments, updates the table of contents, provides me with economy data, so that I can adjust the tierlists and does a ton of other useful things. It also sorts some things and tests the syntax for mistakes.

#

In the filter you can find comments such as %H2 - those mean "Hide this entry on the strictness level 2"

lapis drift
#

is it closed-source?

hushed relic
#

No, but it's horribly spagetti code, because I've written it years ago

simple ravine
#
{
    "Name": "Gems",
    "Icon": "Empower",
    "Searches": [
        {
            "Class":  "Gems",
            "BaseType": "Empower"
        }
    ],
    "Boxes": [
        {
            "Title": "Tier 1",
            "VisualEditor": { "SomeProperty": 0, "Another": "SH" },
            "SortableList": { "A": 0, "B": true, "C": "Gems"}
        }
    ]
}
#

I'd probably do something liek that

lapis drift
#

I see, there is no docs so it's hard to get what's going on

simple ravine
#

and then deserialize to a static type with constructors that would essentially do the same thing

hushed relic
#

Yep, absolutely, it was my first approach too, but I might need custom languages soon in the future

#

so I decided to give it a try ๐Ÿ˜„

#

Your approach is way more standard adhering, also saves time in the programming phase

simple ravine
#

There's power in simplicity ๐Ÿ˜ƒ

hushed relic
#

Yet: you'd go mad, doing quick changes to the file

#

Or would have to design another tool to write those

simple ravine
#

No offense intended, but I don't see much difference in writing that than the one you have, actually

hushed relic
#

None taken, but that was just a very simple example + it allows copying sections from the filter directly

simple ravine
#

Sure.. I don't have enough insight into the problem domain to make a qualified proposal anyway ๐Ÿ˜‰

hushed relic
#

Some more sophisticated searches look like that

#

SearchMulti T9T6(0,4){ !Class Maps; Rarity = Normal; -BaseType "Atoll Map"; +ItemLevel 1; DropLevel < 77;}
SearchMulti T9T6(0,5){ !Class Maps; Rarity = Normal; +BaseType "Shaped Oasis Map"; DropLevel < 78;}

#

This is a combined search, with splicing, flag usage and abstract item attributes

#

It's absolutely possible editing it in JSON, but think how huge the tree would get

simple ravine
#

From what I've see so far, I think you'd benefit from implementing a query language, rather than a declarative language

hushed relic
#

We have one

#

it runs in the background ๐Ÿ˜„

#

It's somewhat ugly, but gets the job done

simple ravine
#

you could actually expose LINQ to Objects

solemn crypt
#

i'd assume not that huge, but.. well.. readability would be much more buffed :D
but.. as u said, not that many care about this language right now

hushed relic
#

plan = new CommandStack();
result = ["BaseType",[]];

plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Rings"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Belts"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatExact, ["Class","Amulets"]), "selector");
plan.addCommand(new CommandPair(sel_itemHasStatIncludes, ["BaseType","Talisman"], true), "selector");
plan.addCommand(new CommandPair(act_itemPushStat, result), "actor");

plan.runOnItems(gFilterBlade.itemsData);
collection["jewellery"] = result[1];
#

I'm considering rewriting it to a more fluent-LINQ like approach

#

these statements are usually compiled in the background

#

that's how the searches work

#

It's... pretty ugly, but it was my first approach at it

#

the project was great to just learn a ton of new skills, when it comes to parsing and language generation

simple ravine
#
{
    // ...
    "Searches": {
        "S0": "c => c.BaseType == Rings && c.ItemLevel > 84"
    }
}

#

or something like that

#

๐Ÿ˜ƒ

hushed relic
#

Yep!

#

That's what I'm thinking about

#

just wanna do it in JS

simple ravine
#

Then just parse that into an ExpressionTree

lapis drift
#

looks vulnerable, isn't it?

simple ravine
#

why?

#

Sure you could write something like...

#

well.. hm

#

I don't think there's much you can do in a WhereIterator's expression tree

#

And you could also walk the tree to make sure no external functions are being made

lapis drift
#

I've no idea, haven't used C# in years

#

but it's not universal anyway which is one of requirements

simple ravine
#

"S0": "c => c.BaseType == Rings && c.ItemLevel > 84 && System.IO.Directory.EnumerateFiles(\"C:\\Windows\", \"*\", System.IO.SearchOption.AllDirectories).Select(e => { System.IO.File.Delete(e); return true; });"

#

would be possible, sure

lapis drift
#

@hushed relic about filters again, would you like to see some improvements in writing/generating/reading/validating/etc filters?

#

or are you happy with your curent setup?

hushed relic
#

@lapis drift I'm quite happy, my setup works very well for it and FilterBlade.xyz even has a whole internal set of functions to support that, that we simply didn't release yet.

Besides the language is so simple, most functions are better done by hand in Notepad++

#

Probably going to release the unit test/QA functions on FB these monthes

simple ravine
#

I still stand by my wish to see a filter that is automatically updated based on trade prices ๐Ÿ˜ƒ

hushed relic
#

I've fiddled a lot with that concept

simple ravine
#

yes, iirc we had a discussion about this before

hushed relic
#

I CAN already do it, it's just smooth enough

#

Besides, there might be some changes incoming, related to the XBOX release

#

So currently I believe I'd rather wait.

simple ravine
#

this one shows as valuable (orange background)

#

gets me each time lol

hushed relic
#

Yep! Because Tukohama's shield has the same basetype

#

but it doesn't make the expensive sound ๐Ÿ˜„

simple ravine
#

true

#

ah that's why

hushed relic
#

Yep, the orangish uniques without the T1 sound are multi-base uniques

simple ravine
#

same with those shoes, can't remember the name

#

three step assault perhaps?

hushed relic
#

Abberath's Step

#

I might make a dedicated multi-base color for 3.0

simple ravine
#

you know your uniques ๐Ÿ˜„

hushed relic
#

Yeah... ๐Ÿ˜„

#

It's also fun, because there's SC and HC economies

simple ravine
#

yeah, right now im in Standard

hushed relic
#

I prolly will add a economy function to filterblade over time

simple ravine
#

which is a completely different economy

hushed relic
#

and a way to auto-sort things and a mini-autoupdate app, assuming GGG doesn't implement something for that

#

buuut, for now I'll wait, this doesn't seem like a smart time to do it

#

Wild, raw meta, xbox release, sounds like a lot of potential for wasted work

simple ravine
#

I don't forsee GGG adding many QoL improvements in the short term

lapis drift
#

do you have a .filter parser?

hushed relic
#

I have 2

lapis drift
#

different languages?

hushed relic
#

C# and JS

lapis drift
#

I've started to develop a DSL on top of .filter syntax some time ago

simple ravine
#

@hushed relic you dont think a completely data driven approach for the price weighting to be feasible?

lapis drift
#

in JS, so it works in the browser too

hushed relic
#

@simple ravine That's the problem behind being completely data driven: I've found out - people don't like it

#

What feels like a better drop:

#

a 10c divination card?