This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
- # 100-days-of-code (2)
- # adventofcode (188)
- # aleph (3)
- # announcements (2)
- # beginners (76)
- # boot (3)
- # braveandtrue (49)
- # cider (82)
- # clara (15)
- # clojure (101)
- # clojure-europe (4)
- # clojure-india (3)
- # clojure-italy (26)
- # clojure-kc (1)
- # clojure-nl (4)
- # clojure-norway (1)
- # clojure-russia (5)
- # clojure-uk (33)
- # clojurescript (32)
- # crypto (20)
- # cursive (34)
- # datomic (45)
- # emacs (3)
- # events (1)
- # figwheel (1)
- # figwheel-main (10)
- # fulcro (30)
- # graphql (14)
- # hoplon (12)
- # hyperfiddle (21)
- # jobs (11)
- # kaocha (7)
- # klipse (8)
- # leiningen (10)
- # luminus (3)
- # nrepl (18)
- # off-topic (232)
- # onyx (8)
- # pathom (6)
- # re-frame (30)
- # reagent (3)
- # reitit (6)
- # remote-jobs (3)
- # ring-swagger (4)
- # shadow-cljs (21)
- # spacemacs (5)
- # sql (18)
- # tools-deps (23)
- # yada (2)
You can also ask in #cider. In any case, I was using emacs/cider for clojure but switched to cursive, as I really liked having the refactoring tools. I never was able to get
clj-refactor working a nice way (fast) on my emacs and found intellij with emacs keybinding to be the ideal environment for me. I only miss the fact that the REPL isn't just another "buffer" and I have to use the mouse to switch to it / away from it
@U0AD3JSHL There are actions you can use to switch to the REPL input and output area, you can bind them to any key you want.
I use Cursive quite extensively for my projects mostly due to the fact that I deal with a lot of Java interop and Java navigation is much better on IntelliJ IMO. But Ive recently started using CIDER too and I do quite like the way i can eval things in the buffer and the fact that I moved to boot over leiningen which is unsupported by Cursive at the moment. My take is CIDER works better for just clojure(script) code but for java interops Cursive is better.
oh, oh, sorry for off topic in off topic, but @U7ERLH6JX what do you like about boot vs lein? I've been trying to find some info but haven't really
@U7ERLH6JX When you say “eval things in the buffer” do you mean seeing the results painted over the editor in an overlay?
okay, cool. sounds reasonable. I've used a lot of
reflect to navigate java classes in cider, but it gets a bit messy
is there any support in cursive to write clojure functions to change the behaviour of the editor? feels like low hanging fruit to me 😄
@U0567Q30W yes as an overlay on the side. and aslo stuff like the dynamic nature of the entire editor. The fact that I can change things much easily in emacs. Not a Cursive problem per se, but intellij in genral. That being said I still use Cursive more than CIDER. 😄
@U7ERLH6JX Ok, no problem, I’m always interested in opinions about how Cursive can improve 🙂
@U0AD3JSHL haha yeah. I'm a emacser by default, just trying to broaden my mind a bit. 🙂 also I have colleagues who I'm trying to get into clojure but don't like the steep learning curve of emacs, so I'm thinking that maybe cursive would suit them better
@U0567Q30W Thats awesome! The fact that Cursive got me into serious Clojure in the first place and will be eternally grateful to it!
I'm gonna try it for a bit, do you want feedback on slack or do you prefer it somewhere else, if at all? @U0567Q30W
@UCG86LJFN When it comes to boot vs lein, boot felt much more "controllable" but is more verbose and quite dynamic for static analysis tools like Cursive (correct me if im wrong @U0567Q30W) With boot i was able to get much faster REPLs and more control over the builds and be faster overall in general
I’m actually working on my documentation, so it should be much more up to date and complete in a week or so.
@U7ERLH6JX ah I see. is the startup any better than lein? that's probably what's been bothering me the most 😛
@UCG86LJFN It uses a single JVM process than forking another one for the repl like lein does. But if you want more stability and community support, lein is better
deps.edn will manage your dependencies and build classpaths and start REPLs, but not much more. It has caching to improve startup times.
oh awesome, thanks for all the mad info I'm getting here. 🙂 I've mostly been using arcadia in my clojure career so far, so I'm a bit behind on tooling. but now I've got some clojury things to write at work, so I'm excited about trying the stuff that's available with clojurejvm 😄 cider-mode has been great so far
@UCG86LJFN At World Singles Networks, we switched to Boot (back in late 2015) after using Leiningen for years. I talk about our experience in a series of blog posts http://corfield.org/blog/categories/boot/ and we just completed a switch from Boot to
clj/`deps.edn` (which I am planning to write up as a new series of blog posts "soon").
Bit of a different perspective: I'm a ~10yr emacs user moving to Cursive, I like it a lot. Having never really used an IntelliJ (or any IDE) there was a lot to get used to, but I'm getting what I want: stability and less tendency to procrastinate (ie: messing around with emacs)
@U050T7CJQ yeah I've actually ran into some issues with the stability of emacs (though I think it has a lot to do with the environment in my case), and especially when selling the IDE to other people that can be a dealbreaker 🙂 so it's good to know that it's stable
@UCG86LJFN hard to say, it just feels way too heavy. I come from BBEdit->text mate->vim->emacs though, and spent time in Atom and VS code
Also I do do a non-trivial amount of non-Clojure work and like having a single environment that can handle all my needs. Emacs fits that bill well
I'll second @U053V4R5N on that -- I've tried several versions of IntelliJ but they all just feel "heavy" and "clunky". I like Atom, full-screen, and it can edit all sorts of files, and the REPL integration is great. Lots of well-maintained packages for it too (and fairly easy to customize with CoffeeScript, much as I detest CS!). I started with Emacs in the mid-80's, switched to IDEs in the early 90's, switched to "lightweight text editors" in the 00's, back to Emacs when I picked up Clojure in the 10's, and then to Atom after the 2016 Conj. Some folks complain about Atom's memory usage but I have a 16GB dev machine so 500MB is nothing to complain about. It feels like a modern Emacs to me.
I also tried Eclipse/CCW when I first started with Clojure since I was still using Eclipse for Java/Groovy/Scala stuff but once I stopped needing IDE-assistance for those languages, it felt way too heavy/clunky.
oh intellij is clunky alright .. Anyway, to clear @UCG86LJFN, I don't mean to suggest emacs itself isn't stable, I mean more that packages often move quickly and can have breaking changes. That's good -- but I felt like I was spending a lot of time keeping up and/or just writing a lot of elisp for myself. This can be fun and interesting, but an easy procrastination trap (at one point I was using emacs was my window manager lol)
@seancorfield it's the first time I've heard about using atom + clojure, I need to check that out as well then. I mostly want a nice experience for the people I'm introducing to clojure, and I feel that nice integration with a repl is a must
@U050T7CJQ okay, cool. thanks for the clarification 🙂 I like to think that I'm decent at keeping most of my emacs fiddling at home (and then pushing the changes to my work), but of course a bit slips in
@UCG86LJFN there's also a (very experimental) package for Atom that I'm developing called Chlorine, it uses socket repl and is able to connect to ClojureScript via Lumo or Shadow-CLJS. But is still in the very beginning...
@U3Y18N0UC The docs don't show any key bindings for connecting/disconnecting the REPL and evaluating code...?
Is there a good channel to take this too? Or DM? (if I have questions about Chlorine)
I’d love to follow along with discussions as well; I have no idea what I’m doing. I’ve been working with Clojure on-and-off for
6 years (more on than off over the past 14 months) and I still have yet to adapt REPL integration into my editor. Perhaps #editors ? Or a new #atom-editor channel?
Ok, I just created a channel #chlorine, so we can discuss things specifically to the plug-in 🙂
@seancorfield update: after a bit of testing I got my non-emacs colleague and friend into clojure by using atom + proto-repl 🙂 thanks for the suggestion
I have a tree like structure, where some nodes have a variable length (list of) children, and some nodes have fixed # of children. I want to store this free as a flat table of (id -> node). It's not clear to me what is the cleanest way to enforce the "tree structure" on the "flat table". Is there a standard way for handling this?
Unless you put constraints on the flat table, it can easily be used to represent structures other than trees.
If the flat table is in something like a SQL database, there are ways that some database systems have for creating constraints, but I don't know if they are flexible enough to enforce a tree structure on the data.
I am curious: did someone create a Slack emoji-thingy for 'sheepy' after Rich Hickey's "Maybe Not" talk? Or has it been around before then?
does anybody know if I can translate this code to Clojure?
On.get("/hello").json(() -> U.map("msg", "Hello, world!"));
#clojurescript channel may be a better place to ask (sorry, I don't know the answer)
#clojure channel is probably better. I am not familiar with the more recent Java syntax you are using there. A Java lambda I guess?
#clojure-dev if you want to get the highest concentration of people who know their Java, too
My first thought is that it'd be
(.. On (get "/hello") (json #(.. U (map "msg" "Hello, World!"))))
() -> piece should just be an anonymous function that doesn't take an arg, unless java lambda's work differently.
harrow.main=> (.json (On/get "/hello") "") INFO | 10/Dec/2018 22:14:13:320 | nREPL-worker-9 | org.rapidoid.http.impl.HttpRoutesImpl | GET /hello | setup = main | roles =  | transaction = NONE | mvc = false | cacheTTL = 0 nil
Did anyone start off using Clojure in their first job? Did that affect you getting your second job? It seems like the majority of jobs in the area are looking for .Net devs
my first programming job was a remote job doing clojure. I think it is hard to say how it colored getting my second job
remote is definitely great. but remote + clojure definitely narrows the pool down, and while I did end up getting another remote clojure job, which is great, I did spend about a year job hunting (remote and not remote, clojure and not clojure)
I also have no certifications or degrees of any kind, which I have to imagine colored the process
that year of interviewing left me with a very pessimistic view of how the industry does hiring
Most companies' interview processes absolutely suck. Don't get me started on that 🙂
ultimately, getting jobs is about knowing people, if you go through the interviewing process you've pretty much already lost. and knowing people isn't restricted to a particular tech stack or whatever
Re: degrees and certifications -- I consider most certifications to be absolutely worthless, and once you have about five years of work experience, your degree (or lack thereof) is irrelevant. Unfortunately, most HR departments don't agree with me 😐
That’s the definition of an old boys’ club (I mean this: “if you go through the interviewing process you’ve pretty much already lost” - if you don’t leave a useful opening for unknown quantities, you’ll always get the same stuff, recycled.)
my first clojure job was at sonian, I was there from I think 2011 to maybe 2016? were I worked with a lot of great clojure programmers, the majority of whom are I think now writing go or scala for elastic, some of whom are writing clojure for circleci, and I think one guy is still part of sonian (which got acquired)
@lady3janepl I hear you on that -- and I wish the hiring process was less broken. I'm amazed that most companies still haven't learned how to do it better after all these years.
People always prefer someone else to do the work (whether it is with pre-qualifying/validating the candidate, or pre-training them.)
And, to be honest, resumes/CVs are a mostly terrible way of laying out your experience in any meaningful way so perhaps HR departments can be cut some slack for their inability to tell good candidates from bad?
The other problem is that someone’s CV can suck because they started out in a bad economy, in a bad location, or in bad personal conditions (health, or social, like having caring duties for a dependant.)
Well yeah but you have to make those personal connections somehow first; how are you going to do this if the valuable connections don’t go to public events because their dance cards are full?
"her resume doesn't show it because she worked at this ad agency for 2 years but she can sling some code" blah blah
@hiredman: Your colleagues that went from Clojure to Go/Scala -- did they want to use a static typed language and switched jobs, or did they switch jobs and were forced to use static types ?
hard to say, but in general my guess is mostly the later, but some of them are now very interested in haskell
I've found that as longa s I can keep the "shapes" in mind, working with Clojure is great; but once there are enough types/classes/structs/objects of different "shapes", having static types really helps. It makes the writer's job harder (due to constraints of types), but as a reader, it's much appreciated.
tech very much operates like a club, if you are in companies can be pretty lavish, if you are out getting in is hard
@lady3janepl: Records often breaks my "code reload" flow, so I end up using maps. Maps enforces neither keys nor values.
Is it common for someone on the "outside" to bash their way in just based on merit of github / stackoverflow accounts ?
interviewing basically turns in to a lottery, as far I as I can tell how far I got the interviewing process at a given company was entirely random
i've heard some people are impressed by active github accounts. some people are sensitive to the fact that lots of people don't have time/permission to do open source work. I've heard one person here mention it usually is a negative when they look through the quality of their work
so you know, if you are looking for a job just keep interviewing and eventually your number might come up
I used to always check candidate's GitHub and other tech social accounts but I've learned that there are many good reasons that folks may not have an online tech footprint and it shouldn't be used as a qualifier...
...so when folks link to those things on their resume, I will go look and be prepared to use it as a disqualifier if it's not good work.
Think of it from the hiring perspective for a moment, and having worked with someone before and having a personal recommendation makes a lot of sense. In the USA, corporations expose themselves to all kinds of law suits for firing people, unless there is a general layoff (but even then they are not immune to law suits for wrongful termination). You want to know much more about a person than is really possible to learn through an interview, to know whether they are a good hiring choice.
If person A worked with person B for 3 years and has a good impression of their work, that can make a huge difference if you know and trust person A, when deciding whether to hire B.
like, I have "references available on request" or what the verbiage is, and not once in that entire year did anyone request them
References mean something if they ask for them, and know and trust any of them when asking about you
including when I finally got a job, or when I got an offer that was rescinded at the last minute when a new manager showed up
All my references are unreachable. My managers at Macromedia/Adobe have all moved on to other companies and I have no idea how to contact them.
My manager from the startup since then is mostly unreachable by any useful means.
I haven't relied on it yet for this, but LinkedIn can be one way to keep track of former colleagues, if you both use it.
That was actually a big hold up getting hired where I am today: HR could not reach any of my references!
I usually connect with folks whenever they leave the company I am working for, if I think I might want to contact them again later. That an personal email addresses.
^ I’m amazed references are a thing. I’ve never encountered them before. Is it an EU vs US thing?
I've always had to provide them, both here in the US, and back in the UK. But I was last looking for jobs in the UK over 20 years ago 🙂
I am not saying they are always important in the hire/no-hire decision. But they certainly can be.
No, sure, I was just wondering about regionality. But then I haven’t had a chance to work for a hot tech startup yet (various factors including bad location start apply, meh), so… ¯\(ツ)/¯
I went to work for a startup in 2005, only 10 people at the time. I didn't learn until months later that the CEO had called the CEO of my former startup company from 2000 to ask about me.
Anyone know what's going on with https://news.ycombinator.com/item?id=18651540 ? https://www.levels.fyi/?compare=Google&track=Software%20Engineer shows insane compensation, yet there seems to be constant employee issues there.
@andy.fingerhut: If it's a 10 person startup, you're 10% of the engineering force; seems reasonable they would check all references.
Becoming an individual contributor at a 1000+ employee company is completely different.
Now try to enter a large company as a Director or higher level manager, and I am sure there is plenty of personal checking up there, too.
I haven't been involved in that process myself before, but have heard a few anecdotes.
I can back up the complement of that statement. I got a long term coop offer from intuit and an internship offer from facebook without ever meeting anyone in person
Oh, you mean as in they will check up with anyone they know who has ever worked with you, regardless of who you choose to give as a reference? Quite possibly.
I've been seriously set back before by interviewing an engineer for a role that I ended up working with them closely for about a year, and I regret not interviewing them tougher. I changed how I interview after that experience. If I was hiring for a small company where every hire counts, I would want to find out how their former colleagues viewed their work.
@todo Re: compensation -- the Bay Area is expensive; you can't eat stocks/options so they're basically irrelevant; bonuses are not guaranteed. But, yeah, the Big Tech companies are able to offer total packages that look insane and it is hard for smaller companies to compete.
and you will never know if the reason they passed is because of a reference, or because of a misplaced semi-colon in a coding problem
If someone doesn't want to hire me because of a misplaced semi-colon, I am not sure I want to work with them.
after you've seen the dent a year makes in your retirement account you might not care
when i go on a date i don't know if they dont call me back because i was dressed poorly, because I was ugly, because I knew their parents names and street addresses, or because I threw my wine in the waiters face
@seancorfield: Stock options at Google are basically as good as cash, given how liquid it is.
like, I interviewed at companies where it turned out they had already hired to fill the role, and just kept their job posting up just in-case
and I know that is what happened because I bad mouthed the company to the point where the cto reached out to me
I fully agree there are boneheaded interview and hiring practices out there, and things that can frustrate the [email protected]#$! out of people looking for a job. No question there.
Bad mouthing a company you interviewed at until the CTO reaches out to you, in public, might not present the best face to anyone that finds that Googling for your name at a company you interview at later 🙂
@andy.fingerhut: though, if tech had less mutual anti-disparagement clauses, perhaps things would get fixed quicker
The stocks are actually delivered as cash. They're RSUs, so effectively they pay you money equal to the stock price at the time of vesting, and give you the option, if you want, to have them buy you stocks without charge
that is part of the way it operates as a club, when you are outside the club you don't want to speak up about the terrible initiation rites of the club, because if you get in the club you have it made
@didibus: We are on the same side; I think the other side of the argument is: the stock is # of shares, not exact $; so depending on whether the stock goes up or down, it's technically not as liquid/good as cash
Ya, the payout isn't guaranteed, and its more volatile because of the stock. And if the business does bad, they withhold the right not to give them to you I believe. But for now, in practice, stock is performing better then salaries, and by the time they vest, they're most likely worth even more 😋
@didibus: I completely agree with you, I'm just pointing out that a pedantic on the other side could argue: "therefore, it's not as guaranteed as cash" , lol 🙂
When I joined Macromedia (2000), signing bonuses in Silicon Valley were typically around $20k value for my level -- some companies gave new hires a car, some gave them cash. Stock was valued at $80 when I was offered the job, $120 the day I joined, and we handed all our stock back to the company when it went down to $5. They gave some of it back to us a year later at $12. I think the highest it reached before I quit was $25. So... I'm very cynical about the value of stock and/or options!
So I stand by my comment that stock is pretty much irrelevant in compensation calculation -- but clearly it sways some people.
120 -> $5, that's a 95% crash right? This is Google. If their stock crashed 95%, it would likely take all the indexes down with it.
Ya, totally fair. It requires you to believe in the company and its stock. Like if you would personally invest your money in them. If you wouldn't, then its a bad deal.
Bonuses are worst in my opinion. With stock you can at least salvage some money, or try and wait out the crash.
@seancorfield: If the stock market crashes 95%, those who "only" make 200k instead of "200k cash + 200k stock" are doing pretty well relative to the rest of the market.
My uncle Mike tells stories about how he joined some big company in the dot-com bubble and got a car as a signing bonus then just never showed up and used their cafeteria for lunch. Then the company just exploded and noone cared. Not sure how reliable that or my memory of the story is
I think salary can also be deceiving. A big crash could lose you your job, and then the second half of the year's salary you depended on is gone. Bottom line, make sure you save some money :face_with_rolling_eyes:
Welp I got about a year until I need to go job hunting for real and im sure there will be super clear answers about what companies to apply to and what to stake my livelihood on