Hacker News new | past | comments | ask | show | jobs | submit login
Io Programming Language (new website design) (iolanguage.org)
86 points by protomyth on Nov 21, 2015 | hide | past | favorite | 73 comments



One thing I would have liked to find was a use case. What problem can I solve more easily or elegantly in Io than in the languages I currently use? I've checked out both Juila and Go because they showed me how to do something I wanted to do in a way that was really nice. Without that, I don't have much to motivate me to play with it.


That's a good point. Thanks.


I would have expected it to be a new scripting language (Oriented towards AppleLand -> IOS / Darwin)

In this respect I wouldlike to see more GNustep integration (but this a GPLers dream).

I would trade it for better documentation though which really kills IO.

Despite this, one should mention the inclusion of BaseKit. His implementation of data structures.


Which aspect of the documentation do you feel needs work?


An entry in learn X in Y minutes.

An some non-trivial examples in "tutorial".


Back in 2008 (when I was 16, as the sample data so helpfully reminded me) I wrote a very basic web framework for Io based on _why's Camping framework. https://github.com/cdcarter/backpacking

It hasn't seen much love in a long time, but it was great to be reminded of why that language was so fun to work with!


So Io has always fascinated me from a design perspective (also see Ioke) [1], but it's almost too dynamic. It is hard to make efficient.

What changes could you make to it in order to make it easier to compile? Or what changes would you make to it in general? I adapted similar syntax to Clojure semantics with prose [2], but Io has some unique semantics that come with some trade offs.

1. https://ioke.org/

2. https://github.com/aaron-lebo/prose


In contrast to some here, I think this is a strikingly different, minimal, lovely design!

Admittedly, the sub-pages should be spruced up with more color and better layout (they're just too minimalist to convey important concepts about the language). I think these should be more in line with other language showcase websites.

As for the 'too much clicking' criticisms: no, it's no great hardship to hit that 'About' menu item!


but the previous website[0] was also minimal and yet (IMVHO) a lot more effective (and a lot easier to read)[1].

[0] https://web.archive.org/web/20151103063328/http://iolanguage...

[1] EDIT: I am slightly astygmatic, so for me thin white lines on black BG are basically just horizontal fuzzyness. To be constructive: white on black is generally less readable, but it can be somewhat compensated by adding more leading and thicker lines, so i.e. in /about adding this to .text

    font-size: 16px;
    font-weight: normal;
    letter-spacing: .015rem;
makes it a lot easier to read.


Thanks. Which subpages and which parts do you feel should have which colors?


'Guide': each section has many subsections. When browsing through, it's easy to become disoriented due to the 'sameness'. Numbered titles/subtitles would be easier to navigate. Syntax coloring would add life to the monotones.

'Tutorial': the dark background and proportional typeface is out of character with some of the other code examples. (I happen to prefer mono-spaced code, with syntax coloring.) Examples:

https://www.haskell.org/

http://www.gnu.org/software/guile/

https://www.ruby-lang.org/en/

https://lfe.gitbooks.io/quick-start/content/2.html

Other than that, I'm not sure I'd change much else, design-wise...


I'm not against jargon outright, but io could use some better copy, it doesn't do the language credit (its pretty cool!). The first sentence of the about page is: "Io is a homoiconic prototype-based programming language". I guess that's an accurate description... but if you're clicking "about" presumably you're making up your mind about if this is worth more of your time or not. I'm guessing even most of the brightest programmers have never even heard that word. If you know what homoiconic means you're probably the language designer, a lisp hacker, or a regular at lambda-the-ultimate.


I applaud the author(s) for working on something so ambitious.

A concurrency question:

How does the issue of lost updates get handled when two separate threads/co-routines/et al try to modify the same piece of data?


I honestly prefer the old design. My two cents.


If you want to learn about prototypical languages, I think Io is a great place to start.

http://iolanguage.org/guide/guide.html#Objects-Prototypes


I am discovering Io with this article so I have no opinion on this new design compared to the old one.

Some random thoughts :

-the first page provides no information at all, other than it is a programming language.

-The about page is just slightly better. I get a list of features and nothing else. samples of how it looks like in practice would be welcome.

-Not a word about tooling, even though it is a crucial point.

If I compare this with Kotlin's web page :

-brief description of the language

-then gives me a couple of reasons to use it

-then shows me some base samples

-a list of ways to try it out

-even an online editor to try out the language

Kotlin's webpage could probably be lightened a little bit, but it displays all the relevant base information about the language.


The old website was perfect. I think they should return to it ASAP.


If it were up to me I might stylize the name in uppercase "IO" or lowercase "io", and encourage the user community to do the same. "Io" looks too much like "lo" (lowercase L). And being a proper noun, people will almost always write "Io", which is the most problematic form it could take.

I generally don't like stylized letter case, but in this instance I think it would serve a useful purpose.


I also miss a usecase. And speaking of the homepage: This looks untransparent and unfriendly.

I think the laravel homepage is extremly well made. Clean and very good documentation which you can use all the time without getting angry. http://laravel.com/docs/5.1


First, I thought my internet connection went down while loading and half of stylesheets weren't loaded properly. Second, I didn't know where should I click first.

Language site doesn't need good UI, just provide what it is and why we should go ahead with it and minimal examples on front page.


>Language site doesn't need good UI, just provide what it is and why we should go ahead with it and minimal examples on front page.

What you're describing is actually good UI. A good UI makes it easy for people to do what they're trying to do.


Good UX, not UI make it easy for people to do what they're trying to do.


Guys, complete your austere hipster website with an appropriate url. Might I suggest http://lang.io


you should add a code example illustrating the difference of your approach on the front page. i had to click many times to find the first code, which i only did because the link came from HN, and it had lots of comments.

Also, a "word about the authors" would be nice. is it coming from research, industry, or hobbyists.


With all that "blank" space I expected that I shouldn't have to scroll on a 15" screen ..


Please visit the web site for Go language and try to adopt their design because yours simply is not acceptable in every way. I don't wanna click menus just to find out what language paradigms are for your language because I absolutely expect to find them on the first page...


This is really poor design from a UI/UX perspective. I spent 5 seconds on it and already uncovered the following problems:

1. It says nothing about Io on the front page except "A programming language". That's cute or edgy or whatever you want it to be, but it's not a good way to market a new language and spread adoption. No user should have to click to find out what your product is. There is way too much clicking here in general.

2. Terrible use of space. The "navigation" (if you can call it that) on the front page runs past the fold on my screen. The text is huge. On other pages, the text is tiny and hard to read because it's white-on-black.

3. Layout completely changes for different screen sizes. I know this is popular, but when it can be avoided, it's better to avoid it. When people see the same layout on all screens (or as close as you can get), it makes usage of the site faster. For a site that has language docs on it, this is really important.


Additionally, light on dark is horrible for readability. That theme is great for imagery but it's doesn't provide valuable contrast for clearly rendering fonts. Programming docs are typically mostly text so should provide the best colors that support readability.


>Additionally, light on dark is horrible for readability.

I have a hard time understanding this. Staring at a bright background hurt my eyes after a while. White text on a black background feels much more comfortable to read. What am I missing?


> What am I missing?

Context. If I'm in a bright room (office), and the last page I visited was black on white (the default/norm on the web), and the page I view after this one will be black on white (most likely), then viewing this one in the middle in white on black is jarring, annoying, inconvenient, distracting, hard to read (because my eyes have to adjust) etc.

If one is in a dark room, and has a custom stylesheet to display all pages in white on black, or if the web were predominantly white on black, then sure it's OK.


Here is an explanation, including evidence from studies conducted over the years: http://graphicdesign.stackexchange.com/questions/15142/which...


Reply depth reached I guess above, so I'll reply here.

Thanks, definitely never knew that. In that case I'll get on it sooner rather than later!


I agree with this. We've gotten a bit of flack on blog.darknedgy.net for this, and we've been putting off making a light-background alternative theme. I'll get around to it eventually because people want it, but I prefer the darker background with lighter text. It feels easier on the eyes for me, personally.

And really, folks who have complained have been the minority anyway. For us anyway.


You should read the link I posted in the sibling to your comment[1].

You may personally feel that light-on-dark is better, but your visually-impaired users will disagree. This includes a huge number of older users, as eyes deteriorate significantly with age (even among people in their 40s and 50s).

Also, you have no idea whether the complainers are in the minority or not. The people it bothered probably didn't stay long enough to figure out how to complain. Do you get compliments from people who say that they're glad you use light-on-dark?

1. http://graphicdesign.stackexchange.com/questions/15142/which...


I am not sure I agree. Do you know what I do when I have trouble reading the text in a page. I increase font size. It is only a flick of your finger (ctrl+mouse wheel). So the point is if you have a big enough font size, white on black can be just fine.

Also, should we assume that the people have their vision uncorrected?

I think that black on white is just a fad, perpetuated by following conventions. Like glossy screens.


yeah, black on white is a fad, based on existing conventions, such as the last couple thousand years of printing on paper


Yea. Totally same things. Paper and a display that actually emits light.

For a bunch who calls themselves as "nerds" and "geeks", the HN crowd is becoming pretty dumb lately..


This reminds me of the good old days when you could actually set your own fonts and colors in a browser and disable javascript.

The inventors of CSS have failed greatly.



Yes, staring at pages with bright white backgrounds makes me see floaters and other things in my eyes. I very much appreciate light on dark.


I want to add that the tutorial page is useless IMO. You should definitely consider adding syntax highlighting and using a different font. It's totally unclear.

Sadly, after multiple clicks I still have no idea if the language could interest me, and I'm not going to look further. :/


Tutorial useful for me.

Minimal website great.

Like IO, I guess.


Thanks for the suggestion. I've tried to fix it up a bit. What do you think?


Looks much better to me. I would also change the font family to a monospaced font, such as Fira Mono[1]. That would be two small modifications that lead to better readability IMO. If you want it even fancier, I found this page[2] that can highlight and format Io code...

[1]:<link href='https://fonts.googleapis.com/css?family=Fira+Mono' rel='stylesheet' type='text/css'>

[2]: http://hilite.me/


Thanks for the helpful feedback. It's a work in progress.


Steve, is the new website an indication that you're resuming work on Io?


I've been planning on doing a javascript port of Io when I have time but other projects keep coming up ( https://voluntary.net/bitmarkets/ ). Anyone interested in helping with a JS port?


You'll learn more from watching someone use the site than you can learn from me. Here's a good exercise:

1. Write down the top 5 goals that someone coming to the site might want to reach. For example, "Find out what Io is" is probably #1, "See what the syntax looks like" is probably another, and "Learn the benefits over other languages" is probably a third. You'd be able to come up with a better list than me by looking at your analytics (what pages people visit most).

2. Write these goals down. Then ask someone who has never seen the site before to accomplish them right in front of you. Don't explain anything and don't interact with them until they're done. Make sure you keep a timer to see how long it takes.

3. After they're done, ask them what they found clear, what they found confusing, and what else they might want to see on the site.


Good points. I'd be very interested to see your version of the design if you had time to put something together.


Edit: Rust's website has an open-source license[3]. You can copy the code and use it directly! That's great news because they host it on S3 with Jekyll, which is ridiculously inexpensive.

I'm not an expert or a designer. Your users will show you how to improve the design because you'll see evidence of where they're getting tripped up. For example, if a certain page is the last one most people see before leaving the site (other than front page), then you can tell that page A) solves a problem, or B) causes people to lose interest.

A good starting point is to look at other language sites and decide which ones seem friendliest and least friction-y. How easy it is to get started?

As examples, I really like Rust's website[1], and Elm[2] is pretty good, too. Rust's site is great because it's readable, all the important stuff is above the fold, and it has big action buttons. They also give a fairly long example of syntax, which is important.

I've even seen some languages that will show a snippet of code in an existing, comparable language, along with that same snippet translated into the new language. That's a great way to make your language accessible.

1. https://www.rust-lang.org

2. http://elm-lang.org

3. https://github.com/rust-lang/rust-www


No no no ... don't lift another project's website directly, it's tacky and will make your project look second-rate.

Why do you insist on dominating the thread like this anyway? For my money, "reply to every replier" users are in a dead heat with "horse sense theory" users (like the one at the top of the HIV thread earlier, always followed w/ reams of "aw shucks, thanks!" replies) as the top nuisance on HN.


> No no no ... don't lift another project's website directly, it's tacky and will make your project look second-rate.

It's easy to change the look and feel drastically with CSS, while keeping the file structure and HTML layout. It's not any different than downloading or using a website template, which is itself not much different from using a library in any programming language. Standing on the shoulders of giants is a core value of software.

> Why do you insist on dominating the thread like this anyway?

I only mostly replied to people who were in my own comment thread. That's called a conversation.

If I've inserted myself into anything unnecessarily, it's because usability and accessibility are really important to me. I want languages like this to succeed on their merits, rather than suffering due to unfriendly design. Plus I have friends and relatives with visual impairments.


But that's the thing! Caring about usability isn't enough. Are you a domain expert? Have you read your Jakob Nielsen and such?

Because Nielsen, for instance, probably wouldn't slam this design as hard as you have: For a work in progress, it's pretty danged good. The homepage is obvious, it presents the most important things in a way that nobody could miss. I'll grant that the "binaries" link is a bit obscure, but that's copy. There's some wasted space on the homepage but that's not a huge deal because the website's simplicity puts most things only a click or two away. The "packages" page is great! The tutorial could use a monospace font, but otherwise is great too.

I really hope that your advice doesn't result in iolanguage.org becoming a clone of Rust's website or otherwise an impersonator. The authors here are trying something new and unique and what they've pulled off is already looking sharp and easy-to-use.

So yea, I think you're just trying to sound like an expert. Trust me, you're not the only person here who knows about usability (if you do, that is -- you come off as more of a frontend developer than a real UX person, because your suggestions are lacking in depth and experience, and the HTML/CSS bit in your reply makes you sound especially green).


I told OP that I'm not an expert or designer and that the best advice comes from observing users.


Rust's website is the opposite of this: BUSY!

Just look at that landing page: logo, menu, intro, download buttons, code example (and editor), features - all 'above the fold' (on my screen).

Sure, everything's there, but from a design perspective, there's no real focus on any one component. Sometimes that focus is actually the design intention. In that sense, the Io website hits it perfectly.


The Rust website absolutely has a focus: the single-sentence description in an enormous font, directly adjacent to the enormous and obvious "Install" action button.

Other than that, the page contains nothing other than the code example (a 100% must for any language homepage), the documentation links (a 150,000% must for any language homepage), and the short feature summary that supports the focus sentence.


I like the new design. I hadn't realized I had visited Io before. I found the new site like a pamphlet - easy to hit a menu item, simple, clean design. I find some other language websites too technical or crowded. This drew me (back) in, and I found it easy to answer all of the typical questions I have when checking out a programming language page. I'll give Io a try now!


FWIW, I rather like it. It definitely stands out. The impression I got was bold, edgy, clean, opinionated, terse, not necessarily friendly. Not sure if that's the sense that you'd like to impart about the language.


Agreed, I like the design. If you're here checking out the programming language, you're up for an original experience I'd say. I don't mind clicking 'about' to learn the minimum, and dive further on various sections...looks clean and I enjoy that. Personal opinion obviously.


Counter argument. Usability does not have to be number one. There are lots of programming languages out there. What if one had a unique take on a website? It's healthy for people to try new takes on things.

I laud the approach. I think it looks cool and on first glance makes me think, "wow, this doesn't look like it was made by engineers who only think practically, maybe I'll go further to see if there are some unique ideas in the language itself".

In other words, don't speak like there is only one true way to do things, especially when you're critiquing someone else's work. (this last statement is slightly in jest as I'm doing the same to you!)


> In other words, don't speak like there is only one true way to do things

You're absolutely right. I made some assumptions and let my own values come through. My assumptions are 1) that this developer wants his/her language to succeed, 2) that a language succeeds because it's usable/accessible, and 3) that this design is not usable/accessible.

#2 and #3 are totally debatable, which is why I told OP not to take my word for it and to observe users instead. I'm just one user, and not an expert or designer.


Bikeshedding - if they can't make a website, how are they supposed to make a good programming language?


I agree that language design isn't related to website design.

However, how widely-used a language is matters a lot to me. I'd wager that it matters a lot to most people. And a language's user base is definitely affected by its website design. How much is it affected? I really don't know.


The design is very much just a spruced version of the Io website that I remember from 2008. Not super fancy, not super verbose, much like the language itself.


I also considered whether the website reflects the language itself. If it does, I wouldn't want to use the language, because it seems to prioritize faux-simplicity and having a unique design over usability.

Thankfully, the website creator seems to be actively reading our feedback and interacting with us as users, which makes me think the language itself is probably developed with the same pragmatism, humility, and curiosity. Those are all great characteristics for someone designing a language!


[flagged]


No personal attacks, please.


Completely agree. Nice website examples for general purpose programming languages IMO:

http://www.scala-lang.org/

https://www.haskell.org/

http://www.gnu.org/software/guile/

For altJS languages:

http://coffeescript.org/

EDIT:

Some websites that could be 'freshened up':

http://elixir-lang.org/

http://elm-lang.org/

https://www.python.org/

Some websites that definitely should be 'freshened up':

http://clojure.org/

http://www.lua.org/


To be fair the old website was perfectly in sync with the io idea.


It would be nice if it explained the internals a little bit. Like $X language is a interpreted duck typed language, or $X is a language with a jit that compiles to x86 byte code


Good suggestion. Thanks.


The about page is just a click away. On your third visit that part would be irrelevant, I prefer to put it in a separate page.


I agree; I came back here to read comments to get some idea what the language is all about.

He/She could have just babbled a little about what makes their language special in a static html page with zero formatting, and included a github link, and it would be more effective.


Is this another PERL clone?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: