I'm probably more or less forced to leave my current job (which involves Scala) due to highway air pollution.
Whatever happens after this job, I'm going back to Clojure.
Hope you'll find one soon!
I keep getting recruiters approaching me about senior Java positions… Good to know there are plenty of jobs in that space I guess, but I couldn’t go back to Java...
…besides, I last did hardcore Java about a decade ago! I went to Groovy, then Scala, then Clojure.
I could go back to Scala if someone "forced" me, but I’d rather stay with Clojure.
I chose this job not because of Scala, but because of the team, products and proximity from my home
But it was nice to experiment with it
I need to take the time and chug through haskellbook. I watched an ekemmet talk on typeclasses which was awesome. Really been chafing in my hobby work of late at how few tools Clojure gives me to build and reason about record structures. I understand the appeal of the "bag of k/vs" approach, but it makes exploring a new domain that much harder because you can't build up constraints.
Well, Haskell will be one of my hobby languages once I'm back to Clojure
I already started in Haskell book in January or so
I know Java is not Haskell and I never gave myself the time (like 5 years to explore it), but when I see how much pain we have with a REST API in our Java backend and how to enhance it, and only because of the classes / inheritance structure I really doubt that types do so much good, at least in this area. Sure, you can awesome stuff with a type system and sometimes I enjoy it, but then again, it so often hurts me and brings no benefit at all.
@sveri: I was just thinking of an example from work. We needed to import some files into an H2 database. The amount of type safe code that was written (with Slick) could be done in less code in Clojure and would probably read much clearer.
The only thing with that type of code is you get type conversions more or less for free I guess
Well not really, come to think of it. I needed to write some conversions myself
@borkdude: Yea, I get more and more a feeling that there is a difference between 1. DTOs or whatever you want to call them, namely objects that just hold data and that you have to type and inherit and compose and 2. Some business logic where you can declare additional constraints with types For number two they may make sense, but for 1. its just PITA.
PITA?
Pain In The Ass
sorry
Well in the development of that program, a lot of things went wrong at runtime despite the types. Restarting sbt/scala all the time takes you out of the flow
Clojure REPL definitely improves my productivity working on these kinds of apps with file in/out and a conversion in the middle which you can easily verify with some small functions from the REPL
For example: you cannot read from the types that an H2 database wasn't closed, etc
@sveri: I agree that types in Java are horrible. There are better typed languages. Types don’t have to be painful.
I don't understand that a verbose language like Java is so popular
Because it allows for fungible developers.
Lots of ceremony and "standards" and hand-holding means you can use lower-skilled developers more safely. A lot of (enterprise) Java shops have armies of low-to-mid skill bodies churning out boilerplate code. It’s "safe" and mechanical as far as scaling development is concerned.
(and, yes, I’m extremely cynical about how many (most?) companies use Java these days!)
Nothing prevented Guy Steele etc to invent something more like Kotlin back in the 90ies?
I mean, you have to be cynical being comfortable in Common Lisp and then inventing something like this?
I guess Java took off because it was much easier and safer to work with than with C / C++ back in the times
And they made a lot of advertisements with "Write once, run anywhere" which they fullfilled to a very large degree
So all in all, back in the 90-ies, they did a lot of things better than existing languages
Yeah, I think if people go back to the 1996 Java whitepaper, it says what Java (as a UI) is supposed to provide the companies which adopt it: > Primary characteristics of the Java programming language include a simple language that can be programmed without extensive programmer training while being attuned to current software practices. The fundamental concepts of Java technology are grasped quickly; programmers can be productive from the very beginning. http://www.oracle.com/technetwork/java/intro-141325.html#349
yes, maybe it was like what Go tries to do: offer a simple language (in terms of not too many features so you don't have a steep learning curve) that is safer than other languages in that area
ah, I typed this before seeing @tjg text 🙂
And, GC compared to manual memory management is a huge time / bug saver
To be honest, I feel like I still don't get Java, despite the 'simplicity'
I mean I can program in it, but it goes against my principles.
For example I had to add some functionality to an existing app. It took me a while to overcome the barrier of: really, do I need to change all of this boilerplate?
It's nice to have a place where I can rant about my work from time to time 🙂
@seancorfield: it's funny because I'd largely level the same criticism against go, especially with regards to the design decision of not incorporating a powerful or remotely modern type system.
My primary complaint against Java at this point is that the core APIs show their age.
Abstraction patterns have changed a lot, there are things that could be interfaces or have interfaces and don't, etc.
You can build something atop Java and the JVM which is less awful.... but you're constructing your own crazy land.
The funny thing is, that, while Java is aging in a negative way, the JVM is aging in a positive way
Java 1.0 / 1.1 was a small, simple language with a small, simple library. And it wasn’t the choice of "enterprise" back then.
I switched from C++ to Java in ’97 primarily to work with a cleaner, simpler — but still powerful — language.
I parted ways with Java around Java 5.
Java pushed me into Lisp. I was like, “Why can’t I easily automate repetitive things in this programming language, from within the language? Am I weird, or isn’t that the point of programming?” (Common Lisp is all about that; invites you to modify your system.)
I always tried to avoid Java. It just didn't interest me.
But maybe that is like saying: I always avoided gardening, because I wasn't interested in this shovel.
(shovel, I meant shovel)
Common Lisp was the first language in my entire CS education that sparked joy (and it wasn't even in the program)
After I graduated I had to more or less choose between Java (J2EE, wtf did this mean) and C# .NET (net, is this a network programming language)?
Instead I chose a third way: work in a product company and deal with implementations for customers. About 50% tech, 50% social skills. It seemed more fun at the time.
And was it?
Well, after 6 months I told them I wanted to do more tech. But in hindsight it was ok.
You were kind of restricted in what you could do, how much you could deviate from the standard product. But we all know that limitations ignite creativity right? 😉
Hehe, I am working on a product for almost 5 years now
Its super interesting to be part of a big international company that has customers like the spanish parliament, Cocal Cola, Apple, Google and see how we work with them, but slowly I am getting bored
I still find that when I'm on the phone with a customer and he/she is happy with what I made, I get the most satisfaction, direct feedback. It's what I liked most from my first job. Also what you get in lecturing for example.
True, positive feedback is valuable
Yes, but also being able to help someone feels great.
Yea, thats what I love about teaching people, but when, when I think about becoming a teacher I think of all the stories my mom tells me and instantly got, nope 😄
I was a lecturer for 3.5 years
I went there after I got a job at the national tax service, which was very dissatisfying.
how old were your students?
About 10-14 years younger than me probably
like 17-22
sounds good
Like they would actually listen
Lecturing was a good experience. I would not do it full time again though.
I even taught Clojure there for two years in a row
It was a university of applied science. I liked it, because it was very applied in contrast to my own education which was theoretical and didn't prepare you for real life.
Hehe, nothing can prepare you for the insanity of programming jobs
LOL, maybe not.
My first job after university was like 9 months implementing features 8 hrs per day, no unit tests, hardly manual tests, just writing code all time long. In the end it was more than 100k lines of spagetthi PHP code mixed with some wanna be objects, because, hey, it was PHP 5
In my years at university programming was considered dirty work, not some fun activity. A lot of fellow students did PHP/MySQL on the side, but I never felt like doing that.
I always avoided PHP, like Java 😉
I have done some Perl
but Common Lisp, that is what got me programming for fun
I was taught Miranda at university, a predecessor of Haskell. Closed source, paid license, only ran on the unix boxes.
I wish they had taught Haskell, because then maybe I would have picked it up then and built some practical stuff with it.
I do think those early influences are important. The idea of FP never left me
FP is not given enough attention in CS education in my country.
Well, for me it has been mixed, we actually had haskell for one semester, but, I totally did not understand anything, it was just way beyond my reach. I got deep into C at that time and later PHP and haskell, was like, not even a "programming language" for me.
Today I wish I would have spent more time learning it, but, it was just not the right time for me
Haskell is one of those languages that I try to learn during vacations but never really get to a point where it's addicting like Clojure.
The same for me, the tooling is so uninviting
well that, but also the 'get all the types/monads' etc. right before you see a single result...
that is the whole idea of a type checker, I know, but sometimes it helps me to see a wrong result instead of nothing
Also, while doing PHP I learned a valuable lesson. I wrote some code generator that created DTOs for all the database stuff and wrote the business logic in objects too. Then our inhouse customers came and wanted one page where they could see all our customers (over 700) listed plus a lot of metrics like revenue, total buys, averages over year / month and some more stuff and it was painfully slow. It took more than a minute to render it all (while the database needed a few milliseconds). Well, rewrite all the stuff to use arrays and go down to a few seconds render time...yea
Never trust the hype, instead, measure yourself
Well, that is very good advice. Trust your own experience.
Complexity sells better.
hehe
It's true for every domain. Look at the food supplement industry.
How do you mean that exactly in regards to the food industry?
I mean people like to believe very complex things about food (like the need for exotic food supplements) instead of the idea that you can eat very simply and need not to worry about nutrients too much.
And they are willing to spend a lot of money on it.
Yea...well, thats what I think too. Industry needs to sell something, so you cannot go and say, stop eating all that bullshit, just a bit of the good stuff is enough, because, you dont earn money like that
Exactly
The trade of complexity, it works two ways: people who like to sell it and people who like to buy it.
I am not sure if "like" is the right word
My girlfriend is making a training as an alternative mediciner and while she is not into the hardcore stuff like homeopathy, still, a lot of what they learn is which food supplements they can tell the people to buy. So they get trained to "heal" like that, among other things.
I like the website http://nutritionfacts.org - it has a lot of good advice and also debunks a whole bunch of stuff, all citations are available for you to check
Also there is a common belief that the pharma industry is just bad and tries to make as much money of the people as they can in whatever way they can. Which I share mostly. But then, they dont see that the alternative industry medicine is just doing the same
I think it's good that people look to alternatives for traditional medicine. A lot of medicines are oversold, while lifestyle changes are probably a better solution.
thanks for the link
I do use several medicines myself btw, so I'm not against pharma at all
but you can do a lot by looking beyond controlling symptoms
Thats true, but I feel, that there is so much belief in all of it and so few knowledge
@sveri: I believe my own experience. https://medium.com/@borkdude/tl-dr-of-my-long-term-weight-loss-and-maintenance-success-49cb43f62a1a
Funny, I am similar, moving between 85 and 93 kg by 178. I am addicted to sugar, as soon as I leave that out I get less, as soon as I consume it again, I get more
The problem is not only sugar.
By removing sugar from the diet, you remove a lot more crap that is in junk food like oils
We are off topic btw, I'm sorry... 🙂
Hehe...true
Miranda… There’s a blast from the past!
I worked with Miranda (and its predecessor, SASL) back at university. And a bunch of other created-for-academia FP languages. Prof Turner, who created Miranda (and SASL and KRC), would have been my external examiner if I’d actually written up my PhD...
Back then, Miranda was very, very slow and tended to crash a lot.
Didn’t put me off FP tho’… just made me want to create a robust FP language :simple_smile: