Jonkman Microblog
  • Login
Show Navigation
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Notices by Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space), page 10

  1. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 23:14:02 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • Tessa Racht 😱

    @nergdron this was a phone interview too, and it feels like the guy on the other end wasn't even paying attention, just radiating that california fake-niceness. not a great feel.

    In conversation Monday, 09-Oct-2017 23:14:02 EDT from socially.constructed.space permalink
  2. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 22:49:09 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    in reply to

    are they all like this? 😠

    In conversation Monday, 09-Oct-2017 22:49:09 EDT from socially.constructed.space permalink
  3. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 22:48:35 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ

    sure is good to be on a phone call and feel like i may as well be talking to a fucking form or phone tree

    In conversation Monday, 09-Oct-2017 22:48:35 EDT from socially.constructed.space permalink
  4. FabiĆ”n Heredia 🚲 (fabianhjr@social.coop)'s status on Monday, 09-Oct-2017 22:44:00 EDT Fabián Heredia 🚲 FabiĆ”n Heredia 🚲

    I have been trying to learn #categorytheory for a while and I got lost in all books I had tried so far.

    I can now say that I found the one that has been clearing things up for me. 11/10 worth.

    Category Theory for Programmers

    (Available as a PDF)

    https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/

    In conversation Monday, 09-Oct-2017 22:44:00 EDT from social.coop permalink Repeated by kitredgrave

    Attachments

    1. Category Theory for Programmers: TheĀ Preface
      By Bartosz Milewski from Ā Ā Bartosz Milewski's Programming Cafe

      Table of Contents

      Part One

      1. Category: The Essence of Composition
      2. Types and Functions
      3. Categories Great and Small
      4. Kleisli Categories
      5. Products and Coproducts
      6. Simple Algebraic Data Types
      7. Functors
      8. Functoriality
      9. Function Types
      10. Natural Transformations

      Part Two

      1. Declarative Programming
      2. Limits and Colimits
      3. Free Monoids
      4. Representable Functors
      5. The Yoneda Lemma
      6. Yoneda Embedding

      Part Three

      1. It’s All About Morphisms
      2. Adjunctions
      3. Free/Forgetful Adjunctions
      4. Monads: Programmer’s Definition
      5. Monads and Effects
      6. Monads Categorically
      7. Comonads
      8. F-Algebras
      9. Algebras for Monads
      10. Ends and Coends
      11. Kan Extensions
      12. Enriched Categories
      13. Topoi
      14. Lawvere Theories
      15. Monads, Monoids, and Categories

      There is a pdf version of this book with nicer typesetting available for download.

      You may also watch me teaching this material to a live audience.

      Preface

      For some time now I’ve been floating the idea of writing a book about category theory that would be targeted at programmers. Mind you, not computer scientists but programmers — engineers rather than scientists. I know this sounds crazy and I am properly scared. I can’t deny that there is a huge gap between science and engineering because I have worked on both sides of the divide. But I’ve always felt a very strong compulsion to explain things. I have tremendous admiration for Richard Feynman who was the master of simple explanations. I know I’m no Feynman, but I will try my best. I’m starting by publishing this preface — which is supposed to motivate the reader to learn category theory — in hopes of starting a discussion and soliciting feedback.

      I will attempt, in the space of a few paragraphs, to convince you that this book is written for you, and whatever objections you might have to learning one of the most abstract branches of mathematics in your ā€œcopious spareĀ timeā€ are totally unfounded.

      My optimism is based on several observations. First, category theory is a treasure troveĀ of extremely useful programming ideas. Haskell programmers have been tapping this resourceĀ for a long time, and the ideas are slowly percolating into other languages, but this process is too slow. We need to speed it up.

      Second, there are many different kinds of math, and they appeal to different audiences. You might be allergic to calculus or algebra, but it doesn’t mean you won’t enjoy category theory. I would go as far as toĀ argueĀ that category theory is the kind of math that is particularly well suited for the minds of programmers. That’s because category theory — rather than dealing with particulars — deals with structure. It deals with the kind of structure that makes programs composable.

      Composition is at the very root of category theory — it’s part of the definition of the category itself. And I will argue strongly that composition is the essence of programming. We’ve been composing things forever, long before some great engineer came up with the idea of a subroutine. Some time ago the principles of structural programming revolutionized programmingĀ because they made blocks of code composable. Then came object oriented programming, which is all about composing objects. Functional programming is not only about composing functions and algebraic data structures — it makes concurrency composable — something that’s virtually impossible with other programming paradigms.

      Third, I have a secret weapon, a butcher’s knife, with which I will butcher math to make it more palatable to programmers. When you’re a professional mathematician, you have to be very careful to get all your assumptions straight, qualify every statement properly, and construct all your proofs rigorously. This makes mathematical papers and books extremely hard to read for an outsider. I’m a physicist by training, and in physics we made amazing advances using informal reasoning. Mathematicians laughed at the Dirac delta function, which was made up on the spot by the great physicist P. A. M. Dirac to solve some differential equations. They stopped laughing when they discovered a completely new branch of calculus called distribution theory that formalized Dirac’s insights.

      Of course when using hand-waving arguments you run the risk of saying something blatantly wrong, so I will try to make sure that there is solid mathematical theory behind informal arguments in this book. I do have a worn-out copy of Saunders Mac Lane’s Category Theory for the Working Mathematician on my nightstand.

      Since this is category theory for programmers I will illustrate all major concepts using computer code. You are probably aware that functional languages are closer to math than the more popular imperative languages. They also offer more abstracting power. So a natural temptation would be to say: You must learn Haskell before the bounty of category theory becomes available to you. But that would imply that category theory has no application outside of functional programming and that’s simply not true. So I will provide a lot of C++ examples. Granted, you’ll have to overcome some ugly syntax, the patterns might not stand out from the background of verbosity, and you might be forced to do some copy and paste in lieu of higher abstraction, but that’s just the lot of a C++ programmer.

      But you’re not off the hook as far as Haskell is concerned. You don’t have to become a Haskell programmer, but you need it as a language for sketching and documenting ideas to be implemented in C++. That’s exactly how I got started with Haskell. I found its terse syntax and powerful type system a great help in understanding and implementing C++ templates, data structures, and algorithms. But since I can’t expect the readers to already know Haskell, I will introduce it slowly and explain everything as I go.

      If you’re an experienced programmer, you might be asking yourself: I’ve been coding for so long without worrying about category theory or functional methods, so what’s changed? Surely you can’t help but notice that there’s been a steady stream of new functional features invading imperative languages. Even Java, the bastion of object-oriented programming, let the lambdas in C++ has recently been evolving at a frantic pace — a new standard every few years — trying to catch up with the changing world. All this activity is in preparation for a disruptive change or, as we physicist call it, a phase transition. If you keep heating water, it will eventually start boiling. We are now in the position of a frog that must decide if it should continue swimming in increasingly hot water, or start looking for some alternatives.

      One of the forces that are driving the big change is the multicore revolution. The prevailing programming paradigm, object oriented programming, doesn’t buy you anything in the realm of concurrency and parallelism, and instead encourages dangerous and buggy design. Data hiding, the basic premise of object orientation, when combined with sharing and mutation, becomes a recipe for data races. The idea of combining a mutex with the data it protects is nice but, unfortunately, locks don’t compose, and lock hiding makes deadlocks more likely and harder to debug.

      But even in the absence of concurrency, the growing complexity of software systems is testing the limits of scalability of the imperative paradigm. To put it simply, side effects are getting out of hand. Granted, functions that have side effects are often convenient and easy to write. Their effects can in principle be encoded in their names and in the comments. A function called SetPassword or WriteFile is obviously mutating some state and generating side effects, and we are used to dealing with that. It’s only when we start composing functions that have side effects on top of other functions that have side effects, and so on, that things start getting hairy. It’s not that side effects are inherently bad — it’s the fact that they are hidden from view that makes them impossible to manage at larger scales. Side effects don’t scale, and imperative programming is all about side effects.

      Changes in hardware and the growing complexity of software are forcing us to rethink the foundations of programming. Just like the builders of Europe’s great gothic cathedrals we’ve been honing our craft to the limits of material and structure. There is an unfinished gothic cathedral in Beauvais, France, that stands witness to this deeply human struggle with limitations. It was intended to beat all previous records of height and lightness, but it suffered a series of collapses. Ad hoc measures like iron rods and wooden supports keep it from disintegrating, but obviously a lot of things went wrong. From a modern perspective, it’s a miracle that so many gothic structures had been successfully completed without the help of modern material science, computer modelling, finite element analysis, and general math and physics. I hope future generations will be as admiring of the programming skills we’ve been displaying in building complex operating systems, web servers, and the internet infrastructure. And, frankly, they should, because we’ve done all this based on very flimsy theoretical foundations. We have to fix those foundations if we want to move forward.

      Ad hoc measures preventing the Beauvais cathedral from collapsing

      Next: Category: The Essence of Composition.

      Follow @BartoszMilewski
  5. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 22:35:44 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • McMemeā„¢ Auto Delivery Systemā„¢

    @McMemeBot it me

    In conversation Monday, 09-Oct-2017 22:35:44 EDT from socially.constructed.space permalink
  6. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 19:51:13 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • Efi (nap pet) šŸ±šŸ’¤

    @Efi praise the sun \[T]/

    In conversation Monday, 09-Oct-2017 19:51:13 EDT from socially.constructed.space permalink
  7. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:57:36 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • snackolantern šŸŽƒ

    @er1n nice bug :3

    In conversation Monday, 09-Oct-2017 00:57:36 EDT from socially.constructed.space permalink
  8. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:44:28 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ

    i'm sorry, i can't look at šŸ‘¼ the same way ever again

    In conversation Monday, 09-Oct-2017 00:44:28 EDT from socially.constructed.space permalink
  9. Headpats Bot (headpatsbot@mastodon.social)'s status on Monday, 09-Oct-2017 00:34:38 EDT Headpats Bot Headpats Bot

    http://danbooru.donmai.us/posts/2553791
    source: https://twitter.com/amatuyu08/status/678237604198801408

    In conversation Monday, 09-Oct-2017 00:34:38 EDT from mastodon.social permalink Repeated by kitredgrave
  10. Solipsistic Abby (uberactivist@cybre.space)'s status on Monday, 09-Oct-2017 00:30:11 EDT Solipsistic Abby Solipsistic Abby

    What we really need is a text editor in fucking electron

    Oh wait fuck

    In conversation Monday, 09-Oct-2017 00:30:11 EDT from cybre.space permalink Repeated by kitredgrave
  11. r҉ustic cyĶ beĢørpu̵nkšŸ¤ šŸ¤– (cypnk@mastodon.social)'s status on Saturday, 07-Oct-2017 17:33:27 EDT r҉ustic cy͠be̸rpu̵nk🤠🤖 r҉ustic cyĶ beĢørpu̵nkšŸ¤ šŸ¤–

    And that's how most of the IT world works

    In conversation Saturday, 07-Oct-2017 17:33:27 EDT from mastodon.social permalink Repeated by kitredgrave
  12. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:22:41 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • james is golden gate adjacent

    @Triplefox honestly that'd be preferable to the nothing i'm already doing

    In conversation Monday, 09-Oct-2017 00:22:41 EDT from socially.constructed.space permalink
  13. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:14:56 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • james is golden gate adjacent

    @Triplefox cool, i'll fit in perfectly then

    In conversation Monday, 09-Oct-2017 00:14:56 EDT from socially.constructed.space permalink
  14. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:12:30 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • james is golden gate adjacent

    oh hey i'll know @Triplefox at least if i end up in sf, so i can go bug him once and then probably never again

    In conversation Monday, 09-Oct-2017 00:12:30 EDT from socially.constructed.space permalink
  15. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Monday, 09-Oct-2017 00:10:11 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • beatrix bitrot

    @bea idk, it's pretty hecking hard when you have not much in common with most people you'd find in the physical vicinity

    In conversation Monday, 09-Oct-2017 00:10:11 EDT from socially.constructed.space permalink
  16. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Sunday, 08-Oct-2017 23:49:27 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ

    can't help but think that no matter where i may go and live, i probably won't know anyone there

    In conversation Sunday, 08-Oct-2017 23:49:27 EDT from socially.constructed.space permalink
  17. McMemeā„¢ Auto Delivery Systemā„¢ (mcmemebot@botsin.space)'s status on Sunday, 08-Oct-2017 23:33:20 EDT McMeme™ Auto Delivery System™ McMemeā„¢ Auto Delivery Systemā„¢

    Menu: https://i.imgur.com/EVFd41X.png
    To order: !order '1-4' 'folder from menu'

    eg. !order 1 Animal Crossing
    Please allow a few minutes for a response.

    In conversation Sunday, 08-Oct-2017 23:33:20 EDT from botsin.space permalink Repeated by kitredgrave
  18. Lord Guysbert de Fieri (inspectorcaracal@tootplanet.space)'s status on Sunday, 08-Oct-2017 02:08:13 EDT Lord Guysbert de Fieri Lord Guysbert de Fieri

    friendly reminder that we have sent actual real space ships to an actual real planet and landed robots on that planet and drive those robots around taking pictures of ANOTHER PLANET

    pictures you can see! on the internet!!!

    In conversation Sunday, 08-Oct-2017 02:08:13 EDT from tootplanet.space permalink Repeated by kitredgrave
  19. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Sunday, 08-Oct-2017 22:51:44 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • Edgelord von Hresvelg

    @animeirl but it would actually be available. but yeah, the value is entirely in the meme and nobody would really care if the tv box didn't tell them to care

    In conversation Sunday, 08-Oct-2017 22:51:44 EDT from socially.constructed.space permalink
  20. Oracle(tm) e-Business Social šŸŽƒ (kitredgrave@socially.constructed.space)'s status on Sunday, 08-Oct-2017 22:50:41 EDT Oracle(tm) e-Business Social 🎃 Oracle(tm) e-Business Social šŸŽƒ
    • Shel@HomešŸ”

    @shel :( failed attempt

    In conversation Sunday, 08-Oct-2017 22:50:41 EDT from socially.constructed.space permalink
  • After
  • Before
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

Jonkman Microblog is a social network, courtesy of SOBAC Microcomputer Services. It runs on GNU social, version 1.2.0-beta5, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All Jonkman Microblog content and data are available under the Creative Commons Attribution 3.0 license.

Switch to desktop site layout.