RX14 changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.27.0 | Fund Crystal's development: http://is.gd/X7PRtI | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Gitter: https://gitter.im/crystal-lang/crystal
jemc has quit [Ping timeout: 246 seconds]
<FromGitter> <edgarsprings-titesystems-com> Is there a recommendation for Crystal IDE?
<FromGitter> <elorest> Vim.
<FromGitter> <elorest> :)
<FromGitter> <edgarsprings-titesystems-com> Thanks
<FromGitter> <elorest> A lot of people seem to like VSCode as well.
<FromGitter> <elorest> Both have good crystal plugins.
<FromGitter> <elorest> One of my friends uses ST3 and it has a pretty good plugin as well.
<FromGitter> <elorest> I think vim has more plugins for crystal related things though like slang.
<FromGitter> <anamba> i use vscode for crystal, ruby, and everything. it's not perfect, but it works well enough. i get stuff done.
<FromGitter> <elorest> Yeah if you're not already on team vim probably don't switch just for crystal (ssshhh! you totally should), but it's tooling does work really well for crystal, ruby and everything.
<FromGitter> <elorest> @anamba does vscode have a plugin for slang?
<FromGitter> <anamba> it's very easy to waste too much time tweaking your dev setup. :-) i think there was an xkcd for that. for the most part, vscode gets close-ish to what i need for every language with the least work so that's why i use it. (i do use vi/vim when all i have is an ssh connection.)
<FromGitter> <anamba> i actually do not use slang :) i often work in tandem w/front end devs, so ECR is simpler for all of us.
<FromGitter> <elorest> Makes sense. I stopped use ecr because it doesn't support blocks in print evals i.e. `<%= form("/listing/create") do |f| %>` ⏎ Everyone where I work was already used to slim from rails so it was easy. Most of the front end guys we hired who didn't know slim already used emmet so it was an easy transistion.
<FromGitter> <anamba> yeah that part sucks and i hope it can be fixed :)
<FromGitter> <anamba> (the <%= blocks not working)
<FromGitter> <elorest> I'm sure it can since the macro system for ecro and slang is pretty similar. Slang can do it just fine.
<FromGitter> <elorest> If I cared didn't prefer slang anyway I would probably have fixed it.
<FromGitter> <elorest> Would make it easier to do generators in Amber though since I have to handle the templates differently for ecr than slang. Especially when using the helpers.
Dreamer3 has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
cheeese_cake____ has joined #crystal-lang
<cheeese_cake____> Hello
<cheeese_cake____> I'm learning crystal, and I had a question about something.
<cheeese_cake____> Basically, I'd like to create an array that can contain either a String, or another Array, which in turn can contain another array of a string or an array. I'd like to make it possible to nest such arrays an unlimited number of times.
<cheeese_cake____> I was able to implement this in Rust by creating an enum of String or Vector<TheEnumIDefined>
<cheeese_cake____> Is there a simple way of creating the same thing with crystal? Would I have to use a class, or is there a simpler method I am missing
cheeese_cake____ has quit [Quit: Leaving]
non-aristotelian has quit [Quit: non-aristotelian]
Renich_ has joined #crystal-lang
Renich has quit [Ping timeout: 250 seconds]
Renich_ is now known as Renich
Renich has quit [Read error: Connection reset by peer]
Renich has joined #crystal-lang
Renich_ has joined #crystal-lang
Renich has quit [Ping timeout: 250 seconds]
Renich_ is now known as Renich
<FromGitter> <Blacksmoke16> alias
<FromGitter> <Blacksmoke16> but i think recursive types are frowned upon
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/5npd
<FromGitter> <girng> :D :D
<FromGitter> <girng> how are u all doing long time no see!!
<FromGitter> <girng> @cheese cake you can do what blacksmoke has posted, but i can't think of a reason why you'd need recursive arrays that seems kinda complex. for example, in our arpg game, we use an array of arrays (for the inventory matrix) similar to how diablo 2 does it. example: `property inventory = Array(Array(Int32)).new`. ex: https://play.crystal-lang.org/#/r/5nq5
Renich_ has joined #crystal-lang
Renich has quit [Ping timeout: 272 seconds]
Renich_ is now known as Renich
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
jemc has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Remote host closed the connection]
Renich has joined #crystal-lang
jemc has quit [Ping timeout: 245 seconds]
<FromGitter> <rabingaire> Hey Guys I don't know if you guys read this article but I think building something he proposed in this article within the language is a win win situation, but hey it's just my thought. Do share your stand on this !!!
DTZUZO has quit [Ping timeout: 246 seconds]
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <dscottboggs_gitlab> @rabingaire I'm reading, that is a long article but it certainly is making some interesting points
akaiiro has quit [Quit: Ping timeout (120 seconds)]
daemonwrangler has quit [Ping timeout: 260 seconds]
akaiiro has joined #crystal-lang
daemonwrangler has joined #crystal-lang
<FromGitter> <rabingaire> @dscottboggs_gitlab Some of the concepts are beyond my understanding but the article is saying something about concurrent approach to programming.
<FromGitter> <rabingaire> Error handling bit on the article is quite interesting
<FromGitter> <dscottboggs_gitlab> Idk how I feel about it. Yes, on its surface, `spawn` and `go` are a lot like `goto`, but you almost never use `spawn`/`go` without at least one channel. On the other hand, it does seem like there should be some sort of standard abstraction for a `spawn` that handles errors and wraps up when it's done. The thing I don't necessarily like from his library is it treats async code as something that you
<FromGitter> ... can separate out of your code and put in its own section.
<FromGitter> <dscottboggs_gitlab> I usually handle errors like this: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c00e5e9bc1a693e3a31f8e1]
<FromGitter> <dscottboggs_gitlab> but that seems like a ton of boilerplate. also, what if the error needs to be handled when it happens, not whenever we get around to it?
<FromGitter> <dscottboggs_gitlab> but it does achieve the "black box" idea that the author was talking about without creating a special "async section" of your code.
Raimondi has quit [Ping timeout: 240 seconds]
<FromGitter> <rabingaire> But the thing is we need to handle error twice one inside a go-routine and one outside of it
<FromGitter> <rabingaire> don't we
<FromGitter> <rabingaire> I think he mentions about this as well on the article.
<FromGitter> <rabingaire> I don't have lot's of knowledge on this kind of stuff
<FromGitter> <rabingaire> correct me if I am wrong :)
<FromGitter> <dscottboggs_gitlab> sort of, yeah. but it's not like he said where you have to just "drop" the error and print it and be done
<FromGitter> <dscottboggs_gitlab> yeah, you're right.
<FromGitter> <rabingaire> that's true
<FromGitter> <rabingaire> the example where he mentions javascript promise then/catch modal
<FromGitter> <dscottboggs_gitlab> it is overly verbose, but it's not as dangerous as he was making it sound if you use it right. That said, APIs shouldn't depend on being used right, they should work right by default and it's certainly something that deserves further thot
<FromGitter> <rabingaire> most of the developer might forget to add catch block which results in dropping the error willy nilly
<FromGitter> <rabingaire> I think he meant to point us about those kind of mechanism
<FromGitter> <rabingaire> where language default error handling does not works in async mode
<FromGitter> <dscottboggs_gitlab> yeah basically my example is a promise made out of channels and a goroutine. there's the async/await (https://github.com/anykeyh/await_async) library which seems to be providing that sort of concept
<FromGitter> <dscottboggs_gitlab> hm
<FromGitter> <dscottboggs_gitlab> https://carc.in/#/r/5nqi
<FromGitter> <dscottboggs_gitlab> https://carc.in/#/r/5nqj
Raimondi has joined #crystal-lang
<FromGitter> <dscottboggs_gitlab> it looks like an exception raised inside a spawn just prints to stderr and leaves it at that
Raimondi has quit [Ping timeout: 240 seconds]
Raimondii has joined #crystal-lang
Raimondii is now known as Raimondi
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
<FromGitter> <rabingaire> https://play.crystal-lang.org/#/r/5nqv
<FromGitter> <rabingaire> what about this
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <dscottboggs_gitlab> https://play.crystal-lang.org/#/r/5nqw
<FromGitter> <rabingaire> Isn't crystal asking us to handle error inside Fiber
<FromGitter> <rabingaire> I don't get it ?? Can you help me understand
<FromGitter> <dscottboggs_gitlab> crystal's concurrency isn't that thoroughly thought out at this stage, and is largely lifted straight from Go's implementation. There probably will be better abstractions in the future. What you need to do is just like in go, send the error condition over a channel. You can use this by `rescue`ing an `Exception` or by avoiding calling the error in the first place and just sending your error condition
<FromGitter> ... over the channel instead (for efficiency's sake - exceptions are not very efficient)
<FromGitter> <rabingaire> 5nqz
<FromGitter> <rabingaire> https://play.crystal-lang.org/#/r/5nqz
<FromGitter> <rabingaire> I think I might have got you point !!!
<FromGitter> <rabingaire> I can see the concept taken from go
<FromGitter> <dscottboggs_gitlab> check it out, you can attach the rescue block directly to the spawn block https://play.crystal-lang.org/#/r/5nr0
<FromGitter> <rabingaire> wow this is much more convenient
<FromGitter> <rabingaire> and by far concurrency on crystal seems much more easier than on other languages
<FromGitter> <dscottboggs_gitlab> this was what I meant https://play.crystal-lang.org/#/r/5nr3
<FromGitter> <dscottboggs_gitlab> it's roughly about as easy as in JavaScript, Go, or Dart. Certainly better than the mess in Python haha ;)
<FromGitter> <rabingaire> Yep I learned alot today about crystal concurrency
<FromGitter> <j8r> @girng welcome back! You are back with hearts in the eyes
<FromGitter> <anamba> @rabingaire finally read the whole nursery article. a little bit long but the buildup was necessary. i like the nursery model!
<FromGitter> <freimann0> Hi everyone, I'm a crystal newbie. I am going to rewrite a Ruby program in Crystal. This program is small and it requires "date" gem (to read and parse user datetime string). Is there alternative of `require "date"` in Crystal? thx a lot
<FromGitter> <dscottboggs_gitlab> the `Time` class contains some convenience methods for parsing datetimes
<FromGitter> <dscottboggs_gitlab> https://crystal-lang.org/api/0.27.0/Time.html
<FromGitter> <dscottboggs_gitlab> and https://crystal-lang.org/api/0.27.0/Time/Format.html
<FromGitter> <dscottboggs_gitlab> more specifically
<FromGitter> <s432411> Oh it's under the `/api/` I was looking at the `/docs/`. Thanks a lot
<FromGitter> <dscottboggs_gitlab> yes both are useful but I didn't know about `/api` at first either
<FromGitter> <dscottboggs_gitlab> @rabingaire do you think something like this would be useful? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c00fa0e3f50311036018d4d]
<FromGitter> <dscottboggs_gitlab> I feel like that's too limited for all but like the most common cases
<FromGitter> <s432411> hi, how to delete a key from a NameTuple? (to be honest I don't know if this is the good place to ask so newbie questions. I have so much Ruby stuff in my mind :D)
<FromGitter> <dscottboggs_gitlab> @s432411 named tuples are immutable https://play.crystal-lang.org/#/r/5nr5
<FromGitter> <dscottboggs_gitlab> if you need that functionality you need to use a hash
<FromGitter> <s432411> I have a function `def foo(aHash)` somehow the function body reads `aHash` as a NameTuple. Well I simply copy the whole Ruby script into my `crystal` program and fixing every errors I've seen.
<FromGitter> <s432411> So I guess I need to figure out how to feed myfunction with a Hash instead.
<FromGitter> <dscottboggs_gitlab> hm, try adding a type restriction to aHash like `def foo(aHash : Hash(T, U))` where T and U are the types of the keys and values of the hash respectively.
<FromGitter> <dscottboggs_gitlab> just to see what happens
<FromGitter> <dscottboggs_gitlab> It might bump the error into an area of the code that might help you more
<FromGitter> <s432411> Good idea I'm going to try it . I want to speed up compile time but I have spending somuch time fixing my Crystal lolz
<FromGitter> <s432411> (Fyi I am using this https://github.com/pmq20/ruby-packer to make my Ruby programs available on my server as binaries)
<FromGitter> <dscottboggs_gitlab> I've honestly found Go libraries to be more easily translatable than Ruby, because ruby libraries often rely on ruby's lack of type checking. Like options just being an empty hash rather than being a defined struct or class
<FromGitter> <s432411> yeah I've just got new error `no overload matches` :) it's quite challenging now
<FromGitter> <s432411> Okay I will try again, I should have read some ideas of Crystal first
<FromGitter> <dscottboggs_gitlab> yes, crystal is very different from ruby, more than it looks like on its face
<FromGitter> <dscottboggs_gitlab> there's always this https://crystal-lang.org/api/0.27.0/NamedTuple.html#to_h-instance-method if there isn't a way to make it not be a namedtuple in the first place
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
DTZUZO has joined #crystal-lang
<FromGitter> <s432411> thx a lot for the link . I will keep you posted.
<FromGitter> <rabingaire> @dscottboggs_gitlab code cascades error to main fiber right ??
ua has quit [Ping timeout: 245 seconds]
ua has joined #crystal-lang
<FromGitter> <dscottboggs_gitlab> that code was just a sketch which contained a lot of bugs
<FromGitter> <dscottboggs_gitlab> I wrote some specs and made it a shard https://github.com/dscottboggs/later
ashirase has quit [Ping timeout: 268 seconds]
<FromGitter> <rabingaire> That's great :)
<FromGitter> <rabingaire> I am forking the project :)
<FromGitter> <rabingaire> @anamba concept is quite interesting isn't it :)
ashirase has joined #crystal-lang
<FromGitter> <nagash> Has anyone started working on a crystal runtime for AWS Lambda? https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Remote host closed the connection]
Renich has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <bew> There is one already iirc
<FromGitter> <bew> Or maybe it's just for gcp
<FromGitter> <dscottboggs_gitlab> yeah I saw GCP and openfaas but not lambda
<FromGitter> <bew> About that nursery article, and the concept of clearer flow when using fibers, there's a discussion about it already in the core team, they also said they wanted sth like that, but afaik there is no progress on this. @dscottboggs_gitlab try to push your implem to crystal stdlib, maybe it won't be accepted, but in the worse case it may make the team move and talk about this again!
<FromGitter> <j8r> what's the point of `emit_null` in `JSON::Serializable`?
<FromGitter> <j8r> because if a type is nilable, we can set `@myvar : String | Nil`
<FromGitter> <proyb6> I saw this today
<FromGitter> <Blacksmoke16> @j8r it determines if the property should be serialized or not if the value is nil
<FromGitter> <Blacksmoke16> i.e. if the value is nil the whole property is omitted from the JSON string, otherwise its like `{"property": null}`
<FromGitter> <j8r> ok, this is used to differentiate between property not preset != property is null
<FromGitter> <j8r> I'll implement a `CON::Serializable`, because really flexible
<FromGitter> <j8r> too bad this whole serialization stuff isn't in a project like https://serde.rs/#data-formats
<FromGitter> <j8r> this hasn't its place in the stdlib
<FromGitter> <nagash> @proyb6 Thanks, look like a simple echo example.
<FromGitter> <proyb6> How did the timing is so much difference between 1's includes and 2's includes ⏎ 1's includes - >3ns ⏎ 2's includes - >500ns ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c013a9d9aec405095a5f260]
<FromGitter> <j8r> I think it would be great to have an organization dedicated for this stuff, driven by fans of annotations/serializations :)
<FromGitter> <proyb6> @nagash Seem like it, you could start the first one
<FromGitter> <Blacksmoke16> for sure, might make it easier for people to contribute if the codbase is smaller as well
<FromGitter> <Blacksmoke16> are somethings that i can think of that would be cool but not possible atm afaik
akaiiro has quit [Ping timeout: 250 seconds]
<FromGitter> <nagash> @proyb6 Yeah, I will have a look tomorrow.
<FromGitter> <proyb6> Great
<FromGitter> <j8r> too bad :( This will also solve the two way to serialize JSON/YAML with the stdlib
akaiiro has joined #crystal-lang
<FromGitter> <Blacksmoke16> aye
<FromGitter> <j8r> @Blacksmoke16 still, we can create the organization. I don't remember, do you know any people having worked on serialization?
<FromGitter> <Blacksmoke16> `asterite ` is the one that did the serializable stuff
<FromGitter> <Blacksmoke16> afk driving
<FromGitter> <j8r> I know, of course :)
<FromGitter> <j8r> jokke maybe?
<FromGitter> <j8r> BTW - any name idea?
<FromGitter> <vladfaust> crystal-serializable :)
<FromGitter> <nagash> @proyb6 Seems the same to me unless I misunderstood. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c013d26464b6c0fd66cabaf]
<FromGitter> <j8r> or crystallizer :) ⏎ This remind `Serializer`, `Crystallizer::JSON` ⏎ But then if we want to include https://github.com/Blacksmoke16/CrSerializer in the org, its name will probably have to change :/
<jokke> j8n no i haven't worked on it
<FromGitter> <vladfaust> https://github.com/crystalize You could contact its owner, https://github.com/shawndellysse -- developers usually kindly give usernames
return0e_ has joined #crystal-lang
<FromGitter> <proyb6> @nagash I'm not sure about the latency if I use plenty of ```includes?``` would incur more latency ⏎ But this is measuring similar to mine <3ns https://github.com/icyleaf/fast-crystal
return0e has quit [Ping timeout: 250 seconds]
<FromGitter> <Sija> @j8r you might want to wait for someone from core team to chime in on this idea
<FromGitter> <j8r> serializable out of not of stdlib, if @Blacksmoke16 agree, we could team up on shards gravitating around it :)
<FromGitter> <j8r> I've learnt annotations basic, still learning them
<FromGitter> <nagash> @proyb6 Seems consistent on my machine.
<FromGitter> <nagash> @proyb6 2x `includes?` takes 2x time as 1x.
<FromGitter> <Blacksmoke16> @j8r depends what the ultimate goal of this org is, if its for official serializable stuff, i.e. just moving the JSON/YAML into it then my shard prob doesnt belong as its a custom thing just built on top of one of them
<FromGitter> <Blacksmoke16> vs something that already exists in the stdlib
jemc has joined #crystal-lang
jemc has quit [Client Quit]
jemc has joined #crystal-lang
<FromGitter> <girng> @j8r ty. yeah, i was going through some hard times but i'm back. there's no way I can code in crystal and not read gitter
<FromGitter> <girng> i will re-start all the projects i had starred
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
Renich has quit [Quit: Renich]
<FromGitter> <j8r> @Blacksmoke16 not into you shard, of course
Renich has joined #crystal-lang
<FromGitter> <j8r> no, the goal is to have json, yaml, con, and maybe your shard that extends the later
<FromGitter> <j8r> the goal is to have a serialization framework where all of this play well together
Renich has quit [Client Quit]
<FromGitter> <j8r> I can create `CON::Serializable` on my side, but I'm pretty sure you CrSerializer won't work with it :/
Renich has joined #crystal-lang
<FromGitter> <Blacksmoke16> yea it wouldnt, it assumes JSON atm
<FromGitter> <j8r> I'll do a POC organization - wouldn't take much time
<FromGitter> <j8r> At worst, it will only include me with my serialization shard haha 😄
<FromGitter> <Blacksmoke16> :p
<FromGitter> <Blacksmoke16> prob going to release 0.5.0 tonight, kinda at a loss of what else to do with it atm
<FromGitter> <Blacksmoke16> if you have any ideas let me know ;)
<FromGitter> <j8r> support yaml, toml and xml :p
<FromGitter> <j8r> i.e: be pluggable
<FromGitter> <Blacksmoke16> hmm
<FromGitter> <Blacksmoke16> i was playing with the idea of like `include CrSerializer(JSON)`
<FromGitter> <Blacksmoke16> is there a way to search gitter? like something i typed a month ago?
<FromGitter> <j8r> that's great :)
<FromGitter> <j8r> the search is bad, there is one at the top left corner
<FromGitter> <rabingaire> Hey guys do you think it's worth it to work on this issue https://github.com/crystal-lang/crystal/issues/6685
<FromGitter> <Blacksmoke16> problem i had i was like i couldnt determine what the type of the generic at compile time
<FromGitter> <Blacksmoke16> like
<FromGitter> <rabingaire> I want to contribute to the language one way or other
<FromGitter> <rabingaire> and for the first contribution it's kind of a lot to understand the codebase
<FromGitter> <rabingaire> so I thought that the issue is quite simpler to start with :)
<FromGitter> <j8r> @Blacksmoke16 that shouldn't be a problem
<z64> why do you want to use a generic? what's wrong with `CrSerializer::JSON` that has the implementation details for json
<FromGitter> <j8r> maybe...
<FromGitter> <j8r> yes, maybe better to go with `CrSerializer::JSON`, `CrSerializer::YAML` etc
<FromGitter> <Blacksmoke16> nvm i figured it out
<FromGitter> <j8r> because implementation will differ `CrSerializer::XML` will be different for example
<FromGitter> <j8r> then use composition to reuse components
<FromGitter> <Blacksmoke16> on the deserialization side of the things the code would all be the same, i.e. `from_xml(xml_str)`
Vexatos has quit [Quit: ZNC Quit]
<z64> yeah. generics, generally, are best left used for users to insert their own classes to plug into the libraries; not to configure the libraries behavior
<FromGitter> <j8r> and for optimization, start converting some`class` to `struct` @Blacksmoke16
<FromGitter> <Blacksmoke16> oo good call, that was on my list
<FromGitter> <Blacksmoke16> ill have to play around with it, JSON is only one i care about atm (for my use case) but deff would be nice to support others easily
<FromGitter> <j8r> to support `CON`, i need to provide you a `CON::Serializable` with the same interface than `JSON::Serializable` @Blacksmoke16 ?
<FromGitter> <Blacksmoke16> say as long as they implement a given interface
<FromGitter> <Blacksmoke16> maybe? to early to tell atm
<FromGitter> <j8r> for now, lets take `YAML::Serializable` for example
<FromGitter> <j8r> is it possible?
<FromGitter> <Blacksmoke16> in theory yes, ill have to play around with it to see how i want to set it up. will use yaml as the example i guess
<FromGitter> <Blacksmoke16> harder part is the serialization as im basic reimplementing the to_json behavior in order to implement some custom logic
<FromGitter> <Blacksmoke16> is there a way to delete a portion of JSON/yaml based on key
<FromGitter> <Blacksmoke16> that would be helpful
<FromGitter> <j8r> with the pullparser?
<FromGitter> <Blacksmoke16> like after calling `to_json` when you have the json string
<FromGitter> <j8r> you can skip the portion
<FromGitter> <Blacksmoke16> using ignore: true yea?
<FromGitter> <j8r> i guess. At least it's possible with PullParser
<FromGitter> <Blacksmoke16> to_json uses JSON::Builder
<FromGitter> <Blacksmoke16> ill play around with it and keep you posted
<FromGitter> <j8r> better to skip at parsing
<FromGitter> <j8r> instead of when building
<FromGitter> <j8r> there is no such feature for building
<FromGitter> <Blacksmoke16> what would you rather, `include CrSerializer::JSON` or ` Klass < CrSerializer::JSON` im thinking the former
<FromGitter> <Blacksmoke16> would be cleaner/easier to use
<FromGitter> <girng> what is CrSerializer?
<FromGitter> <Blacksmoke16> a shard i wrote that adds additional features to serialization/deserialization/validation
<FromGitter> <girng> really? checking it out now
<FromGitter> <Blacksmoke16> yup, 👍
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <j8r> there is a spammer that approves PRs
<FromGitter> <j8r> it's https://github.com/ammarfaizi2
<FromGitter> <girng> on which repo?
<FromGitter> <j8r> on crystal-lang/crystal
<FromGitter> <girng> wtf. i thought only lead devs could approve PRs
<FromGitter> <j8r> everyone can, but it does anything
<FromGitter> <girng> I just sent a report
rocx has joined #crystal-lang
<FromGitter> <j8r> off topic: why have you added hearts in the godot logo?
<FromGitter> <j8r> Adding crystals, I could understand, but hearts 😄
<FromGitter> <girng> Good point lol
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <j8r> or you have fallen in love with someone/something 😏
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <girng> bawahahaha
rocx has quit [Ping timeout: 250 seconds]
<FromGitter> <j8r> Ohoho I've reached the truth 😀
<FromGitter> <j8r> Thanks for you star of clicr
<FromGitter> <drum445> hi @girng
<FromGitter> <drum445> welcome back
<FromGitter> <girng> hi @drum445 :D
<FromGitter> <jwoertink> Anyone here working on the crystalshards.xyz site? 😅
<FromGitter> <girng> `missing json attribute: total_count at 0:0 (JSON::ParseException)` uh oh lol
<FromGitter> <jwoertink> The weird thing is, I think this is the repo https://github.com/f/crystalshards but I don't see any recent updates
non-aristotelian has joined #crystal-lang
<FromGitter> <j8r> Time for a fork :)
<FromGitter> <j8r> The isn't in https :(
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
<oprypin> @jwoertink @j8r https://crystalshards.org/
Dreamer3 has quit [Quit: Leaving...]
<FromGitter> <jwoertink> Thanks for the link
<FromGitter> <j8r> Didn't know, thanks
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
lunarkitty7 has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
<FromGitter> <Coalpha> @dscottboggs_gitlab Oh, nice. I didn't know that the docs were built in? The school's wifi isn't actually a whitelist. It's a blacklist and crystal is categorized under "shareware and freeware" which is blocked for whatever reason.
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
<FromGitter> <dscottboggs_gitlab> @Coalpha the docs are actually embedded in the code, as comments above each method or class definition. The school is probably just using some rule-list they bought. If you could figure out what rule list they buy you might be able to contact them and get it unblock as an educational resource.
<FromGitter> <Blacksmoke16> @j8r i have this as a semi working proof of concept...
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/5nyz
<FromGitter> <Blacksmoke16> the main challenge would be for the external serializers to implement something that implements the logic needed based on my annotations...
<FromGitter> <Blacksmoke16> as i have no way to generically doing that
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Remote host closed the connection]
Renich has joined #crystal-lang
<FromGitter> <girng> i picked up really nice vps for my testing VPS on black friday. 512 ram, only $2.50/year lol they had a 80% coupon
Renich has quit [Quit: Renich]
<FromGitter> <girng> it's nice cause the mysql timeout exceptions actually get raised, unlike in WSL LOL
<FromGitter> <dscottboggs_gitlab> @j8r I was reading your messages about a serialization group, and I was thinking about making a binary serialization form based on go's gob encoding, keep me posted on that concept?
Renich has joined #crystal-lang
Renich has quit [Client Quit]
<FromGitter> <dscottboggs_gitlab> @girng jealous that would be perfect for a wireguard instance or a nukeable test box
Renich has joined #crystal-lang
<FromGitter> <girng> "nukeable test box" haaha wild.
<FromGitter> <dscottboggs_gitlab> I mean, haven't you ever wanted to see what happens if you actually run `rm -rf /`? what about if you put it in your init script? it's $2.50, who cares if it breaks lol
<FromGitter> <girng> 😆 😆 😆
<FromGitter> <girng> well.. you're not wrong 😂
<FromGitter> <dscottboggs_gitlab> is there a better way to do this? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5c01c4713f5031103606ce9f]
Renich has quit [Quit: Renich]
<FromGitter> <dscottboggs_gitlab> @girng name it `drunk-code-test-box` in your `/etc/hosts` 😆
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Client Quit]
Renich has joined #crystal-lang
Renich has quit [Quit: Renich]
Renich has joined #crystal-lang
Renich has quit [Remote host closed the connection]
Renich has joined #crystal-lang