As far as I can tell there really isn't anything like Intellij. What parts of Intellij are you desiring for DrRacket to handle? I guess it would be the project explorer, the git integration, the import linker, etc. I don't know much about Intellij because it is software that I would have to rent instead of own. Now, I am getting an urge to learn Intellij's plug-in interface to see if that is possible (because there are other Schemes I'd like tooling for as well and if that IDE could bring it then great).
If you aren't afraid of Emacs then give racket-mode a try. If you like VSCode there is some racket support extensions available. I have used both and if you can't stand Emacs the VSCode route is pretty good (just use VSCode extensions to do stuff). However, my private small form factor computer can't handle VSCode too well so it is Emacs or DrRacket (now I have a reason to how well it handles Intellij).
You don't rent Intellij AFAIK, you can pay for a specific version and all older versions, and that will be valid forever. You keep paying so they can provide updates that constantly break it :p
As far as I know the coolest thing about IntelliJ (JetBrains) IDEs always was how well does it understand the code and what can it do with it automatically, i.e. intelligent context-aware code completion, refactoring etc.
Given that Racket isn’t backed by a big institution I don’t think you’ll find better IDE than DrRacket, which is pretty powerful it just doesn’t look great.
Alternatively, as is the case with most lisp/scheme variants, emacs has pretty good support OR you can try the LSP extension for VSCode.
I’d like to second racket-mode with Emacs. If you want a ton of IDE-like smarts, fire up racket-xp-mode (racket eXPlore mode, comes bundled with racket-mode). Pairs nicely with other good things in the Emacs ecosystem.
Just a note in case someone goes looking for racket-xp-mode explicitly. It's just an ancillary mode included with racket-mode. You'll pretty much always want it turned on. I'm sure there's some reason to turn it off sometime, but I've never done it.
For those of us who didn't grow up coding at age 7, this is golden!!!! The amount of terrible CS teachers out there would amaze you!! I mean "blow your mind away" amaze you. I almost gave up CS because of my absolutely terrible professors. I couldn't even understand simple Classes and object!!! It was that bad!!!
Luckily, since I really wanted to learn, I had to seek alternate resources. I was fortunate to stumble on Stanford's Cs106a taught by Mehran Sahami and it changed my life forever. That man is the gold standard for what a teacher should be. He broke down complex ideas and made them look so simple.
Since then, I use a combination of different resources to learn said "difficult concepts". Recursion, got it...pointers, got it too. I have used Standford courses, Berkeley course, udemy, Udacity, Coursera and even youtube to learn. These sites have some really good teachers.
I have since come to understand that CS is really not that difficult. All is takes is a willingness to learn and a good resource to learn from.
Hi, I completely agree you. I am currently learning how to code. I am at that point where I know the syntax of of a few language pretty well and can code up small programs.
However, I do have difficulties in architecting and developing a fully functional application.
Not sure you'll see this but honestly man, if you have friends in the field just ask them, plain and simple. Not saying this is you, but often people don't go this route because pride, etc.
If you don't know people in the field, chances are there are software people where you work - some are douchy to people just learning (pfft, you think you can learn this craft in months?) but others are willing and eager to help others. Find them and again, just ask them to point you in the right direction.
Lastly, find a class. Nothing crazy like a 25k bootcamp or anything, but find something like building a site end to end in 2 days or something like that.
A lot of this stuff is tribal knowledge and not captured well in tutorials. There are excellent tutorials for learning the technical things, but not necessarily for putting everything together into a working app.
As someone who came from a completely unrelated background (marketing). Here is how I managed to start 5 tech companies:
Your problem can't be unique. So, look around and see if someone has already solved it. After looking at their solution, ask yourself - Is it good enough or you still want to make effort implementing the same thing albeit in a different way.
The trick to complete a project never takes one that doesn't excite you. Since I mostly develop products for my own company, I have the luxury of picking up my team, project, and tools.
I started procedural programming with python then started picking up OPP. (OPP did not make sense to me since I wasn't working on real projects, just hobby scripts)
Finally, I learned C and it all began making perfect sense to me!
-> I finally understood how python does stuff it does at a low level.
Then I learned more advanced python stuff like decorators, generators etc...
Then I hired a few professional programmers to work for me and learned the software development practice, writing code is a small part of actual software project development.
-> I learned how software testing, planning, and decisions are done in teams. We were doing Agile SCRUM.
You can probably, pick up good workflow from some opensource GitHub projects which are developed in open!
Then there are special tricks/methods which you can not learn from books, so I hang out on Reddit, twitch, youtube channels and occasionally come across interesting tricks.
Then I learned Haskell, F#, OCaml which helped me in understanding functional programming.
After this, I learned Scheme and then Clojure.
I started writing JavaScript frontends with React and Vue.
Got interested in Reverse Engineering, reading Assembly etc... but then got bored because I was spending hours and hours and achieved very little.
Experimented with Java as my company has Java projects written by other devs and I wanted to contribute but didn't like Java and its ecosystem. (It's too complicated for me)
I learned Rust and moved from VIM to Sublime Text then finally to VSCode.
Then I learned Ruby and OPP magic became FINALLY clear to me.
These days I mostly write Go/Rust/Ruby/Vuejs(Typescript) and deploy on Kubernetes which made deployment soo easy, CI with Gitlab or Drone.
I was you a few years ago. There's two ways forward:
1. Get a job programming and slowly build up your skills/expertise by learning from those around you.
2. Develop a lesson plan for yourself and figure out how to build and deploy different kinds of apps.
I don't know if you're into #1 but I think it can be massively useful. There's so much stuff you don't know about that some dude who's been working somewhere for 5 years does. You can pick up best practices, design ideas, constructive criticism, better coding, better tools, knowledge that's easier to get in person than from a webpage. Today no single person makes a truly great and novel software application, and working at a tech company will make that apparent to you.
As for 2, some ideas assuming you know how to code:
1. Write an HTTP API that talks to several different databases. Learn how the databases work and when to use them. Get good at using them both from their CLI and a programming language.
2. Write a site using React/Angular/etc. and HTML/CSS to query an external API and display the results or organize user input into a fun framework.
3. Find a way to publish both of the above so that mom can interact with them.
4. Figure out how to wire a web app that you wrote to an API you wrote.
5. Find a way to deploy that as a complete system.
6. Figure out how to write a simple iPhone/Android App if you're interested in that.
7. Now make it do something cool, presumably by hooking it up to an API that does the heavy lifting.
8. Now make it all pretty.
9. Now figure out how to get it in people's hands. Collect their feedback and figure out what's working and what's not.
10. Go back to whichever step needs work and fix it.
That's easy to say, but there's a ton of work in learning all of these skills. It's one thing to write an app, it's another thing to get it in people's hands, and it's a third thing to get it to really really work to the point where people love it. A lot of people spend 40 hours a week doing that for years and don't/can't do everything - that the reason there's so much specialization in the world of software engineering.
Hi Jeremy, i have an computer running ubuntu 17.10 with 16gb ram and 4gb nvidia gpu. Is it possible to setup my system to run the exercises locally without having to use paperspace?
Thank you.
Yup that should be fine. There's resources on http://forums.fast.ai to help you get set up.
(I'd still suggest doing the first few lessons on Paperspace so you can focus on the deep learning, rather than the setup. It's only $0.45/hour and 20 hours is plenty enough to get going. Sometimes getting your computer set up can be distracting and frustrating at first!)