- Видео 31
- Просмотров 72 918
Melbourne ALT NET
Добавлен 4 мар 2014
Modern JavaScript For Web Dinosaurs - Ryan Preece
Back in the day, you'd roll out some jQuery and build websites with the best of them. But nowadays terms like "Webpack" and "React" and "Node" kept cropping up, and the new code you see looks nothing like the JavaScript you thought you knew... Uh oh - you've become a web dinosaur!
If you've been out of the game for even a little in frontend development it can be a huge trial to get back in. In this session I'll take you on a trip from basic jQuery all the way up to React and explain how we got from Point A to B. It'll be packed with examples - so not matter what year your JS knowledge is from, you'll walk away feeling less like an extinct dinosaur and more like a state-of-the-art web devel...
If you've been out of the game for even a little in frontend development it can be a huge trial to get back in. In this session I'll take you on a trip from basic jQuery all the way up to React and explain how we got from Point A to B. It'll be packed with examples - so not matter what year your JS knowledge is from, you'll walk away feeling less like an extinct dinosaur and more like a state-of-the-art web devel...
Просмотров: 346
Видео
Railway Oriented Programming: C# Edition - Tama Waddell
Просмотров 8 тыс.5 лет назад
Do you ever feel dirty when adding if statements and try catches to your code to handle basic errors, catch exceptions and/or log events? Maybe your code started off as a few basic lines but then blew up into a nested mess of branches after you handled every expected error. Or maybe you're envious of your functional programming friends and want to learn something new? We've already seen the int...
Visual Studio Productivity for .NET Developers - David Kean
Просмотров 1005 лет назад
In this demo-heavy session, Dave will demonstrate the many features we've added to Visual Studio 2017 since it first released to make .NET developers more productive-improvements to editing, refactoring, debugging, and testing your code-which previously required additional extensions. Whether you’re new to Visual Studio or have been using it for many years, you’ll learn something that will make...
Need for speed 8, performance tuning of your web application - Yaser Adel Mehreaban
Просмотров 385 лет назад
We live in an era where people don’t bother opening their personal computers for browsing anymore. Because of this, the performance of the website or web applications has never been more important. Join me in this talk and we will go through what I do to speed up the applications I work on, why I do it, and the tools I use to optimise front-end performance. We will look at minimising requests, ...
A (brief) overview of Span≤T≥ - David Wengier
Просмотров 9 тыс.6 лет назад
Span≤T≥ (and Memory, ReadOnlySpan, ReadOnlyMemory) are relatively new types that help you deal with memory directly in a safe and performant matter. They are slowly being rolled through the .NET frameworks so lets have a quick look at how they can help. David has spent almost 20 years learning how to do the right thing by doing a lot of the wrong things first. He hopes to save you from some of ...
Leveraging the benefits of the functional paradigm in everyday mundane code - Afif Mohammed
Просмотров 806 лет назад
Functional programming code is anything but mundane code. And the mundane code we write everyday is often far from being functional. (pun intended) While the benefits of functional programming are more openly debated in the mainstream today, the paradigm is still far from being approachable. If we take away all the jargon, and the mathematical laws, what are the fundamental principles we can di...
Getting started with WinDbg - Gabriel Weyer
Просмотров 2,9 тыс.6 лет назад
WinDbg is the most powerful debugging tool available on Windows. An austere UI, the lack of accessible documentation and tutorials make it challenging to get started. This session will focus on how you go from writing a memory dump on a production server to analysing this dump on your machine, explaining each step on the way. You'll learn: - How to write a memory dump - The three key steps to g...
My job as a software engineer is not to write code - Andrew Murphy
Просмотров 566 лет назад
Many software engineers are lead into the false assumption that we are hired to write code. This talk challenges that perception and discusses the real reason we are paid to turn up to work every day.
Not a story the Jedi would tell you: CodeGen on .NET - Reuben Bond
Просмотров 886 лет назад
Underpinning so many of the libraries and frameworks that we take for granted is a heavy reliance on code generation. In this talk, we will discuss code generation on .NET. We'll cover the pros and cons of different approaches for code gen, including Expression Trees, IL, and syntax generation with Roslyn, and we'll look at some real world examples
Am I a Good Developer? - Emad Alashi
Просмотров 1906 лет назад
"Am I a Good Developer?" is a question, I believe, we asked ourselves at least once in our lifetime as developers. In the pursuit of becoming better developers, we try to assess ourselves, but that's not an easy task! In this session I will share with you my views on what it means to be a good developer, how to become one, and the pitfalls we might fall in this pursuit.
Mob Programming - Learning FSharp (Part 1)
Просмотров 2816 лет назад
At the melbourne alt dot net meetup we wanted to learn fsharp. We also love mob programming and are yet to meet a programming challenge it can't help solve. So we got together one evening we around 30 people, most of whom had never written fsharp and tried to tackle the classic FizzBuzz problem. This is the first in a series of mob programming videos that the group will post over the coming mon...
What the Func is it with Azure Functions? - James Devlin
Просмотров 326 лет назад
So you've heard Azure Functions are the future. You've bought the speel. Gone to the Azure Portal and bing baggidy boo you've written Hello World... But where do you go from here? How to CD/CI this, how do I locally edit and version control it? You know, just normal stuff? Except in the future. A future that seems to have forgotten basic present developer sensibilities. Well, let's take a look ...
"Functions for nothing, and your tests for free" Property-based testing and F# - George Pollard
Просмотров 6436 лет назад
Both of these are technologies that let you do more with less: something that I look for in all tech! Firstly, we'll be exploring property-based testing: what it is, and how you can apply it to your projects to find more bugs and more thoroughly test your code, while automating the boring bits. Whether you're maintaining a legacy C system or writing brand-new .NET Core code, you can benefit fro...
Epic Bug Hunt: The Case of the Missing Forms - Chris Lewis
Просмотров 826 лет назад
Come on in and take a seat, for I've a tale to tell you! A tale filled with mysterious errors, server crashes, and arcane debugging tools; a tale whose twists and turns taught me so much that I just had to share it! In this talk I'll detail the worst production bug I've faced so far, and the crazy hoops I had to jump through to fix it. Whether you like hearing about the inner workings of IIS or...
Who has the best OCR (Double Vision) - Matt Barnes
Просмотров 726 лет назад
Overview of Computer Vision from Azure azure.microsoft.com/en-au/services/cognitive-services/computer-vision/ - OCR, overview and code samples - Image Recog, overview and code samples Overview of Computer Vision from Google cloud.google.com/vision/ - OCR, overview and code samples - Image Recog, overview and code samples How we use it at Drawboard and how we intend to use it moving forwards
Railway-Oriented Programming in C# - Marcus Denny
Просмотров 5 тыс.7 лет назад
Railway-Oriented Programming in C# - Marcus Denny
Everything’s a stream. An introduction to RxJS and avoiding anti-patterns - Paul Heasley
Просмотров 1807 лет назад
Everything’s a stream. An introduction to RxJS and avoiding anti-patterns - Paul Heasley
Developing a flexible and scalable application - Picnic Software
Просмотров 43510 лет назад
Developing a flexible and scalable application - Picnic Software
Microservice testing with Pact-Net - Neil Campbell
Просмотров 9 тыс.10 лет назад
Microservice testing with Pact-Net - Neil Campbell
Event Sourcing with F# - Andrew Browne
Просмотров 2,3 тыс.10 лет назад
Event Sourcing with F# - Andrew Browne
F# - Why you should give an F - Daniel Chambers
Просмотров 12 тыс.10 лет назад
F# - Why you should give an F - Daniel Chambers
The API Journey for AccountRight Live - Shaun Wilde
Просмотров 50310 лет назад
The API Journey for AccountRight Live - Shaun Wilde
SchoStack.Web: ASP.net MVC helper library - Adam Schroder, Michael Lyons & Adam Beck
Просмотров 15310 лет назад
SchoStack.Web: ASP.net MVC helper library - Adam Schroder, Michael Lyons & Adam Beck
Building a useful software dependency visualization system - Tim Dwyer
Просмотров 65110 лет назад
Building a useful software dependency visualization system - Tim Dwyer
Big Ball of Mud to Multi-Domain Distributed System - Part 4 - Mark Cheeseman
Просмотров 14310 лет назад
Big Ball of Mud to Multi-Domain Distributed System - Part 4 - Mark Cheeseman
Big Ball of Mud to Multi-Domain Distributed System - Part 3 - Shohre Mansouri
Просмотров 25810 лет назад
Big Ball of Mud to Multi-Domain Distributed System - Part 3 - Shohre Mansouri
Big Ball of Mud to Multi-Domain Distributed System - Part 2 - Eskil Hauge
Просмотров 12410 лет назад
Big Ball of Mud to Multi-Domain Distributed System - Part 2 - Eskil Hauge
Big Ball of Mud to Multi-Domain Distributed System - Part 1 - Marcus Denny
Просмотров 43410 лет назад
Big Ball of Mud to Multi-Domain Distributed System - Part 1 - Marcus Denny
14:00 The generic Result type created for C# is not completely analogous to the F# variant. It's missing a generic type for the error. It should be Result<T, E>, not just Result<T>. Then you can use it in domain code as Result<T, DomainError>, in the application layer as Result<T, SomeServiceError>, in the presentation layer as Result<T, ApiError>, etc. You have better segregation of error types this way by tracking the error type at the type level, and not just falling back to a single Error type for all use cases, be it Error, a string (which is so lazy), etc.
Needs more trains
How many?
@@melbournealtnet how many you got? 😏
9:39 here are my questions, (1) can there be an arrow that maps an object of a category to whole category full of objects? (2) can we define an arrow that indicates to which category an object belongs?
A very inspiring presentation. Any chance to get the code?
Hi Rico, unfortunately, this was a few years ago now and I've been unable to get the code. I think you'd probably have some luck finding other samples with a bit of google though?
Go Dave!
awesome explanation of ROP. thank you
Marking interesting points: 17:06 Two-track function 19:43 Bind 21:03 Map 21:57 DoubleMap 22:25 Tee 23:02 Succeed 23:43 Failed 24:04 TryCatchSwitch 24:49 BooleanSwitch 25:29 Handle
Thanks for this stuff. Just wanted to know if we can do it for POST/PUT or it is only for GET HTTP requests?
Is the code available somewhere?
I've contacted the speaker to try to see if the code samples are online :)
Full source code real sample ?
I've contacted the speaker to try to see if the code samples are online :)
Where is the code, used in the demonstration
Cool!
Great job!
11:01 But do you really need to send string.Empty to this closure? Wouldn't it be better to use int? 🤔 return new string(Enumerable.Repeat(0, Length).Select(_ => (char)(random.Next(0, 10) + '0')).ToArray()); Or even char '0' itself to sum with.
Both ways wil have identical perf
0, '0' or "" in this context are all literals, so they're compile time constants, meaning they won't have a perf impact. In real world code though, there could be a difference, so its a good point to make, thank you!
Thanks for the summary! Great quick dive into this new capability
I wish people stopped saying it's nonsense. It's obviously not.
About "restrict side effects to subscribe" anti-pattern - not always. here is a screenshot from Besh Lesh "Advanced RxJS: State Management and Animations" speech where he use "do" instead of subscribe to archive reusability and take more control over observable sequence start. prntscr.com/l55ymv
Very useful. Thank you!
Amazing presentation. Thanks so much!
Abhishek Srivastava thanks, I was struggling for a good description of the video. Any suggestions?
There are only two hard problems in computer science naming things and cache invalidation. I suck at names and descriptions.
The third hard problem of computer science is how to get anything done with all of those meetings.
Ed Maphis mob programming can help with that!
github.com/habaneroofdoom/AltNetRop
Hi Jim , Can you share some demo code for how to use Pact with in .net platform, thanks very much.
Did Neil have code prepared in this talk? I will reach out to him
Yes, Neil confirmed there are samples in the Repo. You can follow along with that conversation here twitter.com/pjimmy/status/937077927178407936
Cool , thanks!
twitter.com/pjimmy/status/937077927178407936?s=20
In the example of "Immutable class and pure methods", objects are types and arrows are functions between types. So (+1) function receives a value of type Integer and returns another value of the same type Integer. The same object. Why isn't it considered the identity arrow?
Vũ Tô I know you posted this two years ago, but I think it’s worth clarifying. Simply getting back the same data type is insufficient to uphold the “laws” of a category. It must meet a stricter definition which is that the returned object must be structurally identical (including value). In this case, the only integer which satisfies this with `(+)` is zero. And none of the integers will satisfy it with `(+1)`. Another good example is the Functor. It has a `map` function which “maps” a second function over its contents, returning a new functor. But it’s not sufficient to match the types. Otherwise, `map` (for lists) could decide to reverse the list at the end, which still meets the type signature, but breaks the functor law that `map` should “preserve the structure” of the functor, including ordering. These rules that exist outside the type system are often included in what they call “properties” of categories. Naturally, many programmers want to verify that their own implementations satisfy the categorical laws, so they use “property-based testing” in order to prove what the type system cannot prove for them.
Great presentation! Thank you!
Really good! Thank you
Nice, but examples should be in Haskell
I say examples should be in Factor or Joy*. It's a better notation for composition: "c ∘ b ∘ a" is simply "a b c" ;-) But jokes aside, if anything, Javascript would be better than Haskell or C#. It's trying to present it in a language-agnostic and paradigm-agnostic way, precisely moving it away from Haskell, where it's almost a monopoly, and where you have enough material already. EDIT: (*) Oh, if Cat was still alive, that would be just perfect!
9:34 Jesus Christ. "Isomorphism" from "iso" = "equal" and morphism" = "shape" or "form." Please, KS, FB, you idiot!
Are the slides available somewhere?
www.slideshare.net/kenbot/category-theory-for-beginners
Two minutes in, and I have a whole new perspective on why I hear certain programmers talk about category theory a lot, and why I should care. That may be a record for enlightenment-inducement.
This is a nice talk and I like the use of pictures to try to clarify things. I do, however, find the part addressing a C#/.NET audience a bit lacking - there could have been clearer examples and better hints to F# which is much more of an option to a .NET audience than Haskell or Scala. Scott Wlaschin does a marvelous job at trying to explain functional programming benefits even trying to avoid the "bad words" like Monads or Category Theory: fsharpforfunandprofit.com/rop
good one
Loved it. Would definitely want to see more!!
Is that list of endomorphisms composed in reverse order? Shouldn't the last function in the list be applied first?
Great presentation, one of the best I've seen on f# - many thanks mate
53:35 potatoList. .Select(mashEm) .Select(boilEm) .Select(stickEmInAStew) Question please: What happens if not only do i need to apply these methods one by another but also accumuate the result status of each one when running to report it back which function would i be using in scala? map isn't good enough right? I would need to change my data structures to contain that additional info and this would be a great change...
Tomer Ben David The usual FP way is to have simple building blocks, and build more advanced things by recombining them with other things, not by adding features to them. You might implement this extra feature using something like a State monad, which could keep track of your status while still being a functor itself.
25:11 why do hyperlinks don't compose? if I have a hyperlink from a.com to b.com and from b.com to c.com then don't they compose into a hyperlink from a.com to c.com? so if i call hyperlink from a.com to b.com f and from b.com to c.com g don't they compose into g(f())
Tomer Ben David No; just because b.com page has a hyperlink to something, doesn't mean that a.com does. If we allow that, then any webpage has a hyperlink to pretty much everything on the internet! It's just a specific case of a graph; a graph A --> B --> C does not have an edge from A --> C. It's not a category unless all consecutive arrows A --> B --> C have a composite arrow A --> C, and all objects have an identity arrow.
Because they don't compose by rule. The fact that they might compose, does not satisfy the rules of category theory. Webpages are graph nodes at best. They are not composed by a set of rules that don't have any gaurantees related category theory. Categories compose by rules of math and logic only. "Webpages" cannot be PROVEN to compose in this way, because that kind of composibility is not a required part of the TCP/IP protocol.
Is an immutable variable the same thing as a constant?
William Ross Yes.
not necessarily. constants in .NET are bound at compile-time. readonly variables are bound at runtime (and can thus be lazy)
I think they are basicly read-onlys
Partial application just clicked in my mind. Thank you for the great explanation!
great background, not much code
Hey Rick, glad you liked the video. It's my understanding that its probably the theory that's the tricky bit here anyway. The implementation is just nice and neat in F#
Jimmy P yeah, the background was very good, just wanted to see some F# idioms as well...
Well watch this space because I believe there may be some more information coming on the topic. Right Andrew Browne?
Jimmy P will do, thx
Hey Rick, We are working on open sourcing much of our event sourcing code. Lots of activity happening at the moment but not much documentation or example code: github.com/adbrowne/eventful/tree/dev In the meantime this talk has a lot more code and might be of interest. It's another company doing event sourcing with F#: vimeo.com/109343720 Hope that helps.
My head almost exploded watching this... :)
Very interesting preso and useful feature. Worth a look.