Fork me on GitHub
#off-topic
<
2017-01-17
>
fellshard02:01:07

Half-tempted to make a spin on this post that just shows all the code 'formatted' to beautiful CLJS

ejelome02:01:40

anyone can recomnmend a screen recorder in Arch Linux? I keep on getting a black screen with a mouse cursor, also tried tweaking with gdm but to no avail šŸ˜ž

neverfox03:01:08

@nickbauman Thatā€™s my point: it's winning because of the ecosystem (as far as JVM startup time goes, Iā€™m sure thatā€™s annoying to a lot of people, but I donā€™t think thatā€™s as much of a factor in initial choice as itā€™s made out to be). But as a language, it leaves a lot to be desired as far as what I want out of language, e.g. it embraces imperative OO vs declarative FP. As far as notebooks are concerned, sure, thatā€™s a pretty cool feature of Python (or R) when it comes to toying around, but ultimately I have to build production (often distributed) systems and Python is not what I want for something like that.

nickbauman03:01:22

The startup time is a serious impediment to developer flow, especially when you choose to program in a dynamic language that has a repl. I love Clojure, but in many situations, I'm much more productive in Python because of its startup time.

nickbauman03:01:10

The notebooks thing is important for teaching and learning but also in research. The folks behind iPython have even developed a distributed computing platform of many Python machines that work together in a grid. It's a big deal in the STEM fields.

nickbauman03:01:21

FP matters mostly because of immutability. But you can achieve benefits of adoption of immutability in languages like Python too.

Drew Verlee03:01:14

@nickbauman What does this refer to? > The folks behind iPython have even developed a distributed computing platform of many Python machines that work together in a grid.

qqq03:01:46

@nickbauman : I agree that the JVM stratup time is slow (often 5-10 seconds for me); but how often do you restart it? A repl often lives hours, if not days for me

qqq03:01:18

in fact, almost all of my restarts are of the form: I need to add a new pacekage, and cider hot inject whatever failed

nickbauman03:01:48

I use it on Google's cloud and the Java SDK can't handle changes to the source without a full rebuild.

qqq03:01:29

yeah, gae deploy is a pain

qqq03:01:55

it's gerenarlly (1) get stuff workkng locally, (2) gae deploy script, (3) wait 30 seconds to deployt, (4) wait another 10 seconds for google to warm start my gae instance

qqq03:01:11

gae workflow in clojure is %&#( b-s

qqq03:01:30

I'm half tempted to rewrite the server portion in Hy for this precise reason

qqq03:01:14

@nickbauman: wait wait wait, jvm clojure supports eval right? I wonder if its possible to (1) locally upload new *.clj files into google datastore, and (2) have the gae jvm just "grab from datastore, eval it"

qqq03:01:26

it would incur additional datastore read requests, but allows faster dev if eval works

nickbauman03:01:32

I don't think that would work?

qqq03:01:19

why not?

qqq03:01:30

99% of th time, I'm not adding a new jar; I'm just updating my *.clj files

qqq03:01:43

for dev time, there's no reason to just have it just hot reload from datastore per request

qqq03:01:52

then for real deploy, I'll aot it to jars

nickbauman03:01:12

You'd need Google to add support for it?

qqq03:01:33

my "clojure code" on gae is (1) read clj from datastore, (2) eval it on the fly

qqq03:01:50

it's my clojure code, running on google's gae, that is (1) pulling from datastore nd (2) calling eval on the fly

qqq03:01:16

I think the only real question is: can you do all this in < 15 secs

qqq03:01:22

or whatever gae's request limitations are

nickbauman03:01:53

OK now I understand.

nickbauman03:01:34

You'd need gae to support eval and I don't think it does.

qqq03:01:37

why do I need gae to support eval? I'm using Clojure's evail

qqq03:01:44

why are we debating this, I should just test it šŸ™‚

qqq03:01:31

@nickbauman : if I got a handler that returned (eval "(+ 40 2)") would that convinced you we could eval, or do oyu have something more complex in mind?

tbaldridge04:01:29

@qqq that will do the trick.

tbaldridge04:01:41

if that works any sort of compilation will work.

nickbauman04:01:48

Yeah that should work

nickbauman04:01:57

The Java on Gae is highly sandboxed. You can't compile while it's running. I'm 99% certain.

nickbauman04:01:17

If you're right that at would be awesome. I'll bet you a pint it doesn't work.

akiroz04:01:16

I've had a really bad time with previous python projects where I work so I wonder if any of you python folks can help me out on a few things.... (since python is probably not going away) - cases, I've seen foobar foo_bar fooBar FooBar and intfoobar all in the same project... are there rules for what cases means what? - UCS2/UCS4, which version do you guys perfer / use? - old python binaries, I need to compile them myself.... I've had builds broken going from 2.7.9 -> 2.7.10 because someone who wrote something deep in my dependency graph decided to use python's internal stuff (pretty sure it was numpy)

akiroz04:01:15

I can't upgrade my deps for bug fixes either because that will just break the entire dependency graph...

akiroz04:01:20

oh yeah, does everyone use virtualenv? I was pretty suprised when assigned my first python project that this is a thing (coming from a JVM / JS background)

akiroz04:01:01

how many people ran sudo pip install -r requirements.txt because of Permission denied? xD

neverfox06:01:32

I just havenā€™t experienced issues with ā€œflowā€ because of the startup time. YMMV. As for immutability being the fundamental differentiator of FP, I have to disagree. Itā€™s a completely different way of structuring and reasoning about data and state. I mean, Iā€™m familiar with how to get immutability going in a lot of different languages that donā€™t do it by default, but thereā€™s still a reason I reach for Clojure or other FP languages when I have a choice.

neverfox06:01:03

And as much of a dumpster fire as NPM may be, itā€™s heaven compared to pip.

akiroz06:01:15

and pip is probably heaven compared to the bash scripts in C/C++ projects

neverfox06:01:44

re: virtualenvs, yeah I always use them with Python

nikki07:01:47

i'm brainstorming an idea for an async object (ala Alan Kay union Erlang?) msg passing paradigm but in clj(s)

nikki07:01:04

anyone want to discuss?

nikki07:01:24

basically idea is locally each obj is an atom with an interpreter that interprets the last msg sent to it as code

nikki07:01:15

and each obj can send code to other objs to run in their local interpreter

nikki07:01:25

the interpreters will obv evolve over time and they are how state is encoded, there is no other local state

nikki07:01:38

it can bootstrap as a clojure interpreter

nikki07:01:56

but then you have some objs that are UI objs that can code the other objs

nikki07:01:03

and eventually each clj interpreter evolves into whatever the user wnats

nikki07:01:13

you can instantiate new ones

nikki07:01:21

what i'm wondering about is whether i want to reify the worldstate and for now just cooperative do them so that i can timetravel in god-mode

nikki07:01:47

also is this on-topic enough to ask in clojure/clojurescript?

ejelome10:01:00

what's the most minimal restful clojure full stack dev set? I'm thinking ... reagent <> what-ajax-lib? <> liberator <> rethinkdb .... and I'm not even sure what http or ajax lib to use, there's also ring but looks like there's too many ring-*

ordnungswidrig10:01:22

ejelome youā€™ll need a routing like bidi or compojure.

ordnungswidrig10:01:36

Not sure if thatā€™s going to be ā€œminimalā€ any longer

ejelome10:01:08

so the router is separate from liberator? aw

ejelome11:01:15

so that's compjure, that's why, thanks @ordnungswidrig, that's an important part of the stack šŸ˜„

sveri12:01:49

@ejelome ajax lib could be cljs-ajax or just write a function with google closure libs which is included anyway as part of clojurescript

ejelome12:01:43

thanks @sveri, will look into that šŸ™‚

ordnungswidrig13:01:11

I had good experience with cljs-ajax, too.

ordnungswidrig13:01:21

And I like bidi more than compojure, but YMMV.

pesterhazy13:01:36

yes bidi is well thought out

pesterhazy13:01:07

just using google closure XHR is a great idea

ordnungswidrig13:01:20

closure XHR is a good idea.

ordnungswidrig13:01:42

@ejelome do you plan to publish your WIP on the ā€œminimal stackā€?

ejelome13:01:30

^ yes, eventually, but since there's numerous parts to assemble, it will take some time

ejelome14:01:21

it's what everyone is already doing, a web service that just processes data from a client via http

tbaldridge15:01:47

@nikki it's on-topic for CLJS I think.

tbaldridge15:01:29

And some (like myself) will most likely have plenty to say šŸ™‚

ejelome20:01:25

:thinking_face: I think it's more reasonable to start with cljs-ajax than cljs-http because of core.async, simply because it's another layer to comprehend in order to better understand the cljs-http library, while cljs-ajax is straight from the closure library where clojurescript already has

ejelome20:01:44

or am I wrong on this?

dominicm20:01:01

I found the core.async aspect incredibly useful the other day. Saved me in a tight situation. It's hard to justify a rewrite to switch libraries due to nuanced differences. So normally it gets patched over with some hacky solution.

ejelome20:01:42

you have a point, although in this case, it's just an attempt to convert a very simple http requests to clojurescript, all for the sake of demo'ing šŸ™‚

leo.ribeiro21:01:44

hey guys, what technology or programming standard/language (such as machine learning, iot, bigdata, functional-programming etc) do you think is gonna provide the best future and salary for programmers (or maybe itā€™s already providing)? what do you think is a good thing to invest?

tbaldridge21:01:57

Functional programming has always had better pay just due to less supply vs demand. That's one of the reasons I decided to get out of C# programming.

7h3kk1d21:01:23

I think we might see a rise in logic/declarative programming

7h3kk1d21:01:14

But in less concrete terms breadth of knowledge old and new is the best approach.

jstaffans21:01:49

I think you can have a good future/salary by just being a good generalist developer, a good communicator, showing skills as a mentor, etc. But going from good to great salary requires specialisation of some sort ā€” say you have published a few papers in a field of machine learning that relates closely to what some company is doing. That company will definitely pay a premium for that.

7h3kk1d21:01:19

I would argue that those things are best when theyā€™re not stylistic trends. For example learning distributed systems is clearly valuable whether it be IOT or other systems.

7h3kk1d21:01:32

Not that IOT is a trend.

ejelome21:01:07

since this is open-ended, I'll just tell my personal opinion: * Technology: I would say VR (Virtual Reality) * Programming Standard: The standard of the language you'll use, e.g. if you use Python, use PEP * Programming Language: Scala

ejelome21:01:12

I think Scala has the highest salary as of the moment in terms of programming language

ejelome22:01:34

I think the main beef of Scala is the Apache Spark, but that's what I usually read though I'm not really interested with either of 'em

leo.ribeiro22:01:57

nice comments guysā€¦ I appreciate a lot

nickbauman22:01:22

In 20 years of experience in software, nobody pays me to do research. They occasionally ask me to help make the work I did for them patentable, but thatā€™s about it.

nickbauman22:01:40

(donā€™t get me started on software patents)

nickbauman22:01:59

Researchers tend to be an academic breed.

nickbauman22:01:39

Great if youā€™re in university or work for Google or something.

naomarik23:01:16

VR is insane, I just bought a vive a few days ago and having room scale VR is the closest thing we have to star trekā€™s holodeck.

leo.ribeiro23:01:53

yeah im enjoying my psvr