jhass changed the topic of #crystal-lang to: The Crystal programming language | https://crystal-lang.org | Crystal 0.35.1 | Fund Crystal's development: https://crystal-lang.org/sponsors | GH: https://github.com/crystal-lang/crystal | Docs: https://crystal-lang.org/docs | Gitter: https://gitter.im/crystal-lang/crystal
teardown has quit [Ping timeout: 260 seconds]
teardown has joined #crystal-lang
<FromGitter> <mwlang> @naqvis and @Blacksmoke16 thank you for helping me out there. Both suggestions improve. I didn't quite get the forall T part. where can I learn more about forall? meanwhile, I came up with this, which I think constrains to the parent class, but not sure? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f63fdb989b38d0921354ad5]
<FromGitter> <Blacksmoke16> they're quite powerful
<FromGitter> <Blacksmoke16> since `T` exists at compile time. I.e. you could grab annotations off it etc
<FromGitter> <mwlang> one thing that surprises me. If I try to memoize the price_filter like so: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f63fe9bd993b837e06e8cef]
<FromGitter> <Blacksmoke16> is `price_filter` something that should be serialized?
<FromGitter> <mwlang> no
<FromGitter> <mwlang> it's effectively serialized already within the filters array
<FromGitter> <Blacksmoke16> do you have a `@[JSON::Field(ignore: true)]` on it?
<FromGitter> <mwlang> I don't have a getter on it.
<FromGitter> <Blacksmoke16> doesnt matter, serializable sets ivars directly
<FromGitter> <mwlang> oh.
<FromGitter> <mwlang> well, I also don't want an optional/nillable getter.... not sure how to handle it.
<FromGitter> <mwlang> I'm just basically trying to set up a lazy way to pluck a PriceFilter from the array of filters iff it's actually accessed (which is going to be relatively rare).
<FromGitter> <mwlang> i.e. out of three hundred market pairs, I may access this price filter property for 2 or 3 of those markets.
<FromGitter> <mwlang> same goes for the four or five other types of filters I'm planning to set up like this.
<FromGitter> <Blacksmoke16> are these market paris distinct types?
<FromGitter> <Blacksmoke16> or one type used for them all
<FromGitter> <Blacksmoke16> pairs*
<FromGitter> <mwlang> sorry, I didn't quite understand the question and I'm also mixing terminology a bit. "market pair" is actually "ExchangeSymbol" (the pairs being base and target symbols): https://github.com/mwlang/binance/blob/master/src/binance/client/rest/responses/exchange_symbol.cr
<FromGitter> <Blacksmoke16> could use the bang getters
<FromGitter> <mwlang> each ExchangeSymbol can have zero or more ExchangeFilters from this list: https://github.com/mwlang/binance/blob/master/src/binance/client/rest/responses/exchange_filter.cr but I intend to supply sane defaults for when they're absent.
<FromGitter> <mwlang> That won't interfere with trying to memoize `price_filter` and using `def price_filter` as a lazy resolver?
<FromGitter> <Blacksmoke16> not sure i follow enough to know
<FromGitter> <mwlang> ok, experiment time! :-D
<FromGitter> <mwlang> wow, that worked! ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f64021789b38d0921355509]
<FromGitter> <Blacksmoke16> well to be clear you're not using the getter, so its the same as like `@price_filter : Binance::Responses::PriceFilter?`
<FromGitter> <Blacksmoke16> well to be more clear, the getter is being redefined
<FromGitter> <mwlang> I like being clear, changing getter! to @price_filter ...
<FromGitter> <mwlang> and I added in `{% raise "This only works for Parent types" unless T <= Binance::Responses::ExchangeFilter %}` to guard against unexpected T
<FromGitter> <Blacksmoke16> is that really needed since you had a `.class` type restriction on it?
<FromGitter> <mwlang> I wondered. I actually don't think it's needed at all since all implements are living inside a single class.
baweaver has quit [Ping timeout: 240 seconds]
deavmi has quit [Read error: Connection reset by peer]
deavmi has joined #crystal-lang
<FromGitter> <mwlang> @Blacksmoke16 thanks once again for your help. These changes make my life *much* easier! end result: https://github.com/mwlang/binance/blob/master/src/binance/client/rest/responses/exchange_symbol.cr
<FromGitter> <Blacksmoke16> https://github.com/mwlang/binance/blob/master/src/binance/client/rest/responses/exchange_symbol.cr#L39, what you had before would prob be better
<FromGitter> <Blacksmoke16> i didnt realize you could use that form of select when the type is in a variable
<FromGitter> <mwlang> hmmm...it's what I shared above a little earlier ... what are you referring to as "before"?
deavmi has quit [Read error: Connection reset by peer]
<FromGitter> <Blacksmoke16> `def find_or_initialize(filter_class : Binance::Responses::ExchangeFilter.class)`
deavmi has joined #crystal-lang
<FromGitter> <mwlang> Ah, instead of "T"
<FromGitter> <mwlang> I went back and forth on that...but not sure of the pros and cons of the two choices.
<FromGitter> <mwlang> the pro here, I reckon is that it convey intent more clearly than "T"
<FromGitter> <Blacksmoke16> yes, also so you cant pass it random types
<FromGitter> <mwlang> ```code paste, see link``` ⏎ ⏎ does work. One thing I'm curious about, for the `filter` getter, why can't I shorten the `of Binance::Responses::ExchangeFilter` to just `ExchangeFilter` like I do elsewhere in this class? ⏎ It's all namespaced correctly. [https://gitter.im/crystal-lang/crystal?at=5f6415e3f969413294f1ac53]
<FromGitter> <mwlang> for clarity: `getter filters : Array(ExchangeFilter) = [] of ExchangeFilter`
<FromGitter> <Blacksmoke16> is the type required before this one?
<FromGitter> <mwlang> ```code paste, see link``` ⏎ ⏎ There's a possibility it's not...the main file just has `require "./binance/responses/*"` [https://gitter.im/crystal-lang/crystal?at=5f64169ef969413294f1ae8f]
<FromGitter> <Blacksmoke16> yea that imports in ABC order
<FromGitter> <Blacksmoke16> so if this file comes before the other the other type isnt required yet
<FromGitter> <mwlang> `ExchangeFilter` comes before `ExchangeSymbol`
<FromGitter> <Blacksmoke16> :shrug:
<FromGitter> <Blacksmoke16> try adding a require at the top of this file
<FromGitter> <Blacksmoke16> for it
<FromGitter> <mwlang> good idea
<FromGitter> <mwlang> same error!
<FromGitter> <Blacksmoke16> 😮
<FromGitter> <mwlang> bug with the `of` scope?
<FromGitter> <Blacksmoke16> :shrug: i doubt it
<FromGitter> <Blacksmoke16> try and make a smaller example to see?
alexherbo2 has quit [Ping timeout: 272 seconds]
zorp has quit [Ping timeout: 272 seconds]
<FromGitter> <Dan-Do> I want to parse module export written by jvs syntax in crystal ⏎ `exports.tpl_home = {"t":"div","a":{"id":"tpl-home"},"i":[...recursive children...]};`
<FromGitter> <Blacksmoke16> oof gl
<FromGitter> <Blacksmoke16> well, it just looks like json
<FromGitter> <Dan-Do> yeap, declarative json
<FromGitter> <Dan-Do> I can read each line until it reach `;` then it's an object
<FromGitter> <Dan-Do> but It is not a good way I think
<FromGitter> <Blacksmoke16> whats the goal of this?
<FromGitter> <Dan-Do> it's a compiled html template using on web front-end. Now I want to render that template on crystal back-end
<FromGitter> <mwlang> small example flies: https://carc.in/#/r/9qa8 so that hypothesis is bust
<FromGitter> <Blacksmoke16> wouldnt it be easier to just render the html on the backend versus compile on front end, parse, and recompile?
<FromGitter> <ibraheemdev> Hey!
<FromGitter> <Blacksmoke16> hi
<FromGitter> <Dan-Do> the compiled templates are used on both front and back -end
<FromGitter> <Blacksmoke16> could you have some intermediate format that both ends could consume to do what they need?
<FromGitter> <ibraheemdev> At first glance, crystal looks awesome! It combines all the best parts of other languages, ruby's beauty, go channels, C speed, rust macros...
<FromGitter> <Blacksmoke16> indeed
<FromGitter> <ibraheemdev> I'm looking to get involved in the language on GitHub, any place I could look to get started?
<FromGitter> <Blacksmoke16> improving documentation is always welcomed
<FromGitter> <Dan-Do> Here is the template before compiled ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f6419f2ce5bbc7ffdd0d72a]
<FromGitter> <Blacksmoke16> are some modules that are not documented at all
<FromGitter> <mwlang> are there open issues for those undocumented modules?
<FromGitter> <Blacksmoke16> i doubt it
<FromGitter> <ibraheemdev> Sure, I could help out with that.
<FromGitter> <mwlang> I would be up to documenting the undocumented here and there if I knew about 'em. :-p
<FromGitter> <ibraheemdev> But I am more interested in the standard
<FromGitter> <ibraheemdev> .. library, and maybe some popular frameworks
<FromGitter> <Blacksmoke16> fair enugh
<FromGitter> <mwlang> I was poking through open issues earlier this week trying to see if I could spot some easy ones
<FromGitter> <mwlang> one thing that surprised me was markdown is still unresolved!
<FromGitter> <Blacksmoke16> hm?
<FromGitter> <mwlang> markdown in the compiler/stdlib vs. as a separate shard.
<FromGitter> <mwlang> so I can do some documentation using tables.
<FromGitter> <ibraheemdev> As in markdown parsing?
<FromGitter> <mwlang> yup. the compiler's stdlib markdown support leaves a lot to be desired.
<FromGitter> <ibraheemdev> Oh yeah, it looks like a work in progress. Thanks, that looks promising
<FromGitter> <Blacksmoke16> imo a better solution to handle doc generation would be better time spent
<FromGitter> <Blacksmoke16> versus improving something that is only used for doc generation
<FromGitter> <mwlang> like building a yard or rdoc equivalent that Ruby has?
<FromGitter> <Blacksmoke16> not sure
<FromGitter> <ibraheemdev> That would also be a really cool project. I'll open an issue in the repo. Most languages have a standard documentation generator...
<FromGitter> <Blacksmoke16> to be clear there already is one
<FromGitter> <Blacksmoke16> but its deff not anything super advanced
f1reflyylmao has joined #crystal-lang
<FromGitter> <Blacksmoke16> more so was saying dont improve the `Markdown` module if you just want better markdown support (outside of doc generation)
f1refly has quit [Ping timeout: 272 seconds]
<FromGitter> <ibraheemdev> Yes, but wouldn't something like godoc or rdoc be much better? A standardized doc generator and single source for all shards.
<FromGitter> <Blacksmoke16> Not sure I follow. There is already a standardized doc generator
<FromGitter> <Blacksmoke16> That's built into the language
<FromGitter> <ibraheemdev> Sorry, I meant a doc generator that supports more than just markdown, since right now its pretty limited.
<FromGitter> <Blacksmoke16> Current one also outputs json that can be consumed for more complex stuff
<FromGitter> <ibraheemdev> Ok, thanks for you help. Ill look into this more
<FromGitter> <Blacksmoke16> Majority of the time the current implementation is sufficient
<FromGitter> <ibraheemdev> Yeah, i guesa this really isnt a priority
<FromGitter> <Blacksmoke16> Work on https://github.com/crystal-lang/crystal/issues/8598 for me 😉
<FromGitter> <ibraheemdev> Is there anything big missing from te stdlib?
<FromGitter> <ibraheemdev> Oh YAML, ill look into it 👍
<FromGitter> <Blacksmoke16> I know encryption stuff could use a better API, other than that, http client is only thing that comes to mind
<FromGitter> <ibraheemdev> What about common shards?
<FromGitter> <Blacksmoke16> Sure there are plenty of shards that could use a maintainer
<FromGitter> <mwlang> what's lacking on http client?
<FromGitter> <mwlang> that's some serious call to action there. Or at least, feels like a fairly large task/effort
<FromGitter> <Blacksmoke16> indeed
teardown has quit [Ping timeout: 260 seconds]
maxpowa has quit [Ping timeout: 260 seconds]
maxpowa has joined #crystal-lang
Liothen has quit [Ping timeout: 260 seconds]
issyl0 has quit [Ping timeout: 260 seconds]
kevinsjoberg has quit [Ping timeout: 260 seconds]
issyl0 has joined #crystal-lang
Liothen has joined #crystal-lang
kevinsjoberg has joined #crystal-lang
<FromGitter> <extremety1989> how can i do benchmark function ?
<FromGitter> <extremety1989> require "benchmark" ⏎ ⏎ Benchmark.ips do |x| ⏎ fibo(30) ⏎ end [https://gitter.im/crystal-lang/crystal?at=5f64642ac1d1a53705ada92d]
<FromGitter> <extremety1989> how to mesure function in miliseconds ?
<FromGitter> <extremety1989> here is javascript example i wat same with crystal
<FromGitter> <extremety1989> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f64665cf51808513b4f1839]
<FromGitter> <naqvis> https://crystal-lang.org/api/0.35.1/Benchmark.html#measure(label=%22%22,&):BM::Tms-instance-method
<jhass> generally ips is to prefer for benchmarking though, it deals with some pitfals
<FromGitter> <extremety1989> puts Benchmark.realtime { fibonacci(30) }
<FromGitter> <extremety1989> like this ?
<FromGitter> <extremety1989> 00:00:00.010426700
<FromGitter> <extremety1989> 1) 010 nanoseconds ?
<jhass> that's hours, minutes, seconds, fractions of a second
<jhass> so 10 milliseconds
<jhass> realtime is elapsed time, not CPU time FWIW
<FromGitter> <extremety1989> 00:00:11.814994700
<FromGitter> <extremety1989> fibo(45)
<FromGitter> <extremety1989> it is slow
<FromGitter> <extremety1989> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f646961a9c2c8511ea1d07e]
<FromGitter> <extremety1989> can it be improoved ?
<FromGitter> <extremety1989> ..
<jhass> sure, find a tail recursive solution and turn on release mode
<jhass> think about trading memory ( = caching results) for speed
<FromGitter> <extremety1989> crystal test.cr --release
<FromGitter> <extremety1989> like that ?
<jhass> that's the second half of my first suggestion, yes
<FromGitter> <extremety1989> i do not want use recursive
<FromGitter> <vsmilesv> Hello, a complete newbie here, trying to connect some crystal code to a PG database, but cannot figure how to resolve the 'Error: already initialized constant DB::TYPES'. I followed all the crystal docs instructions on the crystal-db usage and the relevant APIs but am not sure what I'm doing wrong... Any help greatly appreciated.... Thanks ⏎ ⏎ '''
ua has quit [Ping timeout: 240 seconds]
<FromGitter> <naqvis> @extremety1989 ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f646d875fde567ffa554d77]
<FromGitter> <extremety1989> recursive seems to be complicated :D
<jhass> fib2 is not recursive
<jhass> yours is
<jhass> (but not tail recursive)
<FromGitter> <extremety1989> i mean tail recursive
<FromGitter> <extremety1989> :D
ua has joined #crystal-lang
<jhass> naqvis: I think it's off by one
<jhass> fwiw
<FromGitter> <naqvis> aahh
<FromGitter> <naqvis> yeah
<FromGitter> <naqvis> thanks jhass
<FromGitter> <naqvis> it should be `3.upto(n)` instead
<FromGitter> <naqvis> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f647054603d0b37f43d0de6]
<jhass> doesn't beat iterative, but here's tail recursive and it's in the same ballpark at least: https://p.jhass.eu/8x.txt
<FromGitter> <naqvis> yeah, problem with first recursive is that it calculates values twice e.g for fib(20), it need to calculate f(19) and f(18), then f(19), it need to calculate f(18) and f(17) first, and so on.
<jhass> yeah, that's the main diff
<jhass> haha, I realized I don't need the second return
<jhass> and that made LLVM happy enough to just precompute it: fib3 761.27M ( 1.31ns) (± 5.04%) 0.0B/op fastest
<FromGitter> <naqvis> wow
<jhass> tricking it out of that (n = 3; fibX(n + 42)) brings it closer together for me after dropping the second return, guess LLVM can optimize it better then
<jhass> or maybe it can optimize the iterative solution less? :shrug:
<FromGitter> <naqvis> tail-recursions are good candidates of optimization by compiler
<FromGitter> <naqvis> so I also doubt the optimization oppty for looping construct
<jhass> well, going from the constant it might precompute some iterations, then give up
<jhass> I get some 54M for your version with 45 and some 36M for n + 43, while the tail recursive stays in 34-36M ballpark
<FromGitter> <naqvis> i was just fiddling around, and notice `upto` construct is slower than `while`
return0e[m] has quit [Quit: killed]
psydroid has quit [Quit: killed]
ryanprior has quit [Quit: killed]
<jhass> for constant or for dynamic input?
<jhass> (or regardless of)
<FromGitter> <naqvis> `3.upto(n)` vs `idx=3; while idx <= n`
<jhass> yeah, got that much
<jhass> I mean fib2(45) or fib2(n + 42) ?
<FromGitter> <naqvis> first one fib2(45)
<jhass> wouldn't be surprised if that's just LLVM giving up a bit sooner in precomputing in the upto variant then, some limit on stackframes or so
<FromGitter> <naqvis> with fib(n+42) ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ fib4 is `while` construct [https://gitter.im/crystal-lang/crystal?at=5f6476efc1d1a53705addbe4]
<jhass> haha, how's it slower
<FromGitter> <naqvis> with fib(45) ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ fib3 beat all :P [https://gitter.im/crystal-lang/crystal?at=5f647778a9c2c8511ea1f66b]
<FromGitter> <naqvis> using your 2 liner fib3 implementation
<jhass> that's just precomputing it all :D
<jhass> same for fib4 there
<FromGitter> <naqvis> :P
ryanprior has joined #crystal-lang
ryanprior has quit [Remote host closed the connection]
hamoko[m] has joined #crystal-lang
return0e[m] has joined #crystal-lang
psydroid has joined #crystal-lang
ryanprior has joined #crystal-lang
zorp has joined #crystal-lang
alexherbo2 has joined #crystal-lang
hamoko[m] has quit [Quit: Idle for 30+ days]
ua has quit [Remote host closed the connection]
<FromGitter> <Dan-Do> > Hello, a complete newbie here, trying to connect some crystal code to a PG database, but cannot figure how to resolve the 'Error: already initialized constant DB::TYPES'. I followed all the crystal docs instructions on the crystal-db usage and the relevant APIs but am not sure what I'm doing wrong... Any help greatly appreciated.... Thanks ⏎ > ⏎ > ''' ⏎ > ⏎ ...
<FromGitter> <Dan-Do> Then add some statements there to debug what happened. That's a great thing of open source world 😏
ua has joined #crystal-lang
<FromGitter> <riffraff169> re what the other guy said, im looking at contributing too...been looking through tickets to see where i could
<FromGitter> <vsmilesv> > Then add some statements (my favorite one is `pp!`) there to debug what happened. That's a great thing of open source world 😏 ⏎ ⏎ ...will have a go.. thanks for suggestions!
<FromGitter> <Blacksmoke16> pretty sure thats a compile time error so idt `pp!` would help
<FromGitter> <Blacksmoke16> can you share some code?
<FromGitter> <vsmilesv> > pretty sure thats a compile time error so idt `pp!` would help ⏎ ⏎ I posted the same post on the crystal-db channel with the code (sorry, should have communicated this better)... got some success as suggested there, but am now getting connection denied to the PG...
<FromGitter> <Blacksmoke16> theres a db channel?
<FromGitter> <Blacksmoke16> try like ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5f64af3cb468994d0d38f012]
<FromGitter> <Blacksmoke16> connection denied, sure your username/password is correct? is the db running etc
<FromGitter> <vsmilesv> Just tried your suggestion and got - ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ I am connected to the PG container and I can browse through the data - I see the relevant tables and databases - I am connected... Is there a specific parameter withing the Crystal code to fill the relevant un/pass? [https://gitter.im/crystal-lang/crystal?at=5f64b0baea62d70e651d8a35]
<FromGitter> <Dan-Do> Did you connect to the db successfully using other tool? Try to disable firewall?
<FromGitter> <Blacksmoke16> try including username/pass in the connection string
<FromGitter> <Dan-Do> On Fedora, I am using: `sudo systemctl stop firewalld`
<FromGitter> <vsmilesv> I am on MACOS running Docker Desktop with the PG container exposed on the port 5432 - both the PG and the Crystal containers are on the same internal docker network that should allow them to communicate to one another... Not sure if the firewall imposes any restrictions in this case...
<FromGitter> <vsmilesv> I'll try to include the un/pass string in the connection settings...
<FromGitter> <Blacksmoke16> like `postgres://user:pass@host:5432/db`
<FromGitter> <vsmilesv> Just tried this with the un/pass details I used to create the PG container - no success just yet unfortunately...
alexherbo2 has quit [Ping timeout: 264 seconds]
f1reflyylmao has quit [Quit: bye fags]
f1refly has joined #crystal-lang
<FromGitter> <Blacksmoke16> oh wait you're using docker?
<FromGitter> <Blacksmoke16> if you're using docker compose, try making the `host` the name of the server
<FromGitter> <Blacksmoke16> service*
teardown has joined #crystal-lang
<FromGitter> <jwoertink> https://github.com/google/ac-library.cr Pretty neat to see google's repo get some crystal
<FromGitter> <Dan-Do> This is not an officially supported Google product
<FromGitter> <Dan-Do> 😄
<FromGitter> <Dan-Do> Have no ideas what it is used for
<FromGitter> <Dan-Do> I meant that git
Stephanie is now known as Stephie
<FromGitter> <j8r> they often put this sentence
<FromGitter> <asterite> wow, it's really nice to see that
<FromGitter> <asterite> I guess someone at Google likes Crystal, but it doesn't mean Google will support that repo by tracking issues and PRs
<FromGitter> <Dan-Do> Hopefully they will soon :)
alexherbo2 has joined #crystal-lang
<FromGitter> <Daniel-Worrall> ooh¬!
<oprypin> @jwoertink: how did u find that
<FromGitter> <j8r> yes @asterite is right. At Google employees have a given time each week for side projets, seems to be one here.
Nekka has quit [Ping timeout: 260 seconds]
Nekka has joined #crystal-lang
<oprypin> @j8r: i don't think this is part of work hours
<FromGitter> <jwoertink> I usually look at http://crystalshards.xyz/ daily to see "recently updated" as sort of a digest of what's going on
<FromGitter> <ibraheemdev> Does anyone know the biggest project "loc" written in crystal?
<FromGitter> <Blacksmoke16> prob the compiler?
<FromGitter> <ibraheemdev> other than the compiler
<FromGitter> <ibraheemdev> The biggest i can find quickly was mint-lang (https://github.com/mint-lang/mint), with 52996 loc
<FromGitter> <ibraheemdev> tested with "git ls-files | xargs cat | wc -l"
<FromGitter> <Blacksmoke16> fair enough
<FromGitter> <j8r> @oprypin isn't the 20% Project? https://en.wikipedia.org/wiki/20%25_Project
<FromGitter> <j8r> > The 20% Project is an initiative where company employees are allocated twenty-percent of their paid work time to pursue personal projects. [...] Technology company Google is credited for popularising the 20% concept
<FromGitter> <j8r> indeed could be outside this, then why will it be in the google org then?
<FromGitter> <ibraheemdev> @j8r > "I’ve got to tell you the dirty little secret of Google’s 20% time. It’s really 120% time." - Marissa Mayer
alexherbo2 has quit [Quit: The Lounge - https://thelounge.chat]
<FromGitter> <wyhaines> One can do a lot with a modest amount of Crystal code. I have a project that is *almost* MVP for production, and not counting the React font end, the Crystal bits are a little under 6000 lines right now. Once spec coverage is up to snuff, and the remaining MPV features are probably going to add a few thousand more lines.
<oprypin> @j8r: the important part about the 20% project is that it's not related to your main work responsibilities. but even then usually such projects are initiatives to help the company overall in other ways
<oprypin> [20:37:54] <8e55e9@j8r> indeed could be outside this, then why will it be in the google org then?
<oprypin> maybe they don't feel strongly enough to insist to put their name on it. in favor of getting free publicity?
<FromGitter> <j8r> yeah, could be...
<FromGitter> <j8r> Anyway, it doesn't say much at the end to have this project there, compared to Yahoo Japan that actually use it "officially": https://github.com/yahoojapan
<FromGitter> <j8r> If other guys use also Crystal at Google, it could mean more then
yxhuvud has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
yxhuvud has joined #crystal-lang
<oprypin> well i mean yea now there are at least 2 🙃
<FromGitter> <mwlang> @straight-shoota, this chapter overhaul is a big improvement as I was just on this page trying to understand operators better earlier this week. One thing still don't quite get is what "wrapping" means in the context it's used on this page. i.e. "wrapping positive" or "wrapping addition" for example. Seems like this page could do with expanded treatment / discussion around this topic.
<FromGitter> <mwlang> I definitely like the cleaned up format the overhaul brings.
<oprypin> @mwlang: im guessing wrapping is about integer math?
<oprypin> say if 127 is the maximal int8 then adding 1 to it will wrap around to the other extreme and produce -128
<FromGitter> <Blacksmoke16> Yea, otherwise it raises an overflow error
<FromGitter> <mwlang> @oprypin Ah! I never would've guessed that, but its as good of a guess as any.
<FromGitter> <j8r> oprypin ho right, you're a Googler - looking forward a Crystal project in the google org haha :P. You moved from Sweden to Germany?
<oprypin> @j8r: yes
<oprypin> and well, i do feel strongly about publishing under my own name :p
<oprypin> at one point i wanted to port this one https://github.com/google/starlark-go - maybe it'd do well in the org. but yea not so interested now
<FromGitter> <j8r> What do you do/code at Google?
<oprypin> i program in c++ currently. that's about all i should disclose :p
<FromGitter> <j8r> I was expecting the non-disclosure, I tried at least
<FromGitter> <j8r> What do you think about Fuchsia OS?
<oprypin> i don't think about it 🤔
<FromGitter> <j8r> a non-thing for now? True, not released yet, kind of pre-alpha state
<FromGitter> <j8r> This big corps like Google are so huge that each hand can do different things without ever knowing what the other do.