#tooldev-general

1 messages ยท Page 55 of 1

chrome topaz
#

exactly

#

that's exactly why you should self host

simple ravine
#

yeah tell your random consultants and employees to go grab this arbitrary chat application, and configure it to connect to this self-hosted chat server.. yeah.. no

#

it's all about the network/adoption effect

chrome topaz
#

I hate slack, telegram, discord, whatever. they all come and go

#

whatsapp viber everything sucks

simple ravine
#

what sucks is when you self-host something, and people won't use it because it serves a single purpose

#

and people forget about using the app

chrome topaz
#

imagine if email was invented in 2017

#

we'd have Google email, Facebook email, Aol (the fuck is aol) email, some gaming Twitch email

#

oh you have Google email? sorry I have facebook email so I can't contact you

simple ravine
#

I agree it's a problem

#

there were some work around standarized messaging iirc

#

xmpp, jabbr etc

chrome topaz
#

there still is, but no one uses it

simple ravine
#

but it circles back to the 'i took a 6 week bootcamp course, now im a professional' problem

chrome topaz
#

(not a cult I promise)

#

but it also has problems...

simple ravine
#

looks like someone slapped messaging on top of a blockchain?

chrome topaz
#

lol no

#

it's a decent protocol

#

unlike blockchain

simple ravine
#

blockchain isn't a protocol

chrome topaz
#

the idea

#

is crap

#

with no valid use cases

simple ravine
#

i recall you ranting on that the other day

#

i fundamentally disagree

chrome topaz
#

well, you can prove me wrong by providing a useful use case for blockchain

#

and let's see if we can replace it with something else that's not blockchain

simple ravine
#

lol.. "let's see if we can replace X with Y" in 2017

#

of course you can

chrome topaz
#

I mean

#

replace it at no disadvantage

#

while having more advantages?

cosmic saffron
#

what if I'm freezing to death and only have a bunch of gpus to keep me alive

chrome topaz
#

load up minecraft @cosmic saffron

simple ravine
#

Proof of Work is just one way of using a blockchain

chrome topaz
#

yeah? what are other ones?

simple ravine
#

Proof of Stake

chrome topaz
#

and that actually exists?

simple ravine
#

yes

delicate ore
#

lol, i'm glad i have notifications on for this channel

#

cool stuff just keeps getting posted

chrome topaz
#

because so far I haven't seen anything using it

#

anyway, that's not a use case

#

I'm more interested what kinda app you'd do with a blockchain

simple ravine
#

no, but it addresses one of your dislikes about blockchain

#

it's just the bitcoin implementation as far as I've seen, that you're not finding useful

chrome topaz
#

no, I think the whole idea is garbage

simple ravine
#

other than currency; voting, governance, contracts

chrome topaz
#

contracts? like ethereum?

#

voting? how would that work?

simple ravine
#

Ethereum could be one implementation, there are other

chrome topaz
#

maybe when we are replaced by AI that make no mistakes, contracts would be a valid use

#

so far, it's absolute shit show

#

code is contract, except that people make mistakes all the time

simple ravine
#

heh.. your ranting doesn't bear much sense without any basis

chrome topaz
#

basis?

simple ravine
#

"it's a shitshow"... why?

chrome topaz
#

have you not seen ethereum?

#

code is immutable, code is law. except when there's a bug and we roll back the chain

simple ravine
#

I have. People think they can write contracts, and introduce bugs

chrome topaz
#

oh. remember that one, where $150 million just disappeared into thin air because of a bug in another contract?

simple ravine
#

the $40 million one as well

chrome topaz
#

got the number wrong lol

#

the problem is people think they can write bug free code

#

and obviously they cannot

simple ravine
#

the idea of it is what I like.

chrome topaz
#

so the idea of code is law is not sustainable

#

until we are replaced with bug less robots

#

but who's gonna write bug less robots

simple ravine
#

lol, what pill did u have for breakfast? give me some.

chrome topaz
#

what's your point?

#

I'm still curious how voting's gonna work

simple ravine
#

sigh.. ok

#

a) issue voting tokens to eligible voters.
b) these tokens can be used to cast a vote onto the blockchain
c) after voting period is over, you sum up the votes on the blockchain

chrome topaz
#

sounds great, I'm sure my grandma is gonna love this

simple ravine
#

lol, nice pivot in arguments

chrome topaz
#

I'm not sure?

#

I think I just told you why your idea won't work

simple ravine
#

because grandma would love it

#

"Computers won't need more than 640K or RAM"

chrome topaz
#

how are you going to do privacy?

simple ravine
#

"There will be 5 computers in the world, one in each continent"

chrome topaz
#

I don't want anybody to know who I voted for

simple ravine
#

You seem like a somewhat bright guy, I'm sure you can think of a way pretty easily

delicate ore
#

oh @chrome topaz , i got two feature requests. one is the ability to name live searches (while also changing the window title to the search name). the other is a more detailed desktop notification when a new live search result appears (with the name of the search if applicable)

chrome topaz
#

great way to handle an argument

#

"how are you gonna do X?" "you do X!"

delicate ore
#

this way, the notification won't be as ambiguous as to which search got updated.

chrome topaz
#

you're also very bright, I'm sure you can think of a reason in which your solution won't work

simple ravine
#

The token issued wouldn't expose who you are publicly obviously

chrome topaz
#

oh I'm sure any blockchain problem can be solved by saying what to do, not how. the token won't leak your identity. the consensus algorithm won't draw lots of power. the technology will be usable by everybody computer illiterate and so on

simple ravine
#

Let's assume a political election.

  1. The office that governs the voting procedure will receive your 'public key hash, i.e. wallet address in some cases'. They pair this with your IRL identifier to make sure you're not issued duplicate tokens.
  2. You use your voting token to cast your vote.
chrome topaz
#

so the office knows who I voted for

simple ravine
#

they already do!

chrome topaz
#

not in my country

simple ravine
#

that's not what I am looking to solve with the blockchain though

#

it's not the primary usecase, the pseudo-anonymity is a side-effect

chrome topaz
#

I don't see how it's better than a paper ballot

delicate ore
#

if you could just show the title of the window in the live search desktop notification that would be fine too

simple ravine
#

it provides a way to prevent fraud in ballot offices

chrome topaz
#

voting should be done on paper IMO

simple ravine
#

i won't argue paper vs digital voting procedures, that's way too off-topic

chrome topaz
#

okay so back to your idea

#

how do you control they don't issue more tokens than they should have?

simple ravine
#

well, that's not part of the blockchain problem-solution.

chrome topaz
#

so then I'm not sure what upsides your solution has

simple ravine
#

what the blockchain provides in this case is prevention of tampering with data

chrome topaz
#

so far it seems to introduce a lot of technical issues for no reason

#

it's still possible to tamper with election results

#

but now you made it impossible for my grandma to understand what's going on when she votes

simple ravine
#

lol, let's leave grandma out of this

#

if the blockchain is publicly visible to everyone to observe, and consistency checked based on a decentralized consensus algorithm

#

i'm pretty sure that are a lot of countries that would benefit from this

chrome topaz
#

so what problem does it solve?

simple ravine
#

the user experience for the voters can be made extremely simple, as long as one would put some effort towards that

#

well, i don't really like to repeat myself

chrome topaz
#

me neither

#

it doesn't solve the problem of tampering with election results

#

so what's the point?

simple ravine
#

ok, why not?

chrome topaz
#

your govt issues more tokens than it should have

#

and votes using them

simple ravine
#

well, that's not a problem introduced by the blockchain

chrome topaz
#

I thought the reason for introducing blockchain was to solve problems, not add them

#

one of the problems was tampering with results

#

but apparently all problems get split into "this is not a problem introduced by the blockchain" "this is a problem that could be solved without blockchain"

#

then what's the point?

simple ravine
#

and i'm going to assume we have a government that isn't going to fraud it's own country, rather having outside 'agents' tampering with voting offices around the country

chrome topaz
#

okay, if we trust our govt to do the right thing

simple ravine
#

and if we dont, we're fucked anyways, right?

chrome topaz
#

here's my proposed solution: govt makes a website where you enter your data, you vote on that website

simple ravine
#

and they get hacked on election night

#

what im saying is, even that website can use the blockchain as their backing store

chrome topaz
#

oh they get hacked? and I guess the mechanism distributing blockchain tokens can't get hacked?

simple ravine
#

to make sure their data is pristine

chrome topaz
#

so hackers can just issue more tokens and vote with them? or steal tokens?

simple ravine
#

I'm not saying that blockchain will solve all problems that exists. I'm saying it provides a solution for some problems.

chrome topaz
#

and I'm saying it solves literally none of the problems while adding them

simple ravine
#

so an immutable storage that is consensus verified with an algorithm is a bad thing.

#

ok

#

in its purset form, a blockchain is merely a distributed database

chrome topaz
#

no, blockchain is a bad thing

#

an immutable storage that is verified can be done as a git repo where you note the latest sha hash

simple ravine
#

no offense xyz, but im starting to doubt that you've done your research on how the blockchain actually works, technically

chrome topaz
#

I know how it works

simple ravine
#

okay then

chrome topaz
#

there is no reason for voting to be distributed

delicate ore
#

@timid hemlock can you add a toggle so that the list of uniques is ordered by the DPS increase they give to the current skill?

#

like for gems

chrome topaz
#

with a consensus algorithm

simple ravine
#

in my opinion there is a benefit to that

chrome topaz
#

which is?

simple ravine
#

no single point of failure

chrome topaz
#

you don't need blockchain for that

simple ravine
#

again, blockchain in its purest form is a decentralized database

#

there are obviously other solutions. yet again, it's 2017

#

there are lots of solutions

chrome topaz
#

the solution is any database with replication

simple ravine
#

๐Ÿคฆ

chrome topaz
#

what's your problem?

simple ravine
#

replication doesn't mean it's decentralized

#

replication comes in two forms, right...
master-slave
master-master

chrome topaz
#

I still don't see any problems that your voting blockchain proposal solves

#

which paper ballots do not

simple ravine
#

if you would take a voting mechanism digital, obviously

#

jesus christ

chrome topaz
#

okay, then I don't see any problems it solves vs a government voting website

simple ravine
#

again; attack vector, single point of failure

chrome topaz
#

blockchain can get attacked too and attackers can issue tokens

timid hemlock
#

@delicate ore That;s quite an old suggestion, but at present the DPS calculation system isn't quite fast enough to allow it easily

chrome topaz
#

the "single point of failure" is going to be whatever office you have that issues these "voting tokens"

simple ravine
#

it can't issue tokens without the private key, that would be air-gapped

#

you can distribute/shard those private keys as well, even use hierarchical keys

delicate ore
#

@timid hemlock then how about this... ordering the Shared Items list that way.

timid hemlock
#

Plausible, as long as there aren't too many

chrome topaz
#

okay cool let's assume attackers can't issue tokens

#

what if I'm a citizen and got my private key stolen?

simple ravine
#

invalidate the token, get a new one

chrome topaz
#

so the government has a mapping of my public key to my identity somewhere

delicate ore
#

also i really think you should add it for the normal list anyway for those with fast pcs @timid hemlock . if it's opt-in it won't be a problem.

chrome topaz
#

on another blockchain I assume lmao

#

anyway I feel like this discussion isn't going anywhere so I retreat

timid hemlock
#

I have a fast PC, and it is too slow

chrome topaz
#

I promise to eat five proverbal hats when somebody finds a useful use for blockchain

timid hemlock
#

It can still be done asynchronously, but that's a little tricky to do

simple ravine
#

Well,that is a moot promise lol. You'd just deny you find it useful

#

But it's fine, we don't have to agree on everything. It's more fun that way anyways

chrome topaz
#

I'll eat one proverbal hat when I see a working proof-of-stake system or similar with low power consumption

simple ravine
#

Ethereum is moving to proof of stake.
EOS will be proof of stake.

#

DASH is proof of stake.

chrome topaz
#

we'll talk when they move then

delicate ore
#

@timid hemlock can you add a field in Calcs > General for Enemy Life so that we can get calcs for corpse explosions and stuff?

timid hemlock
#

That's already there

delicate ore
#

wha? where?

timid hemlock
#

In the Skill Options section

#

Shows when DD is in your build

delicate ore
#

oh, what about for Gratuitous Violence, Obliteration and Inpulsa's?

timid hemlock
#

I don't support calculations for those yet

delicate ore
#

ok

chrome topaz
#

@simple ravine I looked up dash and it has miners for transactions, does not seem proof of stake to me

#

Due to the complexity and die size required to create an ASIC for mining x11, we expect that it will take considerably longer than it did in Bitcoin, allowing for hobbyists to take part in the mining for a longer period of time. We believe this is highly important for good distribution and growth of a cryptocurrency.

#

seems like a proof of work with different hash

simple ravine
#

yes, x11 is just 11 hash algorithms in combination with a large sample size

chrome topaz
#

I'll wait for ethereum one then

simple ravine
#

Bitmain made an ASIC miner for X11 (Dash etc) already

#

a lot of people in the cryptocurrency scene shouldn't be in it

#

much like a lot of people in the php scene shouldn't be doing programming at all

chrome topaz
#

I think proof of stake is impossible but we'll see

#

rather, any proof of stake impl, could be attacked at minimal cost

simple ravine
#

well, there are some brilliant minds in the scene as well

#

When I pay with my Amex / MC / Visa, intermediaries charge 2.9%
When I wire money from one account to my other bank, it takes 3 days and costs $35 per wire.

#

People who dont have access to banking can also leverage cryptocurrency, once it becomes stable and mature enough.

#

In my opinion, cryptocurrency is still in an experimental phase.

simple ravine
#

@obtuse citrus Is there a way to export the entire GGPK using PyPoE?

obtuse citrus
#

write to disk?

simple ravine
#

yes

#

let me rephrase - extract the content.ggpk to individual files

obtuse citrus
#

just export via the ui or extract the root to a specific location when programming

simple ravine
#

unfortunately the UI won't work with my 3.6 installation, so I'm bound to the CLI

obtuse citrus
#

oh yeah

simple ravine
#

the CLI as far as I can discern will not let me extract the entire GGPK.

#

am i mistaken?

obtuse citrus
#

didnt add a command for that no, but youi ican just ope nthe python shell and do it

#

it's fairly trivial

simple ravine
#

right, i just wanted to benchmark mine against the gold standard so to speak

obtuse citrus
#

it's not very fast because of certain overheads I can tell you that lol

#

I'll probably add a c/c++ plugin for it eventually

simple ravine
#

ok

#

mine exports it roughly as fast as it takes to delete the folder afterwards (1 minute 40 seconds on my machine)

#

just wanted to make sure i'm at least in the ballpark where it should be

obtuse citrus
#

though for overall extraction I dont know

#

reading is fairly slow though

simple ravine
#

okay. well I'll defeintely put this on github once it's cleaned up a bit

#

seems fairly quick

obtuse citrus
#

anyway:

#

from PyPoE.poe.file.ggpk import GGPKFile
ggpk = GGPKFile()
ggpk.read('path/to/ggpk')
root = ggpk.directory_build()
root.extract_to('path/to/out')

simple ravine
#

oh nice, that looks clean

#

is there a convenient way to add a stopwatch around the execution in Python?

obtuse citrus
#

there are several ways I personally prefer to just take time before and after

#

import time

#

t = time.time()

#

print(time.time() -t)

#

put the last after the code

simple ravine
#

ah, thank you

obtuse citrus
#

good enough for general testing, for profiling there are other things

simple ravine
#

I saw that you added some code for fetching content from the update cdn

#

that could be an interesting scenario for server based applications to keep data updated

#

lol, your code takes exactly the same amount of time.

#

not bad.

obtuse citrus
#

probably bound by OS i/o

simple ravine
#

looks like CPU actually, because it's not using my disks full potential

#

i wish there was a way to tell the OS kernel to copy a section of a file to a new file

#

that'd be amazing

gritty olive
#

you could write some C++ CUDA code to make it run on the GPU no?

mortal bone
#

with known offsets you can thread data loading pretty easy

simple ravine
#

that would just make it slower - reason being the transfering between the GPU and the CPU would have to go from the kernel, into userspace memory and then through the PCIe lane, and then back

gritty olive
#

you'd still be limited to I/O but with a fast enough SSD + GPU

#

๐Ÿค”

mortal bone
#

you are always limited by I/O

#

no real way around it

simple ravine
#

well I'm using a single Stream in my case (reading from the GGPK)

#

but I could probably create a pool of Streams

gritty olive
#

Yeah, was wondering about the processing part

simple ravine
#

in my case the CPU is the bottleneck

gritty olive
#

If that's being done by the CPU

mortal bone
#

that would make it slightly faster

#

are you loading the whole file into memory?

simple ravine
#

I have 2 x Samsung 960 EVO NVMe in Raid 0 with 3000+ MB in write throughput

gritty olive
#

Yeah but you don't want to wear out the read/write caps

mortal bone
#

shouldn't be writing too much to the disk

simple ravine
#

depends on what type of disk you have.

#

if you have an SSD, threaded writes is just beneficial

#

spinning rust, the other way around

mortal bone
#

I need to get an ssd

gritty olive
#

I have 4 of them

#

Get one today they are on sale

mortal bone
#

yeah today/monday

mortal bone
#

I currently have a WD VelociRaptor 1TB which has worked well enough

simple ravine
#

I can't recommend 960 evo nvme enough

gritty olive
#

Does the job

simple ravine
mortal bone
#

I know a lot of people that use those

simple ravine
#

SATA is just hard-capped at around 550 MB/s

mortal bone
#

getting a bit old...

#

even older lol

mortal bone
#

not sure how many extra pci-e slots I have

simple ravine
#

what chipset / cpu do you have?

mortal bone
#

Ryzen-1700x

simple ravine
#

ah, i heard those has plenty of lanes

mortal bone
#

I could just bend down and look

chrome topaz
#

you can do that on linux with sendfile

#

copy section of file

simple ravine
#

well, your motherboard probably has at least 1 m.2 slot

chrome topaz
simple ravine
#

@chrome topaz yeah, that's a good feature linux has indeed, no need to copy the data from kernel memory space to userspace

mortal bone
#

Yeah, it has 1 m.2 slot

#

they suggest using the samsung 960

simple ravine
#

so if you want to raid it like I did, you gotta check if your motherboard support Intel Rapid Storage Technology's equivalent from AMD

mortal bone
#

don't really care much about raid

#

I have hard disk backups of everything

#

also don't need the speed

simple ravine
#

nah I use Raid 0 for perf

chrome topaz
#

it's not really copying from kernel to user

mortal bone
#

ah

simple ravine
#

@chrome topaz sendfile2 circumvents that, is what i meant

chrome topaz
#

even read() or write()

mortal bone
#

what use is sendfile here?

chrome topaz
#

pretty sure they work staight on user memory

mortal bone
#

I feel like I am lost

#

usecase**

simple ravine
#

uhm

#

the operating system will read it into kernel first

#

pretty sure

mortal bone
#

it is copied within the kernel

simple ravine
#

got any source saying that?

mortal bone
#

Because this copying is done within the kernel

simple ravine
#

oh, nah I mean read() and write()

mortal bone
#

ohhh

simple ravine
#

if you programmatically buffer it in c/c++/python/whatever

#

it goes disk->kernel->user->[ur code]->user->kernel->disk

mortal bone
#

read and write are done in the user space

#

Yeah, I am aware of the linux structure. My entire schooling was done in/ontop of the kernel

simple ravine
#

then we're finally in an agreement, lol

mortal bone
#

I think I was confused at the conversation. I missed a message somewhere

simple ravine
#

I want a CopyFileEx that takes offset and length as parameters

chrome topaz
#

i'm not sure i think it's an obvious optimization

simple ravine
#

you'd getting rid of the data being copied from kernel to userspace and back, which is a pretty big portion of the task, especially when Disk I/O isn't the bottleneck, rather the CPU

chrome topaz
#

you can get this behavior if you open a file with O_DIRECT

simple ravine
#

doesn't O_DIRECT just circumvent the OS file cache?

chrome topaz
#

"File I/O is done directly to/from user-space buffers. "

simple ravine
#

hmm, let me see if .NET has a flag in the FileStream to indicate this

chrome topaz
#

it also disables cache so

#

sendfile's gonna be faster anyway

#

also, I was talking about linux, just fyi

simple ravine
#

oh

chrome topaz
#

i dunno about windows

chrome topaz
#

is CopyFileEx even a syscall?

simple ravine
#

it's a win32 api

chrome topaz
#

it looks like it's just doing read/write itself

#

so it won't help if they add offset/length

simple ravine
#

Copies an existing file to a new file, notifying the application of its progress through a callback function.

chrome topaz
#

yeah

simple ravine
#

so the kernel would do it without copying the data into userspace

chrome topaz
#

it's probably implemented in user mode

#

because i don't see any copy functions in windows syscall table

simple ravine
#

kernel32.dll

#

it's done using IOCP so..

chrome topaz
#

especially considering it's got a callback function and a bool pointer

#

what does "kernel32.dll" mean?

simple ravine
#

It's a Windows kernel library

#

it allows you to tell the operating system to do things

#

like copy files

chrome topaz
#

it's a user library

#

not a kernel library

simple ravine
#

uhm

#

you use it to create OS threads, OS completion ports etc

#

it's just an interface to access windows functionality

chrome topaz
#

yes

simple ravine
#

the call themselves are then executed in the kernel, not in your application

chrome topaz
#

which call?

simple ravine
#

im not sure why i get into these repetetive discussions...

chrome topaz
#

it's also annoying for me when i have to explain that kernel32.dll run in userspace

simple ravine
#

Sure, I agree that the actual DLL is loaded into user-space.

chrome topaz
#

just for fun, i wrote up a tiny program calling CopyFile and traced syscalls

simple ravine
#

However, I am pretty sure the kernel is involved in copying the file. You can observe how the System process consume quite a lot of CPU time when streaming files using the .NET APIs for an example (which in turn uses underlying windows APIs)

chrome topaz
#

for a 407MB file it did 408 NtReadFile syscalls and 6517 NtWriteFile syscalls

#

so i think that's it

#

which is funny because I expected it to at least call write and read same number of times

simple ravine
#

So it uses 64K writer buffer and 1024K read buffer.

#

interesting

chrome topaz
#

yeah

#

if you're worried about performance, you should see how much crap that function does

simple ravine
#

u running windows 10?

chrome topaz
#

yeah but I tested it on 7 because syscall tracer broke on 10

simple ravine
#

oh hmm

#

doesn't MSFT ship one with Visual Studio?

chrome topaz
#

I dunno I don't normally do low level dev on windows

#

if you pass COPY_FILE_NO_BUFFERING to CopyFileEx, it does same number of reads and writes, 408

simple ravine
#

what's interesting is that I have a far better performance using a 4K read buffer than a larger one

chrome topaz
#

what size buffer have you tested?

simple ravine
#

1, 2, 4, 64, 256, 1024

#

so far

chrome topaz
#

is that using windows ReadFile?

simple ravine
#

it's using .net core's APIs and whatever it's using

chrome topaz
#

it could be using its own caching layer

simple ravine
#

i wouldn't think so, but i would have to double check

chrome topaz
#

what's the API called?

simple ravine
#

System.IO.FileStream ctor

#

looks like it has its own internal buffer indeed

chrome topaz
#

that's usually alright, but it depends how they use it

#

the buffer's useful so that when you spam Read(1 byte) it doesn't constantly call the API

#
                if (!CanSeek || (destination.Length >= _bufferLength))
                {
                    n = ReadNative(destination);
                    // Throw away read buffer.
                    _readPos = 0;
                    _readLength = 0;
                    return n;
                }
#

it doesn't use the internal buffer for large reads

#

i think that's enough looking at microsoft code for today for me

simple ravine
#

haha

simple ravine
#
D:\Code\PoeSharp\src\PoeSharp.Playground>build && run

D:\Code\PoeSharp\src\PoeSharp.Playground>dotnet publish -c Release -f netcoreapp2.1 -r win10-x64 -o bin\pub\ -v q
Microsoft (R) Build Engine version 15.5.178.35674 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.


D:\Code\PoeSharp\src\PoeSharp.Playground>bin\pub\PoeSharp.Playground
Reading GGPK File...
GGPK File parsed... 1,535.93 ms
Extracting GGPK Contents...
Elapsed total time: 56,663.77 ms
#

well, i'm pretty happy with that.

tropic shuttle
#

what happens with the other 55 seconds?

chrome topaz
#

source code?

#

the other 55 seconds are extracting files i assume

simple ravine
#

yeah, unfortunately it was a threading issue

#

we're back to around 100 seconds for the 8GB file (ggpk => individual files)

#

i think the issue with maximizing disk's potential is bottlenecking around a single source

pseudo ocean
#

did you say disk bottlenecking? oh boy, better get that Intel Optane 900P

#

๐Ÿค”

simple ravine
#

@pseudo ocean mine's faster

#

oh wait, there must be something special with this one

#

I'm seriously buying 2 of these and raid 0 em

pseudo ocean
#

haha

simple ravine
#

i got 2 samsung 960 nvme in raid 0 now

#

but this seems to be faster with smaller files

#

and.. most files are smaller.

#

ah it's 4K reads are super fast for some reason

pseudo ocean
#

the optane is really nice for cache

simple ravine
#

well 2 x 480 GB is good enough for me

#

for OS drive

#

omg that random access speed

#

why did u have to tell me about the 900P coming out lol

pseudo ocean
#

it's already out?

simple ravine
#

yeah

pseudo ocean
#

came in october I think

simple ravine
#

yep, it's out even here in Sweden

#

$600 USD

#

if I knew this when I was in LA last week, argh

#

it's $850 in sweden

pseudo ocean
#

6990 yep

simple ravine
#

I bought these two 960s like a month or so ago

#

gonna make my fiance a desktop pc in a while, so i'll give her the samsung ones and upgrade to 900Ps then I guess

pseudo ocean
#

lol

simple ravine
#

omg resharper, y u so slow

simple ravine
#

@hushed relic Hey bud... I just installed PoE and found my assassin ts/signal fire build had its tree reset

#

iirc, you have some experience with TS

#

haven't played in months, and forgot how my tree looked like, any tips?

tropic shuttle
delicate ore
#

@timid hemlock Outmatch and Outlast isn't applying to the Physical Damage portion of Poison

#

Mark confirmed that bonuses to Physical Damage will apply to the portion of Physical Damage in Poison

#

the other modifiers to generic Physical Damage aren't applying either

delicate ore
#

"In addition, cases where base damage of one type can cause a damaging ailment that deals a different type of damage will be treated similarly to conversion with regard to damage modifiers.

This means that if you have the unique item "The Three Dragons", so that you Ignite with Cold Damage, rather than Fire Damage, when hitting an enemy with Cold Damage, the hit will be affected by Cold Damage modifiers, while the resulting Ignite will be affected by modifiers to Cold or Fire Damage, because it's dealing Fire Damage from base Cold Damage - this is pretty much the same as converting damage from Cold to Fire, such as with the support gem."

timid hemlock
#

@delicate ore I believe you are quite mistaken

#

It definitely does apply, and in fact the program's Ailment system is quite specifically designed to allow such modifiers to apply

delicate ore
#

it's not showing in the calcs, i mean

timid hemlock
#

Where, exactly?

delicate ore
#

under poison

#

in the more multipliers section

timid hemlock
#

the Total More output can only show modifiers that apply to all Poison damage

#

for the type-specific modifiers, look in the breakdowns for Physical/Chaos source damage

delicate ore
#

yeah, i kind of figured that was a possbility, you would need to make a breakdown like in Skill Hit Damage to show it all

#

also, you may or may not be able to answer this but...

#

@spare delta said the opposite of what the guy in the comments said, but do you have any insight

timid hemlock
#

Hmm

#

AFAIK they aren't counted as skills in the usual sense

#

They may be considered to be skill effects though

delicate ore
#

how do they work exactly? are they triggered on death like COMK?

timid hemlock
#

Pretty much

delicate ore
#

so they're technically skills

timid hemlock
#

No

#

They are just effects that occur when you kill enemies under the correct conditions

delicate ore
#

ok, i think i get it

#

but... skill modifiers apply to them =/

#

what about my example case. might volkour's guidance work with inpulsa's broken heart?

timid hemlock
#

I'd be mighty surprised

#

Things that work on "Lightning Skills" or "Chaos Skills" specifically apply to active skills that posess the corresponding skill type

delicate ore
#

yeah

timid hemlock
#

But those on-death explosions don't actually have a skill associated with them

delicate ore
#

well there are two conditions in which it might work

timid hemlock
#

Like, there's no skill anywhere in the data files for Gratuitous Violence

delicate ore
#

if volkours actually works with all lightning damage, or if the explosion is considered a lightning skill for that purpose

#

oh

#

maybe not then

#

let me test volkour's then. might be hope

#

if not the build will still be pretty good, with 250% of mob life for the explosion as opposed to the 400%+

simple ravine
#

I just found something c# can't do, and I'm disappointed.

#
        public static unsafe T To<T>(this byte[] buf) where T: struct
        {
            fixed (byte* b = &buf[0])
                return *(T*)b;
        }
#

argh.

#

if anyone know an allocation-free way of converting bytes into primitives like this in a generic way, i'd appreciate it

mortal bone
#

What issue are you running into here? Unsafe should allow you to do that conversation

simple ravine
#
        public static unsafe int ToInt32(this byte[] buf)
        {
            fixed (byte* b = &buf[0])
            {
                return *(int*) b;
            }
        }
#

this works.

#

the issue I am getting is that it will not get the size of a generic T struct

#

return *(T*)b; <- that won't work.

mortal bone
#

Oh, I see

simple ravine
#

I found a "workaround", but it's not allocation free, and it's slow

mortal bone
#

Yeah, you have to increment the pointer

simple ravine
#
        public static unsafe T To<T>(this byte[] buf) where T : struct
        {
            fixed (byte* b = &buf[0])
            {
                T result = default(T);
                var resultRef = __makeref(result);
                var resultPtr = (byte*)*((IntPtr*)&resultRef);
                for (int i = 0; i < result.SizeOf(); ++i)
                {
                    resultPtr[i] = b[i];
                }
                return result;
            }
        }
#

ugly as f***

mortal bone
#

Would be easier just to marshal a ptr

simple ravine
#

yeah, but in comparison that's also slow

#

I guess in this case, it's better to just create ToInt32, ToInt64 etc

mortal bone
#

Marshal.PtrToStructure((IntPtr)b, typeof(T)); for reference

#

Kind of sucks that it won't let you cast the generic since it gets compiled down to the same code...

simple ravine
#

gotta box it

#

return (T)Marshal.PtrToStructure((IntPtr)b, typeof(T));

#

let me try this and see how fast I can get it with [MethodImpl(MethodImplOptions.AggressiveInlining)]

mortal bone
#

Oh, whoops yeah

#

Honestly, you may be able to allocate a block of memory ahead of time and just use it as a pool

simple ravine
#

for 10 million ops, 997ms instead of 6ms

#

Marshal = slow ๐Ÿ˜

mortal bone
#

Yeah, you are relying on the os to memory manage lol

#

Why are you converting so much?

simple ravine
#

reading .dat files

mortal bone
#

Oh, ok

simple ravine
#

just want it as fast as possible

#

and my unsafe ToInt32 is twice as fast as BitConverter.ToInt32(bytes, 0)

mortal bone
#

You aren't doing any null checks and what not

simple ravine
#

not in the conversion code itself, no

mortal bone
#

Also, I am pretty sure ToInt32 does some stuff with rounding

simple ravine
#
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static unsafe uint ToUInt32(this Span<byte> buf)
        {
            fixed (byte* b = &buf[0])
                return *(uint*)b;
        }
#

this?

#

sorry that was the UInt version, but same same

mortal bone
#

This is your implementation yeah?

simple ravine
#

yes

#

if you want to try it, you can safely replace Span<byte> with byte[]

mortal bone
#

Easy to see why yours is a ton faster

simple ravine
#

indeed

mortal bone
#

It is annoying because these all have the same structure that could be boiled down to a generic...

simple ravine
#

they've improved the code in .net core

#

duh

#

here it is

#

Unsafe.ReadUnaligned<>

#
        public static unsafe T To<T>(this Span<byte> buf)
        {
            fixed (byte* b = &buf[0])
                return Unsafe.ReadUnaligned<T>(b);
        }
#
            int t = 64;
            var b = BitConverter.GetBytes(t).AsSpan();
            int e = 0;

            var sw = Stopwatch.StartNew();
            for (int x = 0; x < 10_000_000; ++x)
            {
                e = b.To<int>();
            }
            Console.WriteLine(sw.ElapsedMilliseconds);
#

6 ms, yay ๐Ÿ˜„

mortal bone
#

Oh nice

simple ravine
#

heh, fun how much faster .net core 2.1 is over 2.0

#

finding the data separator 0xbbBBbbBBbbBBbbBB in the Mods.dat 10 00 times, finishes in 700 ms on .NET Core 2.0 and in 558 ms in .NET Core 2.1 preview

tropic shuttle
#

@simple ravine are you taking another shot at the affix solver?

simple ravine
#

i might indeed

#

just refactoring the code I already have first, and introducing code to read directly from the ggpk file instead of pre-processed json files

#

were you able to do it with Elixir/Erlang, @tropic shuttle?

chrome topaz
#

i'm curious to see your code and rewrite it in C and see how much faster i can get

#

any chance it's gonna be open source at some point?

tropic shuttle
#

@simple ravine yes

#

I used the spawn_weights annotations to do an intermediate layer for items by type, cache , and solve items with that subset of mods

#

Had to cross reference the data in stat_translations

#

Cache types were each of the accessories, each of the weapon types (inc scepter, rapier) and each of the armor types Cartesian product with the attribute stats

#

Ie, gloves_str_dex

#

So each item type was under ~40 groups (as you might expect from poeaffix etc)

#

Solution space is tiny, lightning quick

#

@chrome topaz code is a mess right now, if there is interest I can clean it up and publish it, maybe tackle it again next league

chrome topaz
#

geez

tropic shuttle
#

But as I mentioned to thezensei before, thereโ€™s multiple solutions. Integrating highest probability was a good idea for a second pass at it

torpid mesa
#

i keep getting 302 errors and have to go to pastebin.com and do a captcha

#

and then wait like 5 minutes

#

then i can use pob pastebins again

#

then it happens again lol

simple ravine
#

@chrome topaz sure, knock yourself out

simple ravine
#

@tropic shuttle yeah, I did the same thing.

#

Basically I take reverse-translate them into stats (separate stat and values), find what mods that contains these stats in the base type

lost wigeon
#

@mortal bone Thanks for sharing!

mortal bone
#

There have been a few talks about this sort of stuff here, so I figured it might strike up some conversation

wind garden
#

Is .net Core 2.1 out?

mortal bone
#

it is in preview right now

simple ravine
#

the new Span<T> and Memory<T> have some special treatment in .net 2.1 which makes it lucrative for most people to hop onto 2.1 when it's stable

delicate ore
#

what happened to Vagan's Unarmed Damage craft mod? Was it removed from the game?

simple ravine
#

@obtuse citrus, any idea why I'm getting this:

PyPoE.poe.file.specification.errors.SpecificationError: <ERRORS.RUNTIME_ROWSIZE_MISMATCH: 3002>: "ItemVisualIdentity.dat": Specification row size 170 vs real size 166```
obtuse citrus
#

specification is outdated

#

or your client because for some reason I dont get the error when testing against the current version

hazy fog
chrome topaz
#

more power for the poe.trade cabal

#

I approve

hazy fog
#

all heil xyz

compact isle
#

poe.trade premium is gonna make a killing

hazy fog
#

orz

#

I'm just going to play ssf next league to not deal with that ๐Ÿค”

chrome topaz
#

get your tin foil cap on, what if I made all these snipe tools to cause a lot of load on GGG api and make them restrict it

#

if somebody was to post it, this wouldn't even be the dumbest thing I read on poe subreddit

simple ravine
#

bohoo, our game gets popular, our servers are crying.

#

how are people thinking sniping will be less of a problem with whitelisted sites?

#

you'll just create a community site, and grab the data off there instead

lost wigeon
#

@hazy fog Well this got out of hand

#

@compact isle Did this really cause any strain on your servers?

obtuse citrus
#

it's essentially like DDoSing if enough people use the api

compact isle
#

@lost wigeon not yet, no. We're monitoring it

lost wigeon
#

@compact isle I'm also checking with Google Analytics. While many people commented on the thread, the amount of people actually using the tool (about 28 right now) is lower than during Legacy or Harbinger.

simple ravine
#

@lost wigeon Well if they restrict it, you could always create a server and IFTTT-websocket the results to the users ๐Ÿ˜‰

lost wigeon
#

@simple ravine Yeah totally, I was thinking about doing something like this.

simple ravine
#

I would want to create one of those services, and have an open API to it

#

and have the community pitch in a little for the server costs - obviously the bandwidth costs will be, uh.. slightly extensive in the case the app becomes hugely popular.

#

I'm gonna do some pondering on that one.. hmm

chrome topaz
#

"community pitch in a little" yeah that won't work

simple ravine
#

the always-positive xyz ๐Ÿ˜‰

chrome topaz
#

have you looked at reddit?

#

people are complaining that they are only getting ONE free hat

simple ravine
#

those aren't the ones i am expecting to pitch in

chrome topaz
#

if you make a service, people will see that it adds latency and switch to something else

#

I think the real solution is to make the API private and only give it to trusted people such as myself

simple ravine
#

of course you would say that

#

that'd secure your profits pretty nicely, instead of democratizing the utility

chrome topaz
#

free will is a myth, democracy is a joke

simple ravine
#

as long as you get your monopoly

#

no offense, but it's quite hilarious

chrome topaz
#

excuse me, the unfair monopoly

hazy fog
pseudo ocean
#

poeapp* ๐Ÿค”

simple ravine
#

it's alive!

winter fossil
#

It's a start at least ๐Ÿ˜ƒ

tropic shuttle
#

Mobile app?

#

Nice

winter fossil
#

Yeah, it's about time for it to exist imo

#

It only requires a complete rewrite in order to keep the performance on devices good, and it's still far from finished. Still tho, progress c:

deft jolt
#

telia, nice

mortal bone
#

@winter fossil what language?

winter fossil
#

JavaScript written to an ES6+ standard. Also planning to include WebGL to enhance the rendering, but that's for a later build.

jaunty briar
#

@simple ravine is there a release of poesharp somewhere?

gritty olive
#

lol @ people wanting whitelisted sites

mortal bone
#

whitelisting is fine if they have a proper process for applying

gritty olive
#

in my experience it never ends well and ends up destroying the ecosystem

#

But I mean, I haven't been working on an API Marketplace for the past 6 years

mortal bone
#

To be honest, it isn't hard for them to see who is killing the api.

#

Also having people register their applications wouldn't be bad. Not a whitelist, but something like an api key

gritty olive
#

It really should have caching

mortal bone
#

hard to do because it calcs the difference differently for everyone

gritty olive
#

Yeah having OAuth Applications would be a good idea

#

There is a company that does differential caching

#

Cloudflare

#

It's their new service they announced during AWS

#

Or at least their solutions engineer told me while I was at AWS

mortal bone
#

that is pretty cool

gritty olive
#

Railgun compresses previously uncacheable web objects up to 99.6% by leveraging techniques similar to those used in the compression of high-quality video. This results in an average 200% additional performance increase.

mortal bone
#

I don't think the api is in a format in which this would be helpful

gritty olive
#

It should work with any format is what I was told, my company offers a similar solution or at least the enterprise variant does

simple ravine
#

@jaunty briar it will be soon

delicate ore
#

what's poesharp?

mortal bone
#

like PyPoe

#

A ggpk interface from as far as I have read

simple ravine
#

it has domain logic around mods, stats, items and stashes as well, but yeah

#

it's a library with domain logic that can be reused in your applications revolving poe

delicate ore
#

so i could use it for parsing mods?

#

instead of writing my own parser?

simple ravine
#

that's the plan

#

well, parsing mods is a tricky thing - but parsing stats, 100% yes

chrome topaz
#

i see what's going on

compact isle
#

@chrome topaz @polar island we'll be adding support for a "~skip" item note to the client / our trade website for 3.1.0 btw

mortal bone
#

why have a skip?

compact isle
#

for individual items in a public stash tab

#

use case was letting you use your currency tab as public for listing stock

mortal bone
#

^

#

that could be a lot of data that is pretty useless

#

I would assume that to be the case since they have the ability to have speciail mods

compact isle
#

the ~skip option will only be on individual items

#

I'll check the frameType stuff now

#

no new frame type

mortal bone
#

how are they differentiated?

compact isle
#

shaped items will have a "shaper": true property, elder ones will have "elder": true

mortal bone
#

.>

compact isle
#

and apparently abyss jewels will have an "abyssJewel": true property

#

hmm

mortal bone
#

ffs

compact isle
#

?

mortal bone
#

that is just a ton of bloat in the api

compact isle
#

they only appear if they're true

#

so no, not really

#

frameType is specifically for frames, not for anything else

mortal bone
#

wouldn't you create a 'backgroundType' then

compact isle
#

because they do more than alter the background?

mortal bone
#

just seems oddly not expandable

compact isle
#

it's more likely that the data / visual formats get split than we add another influence to the atlas

#

yeah they actually change their frames

#

I know it's not very useful for determining the item class/type

#

that kind of thing is definitely on my mind

mortal bone
#

why is ~skip being put into the river?

#

shouldn't the items just not appear?

compact isle
#

because it's specfically for skipping indexing

mortal bone
#

you are banking on people honoring the tag

#

what about private indexers?

#

people are going to be pissed when they get a whisper about an item they aren't selling

compact isle
#

yes, then the people buying will complain to the private indexer creators

mortal bone
#

mmm, I doubt that

compact isle
#

sure okay

mortal bone
#

they will first complain about it to the indexers, and when it doesn't stop, they will complain to you guys

compact isle
#

yeah sorry, I keep thinking of the stash tab api in terms of how we use it for the trade site

#

but it works differently for the actual api

#

so ~skip items not being in the river will be fine

mortal bone
#

it would just look like an empty tab if there was a full tab of ~skip

compact isle
#

yep, and there's nothing wrong with an empty tab as long as it still has it's details

#

easy

chrome topaz
#

cool

mortal bone
#

thanks man

compact isle
#

0 work required for third parties

#

so much nicer

#

yay

mortal bone
#

also keeps everyone honest

simple ravine
#

hehehehe

wind garden
#

@simple ravine will you be making a nuget package for poesharp?

simple ravine
#

@wind garden yeah if there's enough interest

#

the library code will be open sourced as well

wind garden
#

I was just thinking about the changes Novynn mentioned earlier. It's kind of a pain to have to update my code every new league because of this stuff. Buf if it were as simple as updating a nuget package, would be nice. Assuming you keep it up to date ๐Ÿ˜ƒ

simple ravine
#

Accepting pull requests โ„ข

mortal bone
#

open sourced

simple ravine
#

?

delicate ore
#

it's going to available in .h/.lib/.dll form though right, in addition to whatever c# has

simple ravine
#

nuget is a package manager that will allow you to reference the compiled bits, indeed. @delicate ore

delicate ore
#

i mean, i might want to use it in a c++ project

simple ravine
#

right, not sure how that'll work out for you, but i'm pretty sure that can work

delicate ore
#

i can just write a wrapper for it, i guess

simple ravine
#

there's some project out there that allows you to reference c# libraries from c++ with convenience

#

not sure how good it is, though

#

i haven't written c++ since college (a long time ago)

#

trying to figure out a bug in the dat parser right now, with ref|list|ulong giving me 0xbbBbbBBbbBBbbBB

#

once that's done, i'll make a Mods/Stats loader based on that data, instead of RePoE json which the old code used

#

after that I'll be ready to push this to github for initial review

inner sundial
#

Hey guys

#

I rly want to start a project based on poe community around a site web.

#

Any idea ?

pseudo ocean
#

hey guys I'm having problems with acquisition not showing items on Poe.trade

#

I followed a video's instructions exactly (got the link from poexyzis and the shop thread from the forums) Please help me find out why my items aren't showing

hazy fog
#

@chrome topaz ^

chrome topaz
#

I noticed that people who have problem with my software also usually have issues describing their problems ie not providing stuff like thread number / search URL / screenshots / etc; wonder if there's a correlation

hazy fog
#

harsh ecks why zed

inner sundial
#

at least his nickname is quite describing ! "LF help with acquisition"

tropic shuttle
#

seems like the "shaper" : true and "elder": true properties are "consistent" with the corrupted property change that got discussed a week or two back

#

which was more or less what i was expecting

#

even so @compact isle maybe worth consider moving those nullary properties to a tag list or something, to keep the api purists happy ๐Ÿ˜‰

simple ravine
#

enum flags would be a decent choice

#
    public enum Stuff
    {
        Corrupted = 1,
        Shaper = 2,
        Elder = 4,
        SomethingElse = 8,
        AnotherThing = 16
    }
tropic shuttle
#

i'm surprised Identified hasn't made the list yet

simple ravine
#

that way, you can do

item.flags = Stuff.Corrpupted | Stuff.Shaper
#

but who cares, ingress is normally free. it's their egress that is going to bloat up

chrome topaz
#

they should just pipe their db into my server

#

all that overhead of converting item from binary to json representation

tropic shuttle
#

if they keep a sliding window cache of the head of the river and find a way to syncronize clients...

#

then theoretically there could be massive performance improvements / savings

simple ravine
#

the stash api is a dumpster fire

tropic shuttle
#

no point in ragging on it. just find ways to improve it

chrome topaz
#

I think you mistyped the most beautiful thing ever

simple ravine
#

I just gave a pretty decent improvement suggestion, didnt I?

tropic shuttle
#

it's a crystal clear flow of tranquility through a wasteland of of forgotten toys and atziri axes of yesteryear

simple ravine
#

If I knew who's in charge of the river API, I'd send him a book on event sourcing ๐Ÿ™‚

chrome topaz
#

if you think the stash tab api is bad you should've seen the online api (either one)

simple ravine
#

either way, im getting my unlimited full-duplex 1 Gbps fiber connection installed this week, it'll be fine

misty merlin
#

@compact isle I've read the talks about the stash API and the shaper and elder props. Do you know if those are also shown/indicated on the item data copied ingame via ctrl + c? Would suck for itemInfo/TradeMacro and some other tools if not.

lost wigeon
#

@compact isle I'm gonna upload a new version of my tool tomorrow using socket.io to serve chunks from my poe-rates backend instead of having everyone download its individual version of the chunks.

hazy fog
#

can your backend sustain the hits

lost wigeon
#

@hazy fog I'm not sure, but they're currently not too many people using the tool (approx. 20), so it shouldn't be too bad.

hazy fog
#

the problem with open source software is you can't kill it when you discover it's horrendously bad ๐Ÿค”

lost wigeon
#

Yeah, sure people can fork it but it still depends on my backend somehow (item price stats, currency conversion) which is not open-source.

hazy fog
#

oh, good

winter fossil
#

Kinda surprised how well it runs with images included

delicate ore
#

good to hear, those mobile trees have terrible performance

#

im surprised the mobile trees don't use grid spatial indexing to handle the image performance

winter fossil
#

The way GGG decided to draw each node is based of groups that each have a cluster of nodes, from that they calculate the position of each node in that group on each full draw. Had to scrap that idea

#

I've only mapped each node's position to a tile at init, and if that tile is within bounds it will draw the associated nodes. Works ok for now.

But I still feel like I'm going to do some heavy optimization. The Sony xperia that I got draws in ~200 ms when zoomed out to 0.08. But then again, where should I even set a benchmark of what devices should run it well?

delicate ore
#

yeah, your approach is grid spatial indexing

#

or at least a simple version of it, you can find the pattern in the ebook "Game Programming Patterns", i think

winter fossil
#

Yeah, I google it and sounded a bit more advanced than what I've done haha

compact isle
#

@polar island that's a spoiler

#

@tropic shuttle yes it's not the best ๐Ÿ˜…

#

@misty merlin I can check that now

chrome topaz
#

are you using webgl?

#

oh, so it's canvas?

#

webgl should make it pretty fast because you basically will have static buffers for vertices

#

and you just move the camera

tropic shuttle
#

@compact isle Iโ€™m not complaining too loudly tbh. Itโ€™s easy to go off the rails with api purity and end up with stuff like soap or odata

winter fossil
#

@chrome topaz Yeah, the plan is to include it at some point.

chrome topaz
#

kinda makes me want to finish my pob webgl port

winter fossil
#

^^

wind garden
#

@simple ravine I haven't been up to date with what you're working on besides your poesharp lib. Do you run an indexer or something that uses insane bandwidth?

gritty olive
#

I don't see why the tree would be slow ๐Ÿค” it's pretty simple

#

The majority of it's contents is static, the highlight is the only dynamic portion

mortal bone
#

because canvas is slow af

#

it doesn't handle images very well

#

when I was messing around with some prototypes the basic drawing of a circle for nodes was super fast

compact isle
#

@misty merlin it'll have "Shaper Item" or "Elder Item" after the Mirrored/Corrupted/Relic lines

inner sundial
#

Guys, sorry if this question already been asked but I just was wondering if there's something that gather all informations about PoE API and how to use it ?

#

Do you have to be in relation with GGG ?

simple ravine
#

PyPoE will help you out.

smoky temple
inner sundial
#

Thanks @smoky temple

smoky temple
#

@inner sundial glad i could help

misty merlin
#

@compact isle Thanks for checking!

simple ravine
#

Reduced the damage dealt by the trade API.

#

lol

hazy fog
#

taking bets: the trade api change is just going to mention elder:true/shaped:true etc

#

no other change

wind garden
#

any of you guys use angular?

waxen ridge
#

Used angular a few years back

#

1.3 I think it was

keen lichen
#

angular FTW

simple ravine
#

isn't angular terribly slow?

keen lichen
#

Haha, no. I mean I'm an angular dev so I'm like no, go angular! It has it's problem but speed isn't one of them. However, React dev's would rant at me about how slow it is and the dirty checking and so on and so forth. It's like windows vs linux or consol vs pc.

simple ravine
#

That's like comparing apples to oranges.

keen lichen
#

they are both fruits and they are both round?

simple ravine
#

Slow isn't an opinion, it's a fact. Either it is, or it isn't

#

Prefering Windows over Linux or vice versa is an opinion.

keen lichen
#

slow is a relative. You don't think your 50mbs internet is slow but me who is used to 150mbs think it's slow.

simple ravine
#

yes, slower than similar alternatives

#

would make it slow imo

keen lichen
#

but slow in what way? Slow on page load? Slow on processing time? Slow on response? Slow how? When? Not every project is going to need 'speed' in the same spot or in the same way and not every tech stack provides 'speed' in the same spot or the same way.

simple ravine
#

Rendering, obviously.

#

i.e. diff-check etc

keen lichen
#

Hmmm, so my React (I'm just using angular and react because they're the two I'm most familiar with) experience is llimited to hobby code but the preformance between angular and react in that regard is negligible at least in the situations I would use either technology. If it appears instantaneous to the user then it's fine.

simple ravine
#

right

#

just curious regarding the 'angular ftw' thing ๐Ÿ˜›

keen lichen
#

Ah, that was just in response to the 'any of you guys use angular?' I don't usually just run around shouting 'ANGULAR IS WIN' whether or not I feel that way.

simple ravine
#

I'm almost disappointed. I thought you'd fight harder for it ๐Ÿ˜„

keen lichen
#

Oh I mean I could fight 'til I'm blue in the face about why angular is the be-all end-all but I also like plenty of other languages and am willing to recognizes strengths and weaknesses in every language. Except PHP, php can go die.

mortal bone
#

to be fair, it isn't 100% the fault of angularjs

#

js in general is pretty slow

keen lichen
#

oh man now we're talking angularJS vs angular

simple ravine
#

so when other mvvm frameworks perform better than angular, it is the fualt of the javascript vm

mortal bone
#

they are the same thing, just renamed lol

gilded herald
#

And if it is sheer pageload speed you're after there is a lot of optimization that angular really likes having with webpack

mortal bone
#

you can't say 'angular' without a number

keen lichen
#

Yes you can Emmitt... now it's AngularJS or just Angular because Angular 2 and Angular 4 and Angular 5 (that just came out last month) are all now just called 'Angular'

simple ravine
#

normally when you discuss performance with mvvm frameworks, it's the element manipulation that that the mvvm engine is responsible for

mortal bone
#

dom manipulation is slow af

#

always has been

simple ravine
#

sure, however - some frameworks are faster than others achieving the same goal

keen lichen
#

Page load speed with angular is a pretty common complaint that I hear and my reaction to that is always that's a devs fault, there are lots of ways to fix that.

simple ravine
#

I'm refering to UI/UX in SPAs

mortal bone
simple ravine
#

jQuery being slow is super old news lol

mortal bone
#

yes, so there is no way angular is going to be fast lol

#

there is too much overhead for it to be faster than (in 90% of cases) pure js

simple ravine
#

yep

#

interesting how jQuery's css selector is faster than document.querySelector

chrome topaz
#

that's weird

#

is that some kinda potato pc

simple ravine
#

i7 7700K 4.7 Ghz

chrome topaz
#

oh well i guess webkit's js is just way faster at getelementbyid

woeful sphinx
#

these seem to be all over the place

simple ravine
#

interesting

mortal bone
simple ravine
mortal bone
#

class selection in js seems slow

#

oh they are using querySelector...

#

getElementsByClassName should be used

simple ravine
#

well to be fair, $('.bye') is a query selector

#

it might short-circuit the full-fledged query selector in a smart by detecting if the query is a simple class

#

lol:

mortal bone
#

what...

simple ravine
#

Infinity!

#

looks like Firefox caches document.getElementById results

wind garden
#

what's the deal with angular versioning though? I've just been getting into it recently and I can't really tell what is the most commonly used version

simple ravine
#

hmm, or not. now i can't reproduce the Infinity result

wind garden
#

normally I'd use the latest but because of all the dependence on other npm packages, version can make a huge difference

simple ravine
#

off-topic, anyone into Ubiquiti hardware?

wind garden
#

my coworker swears by it

simple ravine
#

yeah, my devops employee too

#

i'm just contemplating between EdgeRouter vs Unifi Gateway + Unifi Switch

#

because I'm going to get a Unifi AP AC-HD for my wifi

#

but i hear EdgeRouter > Unifi USG/Switch

#

but I'm not sure

mortal bone
#

for a home setup?

wind garden
#

if I needed a new router I was going to go with ubiquiti

#

for what it's worth

simple ravine
#

yes, home + home-office

#

i work from home

mortal bone
#

ah ok

wind garden
#

for some context, the coworker of mine that swears by them is a principal engineer working on 5g wireless technology

#

so that's his credentials

simple ravine
#

nice

#

my guy who swears by it is cisco certified

wind garden
#

nice

simple ravine
#

and he said don't go cisco

wind garden
#

ya

simple ravine
#

too expensive with licensing

mortal bone
#

cisco is a pain in my ass

wind garden
#

he really likes the "enterprise quality with a consumer price" thing

#

this discussion all came up with the whole wifi vulnerability thing

simple ravine
#

i just want the latency not to drop when there are packets flying all around

wind garden
#

he went out and bought a ubiquiti router and loves it

simple ravine
#

yaknow, fiance starts those 4K netflix streams, kid goes youtubin'

pseudo ocean
#

yeah, rip my currently 50mbit internet for that

#

๐Ÿ˜‚

#

1 youtube = takes the entire bandwidth for 1 second

#

lag spikes.

mortal bone
#

with unifi you have to get the whole product line.

#

edgerouter you can fit into your current network

simple ravine
#

no, you don't have to, but it's beneficial

mortal bone
#

true

pseudo ocean
#

I'm setting up 6 google wifis around the house + asus RT-AC88U router

simple ravine
#

google wifis?

inner sundial
#

does that mean that we have to stop using jQuery ? ๐Ÿ˜›

pseudo ocean
#

yeah, those mesh network wifis

#

3 in one package

simple ravine
#

google doing wifi hardware now?

pseudo ocean
#

ye boi

mortal bone
#

Looking at the interfaces, if you perfer GUI may as well go with Unifi

#

@inner sundial you can do everything jquery does in pure js lol

simple ravine
#

I have a Ubiquiti ER-X now.. the small one

#

and its UI is nice

wind garden
#

Unifi gets better with multiple units but doesn't require it

#

since it uses MU-MIMO

#

so you could get one unit and if you like it, get a 2nd

#

and have uber wifi coverage and speed

simple ravine
#

if your client devices support MU-MIMO yea

simple ravine
#

I'm skeptical, of those heh

delicate ore
#

i think my company might be ubiquiti dealers, need to check

simple ravine
#

well, unless you're in sweden..

delicate ore
#

there are dealers in america, i think

pseudo ocean
#

komplett? ๐Ÿค”

delicate ore
#

we're in the home automation business

simple ravine
#

Dustin

wind garden
#

you can get them on newegg

simple ravine
#

I want them shipped from sweden tho

#

otherwise i'll have to wait for weeks

wind garden
#

are you in sweden?

delicate ore
#

ah i see

simple ravine
#

lol, yeah @wind garden why else would I want them from Sweden?

wind garden
#

ya looks like Dustin and Avantis are your options

simple ravine
#

They have them in a few other online stores too

wind garden
#

maybe you have a 2nd home in sweden that you're temporarily visiting? ๐Ÿ˜ƒ

pseudo ocean
#

komplett also sells it looks like

simple ravine
#

inet as well

#

some at webhallen

pseudo ocean
#

at least on the norwegian page

#

i'm guessing it's the same

simple ravine
#

u in sweden or norway, alex?

pseudo ocean
#

norway

simple ravine
#

gotcha

pseudo ocean
#

getting my 500/500 later this month ๐Ÿ˜„

simple ravine
#

nice

#

i'm getting 1 Gbps this month ๐Ÿ˜›

pseudo ocean
#

I could buy 1 Gbps, but it's like 500nok more

#

:<

simple ravine
#

they're installing the client node tomorrow morning

#

yea, it's gonna be around 980 SEK for 1 Gbps / 1 Gbps

pseudo ocean
#

that's cheap

#

costs 1529,- NOK here for that

simple ravine
#

yeah, swedish broadband infrastucture development was incentivized by the government, so i guess the price and openess of the fiber stuff is really good around here

pseudo ocean
#

i'm guessing you also have TV included ?

simple ravine
#

no

#

that's purely for the internet connection via Bahnhof

pseudo ocean
#

ahh ok

#

Bahnhof is one of the best isps

#

telia blows

simple ravine
#

Telia for fiber is probably one of your better choices

pseudo ocean
#

prob for gaming : P

simple ravine
#

Telia Sonera should have the best peering you can get

#

considering they own their own NOCs/peering exchanges

pseudo ocean
#

the issue is.. the isps in norway have to "rent" routing from telenor which uses telia

#

and sometimes they mess up the latency from denmark to germany/netherlands

#

and there's no way to complain about this issue

simple ravine
#

damn

#

there are some days i'm glad my parents decided to move from norway to sweden

pseudo ocean
#

hopefully norway gets it's own routing soon lol

#

I think 90% of our traffic goes through sweden first

#

kinda weird

#

which means sweden can monitor norwegian internet traffic ๐Ÿ˜‚

#

hmm, couldn't find any "trade API" note in patch notes?

#

was there in Markov Generated 3.1 PATCH NOTES

simple ravine
#

๐Ÿ˜

#

wat

chrome topaz
#

dominator? that's me

simple ravine
#

i think i'll skip this one lol

cosmic saffron
#

4 pauldrons wasn't enough?

tropic shuttle
#

i went with subjugator

#

redeemer portal was as much as the mtx compelled me, but i use enough API i figured i should chip in a bit

#

also, cloth map, because my glasses need to be cleaned

simple ravine
#

I've spend $2k+ already, but yeah..

simple ravine
#

that became the final decision, will be fun

chrome topaz
#

looks expensive

gritty olive
#

looks likes too much

simple ravine
#

nah, wasn't too bad

shell elk
#

edgerouter looks pretty neat, i was considering mikrotik routers not too long ago for my next house but will take another look

simple ravine
#

mikrotik is apparently douchebags

mortal bone
#

it actually isn't that expensive for a full network setup

simple ravine
#

around โ‚ฌ 1K

mortal bone
#

Yeah, was just looking, and it was close to that in $

simple ravine
#

I'll just spend less on supporter packs for a while

simple ravine
#

nice!

#

how is your experience regarding speed (throughput, latency)?

#

I got the Cloud Key, which should give me the web access ui

simple ravine
#

awesome, looking forward to installing it