This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-03-01
Channels
- # bangalore-clj (1)
- # beginners (16)
- # bigdata (1)
- # boot (16)
- # cljs-dev (79)
- # cljsjs (37)
- # cljsrn (62)
- # clojars (1)
- # clojure (260)
- # clojure-austin (3)
- # clojure-dev (3)
- # clojure-dusseldorf (3)
- # clojure-italy (1)
- # clojure-russia (32)
- # clojure-serbia (2)
- # clojure-spec (8)
- # clojure-uk (146)
- # clojure-ukraine (16)
- # clojurescript (66)
- # cursive (27)
- # datomic (57)
- # dirac (124)
- # emacs (10)
- # hoplon (12)
- # juxt (6)
- # keechma (6)
- # lein-figwheel (18)
- # leiningen (6)
- # lumo (51)
- # off-topic (1)
- # om (66)
- # onyx (41)
- # perun (1)
- # play-clj (1)
- # protorepl (9)
- # re-frame (20)
- # reagent (11)
- # ring (4)
- # ring-swagger (10)
- # rum (22)
- # specter (8)
- # sql (2)
- # test-check (5)
- # untangled (27)
- # yada (29)
If I say good morning, every morning, am I booting useful comments out of Slack history and into /dev/null?
Bore da, Dydd Gŵyl Dewi Hapus!
@peterwestmacott but wishing everyone a good morning is a useful comment 🙂
dominicm: Is that like when a tree falls in the forest and no one is around to see it fall, does it make a noise?
Also, I'm pretty sure you can't view old history, unless you pay, at which point the history reappears.
If they didn't disappear, then they wouldn't be history as they'd still be present
but by definition they're history as soon as you've typed them
Heresy! That's like saying code is legacy code the moment you've typed it 😉
maaning > /dev/null
@tcoupland re "good morning is a useful comment", that reminds me of the Dr Seuss Happy Birthday book: >"If we didn’t have birthdays, you wouldn’t be you. If you’d never been born, well then what would you do? If you’d never been born, well then what would you be? You might be a fish! Or a toad in a tree! You might be a doorknob! Or three baked potatoes! You might be a bag full of hard green tomatoes. >Or worse than all that...Why, you might be a WASN’T! A Wasn’t has no fun at all. No, he doesn’t. A Wasn’t just isn’t. He just isn’t present. But you... You ARE YOU! And, now isn’t that pleasant! >Today you are you! That is truer than true! There is no one alive who is you-er than you! Shout loud, “I am lucky to be what I am! Thank goodness I’m not just a clam or a ham Or a dusty old jar of sour gooseberry jam! I am what I am! That’s a great thing to be! If I say so myself, HAPPY BIRTHDAY TO ME!
Is the 10,000 across all channels? Meaning history wouldn't be visible for that long anyway.
I believe so
P.S. Morning Jade
yes, 10k across all channels @jasonbell ... you can personally save some messages by starring them and then they won't disappear, which is kinda useful
:mind_blown:
@yogidevbear but it is....and legacy is not a 'dirty' word. In the real world it means leaving something (usually of value) to future generations. This is actually a theme of some blogs I'm planning to write. Every time you write a line of code you're making a design decision and imposing some paradigm and/or abstraction on a future developer...maybe you... and there's a cost to that.
I thought agile meant I should just write stuff & then if it doesn't work for some future developer they write more code in their sprint until some PM, sorry, 'Scrum Master' agrees to allow someone to refactor it. Then it starts again.
I like that definition: "In the real world it means leaving something (usually of value) to future generations." :thumbsup:
@yogidevbear <<P.S. Morning Jade>> Let's not encourage these kinds of thing 🙂
hahaha ok 🙂
has anyone used http://lambda.cd yet btw? I forget what the answer was after it was mentioned the other day
I thought it looked really promising
Saw it before I really started getting into Clojure and was thinking of experimenting with it for our code deploys at work (non CLJ)
@glenjamin I agree. The trick is making the right decisions about abstractions to apply and when/where to apply them to make it easier to turn off or delete in the future.
nope, i was looking at it a short while ago, but discovered i could do everything i wanted (CI/CD with multiple independent system components running on a cloud service) with docker compositions on codefresh or docker-cloud
@glenjamin - I wanted to use it, but I've not had the chance / work buy-in... May well change that VERY soon; if I get it going I will let you know.
@jasonbell well you know these memes take on a life of there own!
@agile_geek when you're in the room, yes.
The irony is that I originally typed "Jase" thinking I was using the meme version, so guess it's started to stick
@glenjamin unhelpfully my answer was, not used http://Lambda.cd in the wild yet, but looked at it briefly. In my experience the major blocker to adoption in most clients is that there's a separate 'devops' team who don't know Clojure.
BTW a separate devops team is just ops.. not devops
@jasonbell but you make it soooo easy!
I thought having a separate DevOps team was “Oops!"
i disagree @agile_geek
because the knowledge is spread apart and they just end up doing niggly little things instead of anything strategic
and having a small central team support platform and tooling, and provide training and expertise to dev teams works well
@glenjamin I don't disagree with your statements above. I just meant that in my opinion it's still a separate 'ops' team using different tools that include code. I wasn't implying that 'ops' works best when embedded in dev teams, simply that a separate team should just be called 'Ops'. Although I think you have actually come up with the best reason for calling them 'DevOps' that I've seen > devops = ops with a focus on business outcomes, not uptime
Yep it can do
Hmmm, WebOps is an interesting term...I always found definitions of it a bit restrictive.
Is there anything wrong with aligning the technical "Operations" team with the business "Operations" team? In some orgs there may be large overlap with tech "Operations" supporting business "Operations"?
I thought "DevOps" was the culture / practice of Developers also doing Ops work and essentially being responsible for the deployment / shipping of the code that they develop..? Am I mistaken?
that was my understanding too
an integration of development and operations, by having the same people do both
none of this “and then we throw it over the wall to the Ops team to try and keep it running” business
That was the definition I was applying but @glenjamin has an interesting take on what works, regardless of what we call it.
I think that’s part of it too, but in larger orgs / estates that can be difficult - a very wide set of skills would be required. So to me alignment in outcomes is more important than sharing individuals
I like the sound of that too @glenjamin
alignment of outcomes is super important
let's face it dogma is less useful than the ability to do what works in any given situation anyway
putting the devs on the On-Call rota is one way to achieve this
I used to be on-call as a COBOL programmer but I was never Ops....they were the people who mounted tapes and disks!
Seriously tho, supporting your own code in a live environment is a great learning experience and is how it used to be.
@agile_geek - Not the "same", but my first two years as a webdev I had the same experience as I was working for the little company that me and 3 mates ran and I did a LOT (by which I mean all) of the sysadmin work.
I learned a LOT about FreeBSD, "rolling your own" and why having scripts to do things is broadly a good thing, but can be a very bad thing(tm) if you also don't test things... 😉
I've supported my own code in 'start ups' in modern times too 😉
I need a Dinosaur emoji for moments like this...I remember submitting jobs on punchcards...
Mind it was when I was in Uni on very old equipment and at the knee of my Father when he was in work on a Saturday when I were a young 'un
Right, I am heading to a bar with colleagues - my last day at work in PH today - on Saturday we are off on vacation and by mid-March we'll be back in Blighty!
Punchcards....Immutable data!
I knew you would say that!
Usually ended in disaster tho
just like all mutation
My favourite trick was punching rude words on papertape then making an infinite loop....
using sellotape!
And running it thru punchtape reader on school teletype.
you can patch up existing holes to remove them as well
Sellotape to the rescue!
Proper hardcore bug fixing
Although you also had to watch out for undesirable side effects...paper cuts..breathing in the punched 'holes' when emptying the hole collector on the punch machine..
I have a question about parsing, and this channel usually has interesting views on this stuff. Regex scares me, if I see a regex for urls or emails, I consider it wrong, without thinking. I've learned not to trust regex for parsing, ever. So, what are my alternatives for parsing everything, when do I pick each?
@dominicm apart from being an arcane black art, any reason for 'fear of regex'?
@agile_geek I don't think I've ever seen one that parses anything completely! http://stackoverflow.com/a/1732454 this also comes to mind.
Every time I'm told that a + isn't allowed in my email by a site I get annoyed. They're using a dumb regex again :face_with_rolling_eyes:
Not used it but I remember glancing at this ages ago https://github.com/Engelberg/instaparse
How's your BNF notation?!
While we're talking about parsing. I have to parse some XML (I know, yeuch, right). I know about clojure.xml
and https://github.com/clojure/data.xml . I think hte main difference is laziness in data.xml
but anyone got any better suggestions?
@agile_geek BNF is really good, for truly contextless grammars. I've found that a lot of grammars are not (😱)
https://github.com/lambdaisland/uri/blob/master/src/lambdaisland/uri.cljc this is what got me thinking, specifically how they do uri parsing via regex it seems
I think this project is OK, and it passes a good list of tests & is based on studying the RFC. But is there a "correct" way to parse a URI, I am left wondering.
the implementation of java.net.URI is very simple. It breaks a URI into strings e.g. scheme, authority, path, query etc. but path (for example) is opaque
path and query parts are painfully underspecified, unfortunately
basically they're not specified
they are - e.g. no /
allowed in the qs
@agile_geek but how does it find the delimiters of those things?
@dominicm lots of charAt
and substring
code basically
@agile_geek that sounds… bad.
It's ugly... but it's efficient
and remember it is applying a standard for URI's so it would be stable
It doesn't really do anything to help break down the components further though i.e. path is just a string
@dominicm that can happen but it just throws an exception
@agile_geek are there (m)any known instances of j.n.u not parsing a valid uri?
Only in bad code really. Obviously if you're server side the URI must have got you there and therefore will be valid. If you're constructing a URI you would presumably use the URI class so it must conform to even instantiate.
Basically you'll catch it in test and compile
@agile_geek well, the browser will allow me to send a lot more URIs than j.n.u will necessarily accept
like?
It would have to resolve to the http servlet on the server so it can only be a valid URI.
Of course you could input any string as data in a query string or request body and try and coerce that to a URI
You'd read the string representing the URI and try and instantiate a java.net.URI using the constructor that takes the string and it will throw an exception if it's not a valid URI
@agile_geek sorry, I think I've not expressed my point very well 😆
If it is a valid URI, but has a 1% usage character in, that j.n.u missed or was hard to implement, or something to do with not following proper escaping rules. It doesn't seem like there are any cases of that in j.n.u (that I know of! there may be, part of my question)
That is, the URI is spec compliant, but j.n.u cannot parse it for whatever reason. There doesn't seem to be many of those.
Probably cos the source for URI's is usually via an http/ftp/etc. request or code that captures the exception if it occurred
j.n.u has been tested to death in production around the world so I think they got the bugs out of all the escaping rules it applies so it's pretty solid. If you do give it something with invalid escaping rules etc. it would throw exception.
Interjecting something unrelated here, but thought this was interesting: https://www.oreilly.com/ideas/2016-software-development-salary-survey-report Some mentions of Clojure further down the survey results
I think I have a hard copy of that from OSCON 2016
the problems are when you get overly specific regexes, or exactly spec-compliant ones
I'm pretty sure I've seen one that goes onto the mail server and does an MX against it
I had completely forgotten I’d written those two functions.
Maybe I’ll factor them out into an email predicates library.
i’ve heard second-hand that one of the best email validations approaches you can do is to warn about misspellings of common email providers
@weavejester I've been thinking about a library of "really useful form predicates" independent of valip
Anyone know how the ClojureX Bytes events differ from the dojos in terms of structure, etc? The Integrant talk next week looks interesting
Is it just talks/presentations?