Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "elm"
Ever have a feeling that there is so many interesting stuff out there - Angular, React.js, TypeScript, Rust, ELM, FRP, Machine Learning, Neuronal Networks, Robotics, Category theory... But no way to ever figure out what are all those about? And there is too little time to even get a good grasp of any single one of those. IT seems to be like hydra - one learns one thing and 10 new concepts pop up in the meantime.4
Windows vs Linux vs MacOS, Android vs iOS,
PHP vs .Net vs Java vs python vs whatever,
Angular vs React vs Elm vs vanilla ...
It's like Nintendo vs Sega,
Star Wars vs Star Trek,
Beatles vs Rolling Stones ...
It's all a bit childish, right?8
You know what really pisses me off about the dev community is the circle jerk that ensues when someone bashes something they have no experience in. Take yesterday's React bash on Reddit and DevRant. Thomas Fuchs compared React and JSX to the intermingling of HTML CSS and JS of 15 years ago. If you knew anything about React or spent 1 hour learning what it's about you would immediately know why that isn't true but no, a giant circle jerk ensued comparing it to PHP! I'm sorry but HOW can you compare a pure JS view library that is renderable by the browser, to a full fledged server side language?? Not to mention the React approach uses a completely different programming paradigm of functional programming.
When I first saw React and Redux I realized what this is all really about, a shift in the paradigms of programming. React + Redux is the first time that functional programming has entered mainstream. We've had functional programming available to us via Haskell and more recently Clojure for a while now but it was never very obvious how powerful functional programming could be outside of the niche that used it for more analytical type tools. Now we have things like hot reloading (https://youtube.com/watch/...) and state playback (https://youtube.com/watch/... skip to ~3min to watch the magic) thanks to immutable state.
Before you decide that React is just another flavor of the month library I encourage you to learn about the advantages that functional programming provides (https://medium.com/@cscalfani/...) and checkout Elm (http://elm-lang.org/) as well. The nice thing about React + Redux is that it gives us a way to start programming functionally, without having to learn ML style syntax like Elm and ClojureScript. Keep in mind, when Object Oriented Programming was becoming popular it was widely controversial as well and look at all it has done for us.6
Modern web frontend is giving me a huge headache...
Gazillion frameworks, css preprocessors, transpilers, task runners, webpack, state management, templating, Rxjs, vector graphics,async,promises, es6,es7,babel,uglifying,minifying,beautifying,modules,dependecy injection....
All this for programming apps that happen to run inside browsers on a protocol which was designed to display simple text pages...
This is insanity. It cannot go on like this for long. I pray for webasm and elm to rescue me from this chaos.
I work now as a fullstack dev as my first job but my next job is definitely going to be backend/native stuff for desktop or mobile. It seems those areas are much less crazy.10
At the ranters who use Vim as their primary IDE. How do you manage to get some autocompletion working?
I want to be one of the cool kids and use Vim for coding but I am so used to a good autocompletion like the one IntelliJ offers.
How do you guys manage to be productive? How do you make it show only the usefull stuff?9
I was depressed doing a course I hated.
3 years in and I switched to Computer Science.
Best decision ever!3
I was reminded of people's posts about preferred text editors in another post, so I thought I'd do the same, but also add some super old technology that I used along the way.
The first text editor I consistently used was pico. I used it to write my first webpage at school.edu/~username. It was a natural choice, because the it was the default text editor in pine, which is what we would all use for our email after opening a serial connection to the college's Digital Unix server. Or if we were the lucky ones who had a computer in a wired dorm, telnet. My dorm was not wired until my sophomore year.
I got my first job in tech in 2001, working as a night shift tier-one support technician. By this time, most people were using web based email, or POP3, but I wanted to keep using pine (or elm, or mutt) because I was totally in love with the command line by this time, and had been playing with Linux for two or three years by now. I arranged a handshake deal with a guy in my home town who had a couple well-connected NetBSD servers, to let me have an account on one for email and web hosting (a relatively new idea at the time).
I recall telnetting into my shared hosting account from the HP-UX workstations we had in the control room. I would look at webpages on HTML conventions and standards, and I kept seeing references to this thing called vi. I looked into it more deeply, and found that it was a text editor, and was the reason I always had to CTRL-Z out of elm. I was already finding pico to be lacking, so I found a modern implementation of vi called vim that was already installed on the aforementioned NetBSD server, and read through vimtutor on it. I was hooked instantly. The modality massively appealed to me, and I found editing files to be an absolute delight, compared to pico, and its nascent open source offspring/successor, nano.
My position on that hasn't changed in the years that have passed since then.
What's your text editor origin story?1
>ddg how to do x in y
>Js.unsafe.eval "js code"
Like???? None of them is a 100% complete wrapper???6
I think I can learn English here.
I can also learn professional knowledge.
**I am a Korean.**
Android studio AVD powered pictures4
Why I try to ALWAYS use semicolons in JS:
In short, weird shit happens sometimes
So I'm doing a small project for freeCodeCamp, working with the Twitch API. I decided to make an array on the fly to append a few elements to a documentFrag in order after setting all my props. Forgot a semicolon. Apparently, Babel transpiles this:
info.innerHTML = (``)
[span, caret, info].forEach(elm => frag.appendChild(elm));
to this if you omit the semicolon:
info.innerHTML = ' '[(span, caret, info)]
this is why you should avoid relying on ASI, you're going to have to remember them in other languages out there, so for your own sanity, might as well get used to them. Just thought I'd share--who knows, might help a JS newb out there somewhere.5
I'm learning functional programming for the first time with Elm and I kinda like it, it's just so different from what I'm used and kinda refreshing. My brain is getting a bit twisted though... I'll probably need a few weeks/months to adjust the way I think about code, but I'm liking the mental exercise so far, loving those moments where stuff just "clicks".5
I only just started learning Js. And it's going smoothly. In two weeks, I should have gone past the Beginner's level. Then what next?7
I read the pragmatic programmer a few months ago. The book advised learning a different programming language every month or so. I was doing Advent of Code so I decided to try out Elm because functional programming is all the rage these days.
It took me one hour to convert a string of numbers to an array of numbers! And when I finally finished with that I couldn't understand how to compare each element with the next one in an array using map or filter.
On a positive note: The first time I tried Elm I didn't understand jack shit, now I understood a few things.5
Has anyone used Elm for a non-trivial project? If so, what is your experience? Know about any sources that delve into architecting larger apps?
I'm really looking to escape JS and React on the front end for a change, and what I've seen about Elm so far is just beautiful.1
To me this is one of the most interesting topics. I always dream about creating the perfect programming class (not aimed at absolute beginners though, in the end there should be some usable software artifact), because I had to teach myself at least half of the skills I need everyday.
The goal of the class, which has at least to be a semester long, is to be able to create industry-ready software projects with a distributed architecture (i.e. client-server).
The important thing is to have a central theme over the whole class. Which means you should go through the software lifecycle at least once.
Let's say the class consists of 10 Units à ~3 hours (with breaks ofc) and takes place once a week, because that is the absolute minimum time to enable the students to do their homework.
1. Project setup, explanation of the whole toolchain. Init repositories, create SSH keys for github/bitbucket, git crash course (provide a cheat sheet).
Create a hello world web app with $framework. Run the web server, let the students poke around with it. Let them push their projects to their repositories.
The remainder of the lesson is for Q&A, technical problems and so on.
Homework: Read the docs of $framework. Do some commits, just alter the HTML & CSS a bit, give them your personal touch.
For the homework, provide a $chat channel/forum/mailing list or whatever for questions where not only the the teacher should help, but also the students help each other.
2. Setup of CI/Build automation. This is one of the hardest parts for the teacher/uni because the university must provide the necessary hardware for it, which costs money. But the students faces when they see that a push to master automatically triggers a build and deploys it to the right place where they can reach it from the web is priceless.
This is one recurring point over the whole course, as there will be more software artifacts beside the web app, which need to be added to the build process. I do not want to go deeper here, whether you use Jenkins, or Travis or whatev and Ansible or Puppet or whatev for automation. You probably have some docker container set up for this, because this is a very tedious task for initial setup, probably way out of proportion. But in the end there needs to be a running web service for every student which they can reach over a personal URL. Depending on the students interest on the topic it may be also better to setup this already before the first class starts and only introduce them to all the concepts in a theory block and do some more coding in the second half.
Homework: Use $framework to extend your web app. Make it a bit more user interactive with buttons, forms or the like. As we still have no backend here, you can output to alert or something.
3. Create a minimal backend with $backendFramework. Only to have something which speaks with the frontend so you can create API calls going back and forth. Also create a DB, relational or not. Discuss DB schema/model and answer student questions.
Homework: Create a form which gets transformed into JSON and sent to the backend, backend stores the user information in the DB and should also provide a query to view the entry.
4. Introduce mobile apps. As it would probably too much to introduce them both to iOS and Android, something like React Native (or whatever the most popular platform-agnostic framework is then) may come in handy. Do the same as with the minimal web app and add the build artifacts to CI. Also talk about getting software to the app/play store (a common question) and signing apps.
Homework: Use the view API call from the backend to show the data on the mobile. Play around with the mobile project to display it in a nice way.
5. Introduction to refactoring (yes, really), if we are really talking about JS here, mention things like typescript, flow, elm, reason and everything with types which compiles to JS. Types make it so much easier to refactor growing codebases and imho everybody should use it.
Flowtype would make it probably easier to get gradually introduced in the already existing codebase (and it plays nice with react native) but I want to be abstract here, so that is just a suggestion (and 100% typed languages such as ELM or Reason have so much nicer errors).
Also discuss other helpful tools like linters, formatters.
Homework: Introduce types to all your API calls and some important functions.
6. Introduction to (unit) tests. Similar as above.
Homework: Write a unit test for your form.
Just feel like going to a raised platform over my town and scream, "AHHHHHHHhhhhhhhhhhhhhhhhhh....!!!"
What are you currently working on? You can be as vague as possible and let others try to figure it out.
I’m currently working on something to make pelican based blogs look a bit decent.8
Definitely Android 8.0 is neat.
And it's faster.
I think Android has developed a lot.
Isn't that right?
How long does it take to start writing codes without having to do “too much” looking up of some context?
I’m quite at the intermediate level and I fear I do a lot of cramming(and pouring) than actual coding.
I want to code all on my own, or at least tons of lines before having to check something up.
How do you guys do it? How do I become ‘pro’?6
Went to an Elm meet up desperate to understand what an Effect is.
Asked out enthusiastically and received the answer:
A higher order Signal
!rant && helpWanted
Does any of you guys have experience with Elm development in Vim or Spacemacs?
I want to write more stuff in Elm but I didnt manage to set any if the both up to have useful auto completion or a jump to symbol feature. I hoped elm-layer + global company was enough in spacemacs, but it didn't work.
That I learned Java.
Got lots of work but nothing to be proud of.
Always has to clean up after mediocre fdevelopers.
I have watched a couple of videos on YouTube talking about Elm. It is a language used to develop user interfaces. It has a very organized ecosystem (unlike JS) and it is pretty cool to code with. Static typing, everything is immutable, etc...
For those who have worked with it, is it worth learning? I would love to know your experience.1