**** BEGIN LOGGING AT Sat Nov 17 03:00:00 2018 Nov 17 03:55:52 you mentioned it so i sought it out and had added it to my reading list Nov 17 03:56:04 wiki has a great comparison of ssl/crypto libraries Nov 17 03:56:39 once you get to the elliptic area tho its like "wow okay this is all just... a lot" Nov 17 03:57:00 not that i have any idea how GF(2^255-19) defines a field of a curve, but OKAY Nov 17 03:57:26 i have literaly spent the last three weeks reading docs over docs over docs i mean really i'm going to die from read docs Nov 17 03:57:37 i've read a gross amoutn of documentation and specification Nov 17 03:58:32 and for my company/project, i took what i want the features to be, pinned a architecture, than factored it and refactore to make sure that the architecture i'm builing has much wider use applications Nov 17 03:59:08 you generally don't need to understand how a crypto primitive works though Nov 17 03:59:11 all i have to do is make it through golangs docs on file IO, and then i can a) finish the websites todo list and b) work on uxmux lol Nov 17 03:59:22 zmatt: there's a mix of curiosity and necessity Nov 17 03:59:23 i <3 math Nov 17 03:59:25 like, there's also no short and simple way to explain why AES is secure Nov 17 03:59:28 fair enough :) Nov 17 04:00:03 thew hole process of choosing features, then picking an factoring an architecture that allows you to pivot/add/remove features most easily is something im kind of obsessed with at he moment Nov 17 04:00:31 because i started with like, 50 pages of documents trying to different database structures, api designs, etc, and now i'm down to about 2 pages and its :mwah: Nov 17 04:00:36 not sure if anyone else goes through that Nov 17 04:00:56 or even if there is an official term for it Nov 17 04:00:58 RFC maybe lol Nov 17 04:01:32 oh also i discovered Bad Blood by John Carreyrou yesterday and sat down and read the whole book instead of doing anywork and it was _so effing good_ Nov 17 04:01:40 its about the Teranos Scam Nov 17 04:01:42 Theranos* Nov 17 04:01:43 lol Nov 17 04:04:53 anyway, as for elliptic curve crypto... it can definitely be helpful to understand what a cyclic group is (since this is ultimately the "API" an elliptic curve provides to build crypto primitives on) Nov 17 04:05:04 but the math of elliptic curves themselves is a pretty deep rabbit hole Nov 17 04:05:21 ("It is possible to write endlessly about Elliptic Curves – this is not a threat!" -- Victor S. Miller) Nov 17 04:05:34 yeha i'm guessing its not just a segment of an elipses Nov 17 04:06:25 no, their name does ultimately come from the ellipse, but via a rather scenic route ;) Nov 17 04:06:28 its one of many areas in math that i'm interested in learning about Nov 17 04:06:33 yeah i mean its more about primes isn't it? Nov 17 04:06:41 or maybe i'm wrong Nov 17 04:07:11 well no. primes are just things that show up everywhere in number theory Nov 17 04:07:14 but i mean, i need some work in linear... controls... discrete tranforms... i'd like to study other orthogonal spaces besides ones built from sinusoids Nov 17 04:07:43 but elliptic curves can also, and in fact were originally, defined over the real or complex numbers. and in that case no primes are involved in any way Nov 17 04:07:58 are we defining curves in weird spaces? Nov 17 04:08:09 zmatt what did you study formally again? Nov 17 04:08:17 (real elliptic curves are related to elliptic integrals, which are integrals that show up when trying to determine the circumference of an ellipse. this is where the name comes from) Nov 17 04:08:33 math Nov 17 04:08:43 yeah integrals, if the greeks had figured out the whole infinity thing early Nov 17 04:09:02 but alas, we had to wait till 1600/1700 to put it together Nov 17 04:09:07 and the curves used in crypto are all defined over finite fields Nov 17 04:09:26 i only know about vector fields i don't know about more general fields Nov 17 04:09:29 i didn't major in math Nov 17 04:09:51 vector fields are totally unrelated Nov 17 04:10:13 well i figured that they were just a type of field Nov 17 04:10:18 and finite fields are another class of fields Nov 17 04:10:35 a field in this context means a set of number-like-objects that support addition, subtraction, multiplication, and division (other than by zero) Nov 17 04:11:07 number-like-objcets Nov 17 04:11:10 something numbery Nov 17 04:11:37 i suppose that means they support comparison as well Nov 17 04:11:44 nope Nov 17 04:11:47 well, equality Nov 17 04:11:56 but fields are rarely ordered Nov 17 04:12:01 okayyyy Nov 17 04:12:02 whhhat Nov 17 04:12:14 i don't see how you can differntiate between addition and subtraction without having comparisons Nov 17 04:12:34 unless your criteria for determining an operator that constitutes addition or substraction is something not intuitive from the arithmetic definition Nov 17 04:13:07 this is the kind of upsetting that i like Nov 17 04:13:08 all that matters is that satisfies a bunch of laws Nov 17 04:13:19 the elements themselves are treated as black boxes Nov 17 04:13:57 right i mean i guess thats the point of generalizing a certain class of... somethings Nov 17 04:16:23 https://pastebin.com/raw/CXKeLRjX Nov 17 04:16:29 this is basically the API of a Field Nov 17 04:17:03 subtraction and division are just shorthands, i.e. a - b := a + (-b) Nov 17 04:17:07 ahhahaha it reminds me of c++ Nov 17 04:17:24 i don't know is :: and -> a syntax pulled from something Nov 17 04:18:11 zmatt does that even say anything! Nov 17 04:18:21 ehh, it's mostly just math notation I guess. I'm not sure why I wrote :: instead of :, maybe Haskell uses that notation? Nov 17 04:18:39 all you said that you have a set of things that have a zero value, a one value, and the four operators you mentioned Nov 17 04:18:41 the operations are also required to satisfy a bunch of relations Nov 17 04:18:54 right i mean, are they the relations that qualify the operators Nov 17 04:19:04 addition and multiplication must be order-independent for example Nov 17 04:19:10 (both commutative and associative) Nov 17 04:19:25 associative Nov 17 04:19:25 yeah Nov 17 04:19:28 zero and one are the identity for addition and multiplication Nov 17 04:19:45 oh yeah makes sense Nov 17 04:20:01 weird way to define all this Nov 17 04:20:04 but hey its math Nov 17 04:20:06 i.e. 0 + x == x for all x, 1 * x == x for all x Nov 17 04:20:20 right that i understand intuitively somehow Nov 17 04:20:34 negate provides an inverse for addition, i.e. x + (-x) = 0 for all x Nov 17 04:20:50 invert does the same for multiplication of nonzero elements Nov 17 04:21:05 okay interesting Nov 17 04:21:11 this sounds like learning abstract algebra Nov 17 04:21:13 and multiplication distributes over addition, i.e. a * (b + c) = a * b + a * c Nov 17 04:21:34 maybe not Nov 17 04:21:46 but i mean, its actually helping me understand a lot of weird stuff i've seen from my more mathy friends Nov 17 04:21:46 yep, abstract algebra is what this would fall under Nov 17 04:22:00 i never had the time to study what they study because i was just on other electrical things Nov 17 04:22:23 but anyway, 'Field' is just an interface that's useful enough to give it a name Nov 17 04:22:23 but my best friends/employee/business partner is _obsessed_ with topology Nov 17 04:22:37 examples include the rational numbers, real numbers, complex numbers Nov 17 04:22:46 yeah those are pretty intuitive Nov 17 04:22:57 but also rational functions (fractions of polynomials) with coefficients in some other field Nov 17 04:23:14 yeah thats where it gets weird Nov 17 04:23:26 complex numbers are the weirdest concept Nov 17 04:23:37 the whole i^2 = -1 thing is just what in the fuck Nov 17 04:23:37 but there are also finite fields of various sizes Nov 17 04:23:57 why is that weird? people also used to consider negative numbers to be extremely weird Nov 17 04:24:10 yeah i know but negative numbers have an intuitive basis Nov 17 04:24:15 when counting debt Nov 17 04:24:29 i realize the venetians disagreed and as such we still have "credits" and "debits" in our accounting system Nov 17 04:24:35 :) Nov 17 04:24:58 but they should have figured out negative numbers! (double ledger accounting is 400 years older than our adoption of negatives, but I think euler footnoted an idea about using negatives for debts) Nov 17 04:25:23 might not have been euler Nov 17 04:25:36 yeah no i^2 = -1 has no intuitive basis Nov 17 04:25:48 i mean okay, so you needed a variable that represents sqrt(-1) Nov 17 04:25:49 fine Nov 17 04:26:02 and i guess you can use it as an intermediary when doing calculations for real life application Nov 17 04:26:21 but how did we come to decide it could be thought of as a system of rectangular coordinates Nov 17 04:26:34 and then how did we get into the whole e^(i) thing i mean what in gods name Nov 17 04:26:36 anyway, finite fields are extremely friendly for computers, since it means the size of an element is fixed, whereas the memory use of rationals tends to blow up rapidly when doing arithmetic with them, and real/complex numbers can only be used by approximation Nov 17 04:27:02 and approximation is no good for things used in crypto obviously Nov 17 04:27:45 huh i guess that makes sense Nov 17 04:27:47 yeah the complex exponential function is not something I can explain in a few lines ;) Nov 17 04:28:07 because in crypto its not like we're really trying to measure something, we're more concerned about the operations themselves than what they're operating on Nov 17 04:28:34 the oeprations and their inversability.. Nov 17 04:28:39 exactly Nov 17 04:28:43 or something like that Nov 17 04:29:43 i mean i've worked a lot with complex exponentials Nov 17 04:29:48 i <3ed laplace and fourier Nov 17 04:29:54 100% obsession Nov 17 04:30:03 but like Nov 17 04:30:08 the intuitive grasp of such a system Nov 17 04:30:10 complex analysis is really elegant and clean, much more so than real analysis Nov 17 04:30:30 i do like math Nov 17 04:30:34 its been a while, i should pick up a math book Nov 17 04:30:48 i have a spivaks calculus but i think something more practical like a linear algebra would make more sense Nov 17 04:30:57 ANYWAY Nov 17 04:31:12 i need to go read about golangs file io so i can once and for all get back to actually applying my knowledge Nov 17 04:31:33 golang... eh, to each their own Nov 17 04:31:37 i mean actuall Nov 17 04:31:41 okay, so, for junior programmers Nov 17 04:31:45 its very similiar to C Nov 17 04:31:52 but they're not afraid of it Nov 17 04:32:00 lol Nov 17 04:32:08 like, python/javscript programmers are picking up golang and they're into it Nov 17 04:32:15 but they are afraid of C and don't like pointers Nov 17 04:32:49 it really is just C with built in hashmaps, message queue's between threads, and dynamic pointers Nov 17 04:32:58 those three datatypes are basically C++ objects built into the language to me Nov 17 04:33:14 then it has its mark and sweep garbage collector, and it's own thread scheduler Nov 17 04:33:18 (userspace tasking) Nov 17 04:33:24 which i think is just coroutines? Nov 17 04:33:40 plus the nerds in #go-nuts are pretty fun Nov 17 04:33:46 lol Nov 17 04:33:47 OHH but the syntax is TOTALLY eff'ed up Nov 17 04:33:49 nice channel name Nov 17 04:34:09 they were like hey, what changes can we make that are absolutely trivial, but will WRECK every C programmer? i've got an idea. put the types at the _end_ of the decleration Nov 17 04:34:38 * ayjay_t shrugs Nov 17 04:34:44 * ayjay_t is a type anyway Nov 17 04:35:19 eh, I didn't mind that part I think, although it takes some getting used to Nov 17 04:35:26 though iirc its syntax was indeed a bit weird Nov 17 04:35:44 yeah i think they added a lot of "shortcuts" there that just made it a bit unreasonable Nov 17 04:35:48 and unreadable Nov 17 04:35:53 the compiler pissed me off with its unsuppressable errors on unused imports Nov 17 04:36:01 oh yeah all that is total crap Nov 17 04:36:07 its obnoxious Nov 17 04:36:09 it should bea warning. Nov 17 04:36:24 they can't have done that for any other reason than mental illness Nov 17 04:36:27 like, if I had to use golang for work, I would patch that into the compiler Nov 17 04:36:32 yeah Nov 17 04:36:58 but the main reason i like is because i can get the python/javascript people to use a language with much more similiar performance/symantics to C Nov 17 04:37:03 although i'd prefer if everything were C Nov 17 04:37:09 I'm also concerned that golang seems to encourage concurrency without having really done anything to try to solve the hard problems with concurrency Nov 17 04:37:23 i'm not sure Nov 17 04:37:49 it does require you to understand those problems, and know what good patterns are for dealing with it, rather than something like javascript, which handles it for you through its single threadiness Nov 17 04:37:58 but i prefer patterns > frameworks/apis anyway Nov 17 04:38:38 i do really like how you can use a selct statement to wait on the first available inter-thread message queue Nov 17 04:38:57 single-threading can be an excellent way to retain the ability to reason about program flow Nov 17 04:39:46 yeah i think, for sure Nov 17 04:39:55 although i guess if you have 32 cores or something... Nov 17 04:40:04 might be time to start thinking about concurrency Nov 17 04:40:13 i picked up libdill which i believe is a golang-like library for C Nov 17 04:40:18 it has a cousin, libmill i think Nov 17 04:40:31 sure, but for most programs you'd need to *think* about concurrency if you're actually going to get an increase in performance rather than a decrease from all the interlocking Nov 17 04:41:21 i stay away away away from that problem set Nov 17 04:41:38 everything i can do to avoid resource contention, i do Nov 17 04:47:47 interesting design choice that the built-in hashmaps are not safe for concurrency, you have to do your own locking externally Nov 17 04:48:43 eh, I guess you'd need locking on shared data anyway so it makes sense Nov 17 04:49:30 there is a threadsafe hashmap for mainly addititive hashmaps Nov 17 04:49:53 i've been looking to hashmaps a lot lately because i'm using postgresql but their hashmap implementation is rather "typical" compared to the breadth of features in btrees Nov 17 04:50:05 it surprises me that you're not running into any problems with programmers used to python/javascript (which are both languages in which data races are a non-issue due to single-threading) using a language which encourages concurrency yet requires manual locking to prevent data races Nov 17 04:50:20 they don't like to use concurrency Nov 17 04:50:35 some things i need coax out of them/teach them Nov 17 04:50:41 but its not like C Nov 17 04:50:45 where they basically freeze Nov 17 04:50:49 in other words, performance may actually decrease compared to javascript due to synchronous blocking :) Nov 17 04:51:07 that would be my error, i suppose Nov 17 04:51:16 the people i work with are brilliant people, they are smarter than me for sure Nov 17 04:51:19 but they are a bit younger Nov 17 04:51:45 i consider myself a failure if i hire people who aren't more talented than me Nov 17 04:52:39 although there is the issue of being weird about C Nov 17 04:52:48 i can't push it too hard without really sounding crazy tho Nov 17 04:53:10 like some sort of stallman-torvalds-creature ranting about programming languages when plenty of businesses build their stacks on other technologies Nov 17 04:55:32 if they're scared of pointers maybe they should do some assembly programming on a simple architecture, to better grasp that computers are dumb thing that perform simple operations Nov 17 04:55:37 *things Nov 17 04:56:34 i mean they're fine, we got over it in the beginning Nov 17 04:56:37 i think part of it is about brand Nov 17 04:56:44 and by beginning i mean two years ago Nov 17 04:56:50 golang is "the google language" Nov 17 04:56:53 C is for old people. Nov 17 04:56:59 since once you understand how memory works and that pointers are just memory addresses, the only thing that remains scare is C's declaration syntax :P Nov 17 04:57:01 "it doesn't even have generics..." Nov 17 04:57:11 and overloaded operators for char* Nov 17 04:57:15 thats scary to me. Nov 17 04:57:33 (not really) Nov 17 04:57:35 well can't argue with that, it doesn't have generics or overloading (except for the built-in overloading of arithmetic operations) Nov 17 04:57:52 yeah, i mean, but i _like_ its small surface area Nov 17 04:58:02 but they are just naturally drawn to other languages Nov 17 04:58:12 although they really did pick up the PRUs way better than i expected Nov 17 04:58:49 C certainly used to be simple and allow one to easily maintain a mental model of what the computer does Nov 17 04:58:53 YEP Nov 17 04:59:00 thats why i like it Nov 17 04:59:07 compilers making rabid advantage of "undefined behaviour" kinda ruined that though Nov 17 04:59:09 but they're like "noo lets do rust, lets do golang, bal bla bla" Nov 17 04:59:16 hey rust is cool too Nov 17 04:59:25 meh it poops all over my $HOME Nov 17 04:59:26 i hate that Nov 17 04:59:50 i also hate when languages ship with their own version management, i'd rather they just keep a directory/doc list of good repos or something Nov 17 05:00:00 version/dep management Nov 17 05:00:06 although thats all languages these days Nov 17 05:00:22 it'll be `git clone --recurse` for me dawg Nov 17 05:00:40 it has its benefits Nov 17 05:00:49 I definitely like rust a lot more than go Nov 17 05:01:10 go is 100% for network stuf Nov 17 05:01:21 and my understand is rust is 100% for systems... like really good with emebdded Nov 17 05:01:25 but i'm not sure Nov 17 05:02:42 eh, since when are languages "for" one thing Nov 17 05:02:46 what's C or C++ "for" ? Nov 17 05:03:03 rust is basically for the same things Nov 17 05:03:21 yeah Nov 17 05:03:28 except with static pointer safety analysis Nov 17 05:03:31 i mean i see go 100% for network because of its "opinions" Nov 17 05:03:45 it's "opinions" about scheduling threads, and about pointers Nov 17 05:03:51 about memory Nov 17 05:04:13 but rust is... hmm Nov 17 05:04:16 i might have to take a look Nov 17 05:04:26 i'm getting pretty tired of learning new things, i'm ready to get rich rofl Nov 17 05:04:39 * ayjay_t cries in C Nov 17 05:04:47 rust still needs some time to mature I think Nov 17 05:14:46 rust would probably be useful for one of my colleagues, whose c++ code still has some weird random crashes :P although I've also pointed out that that particular piece of code has no good reason to be using dynamic memory allocation whatsoever, and banishing that would probably also greatly reduce the risk of weird random crashes ;) Nov 17 05:16:16 (plus it would be a good idea anyway since most of the program is a real-time thread, and dynamic memory allocation may grab a mutex and result in priority inversion) Nov 17 17:47:22 thinkfat_: i usually don't order panels for personal stuff Nov 17 17:47:28 thinkfat_: as i'm soldering those by hand Nov 17 17:47:34 thinkfat_: where panels don't make much sense Nov 17 17:48:25 thinkfat_: if i get something assembled by a contractor, i give them the gerber files and tell them to order them themselves. they know best how to panelize for their needs **** ENDING LOGGING AT Sun Nov 18 02:59:59 2018