----BEGIN CLASS---- [16:07] #startclass [16:07] Roll call [16:07] Prashant Sharma [16:08] Shiva Saxena [16:08] Naman Sharma [16:08] Ashish Kumar Mishra [16:08] Mayank Singhal [16:08] devesh verma [16:08] tabrez khan [16:08] Prabhu Sharan Singh [16:08] Ananyo Maiti [16:08] Abdul Raheem [16:08] Jagannathan Tiruvallur Eachambadi [16:08] Piyush Aggarwal [16:08] Rahul Jha [16:08] Vaibhav Kaushik [16:08] Bhavin Gandhi [16:08] Vara Singh [16:08] Shital Mule [16:08] Sehenaz Parvin [16:08] Akshay Gaikwad [16:08] Fathima Shana Noory [16:08] pooja kumari singh [16:08] Prajit Mukherjee [16:08] Kumar Vipin Yadav [16:08] sonia singla [16:08] Aravind Menon [16:08] Anu Kumari Gupta [16:08] Muhammad Zeeshan Qazi [16:08] Neeraj Kumar Arya [16:08] Shivam Singhal [16:08] Shivam Bansal [16:08] Gajendra Saraswat [16:08] Shamik Nandi [16:08] Vivek Shukla [16:09] Vishal Kushwaha [16:09] Okay [16:09] Manishearth, welcome to dgplug [16:09] hi! [16:10] ello Manishearth [16:10] Shubham Sharma [16:10] *Hello [16:10] If someone has question they will raise hand by typing ! [16:10] ! [16:10] next [16:10] Manishearth, you just have to type next. [16:11] heh [16:11] Manishearth, stage is yours :) [16:11] so, hi! [16:11] add: Manishearth [16:11] Manishearth, Hello. [16:11] Roll call: Shubham Sharma [16:11] I'm Manish, I work on Servo and Rust at Mozilla, and have been involved in open source for a while now [16:11] hello Manishearth :) [16:12] add: Manishearth [16:12] in general I've always enjoyed making foss projects more accessible for newcomer contributions, and think it's a very nice way to learn programming [16:12] I personally am self-taught in programming and open source proved to be a really good way for me to learn [16:14] that's mostyl all i have to say, what sort of questions do y'all have? :) [16:15] Manishearth, maybe you can tell a bit about how did you started working on Rust. [16:15] oh, sure [16:16] i used to be somewhat involved in firefox [16:16] /msg nickserv register ASHIMROY navanil.roy.2016@gmail.com [16:16] and someone pointed me to the servo project (an experimental browser in rust) [16:16] at the time i knew of rust but didn't know much rust [16:16] so while working on servo I learned the language [16:17] ! [16:17] and since this was pre-1.0 there was a lot of work to be done on rust, so I helped out on the language itself [16:17] which got me involved [16:17] and i really liked it so I stuck around :) [16:17] ! [16:18] what got me involved in open source was wikipedia [16:19] I used to contribute to wikipeia and at one point i started writing userscripts. that got me better at JS [16:20] a bit later I got involved in this project called ACC that helps create accounts for those who have trouble doing so (e.g. they're behind a blacklisted IP or something). ACC has a nice chunk of software for this, and I also started writing some JS for it. At the time I was the only person who regularly used JS on the project [16:20] after i while i started drifting between open source projects, someone introduced me to firefox which i kinda liked [16:21] these days aside from servo and rust I tend to float around contrbuting to random things i use [16:22] overall open source has helped me learn JS, python, rust, c++, systems programming in general [16:22] Manishearth, if you want to start taking questions, type next. [16:23] next [16:23] oh, I see :) [16:23] I want to start with the elephant in the room. What is the easiest way to start learning rust? I tried following a workshop video from rustconf but quickly lost track of it. [16:23] which video? [16:23] honestly the rust book is the best imo [16:23] https://doc.rust-lang.org/book/index.html [16:24] there's also "rust by example" [16:24] does that work? [16:24] (should i type next again?) [16:25] there are also lots of open source projects in rust which mentor [16:25] https://www.rustaceans.org/findwork [16:25] next [16:25] Can you tell us how did you contribute to Wikipedia initially? [16:25] Manishearth: sorry, I couldn't find the video. Youtube search fails me. Thanks I will look into it :) [16:25] thanks [16:26] ! [16:26] prabhuss: sure! i did some random stuff for stuff I knew (adding animations, sound, etc), and then started doing more cleanup-y things [16:27] and just generally helping out basically [16:27] the wikipedia community is pretty nice and helpful if you wnt to get involved [16:27] as for userscripts, i mostly wrote them to aid my own work [16:27] but later folks started doing requests and I would take them [16:28] something similar happened with me on stack exchange -- though there I mostly continued doing q&a but also wrote scripts [16:29] ! [16:29] next [16:29] Manishearth, thanks [16:29] I saw you are a physics grad and now you are into programming languages and computers how is that confluence and what are the cross paradigm learnings? [16:30] So to be clear -- I was a programmer before I did physics. I took a physics degree because I was sure I could teach myself programming (it had worked well so far) and was sure I couldn't do the same for physics (I had tried), and wanted to learn both [16:30] some of the linear algebra and coordinate geometry i did is useful [16:30] but overall it does afford a different way of thinking, a more mathy way [16:30] which is nice [16:30] ! [16:31] ahh :) that would be a very different world thanks for the answer [16:31] Manishearth: ^ [16:31] I think learning physics isn't too helpful for programmers unless you are just also interested in physics [16:31] next [16:31] have you looked at Julia. Do you see rust moving towards a scientific language that does what Julia does? I feel that Python got more usage from a lot of people due to math and visualization libraries. [16:32] yes, I have looked at julia, though i havne't used it much. for physics stuff I mostly used Mathematica and sometimes Rust [16:32] ! [16:32] i don't see rust *moving* there, but I do see rust perhaps *growing* there [16:32] but it's not a major priority right now [16:33] one of the things about scicomp is that there are well entrenched libraries and stuff and if you don't have that nobody will use it [16:33] so lots of physicists still use fortran for this [16:33] and Julia, Mathematica, etc all have good visualization/stats/etc tools and libraries [16:33] if rust can grow this ecosystem it can work [16:33] Hello everyone. Can anyone please explain me the concept of static and non static methods? [16:34] but also -- the way scicomp works means that you don't need static types as much [16:34] navanil: please get in the queue and ask only when called upon [16:34] often because your "program" is more of an ongoing analysis [16:34] so python , mathematica, julia are great for this [16:34] ! [16:34] still, a fast language with decent parallelism is good for this :) [16:35] so we'll see [16:35] next [16:35] Pass, got resolved ^^, Thanks. [16:36] next [16:36] Is rust the core programming language of Mozilla? Also, is it used by other organizations as their primary language? [16:36] no and yes [16:36] Rust is a programming language incubated at mozilla [16:36] now it's got a wholly separate govenance structure -- many mozilla employees are involved , but it's separate [16:36] i.e. mozilla doesn't make the decisions here [16:37] ! [16:37] mozilla is highly invested in rust, and tries to use it for new projects [16:37] but firefox is still largely a c++ codebase [16:37] https://www.rust-lang.org/friends.html is many of the companies using rust [16:37] the smalle companies there are often primary-rust [16:38] PingCAP is one of the largest primary-rust orgs i think [16:38] next [16:38] Manishearth, thanks. there are surely great things to be done with Rust in future. [16:38] Hello everyone. Can anyone please explain me the concept of static and non static methods? [16:39] navanil, please ask this after our session with out guest is over [16:39] next [16:39] Manishearth, please move on to our next question [16:39] Is firefox using servo in any way ? [16:39] Okay! [16:39] yeah! [16:40] Also is servo similar to what V8 is for chrome ? [16:40] https://blog.rust-lang.org/2017/11/14/Fearless-Concurrency-In-Firefox-Quantum.html [16:40] that post is more geared towards rust programmers [16:40] but [16:40] ah [16:40] https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ [16:40] that's a better one [16:40] so currently firefox uses servo's CSS engine [16:41] which is parallel and fast [16:41] there is also experimental support for servo's rendering engine (webrender) [16:41] https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/ [16:41] there's a lot of *other* rust in firefox but these are the two parts taken from servo [16:41] (some of URL parsing is done by servo too) [16:42] servo is not like V8 -- servo is a full browser engine in rust [16:42] V8 is a JS engine, like spidermonkey [16:42] which is a part of a browser engine [16:42] (servo also uses spidermonkey) [16:42] next [16:42] ! [16:42] next [16:43] ok, got some parts of it . Will read more from the links you pointed [16:43] Manishearth please go ahead, will revert in a min [16:43] Manishearth, thank you [16:43] anybody else with a questio [16:43] ! [16:44] next [16:45] ! [16:45] Working with large projects like firefox or servo is daunting. How do we start to debug such code? Its quite difficult to even find the entry point [16:45] when i started I'd follow the strings [16:46] if I'm working on some feature, there's bound to be some UI element related to it [16:46] which has some text on or near it [16:46] find that text in the codebase, backtrack [16:46] ! [16:46] ! [16:46] so one thing you realize is that *usually* these codebases are somewhat compartmentalized [16:46] ok [16:46] nobody understands them *all*, you don't need to [16:46] so don't try to :) [16:46] try and understand the area you need to only [16:47] and talk to people more experienced with the project [16:47] there's a LOT of unwritten knowledge in these things [16:47] one really helpful thing you can do is if you spend a lot of time figuring omething out, write it down. In the docs or somewhere. [16:47] next [16:47] Yes, sometimes there isn't much documentation for a method or function [16:48] what do you think about projects thinking about porting their code to rust? recently I saw newsboat(an rss reader) was thinking about options due to unknown memory issues that are very hard to find in c++. I feel that some of the “port to rust” enthusiasm has been memefied but it should still be considered. [16:48] So in that cases is it ok to ask in the forums what the method does ? [16:48] ananyo: yeah, or on IRC [16:48] ok. Thank you [16:48] (I prefer irc for such qs) [16:49] so yeah, if you want to port to rust, go for it. usually folks have a need; large c++ pojects can be hard to managed [16:49] *manage [16:49] the memery is mostly a hacker news thing lol [16:49] some folks get super excited about it [16:49] but really, if you think your codebase should be rustified, go for it [16:50] we've had a lot of successful ports like this, both in hobby projects and in the industry [16:50] next [16:50] Since you mentioned that open source has helped you learn many languages, can you tell us about your approach towards contributing to a project in a new language (or if you don't know that language)? [16:51] so even before i did open source i learned through doing, not through books [16:51] to be clear; this is what works for me, this may not work for you [16:51] books are often better [16:51] so I'd write fun things and learn that way [16:52] with open source I'd try to pick issues that are basically straightforward so I spend less time figuring stuff out [16:52] and slowly ramp up [16:52] looking at fixes for similar issues is VERY helpful [16:52] I find that looking at patches is one f the best ways to get familiar with an area of the codebase [16:52] over just reading the code [16:52] (which can take forever) [16:52] next [16:52] I’ve been trying to impress on my young friends here in the channel, the importance of writing and blogging as a way to clear and sharpen one’s mind. [16:53] Reading your posts seemed to exemplify that for me. [16:53] okay, thank you [16:53] What goes into writing something like https://manishearth.github.io/blog/2018/02/15/picking-apart-the-crashing-ios-string/ or https://blog.rust-lang.org/2017/11/14/Fearless-Concurrency-In-Firefox-Quantum.html [16:53] Would you please explain how you go about writing them? Thinking about them? [16:53] blog posts? [16:53] sure [16:54] so to preface I've found blog posts to be an *amazing* tool for learning [16:54] i don't mean reading, I mean writing [16:54] one thing I've noticed about this is that normally you *think* you understand something, and when you write it down you realize you only had a partial undestanding [16:55] so when I wrote https://manishearth.github.io/blog/2015/05/30/how-rust-achieves-thread-safety/ for example I realized a lot of things about rust's model (and incorporated it into the post) [16:55] in fact I got such a clear understanding from writing that that I found a bug in rust immediately after [16:55] anyway, my usual blog writing process [16:55] is that I usually have the idea for the post quite a while before [16:56] and think about it at random times [16:56] which gives me a good idea of the skeleton [16:56] and at some point i stop procrastinating and sit down to write [16:56] the iOS one is special since I wrote that quickly [16:57] and was in fact still figuring some minor details out as i was writing it [16:57] that one I basically figured most of it out and just sat and wrote [16:57] and the fearless concurrency one was also on *somewhat* of a deadline since we wanted to release it around the time of the firefox release [16:58] but also it was pretty short -- I tend to be super verbose [16:58] so both of these were more direct thoughts-to-paper with lots of editing [16:58] instead of planning a bit beforehand [16:59] initially when i used to blog i wasn't so good but it doesn't take long to get better [16:59] and i highly suggest people get started [16:59] that was my related followup how long did it take you to get “good enough” at writing? [16:59] :) [16:59] even if your first posts aren't good it's fine, you'll still learn by writing them [16:59] and usually there's someone out there who thinks similar to you who will be helped by your post [17:00] hmm, I don't know [17:00] ! [17:00] we had lots of writing in my school in Malden, MA where i grew up and that certainly helped [17:00] like, we wrote a LOT [17:01] but also I didn't write for years after that, and struggled with technical writing initially [17:01] i think it took like a year-ish [17:01] one thing is that if you're involved in open source you end up writing "blog posts" anyway! [17:01] they're just called "comments" :) [17:01] so you get that experience over time [17:01] this was stupendously helpful! Thank you sooo much :) [17:02] I once wrote documentation for a rust error and it became blog post length (see https://doc.rust-lang.org/error-index.html#E0038 ) [17:02] next [17:02] How did you manage to contribute that much in college time , i saw you contribute a lot to servo from 2014 or earlier , I am asking it because it takes too much time for me to solve a single issue in github.com/mozilla/addons-frontend [17:03] i found it super fun so it wasn't much pressure [17:04] i also didn't focus *that* much on academics at college, i spread out quite a bit [17:05] it's kinda nice to have that variety -- you spend most of the day doing physics so you don't feel tired when you start programming [17:05] next [17:05] ! [17:06] Manishearth, thank you [17:06] ! [17:06] ! [17:07] next [17:07] being a system programming language, what are your views on microcontroller related stuff? Does rust support in microcontrollers as well or is it still in development phase on hardware stuff? [17:08] If anyone wants to find help on Rust, what are the available options? (for all the new programmers in this channel). [17:08] oops, my mistake [17:08] Sorry, i am in another conference at the same time. [17:09] ! [17:10] prokbird: it's so so. it supports the targets pretty well, but the ecosystems -- the libraries, etc -- are still somewhat in flux [17:10] there's a lot of work happening here so it's improing though [17:10] and folks are already doing production software on microcontrollers in rust though [17:10] next [17:10] Manishearth, thanks :) [17:11] for kushal - If anyone wants to find help on Rust, what are the available options? (for all the new programmers in this channel). [17:11] kushal: Rust has IRC channels on the mozilla network (#rust, #rust-beginners), there's a rust reddit, there's users.rust-lang.org, there's a rust discord [17:11] there's also a rust slack [17:12] next [17:12] And since I’m on pain medication, here’s unrelated loopy followup, [17:12] Is it two words? Manish Earth? Or a portmanteau? Manish Hearth? [17:12] heh [17:13] Manish Earth, my first name is Manish [17:13] "Earth" is just a random string to make it a unique username [17:13] sorry just had to know :) [17:13] but yeah many folks read it as manis hearth or man is hearth or something. i do often joke about that [17:13] next [17:15] ! [17:15] ! [17:16] next [17:17] please skip [17:17] I will ask next [17:17] next [17:17] Is Rust useful in data science field? as usually Python and R are leading there, is there any scope for rust? [17:19] yes, but less so -- see the answer i gave for scicomp earlier :) [17:19] it may grow [17:20] Okay sure! Manishearth, thanks [17:20] next [17:20] Manishearth, if you have to give some 2-3 line advice to the newbies who wants to follow you path and become upstream contributors, what those will be? [17:22] I think .... [17:22] explore a lot, don't be intimidated by large projects. don't be afraid to ask questions [17:22] write about what you learn, even if others have written about it before [17:22] (if it's something that fits in the docs, do that) [17:23] many projects have easy-tagged or mentored issues, look for those [17:23] that's about it :) [17:23] ! [17:23] next [17:23] next [17:23] ! [17:23] next [17:23] oh, there was a space [17:24] other than rust, can you tell some projects which have mentored issues? yeah :) [17:26] firefox does, many projects in the rust community (rustfix, clippy, rls) do, i know folks who have had good experiences getting mentored in cpython (and other python projects) [17:26] http://edunham.net/2015/11/04/beyond_openhatch.html is a good way to find mentored issues [17:27] there are a LOT of projects that mentor i just can't think of them easily :) [17:27] there's a community called include_cpp for c++ which is pretty nice , they can help if you're interested in c++ stuff [17:28] ok, will look into it! Thanks for the session :) [17:29] Manishearth, Thank you for this amazing session. [17:29] Taking out time so early in the morning is always difficult. [17:30] We will end the session now. ----END CLASS----