POPULARITY
Riak Dut is a comedy content creator based in Rochester Minnesota. Riak has been a big fan of all types of comedy his whole life. Not much is known about this viral content creator, but on this episode of the Passion Pod we get a glimpse into his life. He opened for both the Ying Yang Twins and T.I.?!
Would you want to know diseases you could develop in the future? --- Send in a voice message: https://podcasters.spotify.com/pod/show/Tammy English /message
Dengarkan Pagi Di Sinar Bersama Jep, Rahim, Angah dan Elizad setiap Isnin hingga Jumaat bermula jam 6 hingga 10 pagi.
Máriakálnok a Szigetköz egyetlen búcsújáróhelye Mosonmagyaróvár közelében. Az egyik leganda szerint 1529-ben a török elől visszavonuló keresztény seregek itt pihentek meg és a forrás csodatevő ereje folytán a katonák sebei behegedtek, a betegek pedig meggyógyultak. Majd újabb csoda történt: egy kálnoki halász hársfából faragott Mária szobrot talált a forrás vizében.
Sentry is an application monitoring tool that surfaces errors and performance problems. It minimizes the need to manually look at logs or dashboards by identifying common problems across applications and frameworks. David Cramer is the co-founder and CTO of Sentry. This episode originally aired on Software Engineering Radio. Topics covered: What's Sentry? Treating performance problems as errors Why you might no need logs Identifying common problems in applications and frameworks Issues with Open Telemetry data Why front-end applications are difficult to instrument The evolution of Sentry's architecture Switching from a permissive license to the Business Source License Related Links Sentry David's Blog Sentry 9.1 and Upcoming Changes Re-Licensing Sentry Transcript You can help edit this transcript on GitHub. [00:00:00] Jeremy: Today I'm talking to David Kramer. He's the founder and CTO of Sentry. David, welcome to Software Engineering Radio. [00:00:08] David: Thanks for having me. Excited for today's conversation. What's Sentry? [00:00:11] Jeremy: I think the first thing we could start with is defining what Sentry is. I know some people refer to it as an error tracker. Some people have referred to it as, an application performance monitoring tool. I wonder if you could kind of describe in, in your words what it is. [00:00:30] David: You know, as somebody who doesn't work in marketing, I just tell it how it is. So Sentry started out doing error monitoring, which. You know, dependent on who you talk to, you might just think of as logging, right? Like that's the honest truth. It is just logging just a different shape or form. these days it's hard to not classify us as just an APM tool that's like the industry that exists. It's like the tools people understand. So I would just say it's an APM tool, right? We do a bunch of things within that space, and maybe it's not, you know, item for item the same as say a product like New Relic. but a lot of the overlap's there, so it's like errors performance, which is like latency and sort of throughput. And then we have some stuff that just goes a little bit deeper within that. The, the one thing i would say that is different for us versus a lot of these tools is we actually only do application monitoring. So we don't do any since like systems or infrastructure monitoring. Meaning Sentry is not gonna tell you when you need to replace a hard drive or even that you need new hard, like more disk space or something like that because it's just, it's a domain that we don't think is relevant for sort of our customers and product. Application Performance Monitoring is about finding crashes and performance problems that users would associate with bugs [00:01:31] Jeremy: For people who aren't familiar with the term application performance monitoring, what is that compared to just error tracking? [00:01:41] David: The way I always reason about it, this is what I tell new hires and what I would tell, like my mother, if I had to explain what I do, is like, you load Uber and it crashes. We all know that's bad, right? That's error monitoring. We capture the crash report, we send it to developers. You load Uber and it's a 30 second spinner, like a loading indicator as a customer. Same outcome for me. I assume the app is broken, right? So we also know that's bad. Um, but that's different than a crash. Okay. Sentry captures that same thing and send it to developers. lastly the third example we use, which is a little bit more. I think, untraditional, but a non-traditional rather, uh, you load the Uber app and it's like a blank screen or there's no button to submit, like log in or something like this. So it's kind of like a, it's broken, but it maybe isn't erroring and it's not like a slow thing. Right. Same outcome. It's probably a bug of some sorts. Like it's what an end user would describe it as a bug. So for me, APM just translates to there are bugs, user perceived bugs in your application and we're able to monitor and, and help the software teams sort of prioritize and resolve those, those concerns. [00:02:42] Jeremy: Earlier you were talking about actual crashes, and then your second case is, may be more of if the app is running slowly, then that's not necessarily a crash, but it's still something that an APM would monitor. [00:02:57] David: Yeah. Yeah. And I, I think to be fair, APM, historically, it's not a very meaningful term. Like I as a, when I was more of just an individual contributor, I would associate APM to, like, there's a dashboard that will tell me what's slow in my application, which it does. And that is kind of core to APM, but it would also, none of the traditional tools, pre sentry would actually tell you why it's broken, like when there's an error, a crash. It was like most of those tools were kind of useless. And I don't know, I do actually know, but I'm gonna pretend I don't know about most people and just say for myself. But most of the time my problems are errors. They are not like it's fast or slow, you know? and so we just think of it as like it's a holistic thing to say, when I've changed the application and something's broken, or it's a bug, you know, what is that bug? How do we help people fix it? And that comes from a lot of different, like data signals and things like that. the end result is still the same. You either are gonna fix it or it's not important and you ignore it. I don't know. So it's a pretty straightforward, premise for us. But again, most companies in the space, like the traditional company is when you grow a big company, what happens is like you build one thing and then you build lots of check boxes to sell more things. And so I think a lot of the APM vendors, like they've created a lot of different products. Like RUM is a good example of another acronym that lives with an APM. And I would tell you RUM is completely meaningless. It, it stands for real user monitoring. And so I'm like, well, what's not real about monitoring the application? Well, nothing's not real, but like they created a new category because that's how marketing engines work. And that new category is more like analytics than it is like application telemetry. And it's only because they couldn't collect the app, the application telemetry at the time. And so there's just a lot of fluff, i would say. But at the end of the day too, like developers or engineering teams, it's like new version of the application. You broke something, let's tell you about it so you can fix it. You might not need logging or performance monitoring [00:04:40] Jeremy: And, and so earlier you were saying how this is a kind of logging, but there's also other companies, other products that are considered like logging infrastructure. Like I, I would think of companies like Paper Trail or Log Tail. So what space does Sentry fill that's that's different than that kind of logging? [00:05:03] David: Um, so the way I always think about it, and this is both personally true, and what I advise other folks is when you're building something new, when you start from zero, right, you can often take Sentry put it in, and that's good enough. You don't even need performance monitoring. You just need like errors, right? Like you're just causing bugs all the time. And you could do that with logging, but like the delta between air monitoring and logging is night and day. From a user experience, like error monitoring for us, or what we built at the very least, aggregates the errors. It, it helps you understand the frequency. It helps you when they're new versus old. it really gives you a lot of detail where logs don't, and so you don't need logging often. And I will tell you today at Sentry. Engineers do not use logs for the most part. Uh, I had a debate with one of our, our team members about it, like, why does he use logs recently? But you should not need them because logs serve a different purpose. Like if you have traces which tell you like, like fast and slow in a bunch of other network data and you have this sort of crash report collection or error monitoring thing, logs become like a compliance or an audit trail or like a security forensics, tool, and there's just not a lot of value that you would get out of them otherwise, like once in a while, maybe there's like some weird obscure use case, but generally speaking, you can just pretend that you don't need logs most days. Um, and to me that's like an evolution of the industry. And so when, when Sentry is getting started, most people were still logs. And if you go talk to SRE teams, they're like, oh, login is what we know. Some of that's changed a little bit, but. But at the end of the day, they should only be needed for more complicated audit trails because they're just not a good solution to the problem. It's just free form data. Structured or not, doesn't really matter. It's not aggregated. It's not something that you can really use. And it's why whenever you see logging tools, um, not even the papertrails of the world, but the bigger ones like Splunk or Cabana, it's like this weird, what we describe as choose your own adventure. Like go have fun, build your dashboards and try to make the logs useful kind of story. Whereas like something like Sentry, it's just like, why would you waste any time trying to build dashboards when we can just tell you when something new is broken? Like that's the ideal situation. [00:06:59] Jeremy: So it sounds like maybe the distinction is with a more general logging tool, like you mentioned Splunk and Kibana it's a collection of all this information. of things happening, even though nothing's necessarily wrong, whereas Sentry is more Sentry is it's going to log things, but it's only going to log things if Sentry believes something is wrong, either because of a crash or because of some kind of performance issue. People don't want to dig through logs or dashboards, they want to be told when something is wrong and whyMost software is built the same way, so we know common problems [00:07:28] David: Yeah. I, i would say it's about like actionability, right? Like, like nobody wants to spend their time digging through logs, digging through dashboards. Metrics are another good example of this. Like just charts with metrics on them. Yeah. They tell me something's happening. If there's lots of log statements, they tell me something's going on, but they're not, they're not optimized to like, help me solve a problem, right? And so our philosophy was always like, we haven't necessarily nailed this in all cases for what it's worth, but. It was like, the goal is we identify an actual problem, like close to like a root cause kind of problem, and we escalate that up and that's it. Uh, versus asking somebody to like go have to like build these dashboards, build these things, figure out what data matters and all this because most software looks exactly the same. Like if you have a web service, it doesn't matter what language it's written in, it doesn't matter how different you think your architecture is from somebody else's, they're all the same. It's like you've got a request, you've got a database, you've got some cache, you've got all these like known, known quantity things, and the slowness comes from the same places. Errors are structured while logs are not [00:08:25] David: The errors come from the same places. They're all exhibiting the same kinds of behavior. So logging is very unstructured. And what I mean by that is like there's no schema. Like you can hypothetically like make it JSON and everybody does that, but it's still unstructured. Whereas like errors, it's, it's a tight schema. It's like there's a type of error, there's a message for the error, there's a stack trace, there's all these things that you know. Right. And as soon as you know and you define those things, you can just build better products. And so distributed tracing is similar. Hypothetically, it's a little bit abstract to be fair, but hypothetically, distributed tracing is creating a schema out of basically network annotations. And somebody will yell at me for just simplifying it to that. I would tell 'em that's what it is. But, same goal in mind. If you know what the data is, you can take action on it. It's not quite entirely true. Um, because tracing is much more freeform. For example, it doesn't say if you have a SQL statement, it should be like this, it should be formatted this way, things like that. whereas like stack traces, there's a file name, there's there's a line number, there's like all these things, right? And so that's how I think about the delta between what is useful information and what isn't, I guess. And what allows you to actually build things like Sentry versus just build abstract exploration. Inferring problems rather than having user identify them [00:09:36] Jeremy: Kind of paint the picture of how someone would get started with a tool like Sentry. Do they need to tell Sentry anything about their application? Do they need to modify their source code at all? give us a picture of how that works. [00:09:50] David: Yeah, like one of our fundamentals, which I think applies for any real business these days is you've gotta like reduce user friction, right? Like you've gotta make it dead simple to use. Uh, and for us there were, there was like kind of a fundamental driving constraint behind that. So in many situations, um, APM vendors especially will require you to run an agent a basically like some kind of process that runs on your servers somewhere. Well, if you look at modern tech stacks, that doesn't really work because I don't run the servers half my stuff's in the browser, or it's a mobile app or a desktop app, and. Even if I do have those servers, it's like an entirely different team that controls them. So deploying like a sidecar, an agent is actually like much more complicated. And so we, we looked at that and also because like, it's much easier to have control if you just ship within the application. We're like, okay, let's build like an SDK and dependency that just injects into the, the application that runs, set an API key and then you're done. And so what that translates for Sentry is we spend a lot of time knowing what Django is or what Rails is or what expresses like all these frameworks. And just knowing how to plug into the right signals in those frameworks. And then at that point, like the user doesn't have to do anything. And so like the ideal outcome for Sentry is like you install the dependency in whatever language makes sense, right? You somehow configure the API key and maybe there's a couple other minor settings you add and that gives you the bare bones and that's it. Like it should just work from there. Now there's a lot you can do on top of that to enrich data and whatnot, but for the most part, especially for errors, like that's good enough. And that, that's always been a fundamental goal of ours. And I, I think we actually do it phenomenally well. [00:11:23] Jeremy: So it sounds like it infers things about the application without manual configuration. Can you give some examples of the kind of things that Sentry knows without the user having to tell it? [00:11:38] David: Yeah. So a good example. So on the errors side, we know literally everything because an error object in each language has all these attributes with it. It, it gives you the stack trace, it gives you a lot of these things. So that one's straightforward. On the performance side, we use a combination of leveraging some like open source, I guess implementations, like open telemetry where it's got all this instrumentation already and we can just soak that in, um, as well as we automatically instrument a bunch of stuff. So for example, say you've got like a Python application and you're using, let's say like SQL Alchemy or something. I don't actually know if this is how our SDK works right now, but, we will build something that's aware of that library and make sure it can automatically instrument the things it needs to get the right information out of it. And be fair. That's always been true for like APM vendors and stuff like that. The delta is, we've often gone a lot deeper. And so for Python for example, you plug it into an application, we'll capture things like the error, error object, which is like exception class name exception value, right? Stack trace, file, name, line number, all those normal things, function name. We'll also collect source code. So we'll, we'll give you sort of surrounding source code blocks for each line in the stack trace, which makes it infinitely easier to consume. And then in Python and, and php, and I forget if we do this anywhere else right now, we'll actually even allow you to collect what are called stack locals. So it'll, it'll give you basically the variables that are defined almost like a debugger. And that is actually, actually like game changing from a development point of view. Because if I can go look in production when there's an incident or a bug and I can actually see the state of the application. , I, I never need to know like, oh, what was going on here? Oh, what if like, do I need to go reproduce this somehow? I always have the right information. And so all of that for us is automatic and we only succeed like, it, it's, it's like by definition inside of Sentry, it has to be automatic. Like if we ask the user to do anything whatsoever, we're failing. And so whenever we design any product or anything, and to be fair, this is how every product company should operate. it's gotta be with as little user input as humanly possible. And so you can't always pull that off. Sometimes you have to have users configure stuff, but the goal should always be no input. Detecting errors through unhandled exceptions [00:13:42] Jeremy: So you, you're talking about getting a stack trace, getting, the state of variables, source code. That sounds like that's primarily gonna be through unhandled exceptions. Would you say that's, that's the primary way that you get error? [00:13:58] David: Yeah, you can integrate in other ways. So you can like trigger our API to capture an, uh, an exception. You can also, for better or worse, it's not always good. You can integrate through logging adapters. So if you're already using a logging framework and you log their errors there, we can often capture those. However, I will say in most cases, people use the logging APIs wrong and the data becomes junk. A good, a good example of this is like, uh, it varies per language. So I'm just gonna go to Python because Python is like sort of core to Sentry. Um, in Python you have the ability to log messages, you can log them as errors, you can log like actual error objects as errors. But what usually happens is somebody does a try-catch. They, they capture the error they rescue from it. They create a logging call, like log dot error or something, put the, the error message or value in there. And then they send that upstream. And what happens is the stack trace is gone because we don't know that it's an error object. And so for example, in Python, there's actually an an A flag. You pass the logging call to make sure that stack trace stays present. But if you don't know that the data becomes junk all of a sudden, and if we don't have a stack trace, we can't actually aggregate data because like there's just not enough information to like, to run hashing on it. And so, so there are a lot of ways, I guess, to capture the information, but there are like good ways and there are bad ways and I think it, it's in everybody's benefit when they design their, their apt to like build some of these abstractions. And so like as an example, when, whenever I would start a new project these days, I will add some kind of helper function for me to like log an exception when I like, try catch and then I can just plug in whatever I need later if I want to enrich the data or if I wanna send that to Sentry manually or send it to logs manually. And it just makes life a lot easier versus having to go back and like augment every single call in the code base. [00:15:37] Jeremy: So it, it sounds like. When you're using a tool like Sentry, there's gonna be the, the unhandled exceptions, which are ones that you weren't expecting. So those should I guess happen without you catching them. And then the ones that you perhaps do anticipate, but you still consider to be a problem, you would catch that and then you would add some kind of logging statement to your code that talks to Sentry directly. Finding issues like performance problems (N+1 queries) that are not explicit errorsz [00:16:05] David: Potentially. Yeah. It becomes a, a personal choice to be fair at that, at that point. but yeah, the, the way, one of the ways we've been thinking about this lately, because we've been changing our error monitoring product to not just be about errors, so we call it issues, and that's in the guise of like, it's like an issue tracker, a bug tracker. And so we started, we started putting what are effectively like, almost like static analysis concerns inside of this issue tracker. So for example, In our performance monitor, we'll do something called like detect n plus one queries, which is where you execute a, a duplicate query in a loop. It's not necessarily an error. It might not be causing a problem, but it could be causing a problem in the future. But it's like, you know, the, the, the qualities of it are not the same as an error. Like it's not necessarily causing the user to experience a bug. And so we've started thinking more about this, and, and this is the same as like logging errors that you handle. It's like, well, they're not really, they're not really bugs. It's like expected behavior, but maybe you still want to keep it like tracking somewhere. And I think about like, you know, Lins and things like that, where it's like, well, I've got some things that I definitely should be fixing. Then I've got a bunch of other stuff that's like informing me that maybe I should take action on or not. But only I, the human can really know at the end of the day, right, if I, if I should prioritize that or not. And so that's how I kind of think about like, if I'm gonna try catch and then log. Yeah, you should probably collect that data. It's probably less important than like the, these other concerns, like, like an actual unhandled exception. But you do, you do want to know that they're happening and whatnot. And so, I dunno, Sentry has not had a strong opinion on this historically. We're just like, send us whatever you want to capture in this regard, and you can pay for it, that's fine. It's like usage based, you know? we're starting to think a lot more about what should that look like if we, if we go back to like, what's the, what's the opinion we have for how you should use the product or how you should solve these kinds of software problems. [00:17:46] Jeremy: So you gave the example of detecting n plus one queries is, is that like being aware of the framework or the ORM the person is using and that's how you're determining this? Or is it at more of a lower level than that? [00:18:03] David: it is, yeah. It's at the framework level. So this is actually where Open Telemetry causes a lot of harm, uh, for us because we need to know what a database query is. Uh, we need to know like the structure of the query because we actually wanna parse it out in a lot of cases. Cause we actually need to identify if it's duplicate, right? And we need to know that it's a database query, not a random annotation that you've added. Um, and so what we do is within these traces, which is like if you, if you don't know what a trace is, it's basically just like, it's a tree, like a tree structure. So it's like A calls B, calls C, B also calls D and E and et cetera, right? And so you just, you know, it's a trace. Um, and so we actually just look at that trace data. We try to find these patterns, which is like, okay, B was a, a SQL query or something. And every single sibling of B is that same SQL query, but sort of removing certain parameters and stuff for the value. So we'll look at that data and we'll try to pull out anomalies. So m plus one is an example of like a fairly obvious anti pattern that everybody knows is bad and can be optimized. Uh, but there's a lot of other that are a little bit more subjective. I'll give you an example. If you execute three SQL statements back to back, one could argue that you could just batch those SQL statements together. I would argue most of the time it doesn't matter and I don't need to do that. And also it's not guaranteed that that is better. So it becomes much more like, well, in my particular situation this is valuable, but in this other situation it might not be. And that's where I go back to like, it's almost like a linter, you know? But we're trying to infer all of that from the data stream. So, so Sentry's kind of, we're kind of a backwards product company. So we build our product from a technology vision, not from customers want this, or we have this great product vision or anything like that. And so in our case, the technology vision is like, there's a lot of application data that comes in, a lot of telemetry, right? Errors, traces. We have a bunch of other streams now. within that telemetry there is like signal. And so one, it's all structured data so we know what it is so we can actually interpret it. And then we can identify that signal that might be a problem. And that signal in our case is often going to translate to like this issue concept. And then the goal is like, well, can we identify these problems for people and surface them versus the choose your own adventure model, which is like, we'll just capture everything and feed it to the user and they can figure out what matters. Because again, a web service is a web service. A database is a database. They're all the same problems for everybody. All you know, it's just, and so that's kind of the model we've built and are continuing to evolve on and, and so far works pretty well to, to curate a lot of these workflows. Want to infer everything, but there are challenges [00:20:26] Jeremy: You talked a little bit about how people will sometimes use tracing. And in cases like that, they may need some kind of session ID to track. Somebody making a call to a service and that talks to a database and that talks to other services. And you, inside of your application, you have to instrument some way of tracking. This all came from this one request. Is that something that Sentry can infer or is there something that the developer has to put into play so that you can track that sort of thing? [00:21:01] David: Yeah, so it's, it's like a bit of both. And i would say our goal is that we can infer everything. The reality is there is so much complexity and there's too much of a, like, too many technologies in the world. Like I was complaining about this the other day, like, the classic example on web service is if we have a middleware hook, We kind of know request response, usually that's how middleware would work, right? And so we can infer a lot from there. Like basically we can infer the boundaries, which is a really big deal. Okay. That's one thing is boundaries is a problem. What we, we describe that as a transaction. So like when the request starts. When the request ends, right? That's a very important boundary for everybody to understand because when I'm working on the api, I care about the API boundary. I actually don't care about what the database is doing at its low level or what the JavaScript application might be doing above it. I want my boundary. So that's one that we kind of can do. But it's hard in a lot of situations because of the way frameworks and technology has been designed, but at least traditional stuff like a, a traditional web stack, it works like a Rails app or a DDjango app or PHP app kind of thing, right? And then within that it becomes, well, how do you actually build a trace versus just have a bunch of arbitrary labels? And so we have a bunch of complicated tech within each language that tries to establish that tree. and then we annotate a lot of things along the way. And so we will either leverage Open Telemetry, which is an open format spec that ideally has very high quality data. Ideally, not realistically, but ideally it has high quality data. Every library author implements it great, everybody's happy. We don't have to do anything ever again. The reality is that data is like all over the map because there's not like strict requirements for what, how the data should be labeled and stuff. And not everything even has that data. Like not everything's instrumented with open telemetry. So we also have a bunch of stuff that, unrelated to using that we'll say, okay, we know what this library is, we're gonna try to infer some characteristics from this library, or we know what maybe like the DDjango template engine is. So we're gonna try to infer like when the template renders so you can capture that block of information. it is a very imperfect science and I would tell you like it's not, even though like Open Telemetry is a very fun topic for people. It is not necessarily good, like it's not in a good state. Could will it ever be good? I don't know in all honesty, but like the data quality is like all over the map and so that's honestly one of our biggest challenges to making this experience that, you know, tells you what's going on in your database so it tells you what's going on with the cash or things like this is like, I dunno, the cash might be called something completely random in one implementation and something totally different in another. And so it's a lot of like, like data normalization that you have to deal with. But for the most part, those libraries of things you don't control can and will be instrumented. Now the other interesting thing, which we'll see how this works out, so, so one thing Sentry tries to do there, we have all these layers of telemetry, so we have errors and traces, right? Those are pretty high level concepts. We also have profiling data, which is very, very, very, very low level. So it's usually only if you have like disc. I like. It's where is all the CPU time being spent in my application? Mostly not waiting. Like waiting's usually like a network call, right? But it's like, okay, I have a loop that's doing a lot of math, or I'm writing a bunch of stuff to disc and that's really slow. Like often those are not instrumented or it's like these black box areas of a performance. And so what we're trying to do with profiling data, instead of just showing you flame charts and stuff, is actually say, could we fill in these gaps in these traces? Like basically like, Hey, I've got a long period of time where the app's doing something. You know, here's an API call, here's the database stuff. But then there's this block, okay, what's that function or something? Can we pull that out of the profiling data? And so in that case, again, that's just automatic because the profile actually knows everything about the application and know it. It has full access to the function and the stack and everything, right? And so the dream is that you would just always have everything filled in the, the customer never has to do anything with one minor asterisk. And the asterisk is what I would call like business context. So a good example would be, You might wanna associate requests with a specific customer or something like that. Like you might wanna say, well it's uh, I don't know, Goldman Sachs or one of these big companies or something. So you can know like, well when Goldman Sachs is having performance issues or whatever it is, oh maybe I should focus on them cuz maybe they pay you a lot of money or something. Right. Sentry would never know that at the end of the day. So we also have these like kind of tagging contextual APIs that will say like, tell us some informations, maybe it's like customer, maybe it's something else that's relevant to your application. And we'll keep that data associated with the telemetry that's like present, you know, um, but the, at least the telemetry, like again, application's just worth the same, should be, there should be a day in the next few years that it's just all automatic. and again, the only challenge today is like, can it be high quality and automatic? And so that, that's like to be determined. [00:25:50] Jeremy: What you're kind of saying is the ideal is being able to look at this profiling information and be able to build a full picture of. a, a call from beginning to end, all the different things to talk to, but I guess what's the, what's the reality today? Like, what, what is Sentry able to determine, in the world we live in right now? [00:26:11] David: So we've done a lot of this like performance detection stuff already. So we actually can do a lot now. We put a lot of time into it and I, I will tell you, if you look at other tools trying to do tracing, their approach is much more abstract. It's like your traditional monitoring tool that's like, we're just gonna collect a lot of signals and maybe we'll find magic anomaly detection or something going on in it, which, you know, props, but that can figure that out. But, a lot of what we've done is like, okay, we kind of know what this data looks like. Let's go after this very like known quantity problem. Let's normalize the data. And let's make it happen like that's today. Um, the enrichment of profiles is new for us, but it, we actually can already do it. It's not perfect. Detection of blocking the UI thread in mobile apps [00:26:49] David: Um, and I think we're launching something in April or May, something around the, that timeframe where hopefully for the, the technologies we can instrument, we're actually able to surface that in a useful way. but as an example that, that concept that I was talking about, like with n plus one queries, the team built something using profiling data. and I think this, this might be for like a mobile app more so than anything where mobile apps have this problem of, it's, you've got a main thread and if you block that main thread, the app is basically frozen. You see this on desktop apps all the time. You, you very rarely see it on web apps anymore. But, but it's a really big problem when you have a web, uh, a mobile or desktop app because you don't want that like thing to be non-responsive. Right? And so one of the things they did was detect when you're doing like file io on the main thread, you know, right. When you're writing a disc, which is probably a slow thing or something like that, that's gonna block the whole thing. Because you should just do it on a separate thread. It's like an easy fix, potentially may not be a problem, but it could become a problem. Same thing as n plus one. But what's really interesting about it is what the team did is like they used the profiling data to detect it because we already know threads and everything in there, and then they actually recreated a stack trace out of that profiling data when it's surfaced. So it's actually like useful data with that. You could like that I or you as a developer might know how to take and actually be like, oh, this is where it happens at the source code. I can actually figure it out and go fix it myself. And to me, like as like I, I'm still very much in the weeds with software that is like one of the biggest gaps to most things. Is it just, it doesn't make it easy to consume or like take action on, right? Like if I've got a, a chart that says my error rate is high, what am I gonna do with that? I'm like, okay, what's breaking? That's immediately my next question. Right? Okay. This is the error. Where is that error happening at? Again, my next question, it, it's literally just root cause analysis, right? Um, and so that, that to me is very exciting. and I, I don't know that we're the first people to do that, I'm not sure. But like, if we can make that kind of data, that level of actionable and consumable, that's like a big deal for me because I will tell you is like I have 20 years of software experience. I still hate flame charts and like I struggle to use them. Like they're not a friendly visualization. They're almost like a, a hypothetically necessary evil. But I also think one where nobody said like, do we even need to use that? Do we need that to be like the way we operate? and so anyways, like I guess that's my long-winded way of saying like, I'm very excited for how we can leverage that data and change how it's used. [00:29:10] Jeremy: Yeah. So it sounds like in this example, both in the mobile app blocking the UI or the n plus one query is the Sentry, suppose, SDK or instrumentation that's hooked inside of your application. There are certain behaviors that it knows are, are not like ideal I guess, just based on. people's prior experience, like your own developers know that, hey, if you block the UI thread in this mobile application, then you're gonna have performance problems. And so that way, rather than just telling you, Hey, your app is slow, it can tell you your app is slow and it's because you're blocking the UI thread. Don't just aggregate metrics, the error tracker should have an opinion on what actual problems are [00:29:55] David: Exactly, and I, and I actually think, I don't know why so many people don't recognize this gap, because at the end of the day, like, I don't know, I don't need more people to tell me response times are bad or anything. I need you to have an opinion about what's good because. The only way it's like math education, right? Like, yeah, you learn the basics, but you're not expected to say, go to calc, but, and then like, do all the fundamentals. You're like, don't get a calculator and start simplifying the problem. Like, yeah, we're gonna teach you a few of these things so you understand it. We're gonna teach you how to use a calculator and then just use the calculator and then make it easier for everybody else. But we're also not teaching you how to build a calculator because who cares? Like, that's not the purpose of it. And so for me, this is like, we should be helping people sort of get to the finish line instead of making them run the entirety of the race over and over if they don't need to. I don't, I don't know if that's a good analogy, but that has been the biggest gap, I think, in so much of this software throughout the industry. And it's, it's, it's common everywhere. And there's no reason for that gap to exist these days. Like the technology's fine. And the technology's been fine for like 10 years. Like Sentry started in oh eight at this point. And I think there was only one other company I recall at the time that was doing anything that was even similar to like air monitoring and Sentry when we built it, we're just like, what if we just go deeper? What if we collect all this information that will help you debug the problem instead of just stopping it like a log aggregator or something kind of thing, so we can actually have an opinion about it. And I, I genuinely, it baffles me that more people do not think this way because it was not a hard problem at the time. It's certainly not hard these days, but there's still very, I mean, a lot more people do it now. They've seen Sentry successful and there's a lot of similar implementations, but it's, it's just amazes me. It's like, why don't you, why don't people try to make the data more actionable and more useful, the teams versus just collect more of it, you know? 40 people working on learning the common issues with languages and frameworks [00:31:41] Jeremy: it, it sounds like maybe the, the popularity of the stack the person is using or of the framework means that you're gonna have better insights, right? Like if somebody makes a, a Django application or a Rails application, there's all these lessons that your team has picked up in terms of, Hey, if you use the ORM this way, your application is gonna be slow. Whereas if somebody builds something totally homegrown, you won't know these patterns and you won't be able to like help as much basically. [00:32:18] David: Yeah. Yeah, that's exactly, and, and you might think that that is a challenge, but then you look at how many employees exist at like large tech companies and it's, it's not that big of a deal, like, , you might even think collecting all the information for each, like programming, runtime or framework is a challenge. We have like 40 people that work on that and it's totally fine. Like, and, and so I think actually all these scale just fine. Um, but you do have to understand like the domain, right? And so the counter version of this is if you look at say like browser applications, like very rich, uh, single page application type experiences. It's not really obvious like what the opinions are. Like, like if, if you, and this is like real, like if you go to Sentry, it's, it's kind of slow, like the app is kind of slow. Uh, we even make fun of ourselves for how slow it is cuz it's a lot of JavaScript and stuff. If you ask somebody internally, Hey, how would we make pick a page fast? They're gonna have no clue. Like, even if they have like infinite domain experience, they're gonna be like, I'm not entirely sure. Because there's a lot of like moving parts and it's not even clear what like, like good is right? Like we know n plus one is bad. So we can say not doing that is the better solution. And so if you have a JavaScript app, which is like where a lot of the slowness will come from is like the render times itself. Like how do you fix it? You, you can't actually build a product that tells you what to fix without knowing how to fix it, right? And so some of these newer and very fast moving targets are, are frankly very difficult for us. Um, and so that's one thing that I think is a challenge for the entire industry. And so, like, as an example, a lot of the browser folks have latched onto web vitals, which are just metrics that hopefully tell you something about the application, but they're not always actionable either. It'll be like, the idea with like web vitals is like, okay, time to interactive is an an important metric. It's like how long until the page loads that a user can do what they're probably there to do. Okay. Like abstractly, it makes sense to us, but like put into action. How do I optimize time to interactive? Don't block the page. That's one thing. I don't know. Defer assets, that's another thing. Okay. So you've gotta like, you've gotta build a technology that knows these assets could be deferred and aren't. Okay, which ones can be deferred? I don't know. Like, it, it, it's like such a deep rabbit hole. And then the problem is, six months from now, the tech will have completely changed, right? And it won't have like, necessarily solved some of these problems. It will just have changed and they're now a completely different shape of problem. But still the same fundamental like user experience is the same, you know? Um, and to me that's like the biggest challenge in the industry right now is that like dilemma of the browser at the end of the day. And so even from our end, we're like, okay, maybe we should step back, focus on servers again, focus on web services. Those are known quantities. We can do that really well. We can sort of change that to be better than it's been in the past and easier to consume with things like our n plus one detections. Um, and then take like a holistic, fresh look at browser and say, okay, now how would we solve this to make sure we can actually really latch onto the problems that like people have and, and we understand, right? And, you know, we'll see when we get there. I don't think any product does a great job these days for helping, uh, solve those problems. . But I think even without the, the products, like I said, like even our team would be like, fixing this is gonna take months because it's gonna take months just to figure out exactly where the, the common bottlenecks are and all these other things within an application. And so I, I guess what I mean to say with that is there's a lot of opportunity, I think with the moving landscape of technology, we can find a way to, whether it's standardized or Sentry, can find a way to make that data actionable want it something in between there. There are many ways to build things on the frontend with JavaScript which makes it harder to detect common problems compared to backend [00:35:52] Jeremy: So it sounds like what you're saying, With the, the back end, there's almost like a standard way of doing things or a way that a lot of people do it the same way. Whereas on the front end, even if you're looking at a React application, you could look at tenant react applications and they could all be doing state management a totally different way. They could be like the, the way that the application is structured could be totally different, and that makes it difficult for you to infer sort of these standard patterns on the front end side. [00:36:32] David: Yeah, that's definitely true. And it, it goes, it's even worse than that because well, one, there's just like the nature of JavaScript, which is asynchronous in the sense of like, it's a lot of callbacks and things like that. And so that already makes it hard to understand what's going on, uh, where things are happening. And then you have these abstractions like React, which are very good, but like they pull a lot of that away. And so, as an example of a common problem, you load the application, it has to do a lot of stuff to make the page render. You might call that hydration or whatever. Okay. And then there's a completely different state, which is going from, it's already hydrated. Page one, I, I've done an interaction or something. Or maybe I've navigated a page too, that's an entirely different, like, sort of performance problem. But that hydration time, that's like a known thing. That's kind of like time to interactive, right? But if the problem is in your framework, which a lot of it is like a lot of the problems today exist because of frameworks, not because of the technology's bad or the framework's bad, but just because it's abstracted and it's really hard to make it work in all these situations, it's complicated. And again, they have the same problem where it's like changing non sem. And so if the problem is the framework is somehow incorrectly re rendering the page as an example, and this came up recently, for some big technology stack, it's re rendering the page. That's a really bad problem for the, the customer because it's making the, it's probably actually causing a lot of CPU seconds. This is why like your Chrome browser tabs are using so much memory in cpu, right? How do you fix that? Can you even fix that? Do you just say, I don't know, blame the technology? Is that the solution? Maybe that is right, but how would we even blame the technology like that alone, just to identify why it's happening. and you need to know the why. Right? Like, that is such a hard problem these days. And, and personally, I think the only solution is if the industry sort of almost like standardizes on a way to like, on a belief of how this should be optimized and how it should be measured and monitored kind of thing. Because like how errors work is like a standardization effectively. It may not be like a formal like declaration of like, this is what an error is, but more or less they always have the same attributes because we've all kind of understood that. Like those are the valuable things, right? Okay. I've got a server rendered application that has client interaction, which is sort of the current generation of the technology. We need to standardize on what, like that web request, like response life cycle is, right? and what are the moving targets within there. And it just, to me, I, I honestly feel like a lot of what we use every day in technology is like beta. Right. And it's, I think it's one of the reasons why we're constantly always having to up, like upgrade and, and refactor and, and, and shift dependencies and things like that because it is not, it's very much a prototype, right? It's a moving target, which I personally do not think is great for the industry because like customers do not care. They do not care that you're using some technology that like needs a change every few months and things like that. now it has improved things to be fair. Like web applications are much more like interactive and responsive sometimes. Um, but it is a very hard problem I think for a lot of people in the world. [00:39:26] Jeremy: And, and when you refer to, to things feeling like beta, I suppose, are, are you referring to the frameworks people are using or the libraries they're using to support their front end development? I, I'm curious what you're, you're thinking there. [00:39:41] David: Um, I think it's everything. Even like the browser APIs are constantly shifting. It's, that's gotten a little bit better. But even the idea like type script and stuff, it's just like we're running like basically compilers to make all this code work. And, and so the, even that they're constantly adding features just because they can, which means behaviors are constantly changing. But like, if you look at a real world example, like React is like the, the most dominant technology. It's very well designed for managing the dom. It's basically just a rendering engine at the end of the day. It's like it's managed to process updates to the dom. Okay. Makes sense. But we've all learned that these massive single page applications where you build all your application logic and loaded into a bundle is a problem. Like, like, I don't know how big Sentry's bundle is, but it's multiple megs in size and it takes a little while for like a, even on fast fiber here in the Bay Area, it takes a, you know, several seconds for the UI to load. And that's not ideal. Like, it's like at some point half of us became okay with this. So we're like, okay, what we need to do is go back, literally just go back 10 years and we need to render it on the server. And then we need some stuff that makes interactions, you know, highly responsive in the UI or dynamic content in the ui, you know, bring, it's like bringing back jQuery or something. And so we're kind of going full circle, but that is actually like very complicated because the way people are trying to do is like, okay, we wanna, we wanna have the rendering engine operate the same on the server and is on as on the client, right? So it's like we just write one, path of code that basically it's like a template engine to some degree, right? And okay, that makes sense. Like we can all get behind that kind of model. But that is actually really hard to make work with a lot of people's software and, and I think the challenge and framers have adopted it, right? So they've taken this, so for example, it's like, uh, react server components, which is basically just like, can we render it on the server and then also keep that same interaction in the ui. But the problem is like frameworks take that, they abstract it and so it's another layer of complexity on something that is already enormously complex. And then they add their own flavor onto it, like their own opinions for maybe what the world way the world is going. And I will say like personally, I find those. Those flavors to be very hard to adapt to like things that are tried and true or importantly in this context, things that we know how to monitor and fix, right? And so I, I don't know what, what the be all end all is, but my thesis on this is you need to treat the UI like a template engine, and that's it. Remove all like complexity behind it. And so if you think about that, the term I've labeled it as, which I did not come up with, I saw this from somebody at some point, is like, it's like your front end as a service. Like you need to take that application that renders on the server and the front end, and it's just an entirely different application, which is annoying. and it just calls your APIs and that's how it gets the data it needs. So you're literally just treating it as if it's like a single page application that can't connect to your database. But the frameworks have not quite done that. And they're like, no, no, no. We'll connect to the database and we'll do all this stuff, but then it doesn't work because you've got, like, it works this way on the back end and this way on the front end anyways. Again, long winded way of saying like, it's very complicated. I don't think the technology can solve it today. I think the technology has to change before these problems can actually genuinely become solvable. And that's why I think the whole thing is like a beta, it's like, it's very much like a moving target that we're eventually we'll get there and it's definitely had value, but I don't know that, um, responsiveness for low latency connections is where the value has been created. You know, for like folks with bad internet and say remote Africa or something, like I'm sure the internet is not a very fun place for them to use these days. Some frontend code runs on the server and some in the browser which creates challenges [00:43:05] Jeremy: I guess one of the things you mentioned is there's this, almost like this split where you have the application running on the server. It has its own set of rules because it, like you said, has access to the database and it can do things that you can't do in the browser, and then you have to sort of run the same application in the browser, but it's not quite the same application because it doesn't have access to the same things in the browser. So you have this weird disconnect, I suppose. [00:43:35] David: Yeah. Yeah. And, and, and then the challenges is like a developer that's actually complicated for you from the experience point of view, cuz you have to know somehow, okay, these things are ta, these are actually running on the server and only on the server. And like, so I think the two biggest technologies that try to do this, um, or at least do it well enough, or the two that I've used, there might be some others, um, are NextJS and remix and they have very different takes on how to do this. But, remix is the one I use most recently. So I, I'll comment on that. But like, there's a, a way that you kind of say, well, this only runs on, I think the client as an example. And that helps you a little bit. You're like, okay, this is only gonna render on the client. I can, I actually can think about that and reason about that. But then there's this thing like, okay, sometimes this runs on the server, only this part runs on the server. And it's, it just becomes like the mental capacity to figure out what's going on and debug it is like so difficult. And that database problem is like the, the normal problem, right? Like of like, I can only query the database on the server because I need secure credentials or something. Okay. I understand that as a developer, but I don't understand how to make sure the application is doing what I expect it to do and how to fix it if something goes wrong. And that, that's why I think. , I'm a, I'm a believer in constraints. The only way you make progress is you simplify problems. Like you just give up on solving the complicated thing and you make the problem simpler. Right? And so for me, that's why I'm like, just take the database outta the equation. We can create APIs from the client, from the server, same security levels. Okay? Make it so it can only do that and it has to be run as almost like a UI only thing. Now that creates complexity cuz you have to run this other service, right? And, and like I personally do not wanna have to spin up a bunch of containers just to write like a simple like web application. but again, I, I think the problem has not been simplified yet for a lot of folks. Like React did this to be fair, um, it made it a lot easier to, to build UI that was responsive and, and just updated values when they changed, you know, which was a big deal for a long period of time. But I feel like everything after has not quite reached that that area, whereas it's simple and even react is hard to debug when it doesn't do what you want it to do. So I don't know, there, there's so gaps I guess is what i would say. And. Hopefully, hopefully, you know, in the next five years we'll kind of see this come to completion because it does feel like it's, it's getting closer to that compromise. You know, where like we used to have pure server rendered apps with some weird janky JavaScript on top. Now we've got this bridge of really complicated, you know, JavaScript on top, and the server apps are also complicated and it's just, it's a nightmare. And then this newer generation of these frameworks that work for some types of technology, but not all. And, and we're kind of almost coming full circle to like server rendered, you know, everything. But with like allowing the same level of interactions that we've been desiring, I guess, on the web. So, and I, fingers crossed this gets better, but right now I do not see like a clear like, oh, it's definitely there. I can see it coming. I'm like, well, we're kind of making progress. I don't love being the beta tester of the whole thing, but we're kind of getting there. And so, you know, we'll see. There are multiple ways to write mobile apps as well (flutter, react native, web views) [00:46:36] Jeremy: I guess you, you've been saying this whole shifting landscape of how Front End works has made it difficult for Sentry to provide like automatic instrumentation and things like that for, for mobile apps. Is that a different story? Like is it pretty standardized in terms of how do you instrument an Android app or an iOS app. [00:46:58] David: Sort of, but also, no, like, a good example here is like early days mobile, it's a native application. You ship a binary known quantity, right? Or maybe you embedded a web browser, but like, that was like a very different thing. Okay. And then they did things where like, okay, more of it's like embedded web browser type stuff, or dynamically render content. So that's now a moving target. the current version of that, which I'm not a mobile dev so like people have strong opinions on both sides of this fence, but it's like, okay, do you use like a, a hybrid framework which allows you to build. Say, uh, react native, which is like arou you to sort of write a JavaScript ish thing and it runs on both Android and mobile, but not really well on either. Um, or do you write a native, native app, which is like a known quantity, but then you may maintain like two code bases, have two degrees of expertise and stuff. Flutters the same thing. so there's still that version of complexity that goes on within it. And I, I think people care less about mobile cuz it impacts people less. Like, you know, there's that whole generation of like, oh, mobile's the future, everything's gonna be mobile, let's not become true. Uh, mobile's very important, but like we have desktops still. We use web software all the time, half the time on mobile. We're just using the web software at the end of the day, so at least we know that's a thing. And I think, so I think that investment in mobile has died down some. Um, but some companies like mobile is like their main experience or one of their driving experience is like a, like a company like DoorDash, mobile is as important as web, if not more, right? Because of like the types of customers. Spotify probably same thing, but I don't know, Sentry. We don't need a mobile app, who cares? It's irrelevant to the problem space, right? And so I, I think it's just not quite taken on. And so mobile is still like this secondary citizen at a lot of companies, and I think the evolution of it has been like complicated. And so I, I think a lot of the problems are known, but maybe people care less or there's just less customers. And so the weight doesn't, like, the weight is wildly different. Like JavaScript's probably like a hundred times the size from an investment point of view for everyone in the world than say mobile applications are, is how I would think about it. And so whether mobile is or isn't solved is almost irrelevant to the, the, the like general problem at hand. and I think at the very least, like mobile applications, there's like, there's like a tool chain where you can debug a lot of stuff that works fairly well and hasn't changed over the years, whereas like the web you have like browser tools, but that's about it. So. Mobile apps can have large binaries or pull in lots of dependencies at runtime [00:49:16] Jeremy: So I guess with mobile. Um, I was initially thinking of native apps, but you're, you're bringing up that there's actually people who would make a native app that's just a web view for a webpage, or there's React native or there's flutters, so there's actually, it really isn't standard how to make a mobile app. [00:49:36] David: Yeah. And even within those, it comes back to like, okay, is it now the same problem where we're loading in a bunch of JavaScript or downloading a bunch of JavaScript and content remotely and stuff? And like, you'll see this when you install a mobile app, and sometimes the binaries are huge, right? Sometimes they're really small, and then you load it up and it's downloading like several gigs of data and stuff, right? And those are completely different patterns. And even within those like subsets, I'm sure the implementations are wildly different, right? And so, you know, I, that may not be the same as like the runtime kind of changing, but I remember there was this, uh, this must be a decade ago. I, I used, I still am a gamer, but. Um, early in my career I worked a lot with like games like World of Warcraft and stuff, and I remember when games started launching progressive loading where it's like you could download a small chunk of the game and actually start playing and maybe the textures were lower, uh, like resolution and everything was lower fidelity and, and you could only go so far until the game fully installed. But like, imagine like if you're like focused on performance or something like that, measuring it there is completely different than measuring it once, say everything's installed, you know? And so I think those often become very complex use cases. And I think that used to be like an extreme edge case that was like such a, a hyper-specific optimization for like what The Warcraft, which is like one of the biggest games of all time that it made sense, you know, okay, whatever. They can build their own custom tooling and figure it out from there. And now we've taken that degree of complexity and tried to apply it to everything in the world. And it's like uhoh, like nobody has the teams or the, the, the talent or the, the experience to necessarily debug a lot of these complicated problems just like Sentry like. You know, we're not dealing with React internals. If something's wrong in the React internals, it's like somebody might be able to figure it out, but it's gonna take us so much time to figure out what's going on, versus, oh, we're rendering some html. Cool. We understand how it works. It's, it's a known, known problem. We can debug it. Like there's nothing to even debug most of the time. Right. And so, I, I don't know, I think the industry has to get to a place where you can reason about the software, where you have the calculator, right. And you don't have to figure out how the calculator works. You just can trust that it's gonna work for you. How Sentry's stack has become more complex over time [00:51:35] Jeremy: so kind of. Shifting over a little bit to Sentry's internals. You, you said that Sentry started in, was it 2008 you said? [00:51:47] David: Uh, the open source project was in 2008. Yeah. [00:51:50] Jeremy: The stack that's used in Sentry has evolved. Like I remembered that there was a period where I think you could run it with a pretty minimal stack, like I think it may have even supported SQLite. [00:52:02] David: Yeah. [00:52:03] Jeremy: And so it was something that people could run pretty easily on their own. But things have, have obviously changed a lot. And so I, I wonder if you could speak to sort of the evolution of that process. Like when do you decide like, Hey, this thing that I built in 2008, Is, you know, not gonna cut it. And I really need to re-architect what this system is. [00:52:25] David: Yeah, so I don't know if that's actually the reality of why things have changed, that it's like, oh, this doesn't work anymore. We've definitely introduced complexity in the sense of like, probably the biggest shift for Sentry was like, it used to be everything, and it was a SQL database, and everything was kind of optional. I think half that was maintainable because it was mostly built by. And so I could maintain like an architectural vision that kept it minimal. I had the experience to figure it out and duct tape the right things. Um, so that was one thing. And I think eventually, you know, that doesn't scale as you're trying to do more and build more into the product. So there's some complexity there. but for the most part you can, it can still
In this episode of Elixir Wizards, Cory O'Daniel, CEO of Massdriver, talks with Sundi and Owen about the role of DevOps in the future of Elixir programming. They discuss the advantages of using Elixir for cloud infrastructure and the challenges of securing cloud systems. They elaborate on their hopes for the future, including processes and automation to streamline operations so programmers can spend more time doing what they love … writing software! Major topics of discussion in the episode: Cory's ideal ratio of hot sauce to honey (recommended for chicken) Why this episode was renamed “how Cory almost killed his dad." The history of deployment with Elixir and Erlang The benefits of using Kubernetes to deploy Elixir applications The future of Elixir DevOps and Massdriver's role in solving related problems Benefits of reducing the operational burden for developers Whether Elixir is a good fit for Kubernetes How DevOps has changed over the last 10 years. The confusion about what DevOps actually means The idea of "engineers doing everything" is not sustainable A future where engineers don't need to know much about DevOps, and can focus on writing code Minimizing the operational burden for developers Monolithic application vs. microservices Why Massdriver does not use Webhooks to update configurations Security, access to source code, and potential source leaks The idea of multi-cloud, site-wide outage, and cloud agnosticism Hybrid cloud vs true multi-cloud Standardizing methods of packaging and deploying applications in the future Links mentioned in this episode: SmartLogic — https://smartlogic.io/ SmartLogic Twitter — https://twitter.com/smartlogic Massdriver — https://www.massdriver.cloud/ State of Production Survey (with Sweet Raffle Prizes) — https://blog.massdriver.cloud/surveys/state-of-production-2023/ $5000 Massdriver Credit — https://www.massdriver.cloud/partners/elixir-wizards Elephant in the Cloud Blog Post — https://startups.microsoft.com/blog/elephant-in-the-cloud/ RIAK — https://github.com/basho/riak Otel — https://hexdocs.pm/ Terraform — https://hexdocs.pm/terraform/Terraform.html DigitalOcean — https://www.digitalocean.com/ Heroku — https://www.heroku.com/ Linode — https://www.linode.com/ Docker — https://www.docker.com/ Kubernetes — https://kubernetes.io/ Webhooks — https://hexdocs.pm/elixirplaid/webhooks.html GitOps — https://hexdocs.pm/gitops/readme.html Helm — https://helm.sh/docs/ Special Guest: Cory O'Daniel.
Hey, it's Alex from Remote Work Life. On today's episode of the Remote Work Life Business Spotlight, I'm featuring yet another top remote business called, Riak!.
Mahkota Tanpa Nakhoda Oleh. Maman El Hakiem (Kontributor NarasiPost.Com) Voice over talent: Dewi Nasjag NarasiPost.Com-Kehadiran ayah dan ibu bagi anak dalam rumah tangga sangat memengaruhi karakternya di masa depan. Tidak salah jika ada ungkapan buah jatuh tidak akan jauh dari pohonnya. Pohon yang bertunas tentu mengharapkan buah yang ranum sebagai idaman semua orang. Pun dalam kehidupan rumah tangga, adanya pelanjut keturunan yang lebih baik adalah cita-cita berkeluarga. Namun, kehidupan rumah tangga tidak selamanya berlayar di lautan yang tenang, sekalipun rumah tangga itu dibangun berdasarkan rasa cinta dan kasih sayang dengan saling rida. Riak ombak, bahkan badai ujian dalam berbiduk bahtera sering pula menghempaskan hingga terjadinya perceraian membuat keluarga kehilangan nahkodanya. Jika istri kehilangan suami karena perceraian, maka statusnya sebagai janda sering direndahkan, bahkan dianggap hina. Padahal, di pundak seorang istri memikul beban pengasuhan terhadap anak-anak buah cinta dari suaminya. Sementara sang suami hanya terikat hak menafkahi anak-anaknya. Naskah selengkapnya: https://narasipost.com/2022/07/27/mahkota-tanpa-nakhoda/ Terimakasih buat kalian yang sudah mendengarkan podcast ini, Follow us on: instagram: http://instagram.com/narasipost Facebook: https://www.facebook.com/narasi.post.9 Fanpage: Https://www.facebook.com/pg/narasipostmedia/posts/ Twitter: Http://twitter.com/narasipost
Warga Indonesia tertarik membahas KTT AS-ASEAN pekan lalu. Namun, alih-alih esensinya, masyarakat lebih suka mengupas riak-riak kisah di sekitarnya. Mengapa demikian? Eva Mazrieva membahasnya bersama pendiri Synergy Policies, Dinna Prapto Rahardja, dan Tenaga Ahli Utama KSP, Siti Ruhaini Dzuhayatin.
Victoria Police announced the arrest of five people connected to the stabbing of Alier Riak in Melbourne on 13/03/2022. 'Police have arrested five people as part of the Homicide Squad investigation into an incident in Docklands last weekend where a man was fatally stabbed'.
Wär ke pɛi ye nïïn 13 ke mɛnh ye run 23 ee nɔ̈k në Melbourne kenë cath kenë mïthakɛ̈cken. Alier Riäk man tɔ̈ ke ye raanthiin nyic ke ye pol apiɛth në kura ee tëk në Melbourne ku bë lɔ Darwin ke yenë ye të ben jäl lɔ pol thïn. Në ye mɛn ke wun man ye cɔl Col Riäk Ajak ee bɛ̈n në Perth ago guɔ̈p ë raan bë tïŋ ku bë jɔt. Agut cë ye mɛn keka cën raan cï Bolith caal ke cë dɔm në nɛ̈k Aliɛr. Col Riäk man ye wun Aliɛr ee cë jam kenë akutë SBS Dinka kukë cë lueel yenëkë.
Dengarkan Pagi Di Sinar Bersama Jep, Rahim dan Angah setiap Isnin hingga Jumaat bermula jam 6 hingga 10 pagi.
Riak Asa (part 1) Oleh: Afiyah Rasyad (Kontributor Tetap NarasiPost.com) Voice Over Talent: Fani R NarasiPost.Com-“Cepetan, Ci. Bawa sini tangnya! Aku aja yang motong.” Suara Sam pelan, namun penuh tekanan. Dengan segenap kepatuhan, Cici menyerahkan tang dan gunting. Dalam hitungan detik, pagar kawat berduri itu telah memiliki lubang besar di bagian bawahnya. Layaknya komandan, Sam cekatan tiarap melewati lubang pagar. Gerilyanya begitu apik, tak ada suara grusak-grusuk. “Ayo, segera keluar! Ade, Zahro belakangan. Perhatikan keadaan, khawatir Pak Wafa datang.” Sam mengomando dengan begitu fasih. Tinggal tiga orang lagi temannya yang masih di dalam pagar berkawat itu. Sam selalu awas, tetapi tetap tenang. Dia membantu teman-temannya yang kesulitan tiarap melewati pagar. Tangannya lincah mengangkat pagar tatkala body tak cukup untuk melewatinya. “Sial, siswa putra lihat kita. Ayo Lif, segera!” Ade mulai panik. “Aku takut,” jawab Kholif dan Muhai serentak. “Ayo, De! Kau segera keluar, teman-teman lain segera ke arah pasar langsung ke masjid Baitussalam. Kita cegat Colt di sana. Sebentar lagi aku dan Ade nyusul.” Sam mulai memberi aba-aba. Cici memimpin pasukan menuju masjid. Rute pasar Tanjung jadi pilihan untuk menghindari pengawasan dewan guru. Langkah mereka tenang, tak menimbulkan rasa curiga dalam benak masyarakat yang berpapasan dengan mereka. Sam dan Cici telah merancang perjalanan seolah mereka sedang penjelajahan ala anak Pramuka. Mereka berjalan berbaris. Naskah Selengkapnya: https://narasipost.com/2021/09/26/riak-asa-part-1/ Terimakasih buat kalian yang sudah mendengarkan podcast ini, Follow us on: instagram: http://instagram.com/narasipost Facebook: https://www.facebook.com/narasi.post.9 Fanpage: Https://www.facebook.com/pg/narasipostmedia/posts/ Twitter: Http://twitter.com/narasipost
Jangan Marah, Sayang! Oleh. Deena Noor (Kontributor Tetap NarasiPost.Com) Voice Over Talent: Arien S NarasiPost.Com-Kehidupan pernikahan tak selalu berjalan mulus. Riak-riak kecil sering mewarnai bahtera rumah tangga. Badai juga terkadang hadir menguji nyali dan komitmen yang dipancang sejak akad terucap. Setiap ujian punya caranya tersendiri dalam memberi pelajaran kehidupan. Tak selalu hal besar yang menimbulkan perselisihan dan perpecahan. Hal kecil yang seolah sepele juga bisa menggoyahkan mahligai perkawinan. Kebiasaan-kebiasaan yang remeh bisa memicu amarah hingga perdebatan. Handuk basah yang ditaruh sembarangan bisa sangat menjengkelkan istri, terutama bila sedang repot dengan berbagai urusan rumah tangga. Istri pun mengomel tiada henti. Apa susahnya sih menaruh handuk di tempatnya? Sang suami menanggapinya dengan santai dan mengatakan: “Tolong, ya, sayang!” sambil menyerahkan handuk itu pada istrinya. Muka cemberut istri kian menekuk. Kejengkelan pun bertambah. Di lain waktu, sang suami yang baru pulang kerja mendapati rumah berantakan dan anak-anak ribut, bahkan ada yang menangis. Sementara istri sedang asyik dengan telepon genggamnya. Tak ayal ini membuat suami marah. Maksud hati ingin melepas lelah di rumah, malah disuguhi kondisi rumah yang mirip kapal pecah. Istriku sibuk apa sih hingga rumah kacau balau! Naskah Selengkapnya: https://narasipost.com/2021/10/12/jangan-marah-sayang/ Terimakasih buat kalian yang sudah mendengarkan podcast ini, Follow us on: instagram: http://instagram.com/narasipost Facebook: https://www.facebook.com/narasi.post.9 Fanpage: Https://www.facebook.com/pg/narasipostmedia/posts/ Twitter: Http://twitter.com/narasipost
Riak = Show off? Riak = Sombong? Terkadang tanpa disengaja dan tanpa sedar kita menunjuk-nunjuk. Apa tujuan kita sebenarnya? Apa pula pendapat orang lain terhadap sikap dan tingkah laku kita? Topic ini akan dibincangkan dalam episode kali ini di Hik Hak Huu! Podcast.
RIAK TAK BAWA KE KUBUR!Sembang mulut jahat lets go! Listen now on spotify! Support this podcast at — https://redcircle.com/yek-yek-je/donationsAdvertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy
Let's all try to be better people this Ramadhan. And yes, we don't consume anything while fasting. WE SHOULD BE SUPERHEROES! Riak (boastful) HAHA! I was thinking it's about time that I address using the term "bitch" loosely, especially between women just because she displays her ass and boobs on social media. Men get away with thirst trapping. Women? Gets called a whore not only in society (we all know the line to draw, Karen. Not all of them should be allowed), but by other women too. It sickens me. ADS: Grapholistic International If you need a handwriting analysis report, Graphotherapy or personal life coaching, head to www.grapholistic.com and use my code: ADOSSIER5% to get 5% off all their services!
שלום וברוכים הבאים לפרק מספר 405 של רברס עם פלטרפורמה - באמפרס מספר 68 - והתאריך היום הוא ה-1 באפריל 2021.היום יש לנו אורח מיוחד - תגידו שלום למיסטר טרנס אקשן (Terence Action)!(רן) שלום מר טרנס(טרנס) אהלן, בוקר טוב, מה קורה?(רן) בוקר טוב, אנחנו שמחים שאתה איתנו - ואיתנו גם אלון ודותן, הי חברים.אז - מר טרנס, קודם כל תודה שאתה זורם איתנו עם העברית… יש לך רקע עשיר ומגוון בכל מה שקשור בביזור של Databases, וגם אחרים . . . בוא, ספר לנו קצת על הרקע שלך, מאיפה אתה מגיע?(טרנס) תראה, הכל התחיל בשנות ה-60, כשהתחלתי את המאסטר שלי, ואני וקנות’ ישבנו ודיברנו על מחשביםקנות’ אמר . . .(רן) אתה מתכוון ל - Donald Knuth, נכון?(טרנס) כן, אתה יודע . . . מצטער שאני עושה Name-dropping אבל ככה . . . חבר יקר.יום אחד הוא קם ופתח עיניים גדולות, כמו צלחות, ואמר “יום אחד מחשבים יעבדו, כאילו - הרבה ביחד, הרבה הרבה הרבה ביחד” . . . אמרתי לו “וואו!”, והלכתי ולקחתי את זה איתי הביתה, וישבתי בבית וחשבתי לי, קצת עשיתי אסיד, ואמרתי לעצמי “וואו - אם הם עובדים הרבה ביחד, אז לפעמים חלק ייפלו!”ואז ידעתי מה יהיה המאסטר שלי, ה-Citation . . . וכתבתי על מערכות מבוזרות.(רן) אתה רוצה להגיד לי שאתה קודם כתבת את ה-Master, ורק אחר כך את ה-Slaves, באוניברסיטה?(טרנס) וואו, אתה מנסה להפיל אותי פה עם כל העברית החדשה הזו, הא? אני כתבתי את ה-Leading version, ואחר כך את ה-Clone, כן . . (רן) היית Leader, כן . . . אז באילו Databases יצא לך לעסוק בחיים המקצועיים שלך?(טרנס) אז תראה - כמו כולם, התחלתי ב-Sybase, ואחר זה הכנסתי את SQLite לעבודה ב-!Yahoo . . .כל המייל של !Yahoo ישב על SQLite, לא רבים יודעים את זה . . . המנגנון Anti-spam היה בעצם Select למילים, כמו “ציצים” וכאלה, בהתחלה - ואחרי שמנו שם כל מיני בינה מאלכותית.ואז, כשהיינו כבר בקבצים של ה-SQLite, אמרתי “מה יקרה אם נשבור אותם לפי משהו? לפי נושאים, אות ראשונה של המייל? לפי משהו” . . . ואז, ככה, המצאתי בעצם את ה-Sharding . . . זה היה . . .(אלון) ה-Sharding הראשון שלך היה בעצם על Distributed Access DB, נכון?(טרנס) כן - זה היה חתיכת סיפור, כי Access DB הוא בפורמט בינארי, ואני לא יודע אם אתה מכיר פורמטים בינאריים, אבל הם טיפה’לה יותר מסובכים מפורמטים לא-בינאריים, טקסטואליים . . . ואז הייתה בעיה מאוד קשה ב-Access - אי אפשר היה לעשות בשאילתה אחת גם Min, גם Max וגם אגרגציה (Aggregation) - אז ישבתי ושברתי את זה לשלושה Access DBs, בשלושה Access DB האלה - על אחד עשיתי Max, על אחד עשיתי Min ועל השלישי עשיתי אגרגציה.ואז המצאתי משהו חדש, שכאילו מאחד את כל התוצאות ביחד - כאילו אתה לא הרגשת את זה.(דותן) אבל למה לך לעשות Max ו-Min? זה לא ש-Min זה הפוך של Max ו-Max זה הפוך של Min? לא עושים 1- . . .?(טרנס) אז לא קראו לזה Product, אז קראו לו Stephen . . . סטפן אמר שצריך Max ו-Minניסיתי להתווכח אבל אתה יודע - Product היו קשוחים, אז אם הוא רוצה Max ו-Min אז ניתן לו Max ו-Min, מה אני אעשה? . . .(רן) אבל יש את ה . . . זה לא כמו ב-CAP Theorem, שיש לך Max, Min ו-Average - תבחר שנייים? אתה באמת יכול לעשות את שלושתם יחד באותה השאילתה?(טרנס) תשמע, אני לא יודע קורה עם ה-CAP Theorem הזה, בעיני זה הכל פיקציה . . .אני המצאתי את ה-Glasses Theory - זה כמו CAP, אבל כאילו שקוף - וכשהכל שקוף אז הכל גם עובד ביחדאין לך שום בעיה לעשות Through and Through Consistency ו-High Availability - וגם אם ה-Network Partition קורה, אז לא קרה כלום.(רן) אגב שקיפות - במאמרים האחרונים שלך, שאתה מפרסם, לקחת את כל הנסיון שלך ב-Databases ועשית לו Apply לקורונה, As-is . . . בוא, ספר לנו קצת על הניסיון שלך בעבודה עם צוותים מבוזרים בתקופות הקורונה.(טרנס) תשמע, קודם כל, כשהתחיל משבר הקורונה, נזכרתי במשפט שאמר לי פעם Andreessen . . שהוא אמר “במקום שבו אתה רואה משבר, אני רואה הזדמנות”.אז אמרתי מה בעצם הבעיה פה? אז אנשים מתים . . . עכשיו - אנשים מתים זה עצוב וכזה, אל תבין אותי לא נכון, אני ברגישות - אבל מה קורה אם מת לך מפתח באמצע ה-Release ,כאילו? יום לפני ה-Alpha או משהו, מה קורה?[היו מקרים גם ב-2019 . . .]אז אמרתי - וואי, מה יקרה אם נעשה Highly-redundant מפתח, אוקיי?בעצם, כשאתה לוקח מפתחים מאצלי, אז הם באים תמיד בזוגות, אבל מרחוק, ב-Remote - ואם במקרה אחד מהם מת מקורונה, אני עושה Hot-swap ומביא במקומו אחד אחר.עכשיו - מפתחים זה סתם Resources, מה הבעיה? לכתוב X זה קשה? אז הוא ישר נכנס וממשיך מאיפה שהקודם נעצר.(רן) ואם אחד מהם עושה לך NFT על הקוד? מה אתה עושה עם זה אז? לכל אחד יש את המפתחות?(טרנס) מה זאת אומרת “אם”? מה זאת אומרת . . .(רן) הם עושים את זה כבר?(טרנס) אתה קראת את האתר שלנו, הא חמוד? . . . אתה בסדר אתה.תראה - חברות ששמות אנשים בחברות, יש להן תמיד בעיה, יש בעיה במודל . . . לא יודע אם עבדת פעם עם חברת Outsourcing, אבל יש בעיה במודל - אם ה-Outsourcer הוא מצויין, אז אתה רוצה שהוא יעבור אליך, אתה לוקח אותו להיות עובדואז הוא עוזב את החברת Outsourcing ונגמר הכסף מה-Outsourcer הזהואם הוא בלאי, אז אתה תעיף את החברת Outsourcing קומפלט, לא תיקח אותם יותר, נכון? כשאתם עושים עם הראש לא שומעים את זה . . . [גם קשה לקרוא את זה . . . ](רן, אלון, דותן) נכון!(טרנס) אז אני אמרתי “קחו את העובדים בחינם - עלי - אבל הקוד שהם כותבים סגור ב-NFT” . . . אתם מכירים NFT? צריך להסביר?(דותן) לא, תסביר . . .(טרנס) אז NFT זה Crypto-Cyber-Distributed, שסוגר לך בעצם Assets דיגיטליים בצורה שבה בכל שימוש חוזר, היוצר המקורי מקבל חתיכה מהכסף.אז נגיד עכשיו, בחברה שעבדנו, נתתי להם את כל הקוד חינם, חוץ מלולאות If מ-1 עד 10 . . . הלולאות If מ-1 עד 10 סגורות ב-NFT שלי.ברגע שאתה עושה Code reuse ללולאות If מ-1 עד 10, אני מקבל ככה כמה סנטים על כל שימוש.(דותן) זה אומרת שאם יש לי מערכים קטנים אז אני בסדר, זה חינם . . .(טרנס) למי אין מערכים קטנים, תגיד לי? בחייאת . . .זה במיוחד שימושי ל-Columnar Databases . . . (דותן) אבל מה תעשה אם אנשים לוקחים מערך של 100 ומחלקים אותו למאה מערכים של 1? . . . (טרנס) תראה, הפתרון הוא לא מושלם, אבל בדיוק עכשיו המהנדסים שלי עובדים על לתפוס את ה-Until ואת ה-While - וברגע שתפסתי את ה-Until ואת ה-While, אחי - כל ה-Python של העולם יושב לי בכיס הקטן.זהו - אני סגור, אני יוצא לפנסיה, דבר איתי ב-Puerto Vallarta על מרגריטה . . .(אלון) שמע, זה אחלה מודל עסקי - הוא מחלק קוד חינם, וגוזר קופון על השימוש בלולאה . . .(דותן) נכון . . .(אלון) איך לא חשבו על זה קודם . . . (טרנס)לא רק בלולאות, לא רק בלולאות! אתה משתמש ב-Slack? (אלון) כן, אבל רק כל יום . . . (טרנס) בסדר, מעולה - אתה השתמשת פעם באייקון הזה של האיש עם השפם והמשקפיים והאף הגדול? של ה”היי, אני Nerd אבל אני מצחיקי”?(אלון) כן, ברור(טרנס) בכל פעם שאתה משתמש בו, Slack נותנים לי רבע-סנט . . . (אלון) מה אתה אומר? . . .(טרנס) סגרתי Assets מימין ומשאל, אתה לא מבין מה זה . . .(דותן) אפשר לשאול אותך, אם זה בסדר, על המקומות שבהם עבדת? שכולנו מכירים, שהם מפורסמים . . .(טרנס) עכשיו אתה מביך אותי קצת . . . אני לא רוצה להתהדר, אבל כל ה Data Consistency של Mongo? זה אני(רן) מה אתה אומר? . . . כל ה-Data Consistency של של Mongo זה אתה? פשש . . . איזו עבודה . . .(טרנס) כן, באמת, אני . . . באלפות (Alpha) הראשונות הייתי כותב במחברת, אבל אחר כך פיתחנו די הרבה קוד סביב זה.שם זה לא NFT לצערי, כי הרבה משתמשים.(אלון) וכל נושא ה-Data Loss, ב-Mongo - זה נכנס ב-Design? אחרי זה? מתי הכנסתם את הפיצ’רים?(טרנס) הכל מבוסס של AIהבטחנו שזה Eventually Consistent, אבל לא אמרנו מתי זה “Eventually” . . . עכשיו, בזמן שאתה כותב קוד, כותב Data ל-Mongo - אנחנו מג’נרטים (Generate) ספרות בפאי (
Boleh ke tak boleh? Riak ke tidak? Dengarkan apa yang akan mereka bincangkan.
the video: https://youtu.be/8UMg3QSYu_8 the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
the video: https://youtu.be/9qXeSIZRGfA the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
the video: https://youtu.be/Hbp3lDS2d3Q the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
the video: https://youtu.be/qOVKzjJruLY the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
the video: https://youtu.be/8_fLZHuJt0w the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
the video: https://youtu.be/Hp95Dc43hjA the outlier gentlemen: https://anchor.fm/outliergentlemen send us your requests and other bad songs to thegadungfiles@gmail.com thank you.
Penawar Bagi Hati karangan Al-Sheikh 'Abdul Qadir Ibn 'Abdul Mutholib Al-Indunisi Al-Mandili rhm. Tajuk - Riak Syarahan Dr Abdul Basit Abdul Rahman
Episod kali ini kami akan kongsi kan certita zaman National Service di SCDF. Pengalaman sebagai recruit, water parade? Bunkmate curi telefon? Encik encik hotel new world? Officer yang RIAK? Aku gaduh dengan encik? Magic time kerja? Semua kisah ini di YEK YEK JE! Support this podcast at — https://redcircle.com/yek-yek-je/donations
Dengarkan Guane tu Ustaz bersama PU Mizi setiap Ahad hingga Khamis jam 7:05 pagi. #GuaneTuUstazMizi
Niat Murni Disalah Erti Oleh Netizen, Dengarkan Pendapat Bersama Pendengar Kool FM Dan Linda Onn
William Riak Kuol Aguto is a psychiatric Nurse at Melbourne Health. In this episode, Riak explained the impacts of bad parenting and how that can affect young people mental health. This is part two of the interview.
Sebuah pemandangan yg tek pernah membosankan..
Salah satu puisi yang saya suka di buku kumpulan puisi Reruntuhan Cahaya. Instrument: Rain from ASamulev Music. Selamat mendengarkan.
Hari Ini Dalam Sejarah - Permulaan Bulan Bahasa KebangsaanKool Talk - Covid19, Perintah Kawalan Pergerakan, Jangan Panik!Berita Semasa - Bekalan Makan MencukupiInspirasi Pagi - 'Apa Yang Buat Kamu Down'Binet - Lelaki Meludah Pada Butang Lif DitahanKool Talk - LHDN - Bayar Cukai, Kenapa Stress?Spotlight Kool - Bertudung Jiwa Tetap Rock
"... KPK yang dulu bukanlah yang sekarang ..." Lirik lagu apa ya? Riak-riuh kembali mengenai pemberantasan korupsi di negara +62. Kali ini ujian pertama hadir terhadap penerapan UU KPK baru dan tentunya komitmen pimpinan KPK baru dalam kasus korupsi akhir-akhir ini. Apakah UU baru ini berhasil menguatkan KPK dan pemberantasan korupsi kita, atau malah melemahkan? biarkan masyarakat yang akan menilainya. Kali ini bang Nopal dan bang Iki ditemani oleh Kreshna Bayu Sangka, Ketua Pusat Studi Transparansi Publik dan Anti Korupsi (PUSTAPAKO) UNS di "Podcast #2 - KPK yang Dulu Bukanlah yang Sekarang". Selamat mendengarkan mblo, malam minggu lho!
In this episode of Elixir Mix the panel interviews Mariano Guerra. Mariano wrote some wonderful tutorial blogs outlining how to use Riak Core in Elixir. He begins the episode by sharing a little about himself and his work. Mariano then defines Riak Core and tells the story of where it came from. He explains what he loves about Riak Core and dubs himself the unofficial cheerleader of Riak Core. Mariano tells the panel about his blog articles and what listeners will find in them. He explains to the panel what inspired him to write them. Mariano then gives the panel examples of the problems solved by Riak Core and the best use cases for it. Partisan is the next subject the panel asks Mariano about. Mariano shares the story of where Partisan came from and explains when you want to use it. Finally, Mariano tells the panel about his work for the Erlang Ecosystem Foundation. Right now he is working hard to unify the documentation for all the Beam languages. He shares his admiration for the Elixir documentation and explains that Erlang documentation needs a lot of work. The panel discusses how unifying the Beam will help the community and make their lives easier. Panelists Mark Ericksen Josh Adams Sophie DeBenedetto Guest Mariano Guerra Sponsors Sentry– use the code “devchat” for two months free on Sentry’s small plan CacheFly ____________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links TLA+ Riak Products Dynamo: Amazon’s Highly Available Key-value Store https://github.com/basho/riak_core Riak Core on Partisan on Elixir Tutorial: Introduction http://partisan.cloud/ https://blog.erlang.org/OTP-22-Highlights/ Riak Core on Partisan on Elixir Tutorial: Setup Riak Core on Partisan on Elixir Tutorial: Getting Started Riak Core on Partisan on Elixir Tutorial: We can make a Key Value Store out of that Riak Core on Partisan on Elixir Tutorial: Migrating Data with Handoff Riak Core on Partisan on Elixir Tutorial: Resources https://gitlab.com/marianoguerra/civiledb/ https://github.com/clojerl/clojerl https://twitter.com/warianoguerra https://www.facebook.com/Elixir-Mix https://twitter.com/elixir_mix Picks Mark Ericksen: Immutability - Computerphile Simple Sabotage Field Manual Mariano Guerra: Property-Based Testing with PropEr, Erlang, and Elixir Practical TLA+: Planning Driven Development Josh Adams: Rewriting GitHub Pages with Riak Core, Riak KV, and Webmachine: Jesse Newland Sophie DeBenedetto: How to Compose Queries in Ecto Basque Burnt Cheesecake
In this episode of Elixir Mix the panel interviews Mariano Guerra. Mariano wrote some wonderful tutorial blogs outlining how to use Riak Core in Elixir. He begins the episode by sharing a little about himself and his work. Mariano then defines Riak Core and tells the story of where it came from. He explains what he loves about Riak Core and dubs himself the unofficial cheerleader of Riak Core. Mariano tells the panel about his blog articles and what listeners will find in them. He explains to the panel what inspired him to write them. Mariano then gives the panel examples of the problems solved by Riak Core and the best use cases for it. Partisan is the next subject the panel asks Mariano about. Mariano shares the story of where Partisan came from and explains when you want to use it. Finally, Mariano tells the panel about his work for the Erlang Ecosystem Foundation. Right now he is working hard to unify the documentation for all the Beam languages. He shares his admiration for the Elixir documentation and explains that Erlang documentation needs a lot of work. The panel discusses how unifying the Beam will help the community and make their lives easier. Panelists Mark Ericksen Josh Adams Sophie DeBenedetto Guest Mariano Guerra Sponsors Sentry– use the code “devchat” for two months free on Sentry’s small plan CacheFly ____________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links TLA+ Riak Products Dynamo: Amazon’s Highly Available Key-value Store https://github.com/basho/riak_core Riak Core on Partisan on Elixir Tutorial: Introduction http://partisan.cloud/ https://blog.erlang.org/OTP-22-Highlights/ Riak Core on Partisan on Elixir Tutorial: Setup Riak Core on Partisan on Elixir Tutorial: Getting Started Riak Core on Partisan on Elixir Tutorial: We can make a Key Value Store out of that Riak Core on Partisan on Elixir Tutorial: Migrating Data with Handoff Riak Core on Partisan on Elixir Tutorial: Resources https://gitlab.com/marianoguerra/civiledb/ https://github.com/clojerl/clojerl https://twitter.com/warianoguerra https://www.facebook.com/Elixir-Mix https://twitter.com/elixir_mix Picks Mark Ericksen: Immutability - Computerphile Simple Sabotage Field Manual Mariano Guerra: Property-Based Testing with PropEr, Erlang, and Elixir Practical TLA+: Planning Driven Development Josh Adams: Rewriting GitHub Pages with Riak Core, Riak KV, and Webmachine: Jesse Newland Sophie DeBenedetto: How to Compose Queries in Ecto Basque Burnt Cheesecake
Sikit-sikit share. Share makan, share holiday, share dapat anugerah, share anak sakit. So kami berempat "discuss" apa guideline kita sebagai muslim moden untuk elak sifat riak dan bangga diri di media sosial. Episod ini dibawakan anda oleh Omni Design Pte Ltd. Sebuah syarikat ubah elok yang sangat profesional dengan mengikut kadar kemampuan anda. Hubungi +65 62621155 untuk konsultansi percuma. Atau lungsuri www.omnidesign.com.sg www.facebook.com/omnidesign.sg www.instagram.com/omni_interior_design_sg
Sikit-sikit share. Share makan, share holiday, share dapat anugerah, share anak sakit. So kami berempat "discuss" apa guideline kita sebagai muslim moden untuk elak sifat riak dan bangga diri di media sosial. Episod ini dibawakan anda oleh Omni Design Pte Ltd. Sebuah syarikat ubah elok yang sangat profesional dengan mengikut kadar kemampuan anda. Hubungi +65 62621155 untuk konsultansi percuma. Atau lungsuri www.omnidesign.com.sg www.facebook.com/omnidesign.sg www.instagram.com/omni_interior_design_sg
Episode Summary In this week’s episode of Elixir Mix the panel follows up with Wiebe-Marten ("Marten") Wijnja about his talk at Elixir Conf EU, where he spoke about the distributed system his team was working on. They start by discussing the eight fallacies of distributed computing that Marten talked about in talk. He lays out a couple of the fallacies and invites listeners to watch his talk for all eight. Marten explains that these fallacies most commonly happen to developers who are used to working with a single system. The panel discusses how to be mindful of these mistakes and how developers take for granted of how easy one system is to use. Marten gives some tool recommendations to help with these fallacies. TLA+ is a small programming language that lets the developer describe their system and it will point out when something is wrong but it works purely on concepts. Erlang quick check implementation is also a tool that will help combat these problems. The last suggestion which was given by the panel is a library called comcast on github that will simulate poor network connections so the developer can see how the system runs on a poor connection. Marten describes the byzantine problem. Two nodes or generals are trying to agree on something but communication keeps failing. The various outcomes are considered and Mark Ericksen gives an additional example of he and Josh Adams trying to connect to record a podcast, and how the miscommunication could change the outcome. This is a big problem that complicates using a distributed system. The panel discussed CRDT’s and how they are a better way for nodes to sync up. Marten gives a very simple example of a CRDT as a counter. The panel discusses when to use CRDT’s and when not too. Marten explains what questions to ask before using CRDT’s. Another way of solving the byzantine problem is by connecting the nodes. The panel discusses the tools they use to connect their nodes. Partisan is one tool, instead of connecting all nodes, each node connects to a specific number of nodes. That way if one node goes down the whole system doesn’t stop, while at the same time not, overwhelming the nodes. Libcluster, another tool, uses Kubernetes and has multiple strategies for connecting nodes so developers can choose the right one for their system. The panel asks Marten about multicall and abcast. Marten explains that these tools help one node talk to all the other nodes in a cluster, and multicall will gather the results. Multicall also tells the developer which nodes failed to respond to the request. Mark shares an example of using these tools to effectively communicate between gen servers. In Marten’s talk, he described four distributed databases. The panel asks Marten to talk about each one of them. The first one is mnesia. Marten talks about his first experience with Mnesia and how he thought it was amazing. He soon realized while it is still a great tool it also has its quirks. He explains that each of these databases has its own quirks. Mnesia doesn't do conflict resolution, that along with a few other things the developer will need to build themselves. This can be a good and bad thing because developers can customize the database to their needs but it’s not ready out of the box. Mark explains the use cases mnesia is good for and even references the mnesia documentation. Cassandra is the next database Marten describes. Cassandra is the database discord uses. Cassandra does not let developers control their own conflict resolution. It always uses the latest time-stamp and with nodes that can be confusing. Couchdb is another database they discuss. Again, couchdb is also not made to deal with conflicts. It will either solve them randomly or the developer can opt into resolving it themselves. The panel discusses times when this is useful, such as when connectivity is intermittent. Riak is the final database and the one Marten’s team chose for their distributed system project. Riak was written in Erlang and is a key-value store and uses CRDT’s. It uses a CRDT conflict resolution. Marten shares his experience using Riak. The panel considers Riak’s history and need for some love. Marten gives an update on planga, the chat application they were building the distributed system for. Marten explains that during the talk they were in the middle of development. He shares the story of why they wanted a distributed system for this chat application. The client they were doing it for wanted to do video streaming but pulled out in the end. When the client no longer needed the video streaming solution they stopped building the distributed system. Marten is still hopeful they will go back and finish it. To end the episode Marten shares his programming journey. He started programming at age nine. At age 12 he started doing professional web development. After a few years of that, he started doing some frontend work in JavaScript. Once that got old, bitcoin was getting big so he and some friends got into that. Finally, he got a job doing backend work with Ruby while at university. When he heard about Elixir he was so excited he learned the basics in one weekend and has loved it ever since. Panelists Mark Ericksen Josh Adams Guest Wiebe-Marten ("Marten") Wijnja Sponsors Sentry– use the code “devchat” for two months free on Sentry’s small plan Adventures in DevOps My Ruby Story CacheFly Links Wiebe Marten Wijnja - An adventure in distributed programming - ElixirConf EU 2019 https://elixirforum.com/ https://lamport.azurewebsites.net/tla/tla.html http://www.quviq.com/products/erlang-quickcheck/ https://github.com/tylertreat/Comcast https://en.wikipedia.org/wiki/Byzantine_fault#Byzantine_Generals'_Problem https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type https://github.com/bitwalker/libcluster http://partisan.cloud/ http://erlang.org/doc/man/mnesia.html https://learnyousomeerlang.com/mnesia How Discord Stores Billions of Messages https://pouchdb.com/ https://planga.io/ https://riak.com/ https://github.com/basho/riak_core https://riak.com/where-to-start-with-riak-core/ Using Erlang, Riak and the ORSWOT CRDT at bet365 (...) - Michael Owen - Erlang User Conference 2015 https://hex.pm/packages/effects https://github.com/graninas/automatic-whitebox-testing-showcase https://github.com/Qqwy/elixir-riak_ecto3 https://hex.pm/packages/sea https://twitter.com/WiebeMarten https://github.com/qqwy/ https://wmcode.nl https://www.facebook.com/Elixir-Mix https://twitter.com/elixir_mix Picks Mark Ericksen: ElixirConf YouTube Channel Josh Adams: Automatic White-Box Testing with Free Monads Wiebe-Marten ("Marten") Wijnja: https://propertesting.com/ https://globalgamejam.org/ https://polyphasic.net/
Episode Summary In this week’s episode of Elixir Mix the panel follows up with Wiebe-Marten ("Marten") Wijnja about his talk at Elixir Conf EU, where he spoke about the distributed system his team was working on. They start by discussing the eight fallacies of distributed computing that Marten talked about in talk. He lays out a couple of the fallacies and invites listeners to watch his talk for all eight. Marten explains that these fallacies most commonly happen to developers who are used to working with a single system. The panel discusses how to be mindful of these mistakes and how developers take for granted of how easy one system is to use. Marten gives some tool recommendations to help with these fallacies. TLA+ is a small programming language that lets the developer describe their system and it will point out when something is wrong but it works purely on concepts. Erlang quick check implementation is also a tool that will help combat these problems. The last suggestion which was given by the panel is a library called comcast on github that will simulate poor network connections so the developer can see how the system runs on a poor connection. Marten describes the byzantine problem. Two nodes or generals are trying to agree on something but communication keeps failing. The various outcomes are considered and Mark Ericksen gives an additional example of he and Josh Adams trying to connect to record a podcast, and how the miscommunication could change the outcome. This is a big problem that complicates using a distributed system. The panel discussed CRDT’s and how they are a better way for nodes to sync up. Marten gives a very simple example of a CRDT as a counter. The panel discusses when to use CRDT’s and when not too. Marten explains what questions to ask before using CRDT’s. Another way of solving the byzantine problem is by connecting the nodes. The panel discusses the tools they use to connect their nodes. Partisan is one tool, instead of connecting all nodes, each node connects to a specific number of nodes. That way if one node goes down the whole system doesn’t stop, while at the same time not, overwhelming the nodes. Libcluster, another tool, uses Kubernetes and has multiple strategies for connecting nodes so developers can choose the right one for their system. The panel asks Marten about multicall and abcast. Marten explains that these tools help one node talk to all the other nodes in a cluster, and multicall will gather the results. Multicall also tells the developer which nodes failed to respond to the request. Mark shares an example of using these tools to effectively communicate between gen servers. In Marten’s talk, he described four distributed databases. The panel asks Marten to talk about each one of them. The first one is mnesia. Marten talks about his first experience with Mnesia and how he thought it was amazing. He soon realized while it is still a great tool it also has its quirks. He explains that each of these databases has its own quirks. Mnesia doesn't do conflict resolution, that along with a few other things the developer will need to build themselves. This can be a good and bad thing because developers can customize the database to their needs but it’s not ready out of the box. Mark explains the use cases mnesia is good for and even references the mnesia documentation. Cassandra is the next database Marten describes. Cassandra is the database discord uses. Cassandra does not let developers control their own conflict resolution. It always uses the latest time-stamp and with nodes that can be confusing. Couchdb is another database they discuss. Again, couchdb is also not made to deal with conflicts. It will either solve them randomly or the developer can opt into resolving it themselves. The panel discusses times when this is useful, such as when connectivity is intermittent. Riak is the final database and the one Marten’s team chose for their distributed system project. Riak was written in Erlang and is a key-value store and uses CRDT’s. It uses a CRDT conflict resolution. Marten shares his experience using Riak. The panel considers Riak’s history and need for some love. Marten gives an update on planga, the chat application they were building the distributed system for. Marten explains that during the talk they were in the middle of development. He shares the story of why they wanted a distributed system for this chat application. The client they were doing it for wanted to do video streaming but pulled out in the end. When the client no longer needed the video streaming solution they stopped building the distributed system. Marten is still hopeful they will go back and finish it. To end the episode Marten shares his programming journey. He started programming at age nine. At age 12 he started doing professional web development. After a few years of that, he started doing some frontend work in JavaScript. Once that got old, bitcoin was getting big so he and some friends got into that. Finally, he got a job doing backend work with Ruby while at university. When he heard about Elixir he was so excited he learned the basics in one weekend and has loved it ever since. Panelists Mark Ericksen Josh Adams Guest Wiebe-Marten ("Marten") Wijnja Sponsors Sentry– use the code “devchat” for two months free on Sentry’s small plan Adventures in DevOps My Ruby Story CacheFly Links Wiebe Marten Wijnja - An adventure in distributed programming - ElixirConf EU 2019 https://elixirforum.com/ https://lamport.azurewebsites.net/tla/tla.html http://www.quviq.com/products/erlang-quickcheck/ https://github.com/tylertreat/Comcast https://en.wikipedia.org/wiki/Byzantine_fault#Byzantine_Generals'_Problem https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type https://github.com/bitwalker/libcluster http://partisan.cloud/ http://erlang.org/doc/man/mnesia.html https://learnyousomeerlang.com/mnesia How Discord Stores Billions of Messages https://pouchdb.com/ https://planga.io/ https://riak.com/ https://github.com/basho/riak_core https://riak.com/where-to-start-with-riak-core/ Using Erlang, Riak and the ORSWOT CRDT at bet365 (...) - Michael Owen - Erlang User Conference 2015 https://hex.pm/packages/effects https://github.com/graninas/automatic-whitebox-testing-showcase https://github.com/Qqwy/elixir-riak_ecto3 https://hex.pm/packages/sea https://twitter.com/WiebeMarten https://github.com/qqwy/ https://wmcode.nl https://www.facebook.com/Elixir-Mix https://twitter.com/elixir_mix Picks Mark Ericksen: ElixirConf YouTube Channel Josh Adams: Automatic White-Box Testing with Free Monads Wiebe-Marten ("Marten") Wijnja: https://propertesting.com/ https://globalgamejam.org/ https://polyphasic.net/
** SHOW NOTES** - Martin Sumner: https://twitter.com/masleeds - Riak: https://github.com/basho/riak - Spine: https://digital.nhs.uk/services/spine - Bet365 buys Basho assets: https://www.theregister.co.uk/2017/08/25/bet365_to_buy_basho_release_code/ - Martin's talk on Anti-Entropy: https://www.youtube.com/watch?v=TCiHqF_XTmE
Today on Loser Island we have Riak Keith and Dayon!! We talk about what life is like at Okemos and what the environment is like at Okemos. Dayon Riak and Keith also have a very special treat at the end so stay tuned till the end Subscribe to Simon's Vlog Channel: https://www.youtube.com/channel/UCFhm... Follow Simon on Instagram: https://www.instagram.com/simonkuejr/... Listen to the podcast on Itunes: https://itunes.apple.com/us/podcast/loser-island-podcast/id1299577173?mt=2 Follow Keith: @kjb___200 @keith.b200 Follow Dayon: @dayonwiliams @itgdayonkilliamz Follow Riak: @riakbossdud @_bigman._
Today on "All Things K-Pop", our DJs talk about Virtual Realities as the movie Ready Player One and the Matrix. On "Music Flashback" we visit 1999 and talk of the albums with the highest album sales of April 1999 according to the RIAK.
This week on BSDNow, Allen is away in the UK (For BSDCam), but we still have a full episode for you! Don't miss our interview with This episode was brought to you by Headlines My two year journey to becoming an OS Developer (http://zinascii.com/2016/going-to-joyent.html) A blog post by Ryan Zezeski about how he ended doing OS Development instead of working on application We have featured his posts before, including The illumos SYSCALL Handler (http://zinascii.com/2016/the-illumos-syscall-handler.html) It started in the summer of 2014: I had just left Basho after 3.5 years of working on Riak, when I decided I wanted to become an OS developer. I purchased Solaris Internals, cloned illumos-gate, fired up cscope, and got to work. I hardly knew any C, x86 might as well have been Brainfuck, and, frankly, I knew shit about operating systems. But I was determined. I've always learned best by beating my head against something until it makes sense. I'm not a fast learner; I'm persistent. What others have in ability I make up for in effort. And when it comes to OS internals it's all about work ethic. The more you look, the more you realize it's just another program. The main difference being: it's the program all the other programs run on. My strategy: to pick something, anything, that looked interesting, and write a post describing how it works. I wrote several of these posts in 2014 and 2015. More important, it put me in touch with Roger Faulkner: the creator of truss(1), the Solaris process model, and the real /proc filesystem. At the time I didn't like my interaction with Roger. He explained, in what I would later find out to be his typical gruff manner, that I was wrong; so I concluded he is a prick. But over the years I realized that I was being a brat—he was trying to teach me something and I let my ego get in the way. I've come to view that interaction as a blessing. I interacted with one of the greats, a mentor of my mentor's mentor (a Great Great Mentor). A couple of weeks later something even more surreal happened, at illumos Day 2014. Bryan Cantrill was the last speaker of the day. One of my mentors and someone I admire greatly. He was there to regale us with the story of Joyent's resurrection of lx-branded zones: Linux system call emulation on top of the illumos kernel. But before he would do that he decided to speak about me! I couldn't believe it. I was so overwhelmed that I don't remember most of what he said. I was too busy flipping shit—Bryan Cantrill is on stage, in front of other kernel developers I look up to, saying my name. I was in a dream. It turns out, unknown to me at the time, that he wrote the POSIX queue code for both Solaris and QNX, which I wrote about. He compared me to the great expository technical writers Elliott Organick and Richard Stevens. And it was at this moment that I knew I could do this: I could become an OS developer. Never underestimate the effect kind words can have on someone that looks up to you. There is a lot more to the story, and it is definitely worth the read The story then goes on to talk about his recent run in with Bryan Cantrill > A week from now my two year journey to become an OS developer comes to an end; and a new chapter begins. I don't know what specific things I'm going to work on, but I'm sure it will push me to the limit. I look forward to the challenge. *** Version 1.0 of the Lumina Desktop released (https://lumina-desktop.org/version-1-0-0-released/) After 4 years of development, Lumina Desktop has now hit version 1.0! This release brings with it a slew of new features and support: Completely customizable interface! Rather than having to learn how to use a new layout, change the desktop to suit you instead! Simple shortcuts for any application! The “favorites” system makes it easy to find and launch applications at any time. Extremely lightweight! Allows applications to utilize more of your system hardware and revitalizes older systems! Multiple-monitor support! Each monitor is treated as an independent entity – making it great for presentation systems which use a temporary monitor or for workstations which utilize an array of monitors for various tasks. While originally developed on PC-BSD, it already has been ported to a variety of different platforms, including OpenBSD, DragonFly, NetBSD, Debian and Gentoo Lumina has become the defacto desktop environment for TrueOS (Formerly PC-BSD), and looks like will provide a solid framework to continue growing desktop features. *** n2k16 hackathon report: Ken Westerback on dhclient, bridges, routing and more (http://undeadly.org/cgi?action=article&sid=20160804200232) Next up, we have a report from Ken Westerback talking about the recent OpenBSD hackathon in Prague He starts by telling us about the work in bpf: First order of business, stsp@'s weird setup involving bridges and multiple dhclient clients. A bit of bpf(4) programming to restrict dhclient to handling ethernet packets unicast to its interface worked. Cool. Unfortunately it turned out some lazy dhcp servers always use ethernet broadcasts just because some lesser, non-OpenBSD clients ignore unicast packets until they have configured IP. Classic chicken and egg. So this was backed out just before 6.0. Sigh. Next up, he talks about an idea he had on the flight over, specifically with regard to how DHCP leases are stored, and how keeping the SSID information with them could speed up re-connection times, by only trying leases for current SSID's connected. After a day or so of hacking, it was working! However for $REASONS it was shelved for post 6.0, bummer! He then discusses an on-going project with Peter Hessler on passing along relevant PIDs in response to routing messages generated by kernel from ioctl events. This is something they've been hacking at, in order to allow dhclient to recognize its own routing messages. Sounds like they are both still works-in-progress. However, Ken did get something in for 6.0: Diving back into dhclient code I discovered that in situations where multiple offers were received the unused offers were not being declined and discarded. Despite a clear comment saying that's what was being done! Thus dhclient might gradually use up more and more memory. And possibly be retrying offers that should have been discarded. The fix for this did make 6.0! Yay! In Memoriam Roger Faulkner (https://www.usenix.org/memoriam-roger-faulkner) USENIX has re-released Roger Faulkner's original paper on /proc as a free download The UNIX community recently lost one of its original pioneers, Roger Faulkner, whom one commenter described as “The godfather of post-AT&T UNIX” In his memory, the USENIX group as re-released his original paper on the /proc file-system from 1991. Roger worked in many area's of UNIX, however the process file system /proc was his special baby. “/proc began as a debugger interface superseding ptrace(2) but has evolved into a general interface to the process model.” The original /proc only had a file for each process, not a directory. "Data may be transferred from or to any valid locations in the process's address space by applying lseek(2) to position the file at the virtual address of interest followed by read(2) or write(2)." Processes could be controlled using IOCTLs on the file As the USENIX article states: Roger believed that terrible things were sometimes required to create beautiful abstractions, and his trailblazing work on /proc embodies this burden: the innards may be delicate and nasty ("vile," as Roger might say in his distinguished Carolinian accent)—but the resulting abstractions are breathtaking in their power, scope and robustness. RIP Roger, and thanks for the wonderful UNIX legacy you've left us all. Interview - Myke Geiger - myke@servernorth.net (mailto:myke@servernorth.net) / @mWare (https://twitter.com/mWare) Using FreeBSD at a DSL/Cable ISP *** News Roundup New options in bsdinstall - some sysctls and date/time settings (https://www.reddit.com/r/freebsd/comments/4vxnw3/new_options_in_bsdinstall_some_sysctls_and/) bsdinstall in FreeBSD 11.0 will feature a number of new menus. The first, well allow you to set the date and time. Often on computers that have been in storage, or some embedded type devices that have no RTC, the date will be wildly wrong, and ntpd will refuse to run until the date is correctly set. This feature makes it easy to enter the date and time using dialog(1) The second menu, inspired by the existing ‘services' menu, offers a number of ‘hardening' options This menu allows users to easily enable a number of security features, including: Hide processes running as other users/groups Disable reading the kernel message buffer and debugging processes for unprivileged users Randomize the PID of newly created processes Enable the stack guard Erase /tmp at boot Disable remote syslog Disable sendmail All of these options are off by default, so that an install done with the installer will be the same as an install from source, or an upgrade. A number of these options are candidates to become on-by-default in the future, so the hope is that this menu will get more users to test these features and find any negative interactions with applications or general use, so they can be fixed. *** Rawrite32: the NetBSD image writing tool (https://www.netbsd.org/~martin/rawrite32/) Martin of the NetBSD project has released a new version of his USB imaging tool, rawrite32 For those who've not used this tool before, it is a Windows Application that allows writing NetBSD images directly to USB media (other other disk media) This update brings with it support for writing .xz file, and binary signing This may come in handy for writing other OS images to memory sticks as well, especially for those locked into a windows environment who need to switch. *** ZFS-Snap-Diff -- A pretty interface for viewing what changed after a ZFS snapshot (https://github.com/j-keck/zfs-snap-diff) There are lots of nice little utilities to help create and maintain your ZFS snapshots. However today we have something unique to look at, ‘zfs-snap-diff'. What makes it unique, is that it ships with a built-in golang / angularjs GUI for snapshot management It looks very powerful, including a built-in diff utility, so you can even see the changes in text-files, in addition to downloading files, restoring old versions and more. Its nice to see so many ZFS utilities starting to take off, and evolve file-management further. *** Dtrace Conf 2016 Event Videos (https://www.joyent.com/about/events/2016/dtrace-conf) The videos from Dtrace.conf 2016 have been posted Some highlights: Useful DTrace Intro CTF Everywhere Distributed DTrace DTrace for Apps DTrace json() subroutine Implementing (or not) fds[] in FreeBSD OpenDTrace DTrace performance improvements with always-on instrumentation D Syntactic Sugar DTrace and Go, DTrace and Postgres dtrace.conf(16) wrap-up by Bryan Cantrill (https://www.joyent.com/blog/dtrace-conf-16-wrap-up) Once again, it was an eclectic mix of technologists — and once again, the day got kicked off with me providing an introduction to dtrace.conf and its history. (Just to save you the time filling out your Cantrill Presentation Bingo Card: you can find me punching myself at 16:19, me offering unsolicited personal medical history at 20:11, and me getting trolled by unikernels at 38:25.) The next DTrace.conf isn't until 2020 *** Beastie Bits The BSD Daemon features in Mexican candy packaging (https://www.reddit.com/r/BSD/comments/4vngmw/the_bsd_daemon_feature_in_mexican_candy_packaging/) Remove PG_ZERO and zeroidle (page-zeroing) entirely (http://lists.dragonflybsd.org/pipermail/commits/2016-August/624202.html) OpenBSD: Release Songs: 6.0: "Black Hat" (https://www.openbsd.org/lyrics.html#60b) OpenBSD Gaming Resource (http://satterly.neocities.org/openbsd_games.html) LibreSSL 2.4.2 and 2.3.7 Released (http://bsdsec.net/articles/libressl-2-4-2-and-2-3-7-released) Feedback/Questions Pedja - Bhyve GUI (http://pastebin.com/LJcJmNsR) Tim - Jail Management (http://pastebin.com/259x94Rh) Don - X260 (http://pastebin.com/A86yHnzz) David - Updates (http://pastebin.com/wjtcuVSA) Ghislain - Jail Management (http://pastebin.com/DgH9G7p5) ***
本期节目由 思客教学 赞助,思客教学正在进行 React 全端训练营招生, 如果报名时说明你是 Teahour 听众, 你将获得 100 元优惠, 我们也将获得 100元的赞助, 感谢你的支持. 本期为 Teahour.FM 三周年特别节目, 由 Terry 主持, 继续请到了他的最好基友 Jan, 聊聊基于 Ethereum 平台的开发. 我们的反馈邮箱是: hi@teahour.fm 欢迎你的来信, 我们将抽取有价值的来信和反馈在节目中播出. 主持人 Terry 的 blog 我如何把薪水从 50人民币/天 提升到 100美元/小时的 (1) 核心开发者宣布比特币实验失败 Sam Stephenson Sam tweet 1 Sam tweet 2 Asset Pipeline Prototype JS Backbone JS rbenv rvm Adrian Holovaty Adrian tweet Adrian’s presentation at 37Singal Django: wanxiang blockchain labs 德勤(Deloitte) Ethereum Vitalik Vitalik github account Vitalik Blog Bitcoin Magazine The Zen of Python RubyMotion Halting Problem Toward a 12-second Block Time Casper Riak Formalize Casper Binary Sharding Public vs Private Blockchain Raft Consensus Algorithm 同态加密 Ethereum: the World Computer Thomas Schelling SchellingCoin lightning network State Channels IPFS Swarm Storj Slock 百万格子 庞氏合约 RANDAO Alarm Clock ethfans CloudMagic Special Guest: Jan.
Hi everyone, and sorry for the delay. After our brief hiatus, we should be back to weekly podcasts! Download Link: https://mostlyerlang.files.wordpress.com/2015/07/whymajorincs.mp3 Panel Kevin Hammond @khstandrews Simon Thompson @thompson_si Francesco Cesarini @FrancescoC Fred Hebert @mononcqc Irina Guberman @irina_guberman Heinz Gies @heinz_gies Zach Kessin @zkessin Links http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.htmlhttp://programmers.stackexchange.com/questions/103850/as-a-high-school-student-what-should-i-be-doing-to-make-myself-better-more-hirea/103859#103859 http://lwn.net/Articles/641779/?utm_content=bufferc1 http://www.se-radio.net/2008/01/episode-84-dick-gabriel-on-lisp/ http://www.cs.utexas.edu/users/EWD/transcriptions/OtherDocs/Haskell.html https://erlangcentral.org/jobs/
For our sixth podcast we asked Matt Cowger @mcowger (VCDX #52!) to pick something relevant about Cloud Native applications that might be of the beaten path a bit. Matt suggested that we discuss NoSQL, SQL, Message Queues and how they fit into modern application structures. We cover a wide list of technology such as Redis, RIAK, […]
At Erlang Factory San Francisco, Zach spent a few minutes interviewing Joe Armstrong, co-inventor of Erlang. As always, we apologize for the quality of these interviews and the background noise. Download Link: https://mostlyerlang.files.wordpress.com/2015/05/joe-armstrong.mp3
Sorry about that! Audacity crashed on me and I had to redo the whole thing!
Interview with Jamie Winsor at the San Francisco conference Download Link: https://mostlyerlang.files.wordpress.com/2015/05/tascam_0013-jamie-winsor.mp3
Download Link: https://mostlyerlang.files.wordpress.com/2015/05/67-e2-done.mp3 Fred, Brian, and Zach discuss Rebar in today’s podcast. Hope you enjoy! Panel Fred Hebert @mononcqc Brian Troutwine @bltroutwine Zach Kessin @zkessin
Happy Thursday! Here’s an interview with Guido van Rossum, author of the Python programming language. Download Link: https://mostlyerlang.files.wordpress.com/2015/05/interview-with-guido-van-rossum.mp3
Download Link: https://mostlyerlang.files.wordpress.com/2015/05/mostly_erlang_66_riak_core.mp3 Today’s podcast features Mark Allen, who talks with some of our regulars about Riak Core. Sorry about the abrupt ending–for some reason the podcast cut off right in the middle of a sentence! Hope you enjoy what is here, though! Panel Mark Allen @bytemeorg Fred Hebert @mononcqc Irina Guberman @irina_guberman Brian Troutwine @bltroutwine Zach […]
At the San Francisco conference, Zach interviewed Mark Allen of Basho. Download Link: https://mostlyerlang.files.wordpress.com/2015/04/mark-allen.mp3
First, congratulations Zach on the birth of a grandson! Sorry to have missed you last week! Download Link: https://mostlyerlang.files.wordpress.com/2015/04/65.mp3 Panel Garrett Smith @gar1t Zach Kessin @zkessin Irina Guberman @irina_guberman Fred Hebert @mononcqc Simon Thompson @thompson_si Kevin Hammond @khstandrews Conferences Elixir Conf EU April 23-24, Krakow http://www.elixirconf.eu/ PolyConf Krakow July 2-4 http://polyconf.com/ Erlang User Conference in Stockholm June 11-12 […]
Zach interviews Bruce Tate at Erlang Factory San Francisco. Download Link: https://mostlyerlang.files.wordpress.com/2015/04/bruce-tate-done.mp3
Download Link: https://mostlyerlang.files.wordpress.com/2015/04/063_adroll-done.mp3 Sponsored by Adroll Sorry to have been missing last week! This week we have an interview with Adroll, and a brief tangent into astronomy. Panel Jesse Lauro (@jesse_lauro) Brian Troutwine (@bltroutwine) Miriam Pena (@miriampena) Jose Manuel Rodriguez Blanco Conferences Elixir Conf EU April 23-24, Krakow http://www.elixirconf.eu/ PolyConf Krakow July 2-4 http://polyconf.com/ Erlang User Conference in […]
We are back from Erlang Factory San Francisco! Every Thursday for the next several weeks, Mostly Erlang will be posting short interviews that Zach conducted at the conference. Here, Zach Kessin interviews Alexis Costanza, production coordinator at Hackers/Founders. Apologies for the poor quality–there were lots of people at this conference, creating lots of background noise!
Guest speaker Edwin Brady talks about Idris in an extremely advanced podcast full of PhDs! Panel Edwin Brady Heinz Gies @heinz_gies Kevin Hammond @khstandrews Simon Thompson @thompson_si Zach Kessin @zkessin Conferences Elixir Conf EU April 23-24, Krakow http://www.elixirconf.eu/ PolyConf Krakow July 2-4 http://polyconf.com/ Erlang User Conference in Stockholm June 11-12 www.erlang-factory.com/euc2015 Code Mesh, London, November 2-4 http://lanyrd.com/2015/codemeshio/
Guest speaker Chris McCord discusses his book with Zach and Bruce Panel Chris McCord @chris_mccord Bruce Tate @redrapids Zachary Kessin @zkessin Conferences Erlang Factory San Francisco 26-27 March–some of our regulars are there now! http://www.erlang-factory.com/sfbay2015/ Elixir Conf EU 23-24 April in Krakow http://www.elixirconf.eu/ Stockholm Erlang User Conference 9-10 June in Stockholm http://www.erlang-factory.com/euc2015 Links Metaprogramming Elixir by Chris McCord […]
Sorry everyone for the lack of podcast last week! We are back on schedule now! Panel Bryan Hunter @bryan_hunter Simon Thompson @thompson_si Zachary Kessin @zkessin Picks http://www.release-project.eu Click to access chechina-sd-erlang-efl14.pdf https://www.erlang-solutions.com/resources/webinars/megaload-age-load-testing http://tomatoi.st/
Zach asks Rachel and Andrea about F#. Panel Andrea Magnorsky @silverspoon Rachel Reese @rachelreese Zach Kessin @zkessin Links http://www.roundcrisis.com/2015/02/22/Type-providers http://www.oreilly.com/webcasts/index.html http://www.cis.upenn.edu/~bcpierce/tapl/ http://fsharp.github.io/FSharp.Data/ https://msdn.microsoft.com/en-us/library/hh156509.aspx EDIT: Sorry, everyone! I edited and then accidentally uploaded the unedited version. It's fixed now.
Panel Francesco Cesarini @FrancescoC Kevin Hammond @khstandrews Zachary Kessin @zkessin Conferences Erlang Factory San Francisco March 26-27 Elixir Conf EU 23-24 April Krakow Erlang User Coference Stockholm 11-12 June Links http://www.get-finch.com
Today’s podcast features guest speaker Heinz Gies, creator of project FIFO Panel Heinz Gies @heinz_gies Bryan Hunter @bryan_hunter Kevin Hammond @khstandrews Zach Kessin @zkessin Conferences Lambda Days in Krakow, Poland: February 26-27 Elixir Comp Europe in Krakow Poland: April 23-24 Erlang Factory San Francisco in San Francisco, March 26-27 Erlang User Conference in Stockholm, Sweden, […]
Zach, Bruce, and Kevin discuss Kevin’s new book. Panel Bruce Tate (@redrapids) Kevin Hammond (@khstandrews) Zachary Kessin (@zkessin)
Zach, Fred, and Jose answer questions live! You’ll hear at the start that we erroneously welcomed you to Podcast #53, but rest assured this is in fact #54. Here’s the link to the video. http://mostlyerlang.com/2015/01/05/package-mangement-live/ Panel Zachary Kessin (@zkessin) Fred Hebert (@mononcqc) Jose Valim (@josevalim) Bruce Yinge (@brucify)
Download Link: https://mostlyerlang.files.wordpress.com/2015/01/053_tools.mp3 The meta programming of Elixir makes for some very powerful testing tools for testing systems, Bruce Tate joins us to talk about what they are doing and how we can learn from it. Note this episode was recorded in Dec of last year Panel Bruce Tate (@redrapids) Eric Meadows-Jonsson (@emjii) Kevin Hammond […]
Ever have a system go strange on you, or fall down under load? Erlang has some amazing tools to try and debug these cases. Regular panelist Fred joins us to talk about his new book “Erlang in Anger” and his recon library. With these you will be in good shape to debug a system in […]
Erlang comes with its own datastores ETS and Mnesia. These store Erlang terms directly so you don't have to map your data into SQL types. They can also be used to create databases in Memory or on disk or both, this can lead to blindingly fast distrubted systems We speak to Claus about how […]
We apologize, this episode got messed up, so here is a fixed version Download Link: audio mp3=”https://mostlyerlang.files.wordpress.com/2014/11/050_minikanran.mp3″%5D%5B/audio%5D Download Link: https://mostlyerlang.files.wordpress.com/2014/11/050_minikanran.mp3 A programming language that doesn't change the way you think about programming isn't worth learning — Alan Kay MiniKanren is a relational programming language that has been used for both research and in industry. Find out how […]
Supervisors are all about creating solid guarantees of how the system will recover after a fault and how it will be setup. If Erlang supervisors have ever confused you, or if you want to understand how this feature makes erlang one of the most powerful tools for building distributed systems this is the episode for […]
“…when 100 people are listening to you for an hour, that's 100 hours of people's time devoted to what you have to say. If you can't spend 5 or 10 hours preparing for them, thinking about them, and refining your points to best suit their needs, what does that say about your respect for your […]
Download Link: https://mostlyerlang.files.wordpress.com/2014/11/047_nitrogen.mp3 Nitrogen Nitrogen is a framework for creating rich web applications from erlang, for all of us who hate doing front end dev we can now do most of it within Erlang. Project maintainer Jesse Gumm joins us to talk about it and how to use it. Panel Zachary Kessin (@zkessin) Jesse Gumm […]
Joseph Joins us to talk about his efforts to build a scheme on the Erlang Beam VM. And the challenges that he has run into trying to build scheme. We talk about how erlang can be influenced by the scheme echo system and how implementing things is often a great way to learn how something […]
Download Link: https://mostlyerlang.files.wordpress.com/2014/10/045_robots.mp3 You can build Robots with Erlang! The Encyclopedia Galactica defines a robot as a mechanical apparatus designed to do the work of a man. The marketing division of the Sirius Cybernetics Corporation defines a robot as “Your Plastic Pal Who’s Fun to Be With.” Ok, maybe not that kind of robots, but […]
Show notes coming soon
We are joined by Bruce Tate and Jose Valim to talk about the tools that have been developing around Elixir and how they can help the rest of the Erlang eco system. This is the first of a series of episodes that will explore that wider Erlang eco system including Elixir, LFE, Erlog, LING, LuvieScript, […]
Download Link https://mostlyerlang.files.wordpress.com/2014/08/042_tools_with_simon_and_yehuda.mp3 At Erlang Factory Jose and Dave pointed out that we in the Erlang community are loosing people by the fact that we have not kept up with the tools in other languages, like Clojure, Ruby and Elixir. So we brought on two professors who have both taught Erlang to see what they […]
This podcast was recorded live on stage at EUC 2014 so it has a somewhat different feel to it Link: https://mostlyerlang.files.wordpress.com/2014/07/040_live_at_euc.mp3
Шоу нотес, текстовая расшифровка и обсуждение: ссылка
There's a great quote I read, at the end of this article. It says: "...if you think that switching to NoSQL will just let you hand-wave away all of the challenges of running a database, you are terribly misguided." The context is that all too often people looking to move away from some of the hassles of working with RDBMS platforms, which includes working with the DBA, haven't completely thought through the issues. I do think NoSQL has a place in the world. There are domains of problems that I'm sure Riak, MongoDB, and others, solve in a more efficient way than SQL Server, Oracle, MySQL, and other relational systems. I'm not sure what they are, and to some extent, I haven't seen good guidance on where particular platforms excel. Most of the articles and pieces on choosing NoSQL seem to be trying to sell me "why a particular platform can replace my other one", and telling me to add in things like transactions, but not explaining the drawbacks. Read the rest of "No Handwaving Away the DBA" at SQLServerCentral.
The Rogues talk to Sean Cribbs and Bryce Kerley of Riak.
The Rogues talk to Sean Cribbs and Bryce Kerley of Riak.
The Rogues talk to Sean Cribbs and Bryce Kerley of Riak.
Kerry and Rinat choose the event storage to use for their project. They’re using Windows Azure, so should they stick with Lokad CQRS event storage, or switch to Event Store from Event Store LLP? They discuss some of the pros and cons of their options, review some scaling approaches, and guess at what a transition may look like.
本期由 Kevin Wang 主持,Dingding Ye 协作主持,邀请到 《Seven Databases in Seven Weeks》 作者 Eric Redmond 畅聊数据库。Eric 目前是 Riak 的核心开发人员,在两个小时时间了,Eric 介绍了 PostgreSQL、MongoDB、CouchDB、HBase、Cassandra、Redis、Riak、Neo4J 的各自设计思想和优缺点,同时在最后也分享了他个人在数据库选择上的一些考虑原则。 Basho Seven Languages in Seven Weeks MongoHQ CAP theorem PostgreSQL MongoDB CouchDB HBase Cassandra Redis Riak Neo4J Dynamo VoltDB JUNG Cypher Eventual Consistency Google Glass Explorer Program The Little Riak Book Antifragile: Things That Gain from Disorder Hashrocket Lunch n' Learn with Eric Redmond Hashrocket Guest Star Interview: Eric Redmond Special Guest: Eric Redmond .
Aaron and Brian speak with Justin Sheehy (@justinsheehy) - CTO at Basho Technologies, about the evolution of applications, new database demands and why NoSQL is changing how we stored and access data.
Ben Orenstein is joined by Sean Cribbs, Software Engineer at Basho, the makers of Riak. Ben and Sean start off discussing the interesting overlap of programmers and musicians and why it seems to happen so much. They then discuss Sean's role at Basho, what Riak is, how it works, and how it differs from other NoSQL databases. Sean works remotely for Basho, which has several offices, so Ben and Sean discuss remote workers and remote offices, and the ins and outs of navigating that set up, and how he got paid to work on open source. Finally, they discuss Erlang, which most of Riak is written in. These topics, plus much more. Corpus callosum Riak Overview Basho Ruby client for Riak Dynamo: Amazon’s Highly Available Key-value Store - PDF Eventual consistency Riak: Read Repair BitTorrent Swarms Distributed hash table Riak: Ring Riak: Gossiping Cassandra Project Voldemort Strangeloop, Sept 23-25, 2012 RICON, Oct 10-11, 2012 Why Riak Erlang Programming Language Pragmatic Programmers: Erlang in Practice screencast Erlang: dialyzer Ruby laser Programming Erlang: Software for a Concurrent World Follow @thoughtbot, @r00k, and @seancribbs on twitter.
Wynn caught up with Josh Kalderimis and Mathias Meyer from Travis CI to talk about hosted CI in the sky, scaling apps, and a little Riak.
Wynn caught up with Josh Kalderimis and Mathias Meyer from Travis CI to talk about hosted CI in the sky, scaling apps, and a little Riak.
In this episode we discussed: MongoDB Standardization of NoSQL databases Portability between non-relational databases CouchDB PostgreSQL AGPL license PostgreSQL license (like the BSD license) MySQL is GPLv2 Drizzle has rewritten their MySQL driver so it’s not GPL Oracle’s behavior toward products they own that compete InnoDB MySQL engine Microsoft SQL – The price hike and bug report that drove Josh to PostgreSQL Customer expectations vs Intended functionality GreenPlum Alexa Implementing the minimum feature set and getting feedback. Transactional DDL – All operations are transactional except create database. Database Migrations – PostgreSQL can do migrations with no downtime. Memcached Redis Solr ElasticSearch Foreign Data Wrappers – a driver for external data sources that can then be managed through PostgreSQL Lucene Hadoop HBase Cassandra Project Voldemort HyperTable Riak Amazon Cap Theorem Papers VoltDB
Wynn sat down with Andy Gross and Mark Phillips of Basho and John Nunemaker of Ordered List to talk about Riak, Riak Search, and moving an open source community to GitHub.
Wynn sat down with Andy Gross and Mark Phillips of Basho and John Nunemaker of Ordered List to talk about Riak, Riak Search, and moving an open source community to GitHub.
This face-forward talk is from Auckland Barcamp and discusses Riak, the key/value store database engine.
John Lynch from Rigel Group gives an overview of Riak, the newest kid on the NoSQL block, and explains why it should power your next web-scale app.
Carl and Richard talk to Jeremiah Peschka about his project, CorrugatedIron, a .NET library that gives developers the ability to talk to Riak, Basho's highly-available Key-Value store. The conversation starts with understanding Riak, which is based on Amazon's Dynamo white paper for dynamic distributed storage. Along the way the topics of NoSQL as a whole, distributed data storage, load balancing and functional programming are explored.Support this podcast at — https://redcircle.com/net-rocks/donations