Add a meeting Rate this page

A

All right, everybody welcome to the 10th Nick, so s office hours, these office hours happen every other Friday at 3 p.m. America New York, when we can, and that is to 2100 UTC I realized I'd, been saying 1980, see even after the time change there recorded and live streamed on YouTube. If you'd.

B

Like to raise her hand to like talk, you can use the hand feature, but it's kind of casual this time. So if you can go ahead and talk, maybe I'll be fine.

B

You'll be accepting um questions on the RC um next to us office, hours channel as well, and just so everyone knows everyone's aware that these could these calls. Do you have a code of conduct and it's the contributor government and I will actually link um the summary of what's expected, everyone to respect throughout the call in the Xoom chat and on IRC. Okay, let me do that.

A

Today we have a really casual day as well as a piece mentioned. Anybody can come and chat and ask questions about anything, you're wondering about we'll just all be flexible and and discuss whatever people are interested in okay,.

B

That sounds fun.

B

Okay, the amazing was start with. Does.

A

Anybody have an initial burning question they'd like to get gone with all.

A

Right well, one thing somebody asked me just this morning was how a commit becomes a channel, and so I figure I will get started with that I'm just pulling up a couple of Windows here to help.

A

And then I will screen share.

B

This is always like I, pretty um like confusing topic for people, because usually, if I think contributors tell people like on the support channels or like on github, is like: oh, the patch gets merged on muster or it gets backward and you just have, and it's not actually that's not actually what happens it's just the byproduct of that is. It looks like a bunch of waiting.

A

Definitely um world of peace. Could you post the zoom link into the office hours channel? My pasteboard isn't working somebody already got it. Alright cool, so o screen sharing.

B

Luckily, he said that um that G Chris distance, it didn't fall silent compared to me. This is microphone up all the way check.

A

That's.

B

What you sound find, actually, perhaps that's your unsound Floria.

A

I could I could turn it up a little bit. Me um sounds good to me. Oh cool, okay,.

A

Oops, hmm alright I'm gonna assume it's fine. Actually complicated computers are complicated, make.

B

Sure they are, they leave me everyday I'm, trying to wonder sometimes if I actually like computers or maybe they like me, mm-hmm.

A

Maybe maybe neither.

B

Alright.

A

Okay, so that's a good point that it's pretty complicated and maybe I don't quite understand all the questions that different people have. So let me.

A

You know what let me just let me just start at the beginning at github, and let me know if somebody if I'm missing a step.

A

It looks like a lot of the people in chat today or in the call today directly are pretty experienced, and so you know, I will need to be careful that we actually get everybody's perspective exactly.

B

Not spreading any disinformation right.

A

Okay, cool, alright, so the first step, the first thing to know is when, when a change is submitted into Knicks packages, it's submitted as a poor request against typically the master branch on github. So if we look at this tee desktop pull request, this is just an arbitrary employer request.

A

I picked it's merging into the master branch and the master branch is what eventually becomes the Knicks OS unstable in Knicks packages, unstable user channels, so after of org does some some checking on the code and on the change and once a user once the contributor merges the package.

A

Alright, we have a system called Hydra at Hydra, Dick's org, which every four hours or so checks out the latest version of Master. It's all the packages and then builds everything everything in the release Nix. Let's maybe I'm pushing my luck. Trying to open two of these at once.

B

That is true, it does take a bit load so.

C

Essentially, each.

B

Package, that's in NICs packages get some Hydra job set. This.

A

Is actually suspiciously slow, oh boy, alright, so this is where it gets a little bit confusing, but for Nix packages unstable we have this job set called trunk and you can see here roughly every four hours or so it starts a new evaluation based on the latest version of master, and that is the commit here on the right side of the same foot. Changes is the committed that repository that's being built under configuration. You can see that it's pulling the Dix packages repository and it doesn't have a specific branch specified so that defaults to master.

A

Once all these builds get queued, they get distributed to feud, sometimes a few dozen different servers, all which are quite powerful and all of the builds everything that hasn't been built before it gets gets built. Oops, that's right.

B

You know I actually have not seen this part of the harder you I've know. I have a really hard time, navigating I Pro enough of the hydras UI to use it for my purposes. Yeah.

A

It's.

B

Kind of hard to navigate yeah.

A

It's a bit tough and it's a bit slow. So it's a bit hard to explore. Let me let me skip that and go to a better, a faster way to find this. If you go to status, Nix, OS org, this is a new website based on a tool called how old is this? Is the older tool I didn't.

B

Even know about this, when is this up.

A

In the last few weeks,.

B

Oh my absence: I didn't notice that yeah.

A

It's quite new, so if you go here, you can see each branch on the left, the current commit of that branch and then the job set for which in Hydra is building that branch and creating that channel. So for Nix package is unstable. We can see it's indeed Nix packages, job set and the trunk drop. Sorry, the NICS packages project, the trunk job set and the unstable job. This job is just basically a list of packages that we want to ensure build every single time that we issue a release.

A

If any of these have failed, it won't issue, it won't actually update the channel. So right now we see Kasich's is failing some business.

B

As far as a hydra UI that I stock regularly, because I make sure everything is building perfectly yeah.

A

This is, this is a really really great dashboard, and so every one of these X's of whatever sort have to be a turn into a check mark and pass before the channel updates. If we were to dig into this, we can take a close look.

B

That should.

A

Be fixed, it should be fixed, but yeah.

B

I think patch got I, don't think it evaluation.

A

Has been Jurgen sent since yeah.

B

That one's at least fixed it's been unblocked, cool.

D

So.

A

If we check out maybe the 1909 job set that all shows some loops, Ron link, that'll show us some more recent passes and we can. We can look at a few different. A different view of the constituents on the top here is the ID of the evaluation that the report is for and if it's green, it passed everything passed and if it's not green, then it's either not yet done, or there was a failure. In this case there was a failure typically from here.

A

If you run to to look into why you would click into that and look into the log and try and debug it one nice way to do that oops. That was the wrong link if I click on that when it takes me to the specific failing build is if you click actions, you can click reproduce locally, and it gives you a shell script that you can run to reproduce exactly what Hydra Graham and that can be pretty helpful if you're debugging like an annoying test of some sort.

A

So after.

B

Hydra has go.

A

Ahead.

B

I, don't actually ever use that I think when I first started like looking into the card rebuild failure, so it use that but I usually look at inputs and what's the commit and then I check out that commit in my fork and then just build package yeah.

A

Yeah, so that's that's a also excellent way to do it. That's.

B

The pro user way yeah.

A

And if you were to download this shell script and look at it, it would it would essentially do exactly that actually, and so you could learn a little bit about how that works through there. So after as a separate system, there is a server that every few minutes checks Hydra to see if that tested job set, has finished or rather not tested job set, but the jobs that listed here has finished. So if we go to status, topics, dot, org and then click graph on up.

A

There's a dashboard on Agrafena called scheduled tasks, state state.

A

And here we can see the history of all of the each of these services checks to see if the that job listed on the status that next westward page is finished and if it does, it creates a tarball and uploads it to Nixon West org, slash channels. I should.

B

Probably look at this later, you sometimes send me links to like Accra phonograph I'm like I. Don't know what that means. Exactly. I have I struggle. The parts of graphs, visually I.

A

So I'm also not a good designer of metrics and graphs, so I'd love to work together to make these better. That's.

B

A possibility I might take up that offer yeah.

A

There's there's another dashboard here called channel updates and this tracks the state of all of the channels that are currently out there. I.

B

Heard of this, one I actually love this graph. Actually, it's actually pretty good.

A

Yeah, so so this one current channels is showing the age of each channel. We can see that over the past seven days, we've had pretty good success.

A

Getting almost all the channels have updated at least once every two days, except for Knicks packages unstable which he says should be fixed and then there's also this old channels down in the bottom left, which shows how old all the unmaintained end-of-life channels are- and it's perhaps not so useful, because it goes from 0 nanoseconds for 33 weeks, at any rate, so that's I, guess pretty good overview, I'm, hoping that's a hue, so review for how how this channel update processes so.

B

A Hydra, a Hydra build happens but like how does that get distributed like when the channel updates? What's the process that kicks in when the Cho gets updated like, we should probably mention, like Nicolas, Channel scripts, sure.

A

Yeah, that's a great point so, but.

B

I, remember um Elco, mentioning about the copying process that happened here from Hydra to UM I forget what it is. Yeah.

A

So there's there's two repositories here: if you want to get into the Nitty Gritty, there's Nick so s4 configurations, this has our network and all our monitoring and all of our infrastructure documented in public. That's.

B

The beauty of Nick's OS and then.

A

There's the Nick's West Channel scripts, which are essentially the program that runs each time. One of these. These tasks executes and it's called mirror Nick's OS branch and it's a Perl script. But it's not a big perl script. So I wouldn't worry, wouldn't stress too much about it.

A

Just scrolling down into the meat of the meat of the matter.

A

The the first step, I'm, not actually sure, there's gonna, be super helpful, but so the first step is this fetch and what that's actually fetching is defined by this channel snicks in the root of the Nick's, Wes or configurations, and we have these jobs links and above that we say it's it's looking for hygienic, sweat, org, slash job and then this value, and then 'we just finished. So let's go to one of those.

B

Nope well, look at this right.

A

There we go so you'll notice. It redirected me to this build /id what's happening there is that redirect looks for the most recent evaluation. Let me go over to the list of evaluations.

A

The the most recent evaluation, where there are no builds where every single billet has completed it, doesn't have to all pass, but there just can't be any cute or in progress builds. So the latest one that is that has completed, which is where this job has also passed.

A

It then fetches that data. It does a little bit of sense of checking to make sure that is isn't going back in time. So if you were to, for example, update the channel to a revision and then restart some jobs, that latest link would point back in time, so we make sure it never rolls. Back in time.

A

We write out some metadata to the channel that is used by a couple of different tools, and this is probably not so helpful, but I guess this is. This is an interesting bit is that we we download some build products from the build jobs and then upload those those to s3. So those are always available.

B

Tommy Lerner had um Samuel Durant had a point here about I. Think it's actually pretty good. Is that a good point could also be what is a channel like when it comes down to it? What is a channel to the user when it reaches them? Yeah.

A

It's.

B

Just a copy of Nick's packages, that's um it's a particular.

A

Job.

B

Set evaluation is like completed and all the tested job sets are successful. All right. That's.

A

Exactly right exactly so, and and that's what we see here so this download file step fetches a tarball of the nicks expressions and uploads it to the channel. So when you fetch the channel from from NYX west artwork, you're just fetching a snapshot of NYX packages from a certain point in time and extract into your system, you have a full copy of mix packages on any system which is using the expected.

A

That's a really good question, and so a channel essentially any URL that has NYX default NYX inside of it can be treated as a channel can I add something.

D

To that yeah yeah.

A

It's.

D

Worth noting that it's a bit more than just a copy of NYX packages, so the code below there adds a few things like the program, stop sequel, I'd database yeah and if there's some things like generating debug info, but that's not actually part of the channel. So the the program starts. Equal I'd fingers is really the main thing. Yeah.

A

That's a great point so generating the programs that secret this. If I remember correctly, this is a index of all the free executables index packages right yeah.

D

It's all the bidding directories yeah, you know Disick used by the command, not found command. So if you mistype something or you try to run something which doesn't exist, it runs this with a program that looks in programs for sequel lights and tells you what package you can find that command in yeah.

A

That's a it's excellent, excellent, excellent Karl that this is also where that is that command not found. Support comes from yeah.

D

This.

A

Is a bit.

D

Of a issue, if we so ultimately, we want to get rid of channels and replace them by flakes, which are essentially just pointers to the git repository. So we get rid of this whole generating a copy of mix packages, but then we have to figure out what to do with programs of sequel lights. So I really thought about it very much. Yeah.

A

We'll see, thank you cool. Does that? How about that? Does that satisfy that world of peace.

B

Yep I think that's that sounds pretty good. I'm cool I'm, not realizing that I'm thinking, my Nixon s is probably messed up. So I don't use a channel so I'm not sure how that programs SQLite file is there and how can I not found works but we'll just think terrify yeah.

A

Yeah I don't have an answer for you. There I do want to say, though, that you don't strictly need to use channels in the state in the sense that not sure what happened there in this, in the sense that any any directory of Nyx packages will work just fine for using these packages. The advantage of using these channels is that they have like we pointed to a large list of tests and validation, to ensure that they're they're safe for running your system on.

A

But if you were to say check out this, not that one, but this revision of Nyx packages, so it would be just as good as using it through the channel. With the caveat, is the pro of the program indexes.

B

So samuel also has another great topic here. Yes, I.

C

Got.

B

Did that properly, this time also mentioned also how channels work on the system tangent tangibly like how it maps to next path? Does that make sense to explain? Is it compared to using next path, equal next packages, home I next packages checkout to actually using a channel? It's actually a great point, like is the next path value different for when someone is using a channel versus if they want to use um a checkout or um a URL sure.

A

Is that something kinda comfortable demonstrating.

B

Possibly possibly no cuz, I'm, not sure I can understand. Why just said yeah.

A

That's okay, so the only trouble is I. Don't have I can't super easily share a terminal right now. But if perhaps there's another question- and we can come back to that and then a couple minutes.

B

That sounds fine. Unless um someone would like to explain it a bit more well understand the question a bit more. The explanation.

D

Was about how how does the Knicks search paths or the Knicks path environment, variable, interactive channels, I.

B

Think so I think that okay area yeah.

D

So it's it's a pretty hot walk interaction. So if you look at that environment variable on mix OS it just obtains and entries, which is something like Knicks packages equals and then the a spice mix for Knicks profiles per user words channels, Knicks OS. So if you reference Knicks packages between angle brackets that resolves to the system-wide expected use channel, so if you're not using that channel, then that probably doesn't point to anything so probably yeah yeah you either have a local override yeah, where you're not using the XPath.

B

But.

D

Sounds like a.

B

Plausible explanation.

A

Sorry I have a terminal now.

A

All right, it's kind of low contrast, I apologize, but we can do this anyway. So if we look at my next path, we have this def expert channels and then a specific Knicks packages equals and then route, slash channels, slash Knicks, OS and then the snakes, OS config stuff that will just ignore for now and the something to interesting to cover here is this: Knicks packages equals syntax is what is used when using these angle brackets in a Knicks expression. So if we do mix packages it points to exactly that same path.

A

That was to find the next path, and you can also use sub sub paths with these angle brackets so X OS release that makes all these things work just fine.

A

So the next thing is.

A

The mix packages equals profiles per user root channels, so that is the root users channel, and so, if our mix channel list we see I have this Nick. So s channel and it's set to 1909 I. Do the next channel update it will download a new copy of that from Nick's org, but also I? Don't need to use that at all I could do this packages equals. Oh boy, I'm gonna get this wrong, so I'm not going to try it to get it wrong. Just one moment, while I look up a URL.

A

So I could use a URL like this and this time when I import Nick's packages, it automatically fetches this target GZ from github and then makes that available for fornix expressions.

A

So.

A

hmm I didn't do that right, oh boy, all good things that we covered every time.

A

Toby is saying that it'd be nice to have a word to describe this angle, bracket path, syntax.

A

That's.

B

A very good point: it's actually it's a syntax, that's in the um language that doesn't actually have a name Naoko.

A

Do you have a name for this.

D

No just yeah search baffled all right, so it's just inspired by see includes mmm so you see if you put an included between angle brackets, it's looked up in some system-wide search path. Gotcha all.

B

Right.

D

That's.

B

Actually, a excellent example that I might even absorb.

A

That, in.

B

The documentation somewhere definitely not already I.

A

Can't say here we go so and- and this is a this exact same Knicks path method. So if I do.

A

Sometimes I can't take I'm, not sure why well I'm gonna stick the master. Oh boy,.

A

So the other thing to know is that this next path is also used for a Knicks OS rebuild and- and so you- you very much- don't have to use channel, so you could explicitly set Knicks path. You can also use can't type of character, so I can actually show up with a capital I next package just equals something and, and that would up that would change what makes OS rebuild its uses for building your system.

A

I'm gonna stop sharing this window because I can't type most characters. I want to type.

A

Anything more questions about. Oh I, have one more thing about channel updates. It.

A

So.

A

Once the channel updates there's, there's two things to git repositories are pushed to the first one. This one is deprecated, but probably about most people are familiar with, is NYX packages channels and when the channel updates a new branch, the branch corresponding to the channel name is pushed to with the revision that the channel is moved to.

A

This is probably depth. I believe this is a deprecated method and replaced with branches on the next packages, repo itself, where we have Nix OS 1909, those aren't my branches but other Nix OS Nix packages, those are channel revision, channel branches that are only updated by Hydra or by that channel update script on a regular basis anyway. So this has been like 30 minutes of our office hours and I really don't want to take up all over time.

A

Any anything else. People would like to discuss.

B

Other ideas for um like google, Summer of Code submission ideas or like where we left off with um any tangental. It's like um like topics about rust and nicks.

B

The sort of things or, if anyone has two houses, something that we'd like to talk about.

A

Yoko, have you seen the cxx project for typesafe at a 500 Zim button? Oh.

E

Yeah I just started playing with a bridge to bridge different type of check networks, it's more like a community thing, but we could potentially bridge RUC challenge with some other type of cuts. If we want to be more welcome to other I, don't know some people don't like IRC for some reason.

E

So I was just gonna mention that.

A

That's cool, so what is it? What does that do? Can you say a bit more like.

E

It's basically a bird statue and stored on all of the networks. So let's say you have slack and you have IRC and then there, but it's just multiplexes the messages or forwards them from one network to the other.

A

It sounds pretty interesting, I'd love to hear more. Where can we no learn more.

E

So I had to do some advertisement with I just set it up for next Friday. So that's a straight when I'm running so in the IRC next Friday each other the bets it's raining, and then it's also running out my trip, which accounts so I can bridge those two.

B

Advertisement is welcome here: Simba Tony, okay becoming popular streamer, somehow yeah.

E

So next Friday is just a stream I'm doing to teach a lot nicer, but the format is a bit differences for its teaching one person at the time and then other people come to just listen to do one on one issuance.

A

I'm really glad that you've been doing those I think that's a really really nice way to help some people and I hope that I hope it has really good results. Yeah.

E

I think at least I'm having fun doing it so and if it's just for two other people tendencies yeah, definitely.

A

Very good, well, thank you. I was actually going to call out next Friday's at the end of the at the end of it all right. Thanks.

B

It's typically.

E

In.

B

Our agenda.

E

Yeah, the culottes on exercise, Arizona and pitches during this tree myself he's talking about husky packaging at the moment.

B

It seems we've I, don't want to like um coin that we set a trend, but I'm just gonna give myself and say that I would set a trend. I hope that doesn't sound, condescending.

E

No it's fine. We talked about this with gray I'm at some point yeah. The only thing is we're doing it on Friday. For some reason, cuz.

B

Friday, it's really the best day. I've talked about probably for people about this. If you make Friday, if you choose Friday to be a good day, then it's a good day for everyone because he made it that way.

A

So sorry is it, would it be okay to change topic, oh yeah, sure absolutely. Has anybody looked into the rest project cxx for FFI between rest and c++? It seemed like perhaps a interesting alternative to porting. Piecemeal rest goes next to rust.

D

Yeah at the look, interesting and apparently has even move value semantics between rusts and C++. So that's pretty cool.

A

Feels, like might be, might be pretty perfectly timed yeah all right. Well, maybe I'll be able to check it out this weekend. No, not this weekend, maybe next weekend cool when I saw the.

B

Library, I was thinking, like um my outsider perspective, obviously don't know much of the many things about um rust, but it seemed that a lot of like the complaints about it being used seriously and NYX would be on health by this. If we had it like really nice.

A

Definitely.

B

So Tobias said so: PRS were using it to interface the existing rust. What are welcome I guess. So, if someone will try to contribute that, maybe that'd be a welcome sort of thing. I do think it's still like I'm, very um early-stage I.

A

Think that's a question for you: okay, oh sorry, I! Didn't that show that what is early, what would it be well would implore requests to nix using cxx be interesting to you. Yeah yeah cool there. You go Toby I'm, ready to see him exactly.

B

Bring them on, we do have the whole um little thread. We started um Elko for um questions about rust and nicks. It was almost um I hope it didn't come off as, like unintentional I'm asked Elko anything for us, because that's not exactly II, don't agree to that. But there is a bit of activity there.

E

Right.

A

Cool, and would you be interested in and talking a bit about what you're thinking with regards to HTTP service, abstractions yeah.

C

Sure, Graham earlier today there was a bit of a conversation about different web backends, the nginx versus the HTTP D web server and some of the web services. We have in Nix OS pretty much all the web services right now they either use nginx or HDTV. They don't have any sort of back-end for that. Some of them have sort of been set up to potentially expand to offering either or in the future. But as it stands right now, it's one to the other.

C

So some people, you know they prefer one one web server or the other, and if they try to run a service that is using the opposite to what they run. Obviously, you're gonna have port conflicts and whatnot, and you just want to sort of simplify it. Have one web server, which makes sense. So somebody was talking about a Google summer, Summer of Code opportunity and I said. That's something. That's been talked about a lot in the past.

C

It was Kahless a mentioned that there haven't been a lot of traction on it, but it's definitely something that's of interest to me. If somebody's going to sort of tackle that but I think there's just a lot of issues to sort of work through before somebody can go ahead and implement that, but it sparks some conversation. It seems like there was more than just a couple of people who were interested in that. But I don't know if anybody had any ideas on that.

A

So my my initial reaction was: was a bit negative. Yep I feel that.

A

These different web servers have a whole expressive configuration format unique to their own because they feel like they have a different abstraction that makes more sense or works better for their platform and I came up with a pretty, perhaps obscure, but maybe not impossible scenario can. Can you talk a little bit about like the scope like what? What scope would this abstraction have? How far do you want to go? What kind of support, what sort of customization would you support versus not support yeah.

C

That that's a very good question, so you know if you did like a full abstraction where you could just sort of say this is like a web service, you know or web server dot. You know this dot that locations things like that. That would be obviously great from a module author standpoint, but there's a lot of problems with that. So, for example, permissions are done dramatically different between nginx and Apache.

C

That's one issue to start with, you know, maybe it's as simple as just writing: multiple backends for for each of these web services or web applications that we want to provide you could go to one extreme or the other or you could go somewhere in between it.

C

I don't know what the answer is, but it's it's a question. I've thought about a little bit, not enough to have any strong opinions, one way or the other yet, but I do see that historically it was talked about a few years ago and you could see several github issues or PRS that are sort of talking about it and yeah. You did hasn't really taken off yet, but maybe that's just because the right person hasn't tackled the problem. Yet.

A

So, okay, let me answer me this: why? Why do you use Apache like why not just use nginx, like everybody else, fair.

C

Question fair question: so a lot of people think that nginx is just hanging sound better. It's not something! I really grew up with and where I work, there's zero possibility of ever switching bench and X. So anytime I put into engine X it's kind of a waste of my time to be honest, so I'm in the Apache world and I'm not going anywhere anytime soon, so I guess just double down.

A

Fair enough, fair enough, I think that's a completely reasonable point to have and I as Samuel D are mentioned on the IRC channel that everybody just using engine engine X produces a monoculture and it's typically not wanted to have a monoculture, and that's one away. Yeah generally.

C

A good, totally I support a lot of all their long-term software. Things like that so I, definitely not in the mainstream of next OS users. In that sense, a lot of people doing bleeding edge things, but but to me, Nix Nix OS provides a lot of value in stable environments and so I'd love to see things continue growing. That way.

E

I see a lot of similarities with how keeping it is. Does things where I already have an ingress controller, and this is so. You define an ingress which is a generic resource, that maps and I form a path to a service, and then ingress controller is generic and you can replace with nginx or Apache or any type of service, and in that specific context, interface is very restricted.

E

So you can only map, I, think a path prefix to our service or maybe a host to a service or like a combination of both, but does the reduce sort of interface that you two might want to too hard. And in that scenario, maybe, for example, if you set up MediaWiki, which I will keep my training with Apache, because PHP runs better with Apache. Let's ask you and then you would have the writer in France that says: ok, the slash MediaWiki or / wiki goes to ninja wiki and that might be nginx price of it.

E

So is that something that makes sense to you and just.

C

Yeah I see we're getting out there.

E

So we'll be maybe a bit more work because we'd have to plug each services manually to a path, but that would maybe give you the expression, parentage ones, hmm yeah.

A

Very good: well, we just have about a minute left, any last minute comments on service, abstractions or other quick questions. I.

A

Guess, from my perspective, I'm you the idea of having a limited interface which lets you abstract. The 80% seems really like a great idea. I think that's a really great idea, so thank you for working on that I hope that I hope you continue to do that and I hope it becomes successful. Thanks. Thank you all right. Well, let's call it a wrap. It's 45 minutes, or so this.

B

Is.

A

The.

B

Closing yeah.

A

Thank you all for coming today, sorry for the unclear communication for the one two weeks ago, we we were both not in very good spots to be doing a hosted. Video call yeah.

B

I had to go into hibernation and crystallize.

A

Yeah, you know I'm sure a number of us couldn't appreciate that feeling exactly the next office hours will be January 24th 2020 nature right that 2020, properly Nix Friday's, hosted by Zen Putin on is that every Friday or every other Friday.

A

Don't remember well, you can find out there's.

E

A birthday.

A

Perfect every Friday and you can find out more at CIMB, ATM, calm, /, Knicks Friday, except right, yeah with a capital in and a capital F, and also Peter Simmons maintainer. The Haskell package set also he's on Twitter, as at original, petty PEGI does a weekly Friday stream of working on the Haskell back up stuff. With that I'll see you on a couple weeks. Thank you so much finally,.

B

Boosted all their friends bye. Thank you.

B

You.
youtube image
From YouTube: NixOS Office Hours, 2020-01-10

Description

Today is a casual conversation, wherever participants want to go.