RX14 changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.26.1 | 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
Creatornator has joined #crystal-lang
junland has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Creatornator has joined #crystal-lang
DTZUZU has joined #crystal-lang
DTZUZU has quit [Quit: WeeChat 1.9]
DTZUZU has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<FromGitter> <girng> is @faustinoaq still around?
<FromGitter> <girng> I have a question about writing to the socket
<FromGitter> <girng> for example, let's say you have 100 players. 30 players connected from Australia, 30 from the USA, and 40 from Argentina. And the main game server is in the USA. ⏎ Now, let's say you have a game loop that loops over your games, and send out the position to each player ⏎ what happens when you call socket.send to the first 20 players that are in australia, then the next 10 players are in the usa. ⏎ ⏎ Does
<FromGitter> ... that mean the players who are in the US don't receive this socket data until the socket.sends to australia? So those 10 players will have to wait (notice a delay)? ... [https://gitter.im/crystal-lang/crystal?at=5bac3d1b41177e0bc7b163e7]
<FromGitter> <jasdeepsingh> what kind of sockets are you referring to here?
<FromGitter> <jasdeepsingh> websockets in a specific framework like Kemal/Amber or pure TCP Sockets?
<FromGitter> <girng> pure TCP yeah
<FromGitter> <jasdeepsingh> so yes, regardless i think there will be a slight non-noticeable delay due to geographic latency. But this is not the responsibility of the language to begin with, this is responsibility of the underlying protocol you are using - TCP/IP
<FromGitter> <jasdeepsingh> and I think you can pretty much assume that the replies will also not go in any specific order (unless you maintain some kind of socket ordering in your code) ⏎ ⏎ So - it's not a given that your nearest players will receive the replies first. It's totally possible that the player farthest could receive a reply sooner than players that are closer to your server.
<FromGitter> <jasdeepsingh> > Or, does the TCP Socket just send it and continue execution of code, regardless of where the end-point connection is?
<FromGitter> <jasdeepsingh> this ☝️
<FromGitter> <girng> interesting
<FromGitter> <girng> so, if the game server has to send to player 1 which is in australia (250MS away). and right below that code, is a socket.send to player 2 (which is in the US). it will fire both. player 2 doesn't have to wait 250 MS for that code to run? if i got that right
<FromGitter> <girng> thanks for discussion and insight @jasdeepsingh its helped! =]
<FromGitter> <jasdeepsingh> if you want this above behaviour, you'll have to run the code concurrently or parallelly (from what i know Crystal currently doesn't support parallelism so you won't be able to run the above code in parallel yet.) ⏎ ⏎ I also suggest you read this: https://medium.com/coderscorner/tale-of-client-server-and-socket-a6ef54a74763
<FromGitter> <jasdeepsingh> so, if you don't want the two sends to compete with each other, you'll essentially have to use `spawn` for each send
<FromGitter> <girng> when players connect, i do `spawn handle_connection`, then create a Client.new, which has a send method. that should be ok?
rohitpaulk has joined #crystal-lang
Groogy1 has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 245 seconds]
rohitpaulk has joined #crystal-lang
Groogy1 has quit [Ping timeout: 260 seconds]
rohitpaulk has quit [Ping timeout: 252 seconds]
rohitpaulk has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 252 seconds]
rohitpaulk has joined #crystal-lang
moei has quit [Ping timeout: 252 seconds]
rohitpaulk has quit [Ping timeout: 240 seconds]
rohitpaulk has joined #crystal-lang
Groogy1 has joined #crystal-lang
DTZUZO has quit [Ping timeout: 252 seconds]
<FromGitter> <proyb6> jeromegn/kilt repo is deprecated,
<FromGitter> <proyb6> Sorry, typo, I mean kilt designed to be more efficient than other template engine?
rohitpaulk has quit [Ping timeout: 272 seconds]
rohitpaulk has joined #crystal-lang
<FromGitter> <girng> https://play.crystal-lang.org/#/r/53vc how can i limit the floats to 2 decimal places?
<FromGitter> <girng> i was looking here (https://crystal-lang.org/api/0.24.1/Float.html), but not sure where to put the _'s
<FromGitter> <bew> The _ means nothing, it's just a nice way to write numbers
<FromGitter> <bew> You can't limit floats to N decimals, but you can however only display it with 2 decimals
moei has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 276 seconds]
<FromGitter> <bararchy> wow got the strangest problem ever ⏎ A Crystal application wont respond to connections, I already debugged around networking, another application (openssl s_server and netcat -l works and accept conenction), the same application works on another server but on this specific AWS instance it wont accepet conenctions, using strace I can see ⏎ ⏎ ```code paste, see link``` ⏎ ...
<FromGitter> <bararchy> I even recompiled and even used the same bin on the working server, no help
rohitpaulk has joined #crystal-lang
<FromGitter> <bararchy> ldd looks the same and libs versions are the same on both servers
<FromGitter> <girng> ty @bew i did "%.2f" floatvalue
<FromGitter> <vladfaust> Hey, guys. I wanna discuss licensing. Why aren't such big things as lucky and amber (not talking bout Kemal because it's a rather small monorepo) aren't licensed under AGPL3? I mean, this is the best license for open-source projects. Free for everyone except for closed-source businesses. I wonder the level of FUD raised if someone release (oh my) a web framework under AGPL3...
<FromGitter> <vladfaust> I spent some time yestrday and I now know everything about OSS licensing :D For example, trailblazer is double-licensed - MIT and commercial, which makes no sense, because a user is free to choose either of them
<FromGitter> <vladfaust> Also sidekiq's AGPL3 is weak, because its workers are separate work and an application using the workers as-is is not a derivate of Sidekiq, therefore it's not triggering the license
<FromGitter> <vladfaust> MongoDB's licensed udner AGPL3 as well, but as soon as you're not modifying the DB'code itself, the license doesn't work
<FromGitter> <vladfaust> But if someone released an ORM in a OOP language then including or inheriting its code is considered "intimate interaction" and it falls under the license terms
ashirase has quit [Ping timeout: 260 seconds]
<FromGitter> <vladfaust> Now you're smarter
<FromGitter> <vladfaust> > discuss
ashirase has joined #crystal-lang
<FromGitter> <vladfaust> Many consider OSS software as free, but the culture of companies paying for the code is healthy for everyone; because devs don't starve and supported projects aren't abandoned. WDYT?
<FromGitter> <bararchy> I think discussiong OSS licenses is a long, legal and above all boring hahahah
<FromGitter> <vladfaust> I disagree, found it quite fun
<FromGitter> <vladfaust> I feel like I'm the only one in this community who wants to earn on his work and speak about that in public
<FromGitter> <bararchy> I belive in MIT anything I want to release as opensource
<FromGitter> <bararchy> Oh, I don't think you're the only one, I think earning as an opensource dev is amazing, as it helps the whole eco-system, but, I belive that earning as an open-source dev should be from services and not "half closed sourced" software
<FromGitter> <codenoid> 🌽
<FromGitter> <bararchy> 🎥
<FromGitter> <vladfaust> Nope, I don't speak about selling pro features apart from the open-source part. I don't liek Sidekiq's approach either. I'm spleaking about AGPL3, which requires any work using an AGPL3 project to be AGPL3 as well. That means that if you use Sidekiq in your app, you must make it open-source as well. If you want to close the source of your app (e.g. you're a profitable business), you can choose abouther
<FromGitter> ... license, in this case a commerical one
<FromGitter> <vladfaust> How about that, @bararchy?
<FromGitter> <bararchy> As someone who own a commercial software and uses multiple community shards in it, I can tell you I wouldn't be able to hold my bussines if I needed to share revenew or pay monthly to use those libs, instead I prefer to take the time and help, fix, and released opensource code that I can afford to release.
<FromGitter> <bararchy> What would happen If for example I would need to pay for Kemal? I would use Lucky, if I needed to pay for both, I will use HTTP::Server and spin my own
<FromGitter> <bararchy> but this way, as it is now, I can use them freely, and help out using my resources
Groogy1 has quit [Ping timeout: 246 seconds]
<FromGitter> <vladfaust> If you're running a profitable business, why not paying for the libs you're using? If it's not profitable yet, e.g. you don't have any employees, how can an author of the lib know you're using it without paying?
<FromGitter> <vladfaust> You see it? Authors would get profit from really big companies allowing the spends. That's why Sidekiq and GraphQL-ruby cost $900/year. It's for companies, not tiny startups.
<FromGitter> <vladfaust> And with AGPL3 you still can contribute into the projects and ask for help, it's still an OSS.
<FromGitter> <vladfaust> You liek that not?
<FromGitter> <bararchy> 1) how can an author of the lib know you're using it without paying? = you mean I should lie top the author because I don't profit? ⏎ 2) If you're running a profitable business, why not paying for the libs you're using? = Because of licensing, because of legal, because of income v.s expends, because of logic telling me that building an inhouse webserver for my needs will be more profitable then paying
<FromGitter> ... monthly\yearly
<FromGitter> <bararchy> What I "like better" is to have an MIt project, which I can contribute to, donate to and help out as much as I can when I can, and use it freely
<FromGitter> <proyb6> MIT for me since it’s at this stage we need to grow unless you have an ecosystem and clients to cater niche market
<FromGitter> <vladfaust> > you mean I should lie top the author because I don't profit? ⏎ ⏎ Uh, that's nonsence. The author of a lib is interested in growth of its users as companies, so he gets more customers. ⏎ ⏎ > inhouse webserver ... [https://gitter.im/crystal-lang/crystal?at=5baca349fe37781110055ae5]
<FromGitter> <vladfaust> No surprise your business isn't profitable
<FromGitter> <bararchy> "No surprise your business isn't profitable" :\
<FromGitter> <vladfaust> 1) abstract, not yours in particular
<FromGitter> <vladfaust> > which I can contribute to, donate to ⏎ ⏎ So, you've donated to any of Crystal projects?
<FromGitter> <bararchy> well, it all depends on the pricing, but in the end let's say we use 10-15 shards, each 400$ a year
<FromGitter> <vladfaust> It's a math. If a shard needs 15 to be rewritten, there is no point to pay for it, I agree
<FromGitter> <vladfaust> However, consider big-ass projects
<FromGitter> <vladfaust> Lucky is enough to build an application, would you pay for it. And how much do you feel its worth in year, @bararchy ?
<FromGitter> <vladfaust> And you don't usually use many big-ass libs in your apps. Otherwise it's complex and should be profitable. If not, you've failed with your business, haven't you? (abstract)
<FromGitter> <bararchy> "So, you've donated to any of Crystal projects?" => yeha, I have donated to Crystal lang, and NeuraLegion has released multiple MIT licensed opensource shards back to the community, which we support. ⏎ Other then that we openly publicate that we "use crystal in production" and drive the community forward even if it might cost us in developers and "risky tech" feelings
<FromGitter> <vladfaust> No, that doesn't count. I mean money and I mean libs other than Crystal itself
<FromGitter> <vladfaust> A dev cannot put your MIT code on a slice of bread
<FromGitter> <vladfaust> He's busy with his OSS, he wouldn't have time to get profit from your MIT libs
rohitpaulk has quit [Ping timeout: 272 seconds]
<FromGitter> <vladfaust> That's a nice conversation, I like it. Could you please answer this: ⏎ ⏎ > Lucky is enough to build an application, would you pay for it. And how much do you feel its worth in year, @bararchy ?
<FromGitter> <vladfaust> If you were a solid business, you would say "hm, developing a thing equal to Lucky would take like 50 hours = $2500. If Lucky costs $500/year, that means that if I develop myself, investments are closed in 5 years. Also I would have to implement new features on my own and cannot ask anybody for help. Hm..."
<FromGitter> <bararchy> "No, that doesn't count" => tell that to the core team ;) ⏎ ⏎ "A dev cannot put your MIT code on a slice of bread" => not true, he can use my libs to create a company, to improve existing projects or to generate profits by for example make Machine Learning apps etc.. ⏎ ⏎ "Lucky is enough to build an ..." => I don't really know, I don't use it, but ROR isn't making $ by selling to companies does it?
<FromGitter> ... they sell commerical support, they strengthen the community, and they get donations [https://gitter.im/crystal-lang/crystal?at=5baca5e401fb5f4ae12d44a9]
<FromGitter> <bararchy> I'm not against the notion, don't get me wrong, If you manage to create something that people like and use then by all means make profit from it, but buying libs never set well with me, and I never used a pay-to-use code, I will buy a product ofc, or a service
<FromGitter> <vladfaust> > tell that to the core team ;) ⏎ ⏎ Again, it's not about Crystal itself, but its ecosystem ⏎ ⏎ > not true, he can use my libs to create a company, ... [https://gitter.im/crystal-lang/crystal?at=5baca65341177e0bc7b3e3b9]
<FromGitter> <bararchy> If you told me: "this is my MIT license lib, use it as you wish, but if you need profesional services or commerical support this will cost $" I would say we have a deal
<FromGitter> <bararchy> Like Redhat for exampel
<FromGitter> <bararchy> So like here: https://www.lifewire.com/ways-to-make-money-with-open-source-software-2532836 every point except point 4 (I would never use closed source 3rd party bin out of security issues) I would say "sure this make sense, wha'ts your paypal"
<FromGitter> <vladfaust> Could you please gimme a proof that RedHat uses MIT or Apache licenses for big projects? AFAIK it has its big products under GPL license and offering a commerical one
<FromGitter> <vladfaust> > I would say we have a deal ⏎ ⏎ Of course you will, because I don't get paid for the time I've written the code, otherwise you could hire me (and I spend my time again) for support
<FromGitter> <bararchy> I mean the general purpose of "Code is free, services costs $" Like Ubuntu
<FromGitter> <bararchy> @vladfaust That's true, if I can get something for free why should I pay for it?
<FromGitter> <bararchy> I just can't digest the notion of "paying for lib or code" It might be me, but from where I see it, there are alternatives to any library, and it's "find a free one or write it from scratch", I guess if I were AWS or some big corp then I would have a legal, security and dev team to handle stuff like that without my personal fears in the way
<FromGitter> <j8r> I use ISC license, a simplified MIT
<FromGitter> <j8r> The OpenBSD flavor, in particular
<FromGitter> <vladfaust> Ubuntu has it's own license, that's not MIT of course, it's more like GPL: https://www.ubuntu.com/licensing
<FromGitter> <bararchy> ISC is really cool too
<FromGitter> <vladfaust> > if I can get something for free why should I pay for it? ⏎ ⏎ A human spent his time for you. Why not compensating a part of it?
<FromGitter> <bararchy> "All application software in both main and restricted must meet the following requirements:" => "Must not require royalty payments or any other fee for redistribution or modification.It's important that you can exercise your rights to this software without having to pay for the privilege, and that you can pass these rights on to other people on exactly the same basis."
<FromGitter> <vladfaust> Yep, it's a "viral" GPL-ish
<FromGitter> <vladfaust> It's not free, you see
<FromGitter> <Meyfarth> It really depends on the developper I guess. It's a business model. ⏎ Some dev want to be paid for the work they did. ⏎ Others want to bet on the support/premium features. ⏎ In the end, it's up to the developer and the company to find what they want to do [https://gitter.im/crystal-lang/crystal?at=5baca98601fb5f4ae12d5fbf]
<FromGitter> <bararchy> Let me ask you this, which community and languge will prosper better. ⏎ ⏎ MIT
<FromGitter> <vladfaust> Sidekiq has more commits, releases and contributors
<FromGitter> <vladfaust> Not counting Pro version
<FromGitter> <bararchy> @vladfaust What OS are you using?
<FromGitter> <vladfaust> It has overall richer functionality and UI/UX
<FromGitter> <vladfaust> Also compare Amber and Lucky :)
Groogy1 has joined #crystal-lang
<FromGitter> <vladfaust> Amber is half-abandoned and Lucky is prospering because it's backed up
<FromGitter> <j8r> this examples can't be generalized
<FromGitter> <bajro17> What is difference between amber and lucky?
<FromGitter> <j8r> of course, having resources helps a lot
<FromGitter> <vladfaust> > this examples can't be generalized ⏎ ⏎ That's an argument-less thesis
<FromGitter> <bararchy> @vladfaust Kemal v.s Lucky maybe? :)
<FromGitter> <bararchy> Kemal is MIt
<FromGitter> <vladfaust> > What OS are you using? ⏎ ⏎ Windows 10 (licensed) and Ubuntu. Plus Ubuntu on my servers
<FromGitter> <j8r> I'll never understand why using ubuntu on servers, vs Debian
<FromGitter> <vladfaust> @bararchy they all are MIT, but ones which are backed live much better
<FromGitter> <vladfaust> Serdar is in Core team, he should have been taking a part of donations from Crystal and now he's working at rainforest, that means Kemal has always been backed up
<FromGitter> <bajro17> Is there for lucky same like amber and kemal section "Use in production"
<FromGitter> <vladfaust> And Amber is community-driven accepting donations from community members who think that noone really needs money, that why it's dying
<FromGitter> <bararchy> @vladfaust @sdogruyol has never gotten payed for writing Kemal, saying he was in "core team" and now works in rainforest have nothing to do with getting payed for Kemal
<FromGitter> <bararchy> Or Amber is dying because we have 6 different web-frameworks with only around 10k devs ?
<FromGitter> <vladfaust> Maybe not directly? The thing is that he's being compensated for his OSS all the time and not by donations
<FromGitter> <vladfaust> > because we have 6 different web-frameworks ⏎ ⏎ No, it's dying because it's not funded
<FromGitter> <vladfaust> Lucky and Kemal do well, and "10k" is not an issue for them
<FromGitter> <j8r> no, a project dies if no dev works on it. The causes can be having no time, or no money to invest time on it
<FromGitter> <vladfaust> YEAS
<FromGitter> <vladfaust> That's what I'm talking about
<FromGitter> <j8r> you can have a living project with no funds
<FromGitter> <vladfaust> Returning to the start of the topic - AGPL3 + commerical license would save the world!
<FromGitter> <vladfaust> > you can have a living project with no funds ⏎ ⏎ Only if you have another source of income, that means you cannot spend much time on this project, that means it would lack of quality (less than it could be)
<FromGitter> <j8r> you have a business model lie RedHat (all open source + paying support), or GitLab (partial open source with premium features)
<FromGitter> <j8r> both works if done in the right conditions
<FromGitter> <vladfaust> There is a third model of all open source + license for closed source
<FromGitter> <j8r> @vladfaust yes, of course. Money is the root :)
<FromGitter> <vladfaust> I'm glad you understand that and saying that in public, @j8r
<FromGitter> <j8r> Like Qt, yes
<FromGitter> <j8r> Money/Time, both are linked and the root for work. Paying to invest time, or give time but potentially loosing money
<FromGitter> <vladfaust> All I want is to make the community to not be afraid of commerical licensing their OSS, because in the end of the day it would be better for everyone
<FromGitter> <j8r> the only business model that feel wrong is freemium, because you'll inevitably will reject contributions that conflicts with premium features :/
<FromGitter> <vladfaust> I guess GitLab and Sidekiq are considered freemium, because part of their functionality isn't available in public?
<FromGitter> <vladfaust> Offtopic - anyone had experience with registering an LLC in USA from abroad?
DTZUZO has joined #crystal-lang
<FromGitter> <bararchy> @vladfaust What shard would you make and commercialize? as in, what would it do?
<FromGitter> <vladfaust> Other from building a commercial project on Crystal I'm thinking of a full-stack JSON framework including Prism, Core and a higher-level wrapper + cli on top of it
<FromGitter> <vladfaust> Yes, yes, it may be similar to Lucky, I know. There will be differences, though
<FromGitter> <sdogruyol> @vladfaust Kemal is fully community-driven from the start
<FromGitter> <vladfaust> @sdogruyol saying that means that all your hours spent are paid by the community in the form of money. Is that so?
<FromGitter> <sdogruyol> > The thing is that he's being compensated for his OSS most of the time and not by community donations compared to Amber ⏎ No, I don't get compensation for OSS at all
<FromGitter> <sdogruyol> No, I don't get compensation for OSS at all
<FromGitter> <sdogruyol> No, it's not paid...it's my free time actually and I don't expect to get paid
<FromGitter> <sdogruyol> it's not my motivation at all
<FromGitter> <vladfaust> What is it then?
<FromGitter> <vladfaust> If being honest
<FromGitter> <sdogruyol> To make Crystal a language for everyone
<FromGitter> <vladfaust> Why?
<FromGitter> <vladfaust> So you spent your life on that just to make Crystal itself popular
<FromGitter> <sdogruyol> Because it's awesome and I absolutely want more people to have fun
<FromGitter> <bajro17> @vladfaust bro its not all about money
<FromGitter> <sdogruyol> Yeah, I guess you can phrase it like that @vladfaust
<FromGitter> <bajro17> sometimes you just enjoy in something
<FromGitter> <vladfaust> @bajro17 enjoying and creating enterprise-ready products are different things
<FromGitter> <sdogruyol> I only have https://www.patreon.com/sdogruyol lol and that's just for the people who want to donate somehow
<FromGitter> <bararchy> Kemal is an "enterprise-ready " product
<FromGitter> <vladfaust> There must be something like struggle for fame or dreaming of a job regarding to Crystal, @sdogruyol
<FromGitter> <sdogruyol> My motivation was not to create an "enterprise-ready" product...hell no :)
<FromGitter> <vladfaust> We are mortal creatures and spending life on something with absoulte zero expectations is irrational
<FromGitter> <bararchy> @vladfaust Both are great takes from it TBH I can certenly see Serdar became very famous from Kemal dev
<FromGitter> <sdogruyol> > Dreaming of a job regarding Crystal ⏎ I want to make that a reality for every developer out there, not just for me
<FromGitter> <sdogruyol> I want to make that a reality for every developer out there, not just for me
<FromGitter> <bajro17> @vladfaust my brother you are so smart boy
<FromGitter> <sdogruyol> My expectations were not financial
<FromGitter> <bajro17> but sometimes you are dark as hell
<FromGitter> <bajro17> hahahha
<FromGitter> <bararchy> @vladfaust btw, it's totally fine if you wish to create paid shards, let the market see if this idea works or not
<FromGitter> <vladfaust> @sdogruyol are they about fame and that feeling when someone uses your work?
<FromGitter> <sdogruyol> It's a matter of preference. I do believe OSS maintainers should get paid...somehow
<FromGitter> <bararchy> Right now there are 10-20 companies doing "crystal in prod", this is your market
<FromGitter> <bararchy> unless @sdogruyol push for more Crystal adoption you have no market
<FromGitter> <vladfaust> @bajro17 honesty != darkness
<FromGitter> <bajro17> I just joke bro sorry if hurt you :D
<FromGitter> <sdogruyol> I enjoy seeing people build something with something I created
<FromGitter> <sdogruyol> it's absolutely fun :)
<FromGitter> <vladfaust> I fully understand you at this point, Serdar
<FromGitter> <bajro17> @sdogruyol one question
<FromGitter> <vladfaust> It's clear for me now
<FromGitter> <sdogruyol> BTW @vladfaust I like your honesty
<FromGitter> <sdogruyol> It's pretty close to my way 👍
<FromGitter> <vladfaust> @sdogruyol that means a lot for me, because I want the community to be open to such edgy matters
<FromGitter> <bajro17> is that site made by you @sdogruyol http://shards.info/repos/kemalcr/kemal/dependents?page=1
<FromGitter> <sdogruyol> TBH most of the people tell me the same thing that...I could use that time to earn more money
moei has quit [Read error: Connection reset by peer]
<FromGitter> <sdogruyol> My answer is that...it's not just all about money
<FromGitter> <sdogruyol> @bajro17 that's a great website but I didn't make it
<FromGitter> <vladfaust> It's really not when you have food and shelter already
moei has joined #crystal-lang
<FromGitter> <sdogruyol> Indeed, I believe a person should have an inner peace and not greed
<FromGitter> <bajro17> I see sometimes it crash
<FromGitter> <bajro17> and it write its made with kemal
<FromGitter> <bararchy> I don't see @vladfaust as greedy bth, it's totally fine to expect to get paid
<FromGitter> <sdogruyol> Everyone wants more of everything nowadays...which I'm not fond of
<FromGitter> <sdogruyol> I'm sorry, I didn't mean that @vladfaust is greedy
<FromGitter> <vladfaust> @sdogruyol you can't imagine how I'm against that consumerism stuff as well
<FromGitter> <sdogruyol> It's my own personal thinking
<FromGitter> <sdogruyol> exactly @vladfaust
<FromGitter> <sdogruyol> @bajro17 you can reach the maintainer of that website..probably
<FromGitter> <bajro17> @sdogruyol congratulation I see there 400 repos have kemal in dependency
<FromGitter> <bajro17> :)
<FromGitter> <bajro17> some really awesome projects use kemal
<FromGitter> <sdogruyol> wow, didn't know that! Thank you @bajro17
<FromGitter> <bararchy> That's really cool 🎉
<FromGitter> <bajro17> You most welcome dear bro :)
<FromGitter> <vladfaust> @bararchy the thing is that I don't do anything except Crystal. I literally cannot write on other languages because of their speed or syntax. That puts me in some kind of a trap :D
<FromGitter> <sdogruyol> I'd be down for anything to increase Crystal adoption 👍
<FromGitter> <vladfaust> A railstutorial alternative is needed imo
<FromGitter> <sdogruyol> Yeah, we need much more tutorials, docs, <insert anything here>
<FromGitter> <sdogruyol> Sometimes I speak about Crystal and it definitely helps a lot
<FromGitter> <vladfaust> Docs? We already have docs
<FromGitter> <bajro17> https://codingphase.com/
<FromGitter> <vladfaust> Speak you mean at conferences?
<FromGitter> <sdogruyol> @vladfaust docs as in "Rails guides"
<FromGitter> <bajro17> He already start to make course for crystal
<FromGitter> <bajro17> its video and its so good
<FromGitter> <sdogruyol> @vladfaust not necessarily, I speak at local meetups, user groups e.g
<FromGitter> <vladfaust> That's awesome
<FromGitter> <sdogruyol> I mean, spreading the word definitely helps a lot
<FromGitter> <vladfaust> I've tried to gather crystallers here in Moscow this summer and we got like 7 people, thought it's not worth it :)
<FromGitter> <sdogruyol> 7 is good
<FromGitter> <sdogruyol> You can also go to Ruby meetups, which mostly works
<FromGitter> <vladfaust> Yep, should try that. Never been a speaker though :D
<FromGitter> <bararchy> @vladfaust first thing, I saw you and @sdogruyol created jobsatcrystal site which is a great start. ⏎ 2nd thing, where do you live currently ?
<FromGitter> <vladfaust> @bararchy yeah, this website should help establishing the market
<FromGitter> <vladfaust> I live in a province not far from Moscow in Russia
<FromGitter> <vladfaust> I'm working on Jobs themeselves now, btw
<FromGitter> <sdogruyol> You really have the design skills...respect @vladfaust 💯
<FromGitter> <bararchy> yeha it looks much better then before
<FromGitter> <bararchy> https://crystaljobs.org/
<FromGitter> <vladfaust> Thanks, guys :)
<FromGitter> <bajro17> @vladfaust are you do design?
<FromGitter> <bararchy> @vladfaust btw, in the Crystal jobs, I would add category that each person would like to work on, as in, #fullstack #frontend #backend #protocols etc ..
<FromGitter> <vladfaust> Let's say "I'm stealing ones". In this case I've been inspired by Twitter
<FromGitter> <vladfaust> And I can't say I'm a designer. I'm just doing practial stuff look simple and minimalistics. Never deid anything fancy
<FromGitter> <vladfaust> @bararchy makes sense. Tags are nice, yes
<FromGitter> <bajro17> Just little advice
<FromGitter> <bajro17> dont use red or orange for this site believe me
<FromGitter> <bararchy> why? I like the orange XD
<FromGitter> <bajro17> color psychology
<FromGitter> <vladfaust> I like red, I'm using it on my personal website as well
<FromGitter> <bajro17> people have trust when is something blue
<FromGitter> <bajro17> check twitter facebook, linkedin etc
<FromGitter> <bararchy> we use both XD https://crystaljobs.org/
<FromGitter> <bararchy> 1) https://www.neuralegion.com/#
<FromGitter> <bajro17> Nerualegion have this blue(green) color its so beautiful
<FromGitter> <bajro17> site look so professional
<FromGitter> <vladfaust> Agree
<FromGitter> <bararchy> Thanks :) all thanks to our graphic miracle worker
<FromGitter> <bajro17> I think even if crystal community have only this site made with crystal
<FromGitter> <bajro17> and its in production
<FromGitter> <bajro17> its enough to have POW crystal really work so good
francisl has joined #crystal-lang
<FromGitter> <bararchy> Oh @bajro17 we have a much more complex thing running in Crystal in prod other then a simple (yet nicly looking) site, we have a multiple machine learning algorithm offensive cyber security automation engine, pure crystal end to end
<FromGitter> <vladfaust> Solid
<FromGitter> <bajro17> @bararchy honestly mostly because of you I start use for devlopment
<FromGitter> <bajro17> it will be all converted to crystal
<FromGitter> <bajro17> and it will be in production
<FromGitter> <bajro17> :)
<FromGitter> <bararchy> @bajro17 And that's as I see it is the best I can give back to the community :)
<FromGitter> <bajro17> also there is @sdogruyol who is there to help any time
rohitpaulk has joined #crystal-lang
<FromGitter> <sdogruyol> 👍
<FromGitter> <bararchy> And other amazing companies that also drive Crystal forward => https://github.com/crystal-lang/crystal/wiki/Used-in-production
<FromGitter> <bararchy> and of curse Manas
<FromGitter> <bajro17> I also work now on movies streaming site all is based on crystal
<FromGitter> <bajro17> just shhhhh dont tell netflix hahahah
<FromGitter> <bajro17> soon it will be in production probably until next weekend
<FromGitter> <ohenepee> Anyone with a link/links to some pretty much non-rubyist beginner-level Crystal language guide/tutorials/book??
rohitpaulk has quit [Ping timeout: 245 seconds]
<FromGitter> <vladfaust> @bajro17 that's why you've asked for IPFS?
<FromGitter> <bararchy> @ohenepee Other then the offical crystal docs, there is a new book out for Crystal in the pragmatic programmer book shelf
<FromGitter> <bararchy> @bajro17 That's interesting!
<FromGitter> <vladfaust> IPFS has JS worker (i.e. node) which could be enough
<FromGitter> <bajro17> @vladfaust I find js-ipfs-api it is enough
<FromGitter> <bajro17> I can use it
<FromGitter> <bajro17> also probably I will try make crystal shard for ipfs its simple
<FromGitter> <j8r> @bajro17 you're so lucky to dev in Crystal in your every-day job 😮
<FromGitter> <bajro17> @j8r dont give up just find some work and keep bother them to switch to crystal
<FromGitter> <bajro17> hahah I do same
<FromGitter> <bararchy> lol that's how @sdogruyol made Rainforest to also use Crystal
<FromGitter> <bararchy> the power of "letsss useee Crystall youuu gyzzzzz"
<FromGitter> <vladfaust> Literally laughed
<FromGitter> <bajro17> @vladfaust one of the way how to use crystal and earn hahahaha
<FromGitter> <sdogruyol> @bararchy nope that just doesn't work :D
<FromGitter> <bararchy> hahaha
<FromGitter> <bararchy> That's how I made @ArtLinkov to use Crystal in NeuraLegion "dudeeee but plzzzzzz" and he said "ok ok stop nagging me"
<FromGitter> <bararchy> hahahahahah
rohitpaulk has joined #crystal-lang
<FromGitter> <bajro17> Its a beautiful day :)
<FromGitter> <bararchy> It's a great community :)
<FromGitter> <j8r> and like everyone else, they were forced to see the superiority of the language :D
<FromGitter> <j8r> Perhaps they thought: "Hum, yeah indeed not bad, after all"
<FromGitter> <bararchy> "we guess Logger.new is better then final static Logger logger = LoggerFactory.getLogger(MyClass.class);"
<FromGitter> <j8r> wow, that's java?
<FromGitter> <bararchy> yeha
<FromGitter> <bararchy> "the offical pattern"
francisl has quit [Quit: francisl]
rohitpaulk has quit [Ping timeout: 244 seconds]
francisl has joined #crystal-lang
<FromGitter> <bew> thanks gyyzz that was an awesome read in the morning ^^
<FromGitter> <bararchy> hahahaha
francisl has quit [Quit: francisl]
greengriminal has joined #crystal-lang
francisl has joined #crystal-lang
<FromGitter> <fridgerator> lol
<FromGitter> <fridgerator> I get to use crystal at work becuase I worked on those pieces by myself, so I used whatever I wanted.
<FromGitter> <fridgerator> Once Windows support is out though, I will 100% push to use Crystal in desktop software
<FromGitter> <jasdeepsingh> has anybody tried tried debugging crystal as per this doc: ⏎ ⏎ https://github.com/amberframework/docs/blob/master/examples/crystal-debug.md ⏎ ⏎ I'm able to get this working more or less by not able to get the local variables to show up in VSCode debugger [https://gitter.im/crystal-lang/crystal?at=5bacdd25aedb375b9c558181]
<FromGitter> <jasdeepsingh> ```Crystal 0.26.1 (2018-09-26) ⏎ ⏎ LLVM: 6.0.1 ⏎ Default target: x86_64-apple-macosx``` [https://gitter.im/crystal-lang/crystal?at=5bacdd5598245f4ae090c048]
greengriminal has quit [Quit: Leaving]
<FromGitter> <jasdeepsingh> @faustinoaq ☝️
flaviodesousa has joined #crystal-lang
Creatornator has joined #crystal-lang
Creatornator has quit [Client Quit]
<FromGitter> <codenoid> i got $1200/month working with crytal in asia
Heaven31415 has joined #crystal-lang
<Heaven31415> Hi
<FromGitter> <fridgerator> yo
<FromGitter> <bajro17> I was think is it better use struct instead class for performance still confused how to choose struct or class
<FromGitter> <bajro17> I want use it for router
<FromGitter> <bajro17> in web application
<FromGitter> <bajro17> never think about that because I use class
<FromGitter> <bajro17> but after last night little think its sound like struct is perfect for router
<FromGitter> <j8r> @bajro17 use structs. If you notice strange behavior, try to use a class instead
<FromGitter> <j8r> a bit empirical, but simple in practise
francisl has quit [Quit: francisl]
Heaven31415 has quit [Remote host closed the connection]
francisl has joined #crystal-lang
Heaven31415 has joined #crystal-lang
Creatornator has joined #crystal-lang
Creatornator has quit [Client Quit]
francisl has quit [Quit: francisl]
<jokke> hey o/
<jokke> i'm having some trouble building my project in docker
<jokke> i have the following Dockerfile: https://p.jokke.space/FbMcI/
<jokke> it fails with in src/here-ems-backend/server.cr:26: undefined method 'bake_folder'
<jokke> bake_folder "../../public"
<jokke> if i run shards build outside of docker all is well
<jokke> both are using the same crystal version
<jokke> ah
<jokke> i'm an idiot
<jokke> forgot to add public/
<FromGitter> <mettuaditya> can anyone suggest a good tutorial on dynamic allocation in crystal lang
<FromGitter> <vladfaust> What is dynamic allocation?
<FromGitter> <mettuaditya> memory allocation
<FromGitter> <vladfaust> Ah
<FromGitter> <mettuaditya> does anyone have any idea
<FromGitter> <vladfaust> I don't think we have tutorials on such topic right now :thinking: I may be wrong however
<FromGitter> <vladfaust> Why do you need dynamic allocation?
<FromGitter> <vladfaust> Describe your usercase (in one message), I may help
<FromGitter> <mettuaditya> i would like to implement stack using dynamic allocation
<FromGitter> <vladfaust> Oh, no, I cannot help with that, too hard for me 😅
<FromGitter> <mettuaditya> no problem... :)
flaviodesousa has quit [Ping timeout: 246 seconds]
<FromGitter> <proyb6> @mettuaditya
<FromGitter> <mettuaditya> yes
<FromGitter> <proyb6> This might be unrelated to your question but still an interesting code to read https://github.com/ysbaddaden/gc
<FromGitter> <codenoid> @mettuaditya are you asian ?
<FromGitter> <mettuaditya> ya
<Heaven31415> mettuaditya I have some old code implementing resizable stack, would you like to see that?
<FromGitter> <codenoid> @mettuaditya indonesia ?
<FromGitter> <mettuaditya> indian
<FromGitter> <bew> by stack, you mean the data structure right?
<FromGitter> <mettuaditya> @FromIRC yes please i would encourage you to
<FromGitter> <mettuaditya> @bew ya
<FromGitter> <jasdeepsingh> good to see crystal penetrating into the asian/indian markets :)
<FromGitter> <mettuaditya> @jasdeepsingh lol :D
<FromGitter> <girng> @bew https://play.crystal-lang.org/#/r/53z4 could you take a look. I wrote out an example to fully explain my question more
<FromGitter> <girng> Check out the game_loop at the bottom, and my question in the comments
<FromGitter> <girng> since their connection is being handle in a spawn `handle_connection`, but i'm calling that from the main GameServer class, not in a fiber, does that still mean the socket gets written instantly, or is io blocking until the .send goes all the way to australia?
<FromGitter> <Blacksmoke16> jokke you can use a two stage build, for example:
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5bad060d53c31c1111735afd]
<FromGitter> <Blacksmoke16> may also be able to use `from scratch` for your 2nd image, depending on your needs
<FromGitter> <Blacksmoke16> this way you are dont need any of your app files in your container, just the built binaries
<robacarp> @girng If I understand your paste, yes, it will have to wait. The code there is in a fiber, but each call to #send is in the same fiber.
<robacarp> I think if you remove the networking code from your example and add a sleep() to your #send, it'll allow you to easily sort out the concurrency without manually standing up servers in several countries
DTZUZO has quit [Ping timeout: 245 seconds]
<FromGitter> <girng> thanks robacarp for insight, just saw yuour message after i alt-tabbed from reddit
Creatornator has joined #crystal-lang
rohitpaulk has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rohitpaulk has quit [Ping timeout: 240 seconds]
ua_ has quit [Ping timeout: 245 seconds]
francisl has joined #crystal-lang
ua_ has joined #crystal-lang
wontruefree has joined #crystal-lang
Creatornator has joined #crystal-lang
francisl has quit [Quit: francisl]
francisl has joined #crystal-lang
sevensidedmarble has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
sevensidedmarble has joined #crystal-lang
sevensidedmarble has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
sevensidedmarble has joined #crystal-lang
sevensidedmarble has quit [Client Quit]
sevensidedmarble has joined #crystal-lang
DTZUZO has joined #crystal-lang
francisl has quit [Quit: francisl]
sevensidedmarble has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
sevensidedmarble has joined #crystal-lang
francisl has joined #crystal-lang
sevensidedmarble has quit [Client Quit]
sevensidedmarble has joined #crystal-lang
sevensidedmarble has quit [Client Quit]
DTZUZO has quit [Ping timeout: 252 seconds]
francisl has quit [Quit: francisl]
DTZUZO has joined #crystal-lang
sevensidedmarble has joined #crystal-lang
DTZUZO has quit [Ping timeout: 240 seconds]
sevensidedmarble has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
<FromGitter> <ohenepee> New to crystal here... what's the best way to modify a global variable from multiple http routes?
<FromGitter> <ohenepee> Do I just modify the global variable or use something special?
<Heaven31415> by global variable you mean class variable?
<Heaven31415> There are no global variables in Crystal
Creatornator has quit [Quit: Textual IRC Client: www.textualapp.com]
francisl has joined #crystal-lang
JesseH has quit [Quit: Leaving]
sevensidedmarble has joined #crystal-lang
Heaven31415 has quit [Quit: Leaving]
<FromGitter> <Blacksmoke16> ENV variables might be useful as well
<FromGitter> <Blacksmoke16> depending on what you are wanting to store in them @ohenepee
sevensidedmarble has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
sevensidedmarble has joined #crystal-lang
sevensidedmarble has quit [Client Quit]
sevensidedmarble has joined #crystal-lang
<FromGitter> <ohenepee> 👀 What? No global variables? Or perhaps I'm not using the right keyword ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ What do we call `some_var`? Is it not a global variable? And isn't it possible in Crystal? [https://gitter.im/crystal-lang/crystal?at=5bad3cb856877c463a9442a3]
<Yxhuvud> it is a local variable.
<FromGitter> <ohenepee> Oh okay... I guess its probably bcoz I'm not a rubyist
<Yxhuvud> You can see the difference if you for example create a class and instantiate it. Then you can't access the variable from a method on that class.
francisl has quit [Quit: francisl]
<FromGitter> <ohenepee> So what's the best way to modify such a variable in Crystal... is my example the right way, or I need some other way (i.e. in the case of multithreading happening in Crystal later)
<Yxhuvud> it really depends on what you are trying to do.
<FromGitter> <ohenepee> I'm trying to create a crude form of requests per second on my server... as well as concurrent connections
ashirase has quit [Ping timeout: 252 seconds]
<FromGitter> <ezrast> @ohenepee I think what you have is fine for a simple app. It is not thread-safe but that only matters if you actually want to add threading to your program (once that becomes possible).
<FromGitter> <ohenepee> Yeah for now I know its fine but what is the thread-safe way?
return0xe has quit [Remote host closed the connection]
<FromGitter> <ezrast> Pretty sure it will be to have your handlers pass a message to a Channel, and have a separate thread consuming messages from the Channel and updating statistics.
return0e has joined #crystal-lang
wontruefree has quit [Quit: bye]
wontruefree has joined #crystal-lang
ashirase has joined #crystal-lang
wontruef_ has joined #crystal-lang
wontruefree has quit [Ping timeout: 240 seconds]
johndescs has quit [Ping timeout: 240 seconds]
johndescs has joined #crystal-lang
wontruef_ has quit [Quit: bye]
\7im4pple\ has left #crystal-lang ["http://quassel-irc.org - Chat comfortably. Anywhere."]