Fork me on GitHub

people who like emacs/cider, what do you think of cursive (community edition)?


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.


Tools-&gt;REPL-&gt;Jump to REPL editor/output pane


@U0AD3JSHL oh, didn't know about that channel. thx 🙂


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


@U0567Q30W can you also jump OUT of the repl? 😛


@U7ERLH6JX When you say “eval things in the buffer” do you mean seeing the results painted over the editor in an overlay?


In IntelliJ, in any toolwindow ESC will take you back to the editor.


okay, cool. sounds reasonable. I've used a lot of reflect to navigate java classes in cider, but it gets a bit messy


somehow i have to tap escape twice, thanks @U0567Q30W 🙂


is there any support in cursive to write clojure functions to change the behaviour of the editor? feels like low hanging fruit to me 😄


you mean.. like emacs? 😄


@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. 😄


@UCG86LJFN Not really, no - I have plans in that direction but nothing yet.


@U7ERLH6JX Ok, no problem, I’m always interested in opinions about how Cursive can improve 🙂


I actually have plans to do the overlay thing soon.


@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 oh, are you engaged in the development of cursive?


@U0567Q30W Thats awesome! The fact that Cursive got me into serious Clojure in the first place and will be eternally grateful to it!


@UCG86LJFN yeah it probably will feel more familiar if they are used to other IDEs


@UCG86LJFN they made it 😄


oh, i see, haha 😄


@UCG86LJFN Yes, I develop Cursive


awesome 🙂


@U7ERLH6JX Nice, making Clojure more accessible is a major goal of Cursive 🙂


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


@UCG86LJFN In #cursive is probably the best first stop, or on the mailing list.


@U7ERLH6JX fater or faster repls? 🙂


@U0567Q30W all right, thanks


faster* corrected it 😛


I’m actually working on my documentation, so it should be much more up to date and complete in a week or so.


Currently it’s a bit shameful, it needed some serious love.


@U7ERLH6JX ah I see. is the startup any better than lein? that's probably what's been bothering me the most 😛


@UCG86LJFN Depending on what you’re doing, deps.edn may be a good fit.


@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


@U0567Q30W sorry, a good fit in regards to what? 🙂 never heard of deps.edn


@U7ERLH6JX all right, cool, thanks 🙂


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 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").


oh, thanks @seancorfield 🙂 great to hear about the different tools


I've tried it, but can't get past intelliJ


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


@U053V4R5N what part of intellij bothers you?


@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.

👍 4

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)


@U053V4R5N agreed, I like the generalism of emacs. 🙂 thanks for your input


@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 URL? I'd be happy to be an early tester...


Needs Ink. And thanks, I appreciate it! 🙂


@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? sheepy


does anybody know if I can translate this code to Clojure?

On.get("/hello").json(() ->"msg", "Hello, world!"));


(.json (On/get "hello") (U/map "msg" "Hello"))


I am missing the () -> part


#clojurescript channel may be a better place to ask (sorry, I don't know the answer)


Assuming that first code sample is JavaScript


nope, that is Java8 🙂


oh, in that case...


#clojure channel is probably better. I am not familiar with the more recent Java syntax you are using there. A Java lambda I guess?


not sure if #clojure is the best for that 🙂


There are plenty of folks who know their Java around


#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!"))))


but I'm not super sure.


the () -> 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


this works 🙂


but i need that (() -> u-map) thingy


i think it has something to do with this


(reify java.util.function.Function (apply [_ arg]................


anyways thanks


i think @ghadi mentions this a little in his conj talk

Mario C.22:12:50

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 🙂

💯 12
👍 8

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 😐


Definitely +💯 for networking and knowing people, as a way to get jobs.


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.


Tragedy of the commons, I believe. Same problem as with training.


People always prefer someone else to do the work (whether it is with pre-qualifying/validating the candidate, or pre-training them.)


Plus, human nature is to look for social proof. </side-note>

Mario C.23:12:15

Social proof?


The more people said the thing is good, the more it seems to you that it must be good.


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.)


that's exactly why the personal connections can be so valuable


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


@todo do records help? or do you not use records?


@lady3janepl: Records often breaks my "code reload" flow, so I end up using maps. Maps enforces neither keys nor values.


@hiredman +1 😞 (also yay, your avatar! ^^ o/ \o )


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


@dpsutton Yes, I've mentioned it as a negative.


i was thinking of you but figured you would contribute if you wanted 🙂


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...

seancorfield23:12:03 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.


But I don't think ill of anyone who doesn't link to such places now.


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.


which is another thing


references don't mean anything


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?


they are apparently an outdated thing


If you want to work for a hot tech startup, they can definitely be a 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 🙂


no one will ever call or ask for your references


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… ¯\(ツ)


thanks clojure

👏 4

whoa is this… minecraft modded in clojure?


i guess so


Damn that’s cool!


"hot tech startups" are wildly overrated 🙂


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 ?;track=Software%20Engineer shows insane compensation, yet there seems to be constant employee issues there.


i mean, its blindingly useless but im unemployed for the next few weeks


I will certainly grant that my experience is probably atypical.


still super nice to skip the 3 minute compile cycle for minecraft


Next step: data visualisation in minecraft


@andy.fingerhut: If it's a 10 person startup, you're 10% of the engineering force; seems reasonable they would check all references.


Also my laptop battery just died and I realised it’s almost midnight so gn guys ^^


Oh, I don't blame them for checking up on me. It makes perfect sense.


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 am not saying they won't ask about you


I am saying your list of references is nothing


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


So on that side of the spectrum employers can in my experience be lax


no references called either


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.


no, I mean, they may or may not, and you will never know


depends if you put references or burner numbers + you with a british accent

🕶️ 4

there is a huge information asymmetry involved


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


yeah but thats all rejection isn't it?


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


you just never know

Alex Miller (Clojure team)23:12:13

It was the wine

🙂 12

@seancorfield: Stock options at Google are basically as good as cash, given how liquid it is.


Well, after they have vested, they are 🙂


Not sure, the suit was only Bill Blass


gotta up my game


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


also, fun conversation considering your username


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 !@#$! out of people looking for a job. No question there.


they had me come in for a day of interviews for a position they already hired for


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 🙂


I told the cto I thought that was a dick move, and he said "it's standard practice"


In any context thats a bad excuse


i suppose so is the reaction


@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


I guess glassdoor is supposed to be a way for people to be public about that stuff


but i don't really think it is in practice - feels like BBB with a better website


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


Or you can just take the cash if you want.


@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 also irrelevant, for the most part. Since they are not guaranteed.


@todo yes, the big dot-com boom exploded in the early 2000's 🙂


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'm not a financial advisor, none of this is financial advice.)


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


so thats comforting


I can't tell if that was intended with sarcasm or sincerity 🙂