alexherbo2 has quit [Remote host closed the connection]
<FromGitter>
<asterite> An Int can be passed to any type parameter of a generic class. But it's only used in the std in static array. So maybe it's not a special case, just a special need
<FromGitter>
<dscottboggs> can't *any* constant be used as a generic argument?
<FromGitter>
<Blacksmoke16> generics can only be Integers and types afaik
<FromGitter>
<dscottboggs> kinda lame IMO
zorp has quit [Ping timeout: 265 seconds]
deavmi has quit [Ping timeout: 240 seconds]
deavmi has joined #crystal-lang
DamionDreggs has joined #crystal-lang
DamionDreggs has quit [Quit: I Quit!]
alexherbo2 has joined #crystal-lang
Xeago_ has joined #crystal-lang
Xeago has quit [Read error: Connection reset by peer]
Xeago_ is now known as Xeago
alexherbo2 has quit [Quit: Ping timeout (120 seconds)]
alexherbo2 has joined #crystal-lang
<FromGitter>
<mixflame> good news guys
<FromGitter>
<mixflame> I'm going live on the app store tomorrow (crystal backend)!
alexherbo23 has joined #crystal-lang
alexherbo2 has quit [Ping timeout: 265 seconds]
alexherbo23 is now known as alexherbo2
<FromGitter>
<naqvis> awsome and congrats 👍
<FromGitter>
<grkek> > I'm going live on the app store tomorrow (crystal backend)! ⏎ ⏎ Awesome!
postmodern has quit [Quit: Leaving]
<FromGitter>
<mixflame> thanks guys
<FromGitter>
<mixflame> :)
<FromGitter>
<grkek> What did you use for a framework?
<FromGitter>
<mixflame> raw swift
<FromGitter>
<mixflame> it's an OS X app made in Swift
<FromGitter>
<grkek> For the backend
<FromGitter>
<mixflame> there's also my snap package which allows you to run the server
<FromGitter>
<mixflame> I didn't use a framework for the backend. I used Crystal TCPServer class
<FromGitter>
<grkek> So it is not based on HTTP its just TCP packets?
<FromGitter>
<mixflame> yeah it's not based in HTTP, just TCP
<FromGitter>
<mixflame> it does have a serverless backend used for a few things which uses http
<FromGitter>
<grkek> Is it open source?
<FromGitter>
<mixflame> it used to be, but to protect the users I made it private
<FromGitter>
<mixflame> apple was big on making me protect the users
<FromGitter>
<j8r> ... a bit scary to say that
<FromGitter>
<mixflame> yeah it is
<FromGitter>
<mixflame> but for a chat app you can understand, that if they reverse my server I can no longer enforce my obligations on the app store
<FromGitter>
<mixflame> for example, I'm responsible to remove objectionable content from it in 24 hours
<FromGitter>
<mixflame> *and* eject the user from servers I don't even control
<FromGitter>
<j8r> I mean, if the code requires to be private to be secure, i.e. there are sensitive info inside it, that's bad :/
<FromGitter>
<mixflame> no there's no sensitive info
<FromGitter>
<mixflame> i just want to keep them from nulling out my global admin abilities
<FromGitter>
<mixflame> it contains strong encryption
<FromGitter>
<mixflame> if users can't report or get banned from a server or anything, and it remains publically visible in my app somehow, and they are posting illegal content, my app is dunzo
<FromGitter>
<grkek> And how can that encryption can be bypassed by seeing sourcecode?
<FromGitter>
<grkek> if you have the key
<FromGitter>
<mixflame> it can't, it doesn't use symmetric encryption
<FromGitter>
<mixflame> it uses public key encryption
<FromGitter>
<mixflame> e2e and encrypted chat
<FromGitter>
<mixflame> I cannot see server messages unless reported
<FromGitter>
<grkek> And how does it being open source endanger users?
<FromGitter>
<mixflame> someone could easily make an 'evil' client or server which I wouldn't be able to protect users on
<FromGitter>
<mixflame> due to the distributed nature of it
<FromGitter>
<j8r> this should be made impossible by design
<FromGitter>
<j8r> because one can reverse-engineer the App store client
<FromGitter>
<mixflame> true
<FromGitter>
<j8r> or through Wireshark
<FromGitter>
<j8r> then forge packets
<FromGitter>
<mixflame> not a bad idea to make it impossible by design
<FromGitter>
<mixflame> right now all you need to do is NOP when a server refreshes and no one will ever get banned lol
<FromGitter>
<grkek> So what you are telling me is that you have a centralized server which gets report requests and then you are able to see the messages?
<FromGitter>
<mixflame> yes
<FromGitter>
<grkek> Why use the reporting system anyway?
<FromGitter>
<mixflame> so I know if its worth banning the user
<FromGitter>
<mixflame> it's for users who are being targetted for cyberbullying, harassment or trolling
<FromGitter>
<grkek> Give them a block ability
<FromGitter>
<mixflame> cyberstalkers, etc etc
<FromGitter>
<j8r> what's the app, a forum?
<FromGitter>
<grkek> and make the chat stateless
<FromGitter>
<mixflame> they do have it
<FromGitter>
<mixflame> apple demanded report AND block
<FromGitter>
<mixflame> here I have a video of the app
<FromGitter>
<j8r> Now I'm more and more in favor of bypassing this Apple App store for "simple apps": Using PWA, with the "Add to Desktop" option in mobiles
<FromGitter>
<mixflame> same here but I needed the free sales and globalness of it
<FromGitter>
<mixflame> I'm not good at selling the software myself
<FromGitter>
<j8r> free sales?
<FromGitter>
<mixflame> not free sales
<FromGitter>
<grkek> The UI clearly needs some work
<FromGitter>
<grkek> but it looks rlly nice so fat
<FromGitter>
<mixflame> thanks
<FromGitter>
<mixflame> by free sales I mean sales you wouldn't get without the centralization of the app store
<FromGitter>
<mixflame> still, I think the android app store is easier for developers
<FromGitter>
<j8r> maybe... but there are billions of apps, so...
<FromGitter>
<mixflame> we have an android/ios crossplatform dart app coming which will also use the same crystal backend
<FromGitter>
<mixflame> yeah
<FromGitter>
<mixflame> imo it just needs to be a good enough app that people tell eachother to get it and have fun with it
<FromGitter>
<j8r> a web site is maybe less visible, but easier to try out.
<FromGitter>
<mixflame> yeah, this grew out of a website
<FromGitter>
<mixflame> it was originally a rails site that allowed anyone to come and draw on it and would save the picture to redis
<FromGitter>
<j8r> how the client is made?
<FromGitter>
<grkek> Instead of swift
<FromGitter>
<grkek> you could've tried
<FromGitter>
<mixflame> Swift
<FromGitter>
<grkek> electron
<FromGitter>
<mixflame> true but I don't think electron could go on the app store, I've used it
<FromGitter>
<mixflame> also the web version had canvas bugs that dont exist in native
<FromGitter>
<mixflame> because of javascript issues
<FromGitter>
<mixflame> that i neve could solve
<FromGitter>
<j8r> there is Apache Cordova, that's the mobile Electron
<FromGitter>
<mixflame> i went native and avoided web because of bugs and speed issues
alexherbo2 has quit [Ping timeout: 256 seconds]
<FromGitter>
<mixflame> this is my 4th collaborative drawing app
<FromGitter>
<mixflame> i tried web, blockchains, c++
gangstacat has joined #crystal-lang
alexherbo2 has joined #crystal-lang
<FromGitter>
<mixflame> swift isn't my favorite language still but its still easier than C++
<FromGitter>
<j8r> not convinced about the native advantages for a forum/chat...
<FromGitter>
<mixflame> it's the drawing component that needs native
<FromGitter>
<mixflame> did you see the collaborative canvas in the video?
<FromGitter>
<j8r> ha noice!
<FromGitter>
<mixflame> native speed lets load/render faster and gets rid of bugs i experienced when I wrote this (open source 4 u)https://github.com/mixflame/gbalda
<FromGitter>
<mixflame> thanks
<FromGitter>
<mixflame> i perfected the rendering algorithm in the web version but it had weird bugs that werent my fault
<FromGitter>
<mixflame> i filed a firefox bug about them, not sure if they ever solved it but my code stands
<FromGitter>
<grkek> You can write native with C API integrations of Node
<FromGitter>
<grkek> C/C++
<FromGitter>
<mixflame> it's not node thats the issue
<FromGitter>
<mixflame> it's frontend web that cant handle it
<yxhuvud>
interesting. No other opinions. Why do you have explicit halts?
<FromGitter>
<grkek> Kemal has one ?
<FromGitter>
<grkek> I guess thats why
<FromGitter>
<grkek> It just closes the port
<FromGitter>
<grkek> io port
<FromGitter>
<grkek> of the response
<FromGitter>
<Blacksmoke16> are you required to call `.halt`?
<FromGitter>
<Blacksmoke16> because that would make it impossible to run like after controller stuff since headers couldnt be written
<FromGitter>
<alehander92> and also what happens if you forget halt
<FromGitter>
<grkek> No you are not required to halt
<FromGitter>
<grkek> Nothing happens if you dont add halt
<FromGitter>
<grkek> it just writes the json contet
<FromGitter>
<grkek> and returns the resonse
<FromGitter>
<grkek> response
<FromGitter>
<grkek> halt just cuts the response instantly
<FromGitter>
<grkek> it just closes the
<FromGitter>
<grkek> context.response
<FromGitter>
<grkek> json
<FromGitter>
<grkek> does two things
<FromGitter>
<grkek> writes content type
<FromGitter>
<grkek> and content
<FromGitter>
<grkek> the response is still closed afterwards for json response, the halt just acts as a insta closer for it
<FromGitter>
<j8r> I hope this is not the stdlib's `Context`...
<FromGitter>
<grkek> it is stdlib context
<FromGitter>
<grkek> is it bad to close it like that?
<FromGitter>
<Blacksmoke16> more so all the reopening
<FromGitter>
<j8r> boo bad, monkey patching should be the last solution
<FromGitter>
<grkek> Well the std libs response has ensure headers written extension from kemal I think
<FromGitter>
<grkek> > monkey patching should be the last solution
<FromGitter>
<grkek> why tho?
<FromGitter>
<grkek> what does this ruin?
<FromGitter>
<grkek> I already had monkey patching done in the context before
<FromGitter>
<grkek> so does kemal
<FromGitter>
<j8r> because, a library you require change the API, and can possibly even how it works.
<FromGitter>
<grkek> and many other frameworks
<FromGitter>
<j8r> not really, only if there is no choice
<FromGitter>
<j8r> monkey patching others objects means harder for the user to use it
<FromGitter>
<grkek> imo monkey patching seems fine to me, it doesn't matter if I add the functions to the stdlib context or my own context still would do the same
<FromGitter>
<grkek> as long as there is an evidence of others using monkey patching it is fine to me as well
<FromGitter>
<grkek> as fast as someone adds something to monkey patch I implement it as well
<FromGitter>
<j8r> this should not be the default, it is harder for the user to use the object
<FromGitter>
<grkek> how is it harder for the user to use the object when I literally provide helper functions to use it easier ?
<FromGitter>
<grkek> When you are using a framework you are supposed to learn things
<FromGitter>
<j8r> If I see an error related to `HTTP::Server::Context#some_method, missing argument`. Then, naturally, one will look at the stdlib's doc
<FromGitter>
<grkek> Not really
<FromGitter>
<grkek> you would first look up for the framework
<FromGitter>
<grkek> and then go to the stdlib
<FromGitter>
<j8r> yes maybe. ⏎ And if you use another framework, or none at all? It is harder to know which methods was in the stdlib, and others added by the framework :/
<FromGitter>
<grkek> You have documentation which provides that
<FromGitter>
<grkek> Context doesn't really have any methods if you take a close look at it
<FromGitter>
<grkek> it only has @request, @response thats it
<FromGitter>
<Blacksmoke16> could use the builder pattern, then limit the added method to just like one
<FromGitter>
<grkek> 1) I don't see how these can lead to upgrade problems ⏎ 2) I will document these methods and make sure to use them ⏎ 3) I might consider response_builder but that is quite unlikely
<FromGitter>
<grkek> The pitfalls most of them depend on the end user and if the end user uses a malicious shard its their own fault since the API still can be monkey patched by the shard so this makes no sense what so ever in the crystal world
<FromGitter>
<grkek> My own context sounds like a bottleneck and I wont be doing that at all
<FromGitter>
<alehander92> it's very opinionated
<FromGitter>
<alehander92> but rails was also very opinionated
<FromGitter>
<alehander92> i am not a crystal guy, so i should stop commenting tho
<FromGitter>
<alehander92> :D
<FromGitter>
<grkek> My framework is far more easier than rails is
<FromGitter>
<grkek> with better routing features
<FromGitter>
<grkek> and with this function chaining it will be even better
<FromGitter>
<Blacksmoke16> i assume it has defaults so you wouldnt need to have a `put_status(200)` in every action?
<FromGitter>
<grkek> yep
<FromGitter>
<grkek> it has defaults yes
<FromGitter>
<grkek> so just context.json() is enough for a response
alexherbo2 has quit [Ping timeout: 258 seconds]
<FromGitter>
<Blacksmoke16> its deff an interesting approach
<FromGitter>
<grkek> it looks a lot like the functional one
<FromGitter>
<Blacksmoke16> or you could abstract this stuff and just have the action return the data
<FromGitter>
<grkek> abstract what?
<FromGitter>
<Blacksmoke16> i dont have a concrete example, just not sure how i feel about how most frameworks work via passing in the context to the action
<FromGitter>
<Blacksmoke16> like does the action actually need that/should be coupled with it?
<FromGitter>
<Blacksmoke16> should it be concerned with what format its returning?
<FromGitter>
<grkek> I mean not really
<FromGitter>
<grkek> as long as it returns context
<FromGitter>
<grkek> you can return text
<FromGitter>
<grkek> html
<FromGitter>
<grkek> binary
alexherbo2 has joined #crystal-lang
<FromGitter>
<grkek> whatever you want
<FromGitter>
<grkek> idk
<FromGitter>
<Blacksmoke16> i guess what im getting at is should it be the responsibility of the controller action itself to determine how to render the response data in each format
<FromGitter>
<Blacksmoke16> (this isn't specific to your framework, just a general architectural thought)
<FromGitter>
<grkek> Ah okay
<FromGitter>
<grkek> interesting yes
alexherbo2 has quit [Ping timeout: 240 seconds]
alexherbo2 has joined #crystal-lang
woodruffw has quit [Ping timeout: 240 seconds]
yxhuvud has quit [Ping timeout: 240 seconds]
sorcus has quit [Ping timeout: 240 seconds]
iwq has quit [*.net *.split]
duane has quit [*.net *.split]
deimos_ has quit [*.net *.split]
djuber has quit [*.net *.split]
MasterdonX has quit [*.net *.split]
DTZUZU has quit [*.net *.split]
baweaver has quit [*.net *.split]
olbat has quit [*.net *.split]
davic has quit [*.net *.split]
Vexatos has quit [*.net *.split]
zorp has quit [*.net *.split]
ua has quit [*.net *.split]
dostoyevsky has quit [*.net *.split]
r0bacarp has quit [*.net *.split]
gangstacat has quit [*.net *.split]
_whitelogger has joined #crystal-lang
<FromGitter>
<Blacksmoke16> a new developer wouldnt be let lose on a new codebase without guidance
<FromGitter>
<Blacksmoke16> from other devs, theres going to be a learning curve regardless of the framework
<FromGitter>
<grkek> In my case I forget everything from the previous day
<FromGitter>
<grkek> I have short term memory loss
<FromGitter>
<grkek> and I don't remember most of the parts from previous day
<FromGitter>
<grkek> :D
<FromGitter>
<grkek> what will you do now?
<FromGitter>
<Blacksmoke16> grep for the path/controller you want
<FromGitter>
<grkek> I don't know how to use grep
<FromGitter>
<Blacksmoke16> if you're using sublime its `CMD + shift + f`
<FromGitter>
<Blacksmoke16> find in path
<FromGitter>
<Blacksmoke16> idt its a big deal, this is more of an organizational problem of your project if you cant find what you need
<FromGitter>
<grkek> I mean I know it but someone might not know
<FromGitter>
<grkek> in any case
<FromGitter>
<grkek> I think this way is better
<FromGitter>
<grkek> instead of separating it into files
<FromGitter>
<Blacksmoke16> until you add a new controller action, then go to use it and wonder why it doesnt work; because you forgot to add it in the other file 😉
<FromGitter>
<Blacksmoke16> i dont think theres a right/wrong way, just diff approaches
<FromGitter>
<Blacksmoke16> each with pros/cons
<FromGitter>
<grkek> when u use resource for the macro it adds other actions automatically
<FromGitter>
<Blacksmoke16> gotcha
<FromGitter>
<grkek> so basically that point is gone
<FromGitter>
<grkek> haha
<FromGitter>
<grkek> B-)
<FromGitter>
<mtsmmp_gitlab> guys
<FromGitter>
<grkek> sup
<FromGitter>
<mtsmmp_gitlab> how to declare an optional param on initialize and check if it exists
<FromGitter>
<grkek> property number : Int32?
<FromGitter>
<Blacksmoke16> with a default value if it doesnt?
<FromGitter>
<grkek> and then check it in the init function?
<FromGitter>
<Blacksmoke16> got an example of what you're trying to do @mtsmmp_gitlab ?
<FromGitter>
<mtsmmp_gitlab> > with a default value if it doesnt? ⏎ ⏎ yes it can have a default value if it does not exist
<FromGitter>
<mtsmmp_gitlab> but id like to know how to do it without the default value too
<FromGitter>
<mtsmmp_gitlab> > can you make a more complete example of what you're tryin to do and/or the problem https://play.crystal-lang.org/#/cr ⏎ ⏎ can you understand my example?
<FromGitter>
<Blacksmoke16> why would you expect them to be different?
<FromGitter>
<Blacksmoke16> they both use `Config.new`
<FromGitter>
<Blacksmoke16> so they would be the same?
<FromGitter>
<mtsmmp_gitlab> i changed the initalize to load a different file
<FromGitter>
<mtsmmp_gitlab> even if i pass the config loaded with config2.yml
<FromGitter>
<mtsmmp_gitlab> it overwrites with config.yml of initialize
<FromGitter>
<mtsmmp_gitlab> at least thats what im getting
<FromGitter>
<mtsmmp_gitlab> > i changed the initalize to load a different file ⏎ ⏎ the config initializer
<FromGitter>
<Blacksmoke16> i.e. `File.read("config.yml")` changed to `File.read("config2.yml")` with no other changes?
<FromGitter>
<mtsmmp_gitlab> yes
<FromGitter>
<Blacksmoke16> why would you expect that to work?
<FromGitter>
<mtsmmp_gitlab> bcuz config2.yml has different data
<FromGitter>
<mtsmmp_gitlab> it didnt prioritize
<FromGitter>
<Blacksmoke16> how would it know about the first config if you told it to always read the 2nd one?
<FromGitter>
<Blacksmoke16> they're going to be the same since its hard coded in the initializer of the config class
<FromGitter>
<Blacksmoke16> could just do `File.read(file)` no need for the interpolation
<FromGitter>
<Blacksmoke16> but yea, that should do it
<FromGitter>
<mtsmmp_gitlab> yeah just noticed it
<FromGitter>
<mtsmmp_gitlab> the interpolation was useless
<FromGitter>
<mtsmmp_gitlab> > but yea, that should do it ⏎ ⏎ yeah but it didnt work
<FromGitter>
<Blacksmoke16> what was the error?
<FromGitter>
<mtsmmp_gitlab> but my code isnt 100% the same of your example
<FromGitter>
<mtsmmp_gitlab> there was no error, it just overwrote my Config with the Config on the initializer
<FromGitter>
<mtsmmp_gitlab> but the code was different
<FromGitter>
<mtsmmp_gitlab> ill check it with your example later
<FromGitter>
<Blacksmoke16> ok
<FromGitter>
<mtsmmp_gitlab> thanks man
<FromGitter>
<mtsmmp_gitlab> sorry to bother
<FromGitter>
<Blacksmoke16> np
alexherbo28 has joined #crystal-lang
alexherbo2 has quit [Ping timeout: 258 seconds]
alexherbo28 is now known as alexherbo2
alexherbo22 has joined #crystal-lang
alexherbo2 has quit [Ping timeout: 264 seconds]
alexherbo22 is now known as alexherbo2
postmodern has joined #crystal-lang
<postmodern>
think i mentioned this before, but why does `crystal doc` not support the markdown syntax of [Link Title][link_id] ... [link_id]: https:/...
<FromGitter>
<Blacksmoke16> prob because its really basic implementation that doesnt support all of markdown
<FromGitter>
<mixflame> I thought about it, and I think I can make the crystal server for my app open source, since I can delink servers from the master server list without any interaction from the server. but give me some time to think about it and all the risks a little more
<FromGitter>
<dscottboggs> I think instance methods have to be done with `#method` and class methods with `.method`
<FromGitter>
<dscottboggs> class and module names should get linked thoguh I thought?
<FromGitter>
<mixflame> nice Scott, I gave you a star
<FromGitter>
<dscottboggs> would someone mind running one of the samples so I can make sure the build process works on other computers?
<FromGitter>
<mixflame> I can do it later tonight if you want
<FromGitter>
<mixflame> linux or OS X?
<FromGitter>
<dscottboggs> 👍 thanks!
<FromGitter>
<mixflame> np
<FromGitter>
<dscottboggs> I've been testing on manjaro so anything other than that would be a help, but really I just wanna make sure I didn't forget something I did while trying to get it to work in the first place
<FromGitter>
<mixflame> I got Ubuntu 20.04, OS X Catalina and Windows 10
<FromGitter>
<dscottboggs> oh shit that's like all of them haha
<FromGitter>
<mixflame> lol yup
<FromGitter>
<dscottboggs> would be cool if it would work on windows but I don't think Crystal's windows support is there yet? TBH I don't follow that area too closely, haven't used windows in like 6 or 8 years
<FromGitter>
<mixflame> I think it's slowly getting there
<FromGitter>
<mixflame> I would have to ask a core team member
<FromGitter>
<dscottboggs> works with `-Dpreview_mt` 😀
<FromGitter>
<mixflame> what does that do?
<FromGitter>
<dscottboggs> enables the experimental multi-threading API
<FromGitter>
<dscottboggs> not that I do anything async in this even, but last time I tried to compile a project with it (admittedly very long ago) it didn't work.
<FromGitter>
<mixflame> ahh nice
<postmodern>
is there a macro to lookup the type of an ivar?
<FromGitter>
<Blacksmoke16> :thinking:
<FromGitter>
<Blacksmoke16> like while iterating via `@type.instance_vars`?
<FromGitter>
<RespiteSage> @dscottboggs ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ Looks like I'm missing at least one required package. I'm trying to figure out what I need right now, but that should probably be in the README. [https://gitter.im/crystal-lang/crystal?at=5f4416ab36e6f709fdfd3cfb]
<FromGitter>
<dscottboggs> no, that's an error in the make file I just fixed, will be pushing in a sec
<FromGitter>
<sardaukar> is there a better way to convert a byte to signed than `signed_byte = (unsigned_byte.to_i - 256).to_i8` ?
<postmodern>
Blacksmoke16, used a macro to define a bunch of getters that raise a custom error if the ivar isn't set, but the ivars all have custom type signatures, so want to somehow map the @ivar type to the return type of the getter
<FromGitter>
<RespiteSage> @dscottboggs I did a `git pull` and then `make`, and it seems like the same error. Should I be on a branch or something?
<postmodern>
dscottboggs, clever
<FromGitter>
<dscottboggs> what's the output of `make`, and also of `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0`
<FromGitter>
<RespiteSage> The output of `make` is identical to above.
<FromGitter>
<dscottboggs> @mixflame just realized the makefile won't work on OSX.
<FromGitter>
<dscottboggs> @RespiteSage yeah, guess I need to include instructions to install the dependencies.
<FromGitter>
<RespiteSage> I suspect I'm just missing a devel package, but there's not an obvious candidate. I'll mess with it for another minute or two; I'd like to try out your samples.
<postmodern>
dscottboggs, was going to suggest adding instructions for installing webkit via apt, dnf, brew
<FromGitter>
<dscottboggs> thanks, I'll try to figure out the packages by looking in a docker container. Did you say you're on Ubuntu?
<FromGitter>
<dscottboggs> @RespiteSage is there a webkit2gtk-4.0-dev ?
<FromGitter>
<RespiteSage> I don't see it. I'm also on OpenSUSE Tumbleweed using Zypper, so I occasionally have trouble finding packages that are easily accessible on Ubuntu using Apt.
<FromGitter>
<dscottboggs> ohh. I see
<FromGitter>
<RespiteSage> There's `webkit2gtk3-devel`, but I don't see any dev packages for webkit2gtk4.
<FromGitter>
<mixflame> does maybe homebrew or snap have it?
<FromGitter>
<mixflame> not sure if snap works on SUSE but im a snap fan as of recently
<FromGitter>
<RespiteSage> I have snap for Spotify; I can check there, too.
<FromGitter>
<dscottboggs> that could be it, because the `4.0` in the ubuntu package refers to the version of `webkit2gtk`, and the `3` in the opensuse package might refer to GTK 3
<FromGitter>
<RespiteSage> Well, I installed that package and I'm not getting the same error anymore, which *could* be progress.
<FromGitter>
<dscottboggs> whooo
<FromGitter>
<RespiteSage> `ld: cannot open output file ext/webview.o: No such file or directory`
<FromGitter>
<RespiteSage> Where is `ext/` supposed to be?
<FromGitter>
<dscottboggs> project root
<FromGitter>
<dscottboggs> I'll add a `mkdir ext`, thanks
<FromGitter>
<dscottboggs> this is a huge help btw thank you very much
<FromGitter>
<RespiteSage> No problem. It's a really easy way to give you a quick feedback loop.
<FromGitter>
<RespiteSage> Also, it looks like all the files have permissions of 644, which is weird. Maybe that's something on my end (I confess I don't know if that would get committed to the repo), but if it's not then it might be something to change.
<FromGitter>
<dscottboggs> what's wrong with 644?
<FromGitter>
<RespiteSage> Hm... I dunno. Maybe something's being strange for me, but I was trying to count lines with `$(find -name "*.h") | cat | wc -l`, and I'm getting a permission error on `include/webview.h`.
<FromGitter>
<RespiteSage> I'll investigate further. Probably a me issue.
<FromGitter>
<RespiteSage> On the other hand, it looks like everything compiled when I added `ext/`.
<FromGitter>
<dscottboggs> nice
<FromGitter>
<RespiteSage> Both samples seem to be working wonderfully.
<FromGitter>
<Blacksmoke16> isnt it just a shard dep?
<FromGitter>
<dscottboggs> oh right of course I can just add it as `development_dependencies` thanks
alexherbo2 has quit [Ping timeout: 240 seconds]
<FromGitter>
<j8r> Hum, I prefer Qt :P
<FromGitter>
<j8r> Don't know if Papierkorb bindings have Qt Webview...
alexherbo2 has joined #crystal-lang
<FromGitter>
<dscottboggs> Generally I like Qt better too, but I've tried to fix a few bugs in qt5.cr and I know how insanely huge the codebase is. Binding to this was 13 C functions as opposed to
<postmodern>
plus webkit2gtk is much leighter than an electron app...
<FromGitter>
<dscottboggs> well, @j8r's point that a Qt Webview woudl as well. I was just saying it would be less maintainable unless there was an equivalent to at least webkit2gtk, if not the webview project I bound to, because you'd need bindings to all of Qt.
<postmodern>
when does and doesn't the implicit UInt to Int argument conversion apply? Just noticed a .new on a record struct didn't except Int32 when the arguments must be UInt32