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 - "key bindings"
Let the student use their own laptops. Even buy them one instead of having computers on site that no one uses for coding but only for some multiple choice tests and to browse Facebook.
Teach them 10 finger typing. (Don't be too strict and allow for personal preferences.)
Teach them text navigation and editing shortcuts. They should be able to scroll per page, jump to the beginning or end of the line or jump word by word. (I am not talking vi bindings or emacs magic.) And no, key repeat is an antifeature.
Teach them VCS before their first group assignment. Let's be honest, VCS means git nowadays. Yet teach them git != GitHub.
Teach git through the command line. They are allowed to use a gui once they aren't afraid to resolve a merge conflict or to rebase their feature branch against master. Just committing and pushing is not enough.
Teach them test-driven development ASAP. You can even give them assignments with a codebase of failing tests and their job is to make them pass in the beginning. Later require them to write tests themselves.
Don't teach the language, teach concepts. (No, if else and for loops aren't concepts you god-damn amateur! That's just syntax!)
When teaching object oriented programming, I'd smack you if do inane examples with vehicles, cars, bikes and a Mercedes Benz. Or animal, cat and dog for that matter. (I came from a self-taught imperative background. Those examples obfuscate more than they help.) Also, inheritance is overrated in oop teachings.
Functional programming concepts should be taught earlier as its concepts of avoiding side effects and pure functions can benefit even oop code bases. (Also great way to introduce testing, as pure functions take certain inputs and produce one output.)
Focus on one language in the beginning, it need not be Java, but don't confuse students with Java, Python and Ruby in their first year. (Bonus point if the language supports both oop and functional programming.)
Use industry standards. Notepad, atom and eclipse might be open source and free; yet JetBrains community editions still best them.
For grades, don't your dare demand for them to write code on paper. (Pseudocode is fine.)
Don't let your students play compiler in their heads. It's not their job to know exactly what exception will be thrown by your contrived example. That's the compilers job to complain about. Rather teach them how to find solutions to these errors.
Teach them advanced google searches.
Teach them how to write a issue for a library on GitHub and similar sites.
Teach them how to ask a good stackoverflow question :>6
Linux set up on laptop day 2: can't make the screen lock after resume from suspend, can't connect to my VPN, can't set key bindings in i3wm... But I did successfully set my wallpaper.10
I'm a die hard ViM user and throughout the years I managed to put ViM key bindings in everything, from browser to even my cell phone for some reason (back in the day if I had the opportunity to put them in the fridge, I would have put them - people would have a hard time closing the door, though)
The thing is that it had become a liability because I see that, even though I "work really fast and efficiently" using this tool, when I have to use other things, like a different shell (I use zsh with some ViM sauce) or type in another editor, it sucks so hard.
Everything is wrong, nothing works, the typing is a mess.
Now I'm trying to force myself to use Vscode and I removed all those extensions from my browser and shell. It is uncomfortable, but the idea is to "rewire my muscle memory", if there is such thing.
So people in my class don't know how to copy & paste with the keyboard. Most are 13 y/o and it's actually sad :D9
Hello everybody. First time ranter, so please be nice.
Starting off with a classic: text editors.
I'm mainly a .net developer, so I mostly use Visual Studio (with vim key bindings), and (g)vim for everything else. However, visual studio code is slowly winning me over. It's sleek, it's pretty, and does a lot of cool stuff. It doesn't do all that vim does though (or does it in ways I don't yet know), and is slightly less customizable. On the other hand, vim sometimes feels like too much overhead for what I use it for.
What do you guys think? What do you use, and what personal gripes do you have?10
Just installed Vim a minute ago. I already want these key bindings for the entire OS 😅. I think I'm gonna love this one 🤗7
Org-mode: Best note taking for work/life.
Magit: Git on steroids!
Evil-mode: Because Vim key bindings are far superior imo.
Elisp: The power to extend your editor however you want.
New colleague comes to present himself. Sees me editing using key bindings, multiple buffers showing in Emacs, bash scripts running in separate terminal...
"I have no idea what you do around here, but I'm sure your a pro"
Seems like a smart guy to me.1
Neovim. For everything, even general word processing. Weird, I know, but I've got 2/3's an English degree that I hardly ever get to use so leveraging a spelling and grammar checker just seems like a waste.
As far as why neo over any other ide, easy. The bulk of what I'm doing is writing and editing text so to me it makes more sense to use the text editor I like and plug in the other few tools I occasionally need than it does to use something that includes everything else plus the kitchen sink but requires me to plug in the text editor that I want.
The reason I prefer neovim as a text editor is a nobrainer as well. It doesn't rely on auto-completion to be helpful and I don't have to press shift+ctrl/cmd/win+alt+six other buttons to navigate around the document. I also don't have to keep reaching for the mouse or arrow keys every 2 mins just to bring my hand back and feel around for the home keys again a split second later.
To me those are both unnecessary distractions and I'm not the type of person that needs any help getting distracted. With neovim my wrists can always rest in the same positions and there's no split second to stop and think "this button combination" and not the other three or four combinations that are almost identical. At the most I have to hold ctrl or shift with one other button, if anymore are required then the keystrokes are entered consecutively, not all pressed together like some fucked up game of keyboard twister.
I don't even have to reach for the mouse to do things like change key bindings or search the help documentation. Just a ":" then type whatever I need. If I can't remember exactly what the command is then there's tab to help me out, all I have to remember is the first couple of letters.
Much, much quicker than browsing through submenu upon submenu just to click what I already know I'm looking for. Sure, that's only the first few times, then I can generally remember which menu to go to, but only for routine things. Something rarely used, I'm going to spend a minimum five minutes looking for it no matter what. And that's only if the developers didn't decide to change the layout from the last time I used the tool. Not that most make changing layouts a habit, but it has happened on occasion.
Lastly, to wrap it all up, neovim let's me save my preferred configuration as its own file. If I switch workstations all I have to do is pull it down from my repo and place it in the correct path, whether the machine has neovim, vim or any of the other flavors. And if one of them is not on there, then vim-tiny is half a megabyte to download. Not that I change machines a whole lot, but it's still nice to have because I've got a dozen keys remapped and trying to use the defaults at this point is next to impossible.6
Random thoughts on more out of the box tools/environments.
Some time ago I had shown one of my coworkers about Pharo and he quickly got the main idea behind it but mentioned how he didn't like the idea of leaving behind his text editor to deal with source code.
Some time last week I showed the dude some cool 3d animations you can do with Pharo while simultaneously manipulating the code to change them in real time. Now that caught his attention particularly and he decided he wanted to know more about the language but in particular the benefits of fucking around with an image based environment rather than a file based.
Both of us reached the conclusion that image based makes file based dev enviroments seem quaint in comparison, but estimated that it was nothing more than a sentiment rather than a fact.
We then considered what could be the advantage/disadvantages of such environments but I couldn't come up with anything other than the system not having something like Vim or VS Code or whatever which people love, but that it makes up for it with some of the craziest IDE tools I had ever seen. Plugins in this case act like source code repos that you can download and activate into your workflow in what feels something similar to VS Code being extended via plugins written in JS, and since the GUI is maleable as it is(because everything is basically just subsets of morp h windows) then extending functionality becomes so intuitive that its funny
Whereas with Emacs(for example) you have to really grind your gears with Elisp or Vimscript in Vim etc etc, with Pharo your plugin system is basicall you just adding classes that will convert your OS looking IDE into something else.
Because of how light the vm machine is, portability is a non issue, and passing pharo programs arround is not like installing Java in which you need the JVM.
Source code versioning, very important, already integrated into every live environment and can be extended to do pushes through simple key bindings with no hassle.
I dunno, I just feel that the tool is too good to be true. I keep trying to push limits into it but thus far I have found: data visualization and image modeling to work fine, web development with Teapot to be a cakewalk and work fine, therr are even packages for Arduino development.
I think its biggest con would be the image based system, but would really need to look into how this is bad by any reason other than "aww man I want vim!" since apparently some psychos already made Emacs and VS code packages for interfacing with Pharo source trees.
Embedded is certainly out of the question for any real project since its garbage collected and not the most performant cookie in the jar.
For Data science I can see some future, seems just as intuitive and interesting as a Jupyter Notebook actually, but the process can't and will not be the same since I still don't know of a way to save playground snippets unless you literally create classes for it, in which case every model you build gets saved inside of an object, sounds possible but, strange since it is not a the most common workflow in jupyter.
Some of the environment is sometimes glitchy, but it does have continuos development and have not found many hassles.
There is a biased factor from my side: I seem to be wired to understand the syntax and simple object model better than in other languages. To me this feels natural as if I was just writing ideas rather than code, mostly because I feel that there really ain't much in terms of syntax, the language gets out of my way and the IDE feels like the most intuitive environment in the world to me. I can see why some people would find it REALLY weird of counterintuitive tho.
Guess I really am a simple dude.
Just started a new job feeling excited and pumped. But damn, different OS, different text editors, different colour and fonts, different key bindings. I always think I am good at adapting but I'm just a creature of habits as much as the next person...
I hate eclipse due to the performance issue... switching perspectives, just everything seems too slow.
Love sublime and it’s speed, and simplicity, as well as vim ..of eclipse had the editor of vim... with key bindings of vim... speed of sublime or vim...but the ilitellisense of eclipse or visual studio ..and the ability to properly change the theme/color scheme of the entire environment without issues of contrast with certain plugs in...
I think eclipse would actually be great if someone did that... or same with Visual studio ...6
Psst, anyone who wants to use VS Code, but likes the key bindings for X editor: VS Code lets you use the default key bindings for most editors. Just search for it on the extensions marketplace.
It is so frustrating that browsers had to keep the open developer tools as Ctrl+shift + C.I work with a ton of terminals and lot of browser tabs and when I try to copy text , I automatically type Ctrl + shift + C and boom , the developer tools opens up.I know we could change the key bindings but who the hell kept the "open developer tools " shortcut as Ctrl + Shift + C.That is a serious flaw!!! Fucking hate it..