Notch live coding 0x10c
twitch.tv
twitch.tv
And I don't even like techno.
The only thing I try for nowadays is to find an energetic, repetitive mix with no vocals.
(I code to this music EVERY day)
Trance.fm is also pretty good source, they play non stop trance with no interruptions. Great for coding against as long as it isn't too loud!
(Also, if you are a Spotify user, try the Radio/Trance mix.)
But now, I totally agree. The stock photo girl with headphones along with a lot of other subtle things would make me instantly think "this a fake/auto-generated/contentless site" and hit the back button without even reading it.
It's interesting how strongly websites can give off vibes.
Using the higher bitrate streams coupled with a nice pair of AKG headphones means I can listen all day and tune out the rest of the noise in my house.
For those interested, many of the mixes can be downloaded for free out there. I found :
http://soundcloud.com/tsnm all the TSNM no excuses mix, the 100 download limit is quickly maxed out on those though
http://radio.lazy-rich.com/ the Lazy Rich Show
http://xo.am/electro/di/ Ben XO Xpression
I just happened to turn that on and noticed it's the same songs.
No judgement, it's pretty neat for him-- but it's definitely weirding me out.
Of course, it'd be better in the long run to stay up to date and eliminate that extra work, but sometimes it helps to build it first to see if it'll even get to the refinement phase.
A hell of a lot of people are doing really good work with Java. I use Linux, Eclipse and Java at work and I know a lot of other people that do too.
Absolutely true.
And a hell of lot of people that brag about Haskell, LISP et al, don't produce anything useful to the masses with them. Where are all those LISP/Haskell/whatever killer apps? I mean, even Erlang has CouchDB, Riak and RabbitMQ.
I don't mean to troll, I actually think that 99% of those languages are used for personal/hobby projects, or for stuff in some company where the rules are lax and the programmer can choose whatever he likes --and those could be great or shit, but not really relevant to anybody else.
I don't see many widely used tools made with them, Open or closed source.
Re: the people mentioning HN runs on Arc. I know that. It's a service. Doesn't count as "widely used tools" (I gave CouchDB, Riak etc as examples).
It's more of the "stuff in some company where the rules are lax and the programmer can choose whatever he likes" variety of uses. As was ViaWeb.
Not to mention that HN is filled with bugs and a broken caching system, and Arc itself is half-complete and mostly abandoned IIRC.
C, C++ and Java are the standard tools of the industry, so it's unusual and noteworthy when an alternative language or technology is used for a product. You can use a wide variety of languages for web development backends because it tends to be less sensitive to performance(the majority of hits should be hitting caches), it has simple IO requirements, and user sessions usually don't have much state so parallelism is easier. I'd argue that web development is much more about the product than technical programming challenges, so having the ability to iterate quickly is especially important and leads to favoring scripting languages over the traditional languages which are more suitable for complex and high performance software.
For example, at Chartboost our backend runs on a LAMP stack, but our new implementation of the smart ad targeting algorithm involves using Clojure (another Lisp dialect). Chartboost is definitely not "Made in Clojure," but I think it's fair to say that that doesn't mean that the language isn't being used to build a useful product.
Sources http://www.janestreet.com/technology/ Interviewing there Knowing people whir work there
At the same time I used compile-time code generation in Java to rewrite some handcrafted class hierarchy into something that was short, correct and implemented the right interfaces consistently. It was also a non-trivial problem to solve and the result was very useful.
The difference is that I'll never describe the second one as something positive. It was time wasted working around inflexible constraints in Java in the only reasonably available way to make the code suck less. Sure, it required creativity and a clever solution, but I'd never want to do it again. Ask me about something interesting related to coding and I could mention the first example in a couple of contexts. The other one would be only mentioned with "Ah, you can't do that in a simple way, but I know a hack that will work - you'll just have to explain it twice to everyone looking at it."
>When building the engine, Notch wrote a function which would continuously pan the camera around and clip through the walls and keep the view on top, so he could make changes to the code and see the effects they made in real time. I’m used to testing by writing a function, building it, installing it on the device I’m testing on, and then seeing the result, which can take up to a minute at a time, so it’s easy to see how HotSwapping could save a lot of development time.
and two,
EDIT: Also, I googled a bit and I can find no indication that HotSwap doesn't work for static methods. Are you sure you're not spreading misinformation here? See for instance http://stackoverflow.com/a/9466778
Some of the keys I memorized:
F3 and F4 are must.
Ctrl + . = Go to (next) Error
Ctrl + 1 = Quick Fix (usually follow the above)
Ctrl + Shift + T = Open (T)ype (Java class/interface)
Ctrl + Shift + R = Open (R)esource (all files)
Ctrl + E = Show list of opened files in the IDE (if you type the file name it'll highlight/select it for you once this pop-up is active)
Format on Save - hook up your style with the Save action (right indentation, spaces, tabs, or whatnot).
Bind others that requires multiple steps (generate getters and setters).
If you're like me and use JUnit as a substitute for REPL:
Alt + Shift + X + T => run unit test.
Alt + Shift + D + T => run unit test in debug mode.
There are tons more if you know how to use Eclipse...
For Mac: swap the Ctrl key with Cmd.
Alt + Shift + i = inline variable/method
Ctrl + Shift + up/down = select the larger/smaller block of Java's AST
I also tend to create shorter keybindings for unit tests:
Ctrl + R = run unit test (from the test class file)
Ctrl + Alt + R = re-run last unit test
And I'm on a Mac. :-(
Less interesting to see the quality of chatroom discussion, glad I could hide it.
Funny how different people's tastes are. I wonder where they come from.
For comparison, here's[1] a song I love to listen to while coding, mostly after about 1:45 but especially at the 3:20 mark.
Skipping ahead 30 sec at a time is definitely a sign you don't like something. What are you hoping to find at the end? :)
Anyway, you're right. Artistic taste is personal. Sometimes I think the majority of our judgment is more about avoiding turn-offs than really feeling something new.
Your link sounds nice to me at those times, too.
It's interesting that some (like me, and it seems like, you) want music to invoke calm while working, while others want to be energized, or even made to be a bit tense. I wouldn't be surprised if there were a reasonably simple neurochemical explanation. Pounding, building music makes uses one change, calming music makes another, and who needs what depends on your existing chemistry.
Unit testing for graphics code: far more trouble than it's worth.
The tests can be the same or even better that those added at some TDD style.
And, in either case, that would be a nice problem to have.
And yes, it is a better problem to have, then to have code that noone wants.
Notch is creating right now, watch http://vimeo.com/36579366 "inventing on principle" which explains the importance of immediate visual feedback.
Also give him just a "little" credit for minecraft
I just dont want anyone else to think it is a good idea for them :-)
A great aproach for designing an interactive piece.
I love the games Notch makes, but he's not perfect.
How do you define a test for something as subjective as the "look and feel" of an interactive experience?
How do you automate this process?
1 Move the bounding box on the tree a few pixels.
2 Load the game
3 Move towards the tree until collision.
4 GOTO 1 UNLESS it "feels right"
Maybe regression testing, once you get things working, to prevent new bugs from popping up, or unit tests for game logic, but I don't know of many gamedevs doing full TDD.
-> di dot fm -> Listen Now -> Electro House
Also, I'd expect things would be more dynamic in whatever new game he's making, but that seems to be pretty static room he's playing with. Of course he could just be testing out various engine features, before setting out on the "content" part of the game.
What's even stranger is how fast he is without knowing any of these shortcuts. :)
Either that or we are just voyeuristic.
Plus this is live, I can't think of anywhere else you can watch somebody actually work on a serious commercial game in realtime.
tl;dr: He's not using Emacs
However, it's worth noting that if you'd have a job that Notch is willing to take and you are not hiring him into that role then it's practically a factual statement that your hiring process is broken. Admittedly that's a contrived scenario as he made tens of millions from Minecraft and founded a gaming company who's chief reason to exist is to finish the games that Notch starts.
Why do you say that? Do you think Notch's success is a result of him being an exceptionally competent programmer?
Notch has proven he's able to program fun games, and his programming styles is pretty well tailored to that
Who's to say if the goal changed he wouldn't change his style too
He belongs right where he is, as an indie game developer - kickstarting a fun game, alone, from scratch, proving that it is popular and that people love it, and then letting more skillful programmers take over developing it and fixing all the bugs that he created.
I'd have to guess that he is in fact a very skilled software developer. Minecraft is a fairly complex project, as is emulating a 16-bit CPU within the constraints of a game environment.
And I'm curious, what wouldn't you hire him for?
I've seen his posts about how git is too hard to learn[1] so he's going to stick with svn. I've seen him post that "we've started to bring in bug fixing into the development method"[2], and then the very next release is a "bug fix" release which causes more new bugs than it solves.[3]
I wouldn't hire him for a software development job that required any level of maintenance. He's good at creating original fun concepts but not at making it nice for people to read, modify, or maintain his code.
Also, I would argue that emulating a 16-bit CPU within the constraints of a game environment is easy and straightforward. For one, it's ridiculously simple to do test driven development without any overhead. And second, have you seen all the emulators that have cropped up after the specs were posted? There is already an emulator for almost every popular programming language.
[0]: https://github.com/superjoe30/mineflayer [1]: http://notch.tumblr.com/post/2623477410/strategy-meeting-day... [2]: http://notch.tumblr.com/post/4423138657/11-11-11 [3]: http://www.minecraftwiki.net/wiki/Version_history (might have to view history)
I agree that git is hard to learn and also that emulating a 16-bit CPU is straightforward.
"Oh, and I’ve finally committed the Music Blocks to the repository.
(Oh, wait, no, I didn’t.. Doing so broke git, so we’re changing to svn because git is horrible and evil)"
Everybody's entitled to have one. Did I try to suppress him expressing his opinion? No, I just piled mine on top.
> It doesn't take a chicken to judge an egg.
"Goes to credibility, your honor", as they say in legal tv series.
I don't know about chickens and eggs, but I believe that it sure takes a good programmer to be able to judge another. It's a technical field, it's not something really subjective. So you have to know your stuff in order to judge what someone else does --if anything, we have too many misinformed opinions.
I have never thought of minecraft as an especially buggy game after the 1.0 release.