Fork me on GitHub
#clojure-europe
<
2021-12-13
>
dharrigan07:12:06

Good Morning!

reefersleep07:12:23

Good morning 🥱 👶

1
thomas08:12:14

Good morning!!!

otfrom09:12:43

dark out there

javahippie10:12:47

Good morning!

javahippie10:12:06

I believe some people here do app development, right? All of our devs use iPhones, so I need to order some Android Devices as development-devices only. I have no clue about Android devices, which vendor provides them with updates for some time? Price is not the main aspect, but don’t need to be 1200€ each…

thomas11:12:19

I have a Samsung Galaxy S10 and there are regularly updates from Samsung. I'll ask my kids if their lower grade Samsung get updates as well. HTC only did 2 or 3 updates in the first few years and after the 3rd it became really slow on filled up all the storage (much smaller devices, as my last HTC was from 2014).

thomas11:12:08

and you can always start with the emulator. that is where I do 99% of all my work.

mccraigmccraig11:12:02

a google pixel is worth getting because you will always be bang up-to-date with android version... also they don't come pre-installed with all the vendor junk - i found i prefer the pixel to the iphone i had before it, whereas i hated the samsung (and didn't have enough android nous at that point to get rid of the samsung junk)

💯 2
mccraigmccraig11:12:07

that said, at least one person on your team should use a samsung, just because of their market share

javahippie11:12:49

Oh, different devices is a very good hint, did not think about that, thanks! Also will look into the Pixels ✌️

javahippie11:12:13

And we already started on the emulator, but before we go live with everything, testing it on real hardware would be nice

mccraigmccraig11:12:47

we have had (a very few, but > 0) bugs which only showed on hardware... sometimes only on specific hardware

thomas12:12:40

I had that as well. but only iOS in my case.

mccraigmccraig12:12:21

+1 - i've used browserstack's device farm to investigate device-specific bugs on a couple of occasions

mccraigmccraig12:12:17

also, imho, it's worth having some of your team using android as their principal device - android UX conventions are a bit different from iOS conventions, and if you are to avoid your app's UX being jarring then you need familiarity with the different platform idioms

mccraigmccraig12:12:07

e.g. omnipresent back-button on android has no equivalent on iOS

javahippie13:12:16

Also good points, thanks 🙂 Currently looking into automated testing on CircleCI. It’s amazing that everything can be done in Clojure, but the the learning curve with that mobile stuff… 🤯

mccraigmccraig13:12:36

we use circleci - we managed to get automated testing followed by automated deployment to docker, S3, appstore-connect and google-play all running on circleci (using fastlane and the circleci macos executor for the appstore-connect deploy, which was the trickiest). quite a lot of slow, fiddly and painstaking work - but well worth the effort

❤️ 1
genRaiy12:12:22

gond mooring

genRaiy12:12:47

also slang for when you put your gondola away for the night

reefersleep10:12:56

example: “Where’s Phil?” “He’s gond mooring.” “Ah, but I wanted to go to the chippy!”

😂 1
genRaiy12:12:23

TIL

(defn fn-with-attr-map
  "Is a fine function"
  {:some-meta-here true}
  ([a b]
   (+ a b))
  ([a b c]
   (+ a b c))
  {:some-extra-meta true})
=> #user/fn-with-attr-map

genRaiy12:12:48

I've never seen the extra map in the wild - any users out there?

genRaiy12:12:19

(meta #'fn-with-attr-map)
=>
{:some-meta-here true,
 :ns #object[clojure.lang.Namespace 0x4d113449 "user"],
 :name fn-with-attr-map,
 :file "/tmp/form-init4726367283671320145.clj",
 :column 1,
 :line 1,
 :arglists ([a b] [a b c]),
 :some-extra-meta true,
 :doc "Is a fine function"}
the meta is merged so some care is needed to use different keys in each map

👀 1
genRaiy12:12:51

(defn fn-with-attr-map
  "Is a fine function"
  {:some-meta-here true}
  ([a b]
   (+ a b))
  ([a b c]
   (+ a b c))
  {:some-meta-here false})

genRaiy12:12:13

(meta #'fn-with-attr-map)
=>
{:arglists ([a b] [a b c]),
 :doc "Is a fine function",
 :some-meta-here false,
 :line 1,
 :column 1,
 :file "/tmp/form-init4726367283671320145.clj",
 :name fn-with-attr-map,
 :ns #object[clojure.lang.Namespace 0x4d113449 "user"]}

pez12:12:12

What’s the last attribute map about to begin with?

genRaiy12:12:54

:man-shrugging::skin-tone-3:

genRaiy12:12:08

I just noticed it when looking at the spec

genRaiy12:12:59

TIL but didn't learn why 🙂 hence the question

genRaiy12:12:27

I'll ask in the main clojure channel

pez12:12:34

I’ve seen it in the spec now and then, but have never investigated it further. 😃

genRaiy12:12:37

I'm trying to use the spec as a cheap way to ensure that the forms are correct so it should be permitted but yeah, it's an oddity

lread12:12:21

Warning, pre-coffee, but... So technically a docstring can be specified in 4 spots for a single fn (defn ^{:doc "One"} x "Two" {:doc "Three"} ([]) ([x] x) {:doc "Four"}), as you’ve noticed, meta is merged in reading order left to right.

1
🙏 1
borkdude12:12:54

also, docstrings can be defined using a dynamic expression, to make matters even more interesting :) and: alter-meta! can be used to add it after the fact

😈 1
reefersleep10:12:19

And to think that I used to find Ruby confusing.

agigao12:12:08

Afternoon 🙃