Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
jeremiep
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
20 ms
·
151.
▲
by
jeremiep
10y ago
That is a good question. I feel most companies do it out of habit (or because everyone else is doing it) and few have stopped to ask themselves whether the literature in the contract makes sense or not. That was the case at the last company
152.
▲
by
jeremiep
10y ago
You could change jobs. An employer tracking your activities to the minute sounds like a cancerous work place to begin with. Bad employers are also a thing, and is much more frequent than most people realize. They usually drown you in tools
153.
▲
by
jeremiep
10y ago
I recently switched jobs and now work 35h/week instead of 40. I get a lot more done in those 35 hours now than I did previously in 40. The worst productivity I ever had was in frantic overtime rushes at the end of projects. There'
154.
▲
by
jeremiep
10y ago
Same here. They rarely if ever enforce it unless you directly compete with your employer.
155.
▲
by
jeremiep
10y ago
Would people who downvote care to explain WHY they're downvoting? Downvoting is a terrible way to disagree with a comment.
156.
▲
by
jeremiep
10y ago
It depends on the context. Resuming a request handler after the client timed out is no good. Even in CL in those cases you're fixing at the REPL and having the client redo the request. Or you're developing your function in a sandb
157.
▲
by
jeremiep
10y ago
Thanks for pointing this out! I agree about being very careful in choosing to use such libraries! One concern I have is how well they integrate with the native exception system of the VM and what stopping on an error waiting for programmer
158.
▲
by
jeremiep
10y ago
> If you want to reason about all possible values, then you are de-facto reasoning about their types. True, but a variable can only ever have one value at any given time; knowing a variable is an int is good, knowing a variable is the sa
159.
▲
by
jeremiep
10y ago
Ah yes, Clojure has no first-class support for aspects. Its easy enough to monkey patch definitions for the rare case when its needed. Most of the time however I try to avoid aspects as they introduce hidden behaviour in existing functions,
160.
▲
by
jeremiep
10y ago
Which is fixed interactively at the same REPL. You're just restarting a computation instead of resuming it. Rather than recompiling/rebooting the entire program and losing its state in the process. However, this style of developme
161.
▲
by
jeremiep
10y ago
Microsoft didn't invent C++, but they started with C which wasn't niche anymore at the time. So you do have a point here. However, you don't see big companies emerging that often anymore nowadays, so that could be a factor as
162.
▲
by
jeremiep
10y ago
That's because defn binds f to the _value_ of the function, while (f) binds to the _variable_. > (defn f [] (f)) #'sandbox9672/f > (def g f) #'sandbox9672/g > (def f 42) #'sandbox9672
163.
▲
by
jeremiep
10y ago
That's ignoring the REPL :) You rarely reboot a program under development in Clojure - you rather connect your editor to its network REPL and live code everything from there. This makes not having a condition system a minor inconvenien
164.
▲
by
jeremiep
10y ago
Didn't know about ABCL :) You have defprotocol to dispatch based on types in clojure. There's deftype to dynamically create classes and Java has reflection to begin with. You can call .getClass at runtime (which is what the type f
165.
▲
by
jeremiep
10y ago
Not overnight, and companies aren't built starting at 15k employees. If you're already at 15k employees then pilot projects are the way to go; gradually incorporate the new tech in the company using low-risk projects. Their post-m
166.
▲
by
jeremiep
10y ago
You can feed those types from clojure.spec now :)
167.
▲
by
jeremiep
10y ago
Good point! One worry I have about automatic TCO where recur/loop currently is used is with Lisp's dynamic nature. What happens to everyone who has a reference to the fn when you redefine its def? You're basically switching (
168.
▲
by
jeremiep
10y ago
That wouldn't be possible on the JVM. CL's condition system is unique to CL AFAIK. Even Emacs' cl module doesn't have this condition system. You really need support from the ground up to have it. Clojure is a hosted lang
169.
▲
by
jeremiep
10y ago
I think he meant it in the context of Clojure, which has immutable values. I don't feel static typing makes it easier to reason about, at all. Reasoning about values and their transformations is more important to me than reasoning abou
170.
▲
by
jeremiep
10y ago
That works for tail recursive functions, but not tail calls. TCO works for all tail calls, not just the recursive ones, so that jump would be to another function's body. The current stack frame may not have enough space for the new fun
171.
▲
by
jeremiep
10y ago
Ah my bad! :) These look very much like Clojure's protocols and multi-methods.
172.
▲
by
jeremiep
10y ago
Clojure has quickcheck as well: https://github.com/clojure/test.check
173.
▲
by
jeremiep
10y ago
This essay promotes the exact opposite: http://paulgraham.com/avg.html So far I've only ever seen terrible CTOs and directors rely on TIOBE to the point I can't take it seriously whatsoever. Choosing a language ba
174.
▲
by
jeremiep
10y ago
Maybe not always, but its important enough to consider. You often have much more information at runtime than at compile time. Sure I can run the compiler and scan its errors but I feel its much more productive to poke around the program as
175.
▲
by
jeremiep
10y ago
Generics aren't dynamically dispatched. Java has type erasure and C# emits variants for every instance.
176.
▲
by
jeremiep
10y ago
Its ironic because foo() and (foo) have the same number of characters; but the later is actually data you can manipulate directly. Reminds me of the blub paradox in beating the averages[1]. [1]: http://paulgraham.com/avg.htm
177.
▲
by
jeremiep
10y ago
That isn't composition to me but sequencing. Function composition yields a function, not the result of applying the functions. Either you have an object with all of garnish(), strain() and whatnot on it, or each method returns the obje
178.
▲
by
jeremiep
10y ago
The epochal time model of Clojure was an enlightenment moment for me when I was learning Clojure. I now sorely miss it when I have to work in any other language :)
179.
▲
by
jeremiep
10y ago
Theres the new clojure.spec[1] in 1.9 and core.typed[2] adds an optional type system as well. [1]: http://clojure.org/about/spec [1]: https://github.com/clojure/core.typed The REPL-driven developm
180.
▲
by
jeremiep
10y ago
The core just uses whatever the VM under it has for error handling. Clojure is a hosted language and one of the best decisions it made was not to hide the VM its sitting on (either the JVM, CLR or JS - all have slightly different exception
More ›