Fork me on GitHub
#off-topic
<
2018-05-01
>
qqq07:05:17

Please correct me if I'm wrong: iPads actually support OpenGL ES3 -- but we can't access it via web browser because web browsers onlysupport WebGL1.

jgh08:05:54

iPad Air and higher supports OpenGL ES 3 I believe.

jgh08:05:04

so newer than ~2014 will have ES 3 support

jgh08:05:18

but yeah looks like Safari for iOS doesn’t support WebGL 2

jgh08:05:01

although looking at the iOS 11 device compatibility chart it looks like the only devices supported by iOS 11 are the ones that support OpenGL ES 3, so I wonder why they havent bothered with updating WebGL yet

qqq08:05:09

This is bothering me to no end as 1. I really want webgl2 instead of webgl1 and 2. I really want to do CLJS dev + webapp instead of native.

cfleming09:05:55

@qqq What about http://impactjs.com/ejecta? @dnolen has given at least one talk about using it with CLJS

borkdude17:05:40

Is there a thread or article online where I can read why Light Table is dead?

sbauer17:05:43

the quick summary is: the project's internals are complicated, only a couple people are familiar with the internals, and none of them have much time for it

sbauer17:05:43

im not aware of an article per se, but i think granger made some forum posts at one point outlining the problem with BOT architecture

tbaldridge17:05:58

@borkdude the editor was never in a fantastic shape. Each release seemed to rewrite whole sections of the app. So by the time Christ left to work on Aurora (eventually Eve) there just wasn't enough in the app to keep it going, imo.

tbaldridge18:05:42

then other editors came and crushed what little marketshare it had. Protorepl and Atom took over the instarepl stuff. Cursive took the professional users, and Nightcode took the new users.

tbaldridge18:05:56

The original had great ideas, but part of the reasons it kept getting rewritten was that the supporting framework for such an editor was being written form scratch. For example, they wrote their own async IO system, a few months before core.async came out. They built an editor on Electron, just a bit before Atom came out.

sbauer18:05:16

sounds about right... as for future updates, i've only got a couple hours a week i can devote to light table, so there is little progress being made

rnagpal18:05:55

What is the difference in creating higher order functions by using partial functions in Clojure/Scala vs Calling functions in Java. Just syntactic sugar ?

tbaldridge18:05:56

@rnagpal Java doesn't have functions, so it's a bit hard to compare. Do you mean methods in Java?

rnagpal18:05:12

yeah methods in java

tbaldridge18:05:14

So in Java (and C++) methods are more or less stateless. You can see this clearly in Python:

class Foo(object):
  def do_something(this, arg1):
       return arg1 + 1
Methods are function pointers that take an additional argument of "this" or "self"

tbaldridge18:05:41

Higher order functions can contain enclosed state:

tbaldridge18:05:04

(let [x 42]
  (fn [arg]
    (+ arg x)))

tbaldridge18:05:03

In order to accomplish this, languages like Clojure and Scala normally define a interface (clojure.lang.IFn) that has a method called invoke. So you could also rewrite the above code this way:

rnagpal18:05:12

pub.. s.. v.. doSomething(int x){
 return 42+ x;
}

rnagpal18:05:56

so methods can have an enclosed state too

tbaldridge18:05:23

Where's the enclosed state in yoru example?

tbaldridge18:05:36

you inlined the 42 as a constant

tbaldridge18:05:14

(fn adder [x} (fn [y] (+ x y))

tbaldridge18:05:31

Is the same as this in Python (Java is a bit too verbose here:

rnagpal18:05:09

I do see the use of passing the functions and feel it is huge

tbaldridge18:05:24

class Inner(object):
  def __init__(self, x)
    self._x = x
  def __call__(self, y)
    return x + y

class Adder(object):
  def __call__(self, x)
    return Inner(x)

tbaldridge18:05:38

Adder(1)(2) => 3

rnagpal18:05:00

but in the cases we dont need to pass functions, does it really make a difference if we combine partial functions vs calling them like in java

tbaldridge18:05:43

No, we wouldn't, and in Clojure there's a thing called static linking that removes the indirection of calling through IFn when you don't need it

tbaldridge18:05:51

You can do a lot of this in C as well with function pointers. But when you do need to bundle state with a function pointer, that's when you need something like IFn, or Callable (in Java)

rnagpal18:05:03

Is Callable used(In scala and clojure) more for adding ability to create partial functions or more for handling futures etc ?

rnagpal18:05:10

Also if I anted to read how clojure/scala which run over JVM enables us to pass functions. Can you please point me to couple of articles etc

tbaldridge18:05:14

Every function in Clojure implements Java's callable

tbaldridge18:05:34

and Runnable

rnagpal18:05:50

its because it allows functions to be executed in any thread ? allowing the programmer to not care about concurrency

tbaldridge18:05:16

No, Callable is not related to concurrency.

rnagpal18:05:18

and optimizing it for him by using pools

tbaldridge18:05:33

I'm not aware of any such resource. Pretty much any functional language on a OOP platform impements functions by defining a Invokable interface clojure.lang.IFn, and then implementing it so that closed-over values become private fields in the object, and the body of the function becomes a method on that anonymous class.

rnagpal18:05:41

Thanks a lot for sharing the gist @tbaldridge

Pretty much any functional language on a OOP platform impements functions by defining a Invokable interface `clojure.lang.IFn`, and then implementing it so that closed-over values become private fields in the object, and the body of the function becomes a method on that anonymous class

WhoNeedszZz19:05:23

Howdy, folks

4
danielglauser20:05:16

If any other Clojure folks are at the CollisionConf in New Orleans I’d love to meet up.

WhoNeedszZz20:05:21

Well shucks, I'm from New Orleans, but not currently living there. If I knew about it ahead of time I could have made the drive.

danielglauser20:05:21

Sorry for the late ping @whoneedszzz. If it’s helpful at all I’ll be here until Friday morning.

WhoNeedszZz20:05:52

Is the conference running all week?

dpsutton20:05:17

are you still in louisiana? there's a few of us in lafayette

WhoNeedszZz20:05:46

I'm in Lafayette

qqq21:05:44

@cfleming: looks interesting; unfortunatelh, http://impactjs.com/ejecta/supported-apis-methods looks like WebGL1 only

dpsutton22:05:56

yeah a coworker of mine offered me free tickets.