If HN believes creative thinking is a waste of time I’ll get downvoted for this but I fancy just letting my imagination go wild so here goes...
Video gamers can supposedly differentiate between tones more similar to one another than non-gamers. Perhaps, if you made a theme of very similar colors, you could achieve the same benefit from programming. Although I suspect it might not work because the difference in the colors has to have significance for your brain to really start paying attention to it. So you could have a color-sensitive language. Or maybe color could be the only significant thing, then you could just bind each character to a color in your text editor and use a normal language.
While walking in the wood today and looking at the detail on the ground and searching for ripe fruit in the trees I was thinking about how our brains are really good at picking out specific visual things from noise and how more complex visual things are sometimes easier to recognize than simpler things. Also its possible to get really good at picking out subtle clues from very complex input: think about a native American Indian’s ability to track moving animals over long distances.
So I think what would be really cool is to have a way of representing each function of a program as a visual form, ideally a 3-dimensional one. You could then look at these form and over time you would start to be able to see certain things about the function just by looking at the forms. I wonder if that might be a much faster way of searching for specific things within a large body of code such as you might do in a security audit than actually reading through all the code because it taps into the innate concurrency of the right-hemisphere.
There would be some difficulty would be in generating appropriate visual forms. The form has to be meaningful. The ideal would be if it were meaningful to the point where somebody well used to them could write the code a form represented just by looking at the form or, at least, infer the gist of it. Of course you don’t have to limit yourself to one form per function, you could have 10 different forms per function, each representing different properties, or forms generated from by dividing the code in lots of different ways (not just functions). Or maybe you could simplify everything I’m saying here and just have a lot more statistical static analysis of code then displayed with charts and infographics.
I tried explaining a similar concept to a designer recently - When I use Sublime Text 2 I use the minimap to visually identify sections of code based on their rough shape, and get to learn bits of code or sections of a file purely on its indentation / minimap pattern.
Thats exactly what I do with sublime as well, except i do it for log files. similar exceptions/errors in log files tends to have similar shapes thoughout, and you can scan a log file to find probable problems due to the patterns of errors without having to read each individually
"Wires" that carry values are color-coded according to their contents (integers are blue, floating point values are orange, booleans are green, etc.). Loops like FOR and WHILE are actual "loops" that encircle the repeated code. The flow of information along the wires determines the order of execution for the code, and you can debug your code by turning on a special mode that actually shows the information moving down the wires.
LabView IS fun, I've written a couple of drivers and a (physical device) testing GUI with it. As I've been thinking about it more I see two hurdles to overcome with LabView though:
- Layout: Spaghetti code becomes a very tangible issue if you don't follow guides on routing religiously. Intro courses only touch on this and LabView code in the wild are rarely clean. These visual routing guides are ORTHOGONAL to good code design practices which you also have to follow to make maintainable and understandable code.
- Navigation: There is no VIM or Emacs for LabView code as far as I know. Navigating a codebase and following function references deeper and deeper down the rabbit hole becomes tedious pretty quickly. Visual breakpoints help here but there's no substitute for quick navigation, I never found a Ctags equivalent for this language.
True enough, LabView visual 'code' doesn't scale cleanly. One of the reasons for this 'spaghetti' is that the language combines control-flow and data-flow constructs in the same schema level. However, LabView remains the most successful graphical language to date, leaving MUCH room for future language innovations for those who dare to journey out of the scripting realm for software expression to deal with the scaling and many other engineering issues for a new paradigm.
I'm not a LabView fan for various reasons, but something neat they've added as of V8.0 (I think) is an auto-format tool which will take a mess of wires and organize it. Vastly improves readability, and works really well.
You're right, the auto-wire-organizer tool is fantastic. Every time I use it I wonder what algorithm LabVIEW is using to rearrange things - not an easy problem computationally I'm sure. I use it for small sub-VIs but I find that if I use it on a large project I can't find anything after using it - I was relying on spatial layout of the VI which was lost after auto-formatting.
I guess this is analogous to algorithmically reformatting code in a normal text-based programming language...
6.1 was running on an even more ancient PC from 2001. This was at a former employer so I have no influence over this system any more. The funny thing was that we had ample budget for this project, I think we spent about $10k on a very nice rack-mount SCXI DAQ and about $60k on other equipment but upgrading the computer system driving the whole thing was out of the question due to color-of-money issues and dysfunctional inter-departmental politics.
I like your assessment of LabVIEW. I find that if your code is turning to spaghetti, you're not using enough sub-VIs. Try to find blocks of code that accomplish one thing and put that code in its own VI. As a bonus you get to design a little icon for your new sub-VI. :)
Your "rabbit hole" analogy is spot-on and I'm not sure how NI can address some of those problems. Some things like Ctags that are so valuable in text-based languages just seem to have no obvious analogy in a graphical programming language... it's fun to imagine though.
I'm sure part of the issue was that I was trying to teach myself Labview under a deadline as a fresh college grad with zero oversight from anyone with experience with it.
A professor of mine and I were discussing this as we were poring over some freshman 1st semester programming projects done by primarily artistic students in Max/MSP, which is extremely similar.
Looking at a program from the scope of functions, it looks pretty unremarkable, but when you scope out to view the scale of functions you can start to make out the flow of control, etc. Even farther out, you can visually see separations of concerns that the student has implicitly created by the arrangement of the code. It was really remarkable viewing the architecture from 10,000 feet like that.
I'm not sure how to do all of that, but the bit about reducing the dynamic range resonates. I think syntax highlighting should exist to highlight three categories of syntax:
a) comments. What is never run?
b) literals. What is just plain data?
c) punctuation -- mostly so it can be deemphasized.
You might try naming your functions in Chinese. There's evidence showing that people take advantage of the face recognition machinery of their brains to read Chinese[1].
Coincidentally, native speakers of tonal languages (Chinese being one of them) also seem to have a higher chance of being pitch-perfect [2].
[2] Deutsch, D., Henthorn, T., Marvin, E., & Xu H-S (2006). "Absolute pitch among American and Chinese conservatory students: Prevalence differences, and evidence for a speech-related critical period". Journal of the Acoustical Society of America 119 (2): 719–722.
I like the themeing trend towards dark backgrounds and pastel colors.
I've been using Zenburn [1] for a couple years now, and I've really grown used to its unsaturated colors. 'Tomorrow' looks way too colorful for my taste, kinda like eating something too sweet after weaning yourself off sugar :)
My problem with Zenburn is that, unlike Tomorrow or Solarized, it doesn't have a good curated list of themes for various systems. I've had to hunt and peck for themes for Emacs, Konsole, Awesome, Chromium, Thunderbird, QT, GTK, and at this point would be challenged to provide a source and method for each...
> 'Tomorrow' looks way too colorful for my taste, kinda like eating something too sweet after weaning yourself off sugar :)
Sing with me:
What can make boring code
Seem all fresh and new
Cover it in pastels
of both deep and light hue?
Color highlighting
Color highlighting can
Color highlighting can parse every line and check that the syntax is good
I've used Zenburn for about 2-3 years now, and it's pretty much the most restful I've ever found. Everything sort of is in the same 'area' of the spectrum, and stands up to those multi-hour working sessions.
JavaScript in ST2 looks gorgeous in Tomorrow Night 80s. Java, not so much. Keywords, class names and annotations all being the same color makes for a lot of lavender.
Vim users should go here: http://vimcolorschemetest.googlecode.com if they haven't before, that's where I found darkburn, a darker variant of zenburn that I've been happy with for a couple years.
Vivify [ http://bytefluent.com/vivify/ ] is another good one that takes the opposite approach: Show you code snippets from different languages at once and switch the colorscheme. You can also quickly scrub through the schemes and edit them to create your own.
I originally used "Tomorrow Theme - Solarized was yesterday" as a title for this post. However, I agree with the crowd that this title was a little bit to agressive (some might call it marketing).
I never liked Solarized, for me this is a replacement for the awesome Twilight theme.
With something so preference-based, one is hard-pressed to argue better or worse without agreeing on the standards of evaluation. Put another way: I don't think discussing it in binary terms of "better" or not will do much good.
If you like Solarized, or it's good enough and not worth the trouble to switch away, simply don't.
Solarized wore on me after a while. I switched back to Monokai for Sublime Text but found that it was too bright for my taste when used in a terminal. I have since rolled my own subdued/pastel variant of Monokai's candy-bright colors in a few places.
This looks close enough to what I had that it will provide the feel I want, without me having to do much more work to port it to different environments or application configurations.
I, for one, am getting a bit bored with solarized. I am looking forward to a fresh coat of paint! Not because solarized is bad, just because I like variety.
I like Tomorrow and everything, but I've got Solarized on my iTerm, Vim, etc all set up already and it's probably the only theme I've felt 99% confortable with and which didn't give me eye strain after 48 hour marathons. What's the benefit I'd get from switching? Being "new" doesn't cut it, is there some science or statistics that make this theme viable in place of Solarized? If not, then the title is misleading.
Solarized is awesome, but lacks sufficient contrast for some of us. Currently using a modified version of Soda Theme, but always looking to mix it up, so might try this out!
One big reason I use Solarized is because the colors /and/ color relationships are preserved between the light and dark mode. This doesn't seem to be true for "Tomorrow" and "Tomorrow Night". Tomorrow modes look similar enough though I like the care that was taken with Solarized.
I really wanted to like this, but I think that colors preferences are both subjective and born of habit/experience which leads to wiring our brains to expect certain colors for certain things, because I don't like pastels, and I don't like red as a non-alert color.
It's a good idea, with a lot of thought put into it. The author should keep trying. Maybe there is more than one right option.
Personally, I think the best way to do this is by a "hot or not" site for fonts and colors. Have a page for each language with "hot or not" of random fonts and color combinations until the stats show which combinations certain groups like. Tie in other surveys as well and give away gift certificates to Amazon each month as a prize for over 100 votes that aren't outliers.
Will certainly keep trying. I would say there is no right option and at the same time all options are right.
There does seem something common about themes that appeal to many people but ultimately each has their own correct version of how things should be. Hence my next project https://github.com/chriskempson/base16
Interesting idea by the way!
I use this theme since I ever saw it in every editor or alike I use (Zsh, Xcode, Vim, Sublime Text 2) and I'm really happy with it! The colors IMO are more distinguishable than on solarized but this seems to be a matter of taste. Just try it out if you are looking for a new theme.
BTW: as many mentioned it is awesome that the theme is available for so many editors!
Edit: Should have mentioned that I use always that Tomorrow Night Eighties theme
I work on the CLI for a PaaS. So lots of interaction, detailed output for your apps and their status, etc. Probably a less interesting answer than you hoped.
I started adding colors to highlight important parts of the output (e.g. app names, status, ...), but received a bunch of complaints from people who couldn't read parts of the output. Turned out they were just using bad/broken themes, like Solarized, which abuses the bright palette by replacing them with various unreadable shades of blue.
It's otherwise a pretty nice color scheme. Just annoying that I can't trust the "bright" palette to ever be readable because of themes like it.
(Also, the themes that come with Terminal.app are pretty abysmal. The stock 'blue' isn't even readable in some common configurations.)
Speaking of using color as a formal syntax in a graphical programming language. The example found at http://www.coretalk.net/CubiconPrivate/CubiconPaper/MemoryMa... (User: Cubist1 and Password: Sandy2) is the executable design of the Memory Manager module for a next-generation virtual machine (VM). The visual directory on the left of the screen is a number of control-flow methods, interleaved with white and gray backgrounds. The colored icons express fundamental language constructs, in this case, memory pointer transfer, comparisons, and the like. This set of methods compiles into 37 KBytes of ANSI C.
Doesn't seem to have the technical justifications of Ethan Shoonover's solarized [ http://ethanschoonover.com/solarized ] but looks pretty well thought out to me.
I really, really like this. I've been a fan of Twilight/ir-black style themes for a while, but could never find one with the perfect ratio of contrast to visual noise -- especially for console Vims. Now I have.
Monokai is popular choice for many initially, it looks good but hurts eyes. Solarized on the other hand seems to lack contrasts at times.
After spending a great amount of time in 'Merbivore Soft', then 'Made of Code' last year, I've fallen in love with 'Tomorrow' - ST2 & XCode. Mostly for the vibrant colors and pleasant contrast. Clojure too looks very nice in this.
I've used Monokai since the realease of ST. Then i switched to Solarized light but it wore me down really fast on long hours, i tried Solarized dark but to no avail (the blue is just too much). I then saw a reailcasts video and thought it was worth a shot. Then i moved to zenburn (wich i still use at the terminal and vim) but switched to Espresso Soda on ST2. I just swtiched to Tomorrow since it looks more coupled in terms of a swatch.
Definitely dark, I find my eyes feel more strained looking at themes with a light background.
My go-to for many years now has been the Wombat scheme (originally for vim here https://dengmao.wordpress.com/2007/01/22/vim-color-scheme-wo... but you can find ports to other editors such as Visual Studio, Eclipse, XCode, etc if you hunt around a bit).
I always feel that way when I try a light theme, but I wonder if it is a matter of habit.
For example, when I work with eclipse for a long time, I tend to forget that I'm using a light theme.
I switch between light and dark themes. I am often working on more than 1 thing, and I think it helps me mentally separate them by having different background colors for different tasks.
White(or verly nearly so) background. With plenty of light, preferably near large windows. I can't understand why anyone would ever want to sit in the dark staring into a lightsource.
I use a dark theme for almost everything but I use a light, high-contrast theme when I'm working in direct sunlight or any other very bright conditions.
Thanks for the theme. Changed Zenburn with Tomorrow-Night-Bright and feels very good. Zenburn was not able to show visual selections in a proper color. Also, non printable characters were showing very bright.
Problems solved with Tomorrow theme.
I've been trying to use solarized off and on for a while now, but the text highlight just doesn't have enough contrast for me. Any highlighted text is unreadable. Tomorrow Night looks like it doesn't have this problem. Awesome!
I have been using this theme for years and I absolutely love it. I'm surprised it got upvoted so much on HN since it's not new at all, but by all means I would upvote this 1000 more times if I could. Amazing theme
Wow, that's a nice one. Very readable, not too pastel... I almost never use the more 'stylish' themes because I find their tradeoffs a pain, but this might be an improvement on anything I've used thus far.
So I'm not sure if I'm slow or what, but I'm not getting any of the Tomorrow or Base16 Textmate themes to import into Aptana. Imported a few other .tmThemes and they work fine. Any ideas?
Awesome! Having a color theme available for most/all tools I use is amazingly useful! I have been looking for such an alternative to Solarized for a while!
Not only can you install the Textmate theme manually but you can also just use the Package Control app to install this theme automatically with no effort on your part.
Kate's editor (I guess at least, it was in KDevelop which uses Kate as an editor as far as I know) has a great functionality - different colors for different variables. I only worked on one project in KDevelop but I really liked this functionality and missed it in other editors.
I've been on the receiving end of these sorts of comments before, and I cannot convey how annoying this attitude of entitlement is. Someone has worked on this theme, off-and-on, for almost a year. He's built something useful, and he's giving it away for free. If you want a feature, gpmcadam's comment is a good example to follow. Simply point out the missing feature and say how it would be nice to have.
Ideally, submit a pull request. Even if your NetBeans theme isn't perfect, it'll be a starting point for discussion.
"No autocompletion for php variables inside [SQL] strings"
Believe it our not, I still write SQL statements in my code. So writing an UPDATE on a table with 30 fields (I didn't design the tables) is hella easier in Netbeans then PHPStorm. I don't have to worry about typo's in Netbeans.
If JetBrains ever gets around to fixing this, I'll gladly switch.
It's free, for one thing. IntelliJ is still for-pay if you want Java EE features, and while few of my projects are Java EE all of them use some EE features (JSF, especially).
I tried IntelliJ community edition and was not very impressed. The time/cost of switching is pretty high. I'm not sure what the value is I'd be getting for that effort--better completion? More graphical ways of doing things?
If I had $200 to blow on an IDE I would probably do it just to try, but I haven't even found $50 for Chocolat.
I don't know about you, but "try this software you don't need so that if you like it you can pay me $200 you don't have" isn't a compelling pitch. NetBeans works fine. Blacklisting HN would do twenty times more for my productivity than a better IDE.
I use netbeans (6.9) for python and javascript (/editing html/css). I'm not ready to make an investment in something hardcore like vim. Is there anything free that's better for this? intelliJ doesn't seem to support these with the free version.
Disappointed that it took me about 5 minutes to figure out why this was so important to HN. Neither the title or the link gives much information about what this is or why it is so great.
Video gamers can supposedly differentiate between tones more similar to one another than non-gamers. Perhaps, if you made a theme of very similar colors, you could achieve the same benefit from programming. Although I suspect it might not work because the difference in the colors has to have significance for your brain to really start paying attention to it. So you could have a color-sensitive language. Or maybe color could be the only significant thing, then you could just bind each character to a color in your text editor and use a normal language.
While walking in the wood today and looking at the detail on the ground and searching for ripe fruit in the trees I was thinking about how our brains are really good at picking out specific visual things from noise and how more complex visual things are sometimes easier to recognize than simpler things. Also its possible to get really good at picking out subtle clues from very complex input: think about a native American Indian’s ability to track moving animals over long distances.
So I think what would be really cool is to have a way of representing each function of a program as a visual form, ideally a 3-dimensional one. You could then look at these form and over time you would start to be able to see certain things about the function just by looking at the forms. I wonder if that might be a much faster way of searching for specific things within a large body of code such as you might do in a security audit than actually reading through all the code because it taps into the innate concurrency of the right-hemisphere.
There would be some difficulty would be in generating appropriate visual forms. The form has to be meaningful. The ideal would be if it were meaningful to the point where somebody well used to them could write the code a form represented just by looking at the form or, at least, infer the gist of it. Of course you don’t have to limit yourself to one form per function, you could have 10 different forms per function, each representing different properties, or forms generated from by dividing the code in lots of different ways (not just functions). Or maybe you could simplify everything I’m saying here and just have a lot more statistical static analysis of code then displayed with charts and infographics.