HNHacker News
TopNewBestAskShowJobs

MetaCosm

1,665 karma · joined August 6, 2011

[ my public key: https://keybase.io/robertmeta; my proof: https://keybase.io/robertmeta/sigs/UgvPNSEcpGbldHtQnQ_-c8SyRvBKjKTr_CLh0lpK0h0 ]
submissionscomments
MetaCosm··on Nes emulator written in go
> "Growing" here means refining the language as it exists, not succumbing to featuritis.

In no world does "we expect that pace of change to accelerate" mean "we expect subtle refinement of the language". Refinement or polishing generally isn't something that "accelerates change".

MetaCosm··on “Go’s design is a disservice to intelligent programmers”
It always astounds me when (inexperienced) developers play down build times as if they simply aren't that big an issue. They are hellish, creativity crushing monsters.

Also, static binaries -- so the DevOps guys don't hit you with sticks.

I still remember the first go program README.md I shipped. "Umm, get foo to box, ./foo in a way so that it runs persistently and at startup."

Easy way to get your apps to the front of the line in the deploy queue -- all the time.

MetaCosm··on “Go’s design is a disservice to intelligent programmers”
Woah, I can't tell if that was a brilliant troll or you honestly believe these things -- either way +1 hilarious.
MetaCosm··on “Go’s design is a disservice to intelligent programmers”
Its purpose is to help ship products. It isn't sexy, it isn't fancy, it isn't interesting, it isn't groundbreaking. If it doesn't help you ship products, don't use it.

Go will continue to grow at the insane pace it has because it hit a sweet spot and cared about standard library and documentation. You will continue to see high profile successes because it doesn't try to be fancy, it tries to get out of your way so you can do that job of actually transforming data. So you can be a programmer and it can be a language, not a hobby.

I am a language geek, I write DSLs on a regular basis for fun -- and I love any language that is DSL friendly -- but for actually getting my day to day "must ship", "must work", "must scale" work done -- Go to the rescue. Great docs, easy to train people on, ultra-simple spec, multiple compilers, easy enough to integrate C code, and a really great vibrant community.

MetaCosm··on “Go’s design is a disservice to intelligent programmers”
Please point me to the large codebase your ported from Java to Go -- if you don't have actual data, just two people making up idiotic numbers let me get involved.

Go is 185175% better than Java and 8165% better than Haskell -- or making up numbers just makes us all look like goddamn idiots.

MetaCosm··on Interview with Go’s Russ Cox and Sameer Ajmani
What language is simpler to setup?

1. Download tar.gz (or zip) 2. Extract to <place> 3. export GOROOT=<place> 4. export GOPATH=<some_other_place>

... if you want to get fancy and make sure all your binaries are automatically in your path

5. export PATH=$PATH:$GOPATH/bin

... at this point setup is done, to build your first project using an external library

6. go get github.com/<user>/<library> 7. code, code, use <library>, zug, zug... save code in $GOPATH/src/<your_package> 8. go install <your_package> 9. $ <your_package> # runs it

this package can be shared because it is a static binary -- share with your friends, run on other servers, heck -- even cross-compile for other platforms with ease. Working on Linux -- but want to ship a utility to do X for a friend on Windows, no problem!

MetaCosm··on “Go’s design is a disservice to intelligent programmers”
As someone who has repeatedly done code generation on the C++ side to avoid build-hell (text files with expansion into C++ files) -- I can't agree with this. Your trivialization of complex C++ build times is nonsensical and reeks of inexperience -- it ruins everyday -- it ruins cycle time -- it sucks joy and creativity out of development... long build times are atrocious which is why insane effort is being spent to try to lower them in C++.

Lots of C++ "features" on banned on major projects because of complexity and build time issues -- templates, exceptions, operator overloading...

MetaCosm··on Nes emulator written in go
I think that isn't so much attitude as experience. That said, I will watch post May 15th and hope I am wrong, but I suspect despite the buzz some of the policies will be (broad adoption) language suicide.
MetaCosm··on Nes emulator written in go
"Stable" but adding new features every 6 weeks... which will get used by library authors... which will put all users on a 6 week upgrade cycle.. yey?

Or your favorite library author just likes nightlies, which effectively forces you to run nightlies to keep up with bug fixes if he isn't maintaining a separate branch (and who has time for that noise).

MetaCosm··on Nes emulator written in go
I was vague and unclear, entirely my fault. I really want Rust to be successful, I just think some of the decisions being made are shortsighted, so I will watch after release to see if I am correct, hope I am not.

> What is the impending 1.0 release if not that? We've been very clear all along that 1.0 means language stability. I see no "hand-waving".

I guess I don't consider "stability" and "backwards compatibility" the same thing -- in the "stability as a deliverable" post, it was specifically referenced that rust will "continue to evolve at a rapid pace and even accelerate!" (quoted from memory, sure it is somewhat off).

I think a constantly growing language (no longer changing cause old code has to work, but growing... which seems worse) and the fact that libraries will opt into new features and bundle use of those features with bug fixes will mean that the entire userbase is on a 6 week upgrade cycle -- 8 or 9 upgrades a year. I consider that a mistake. Furthermore, I consider the idea that the channels will not fracture the community to be very naive. I expect a lot of libraries will just live on unstable and tell users to "come with them".

> Why would you be worried that we're following precisely the schedule that we said we would?

You are correct and that was unfair. I can't fault the team for doing what they said -- even if to an outsider it seems like an insanely late time to be doing these types of refactoring.

MetaCosm··on Nes emulator written in go
Woah, that is a really cool idea. The idea of walkable state is neat... even if 1 FPS.
MetaCosm··on Nes emulator written in go
> It was written by pcwalton, one of the main driving forces behind Rust. (Unfortunately, it hasn't been updated for a couple months, so it won't build with latest rust).

Possibly the most telling sentence I have ever read about Rust. I am (well more honestly, was) excited by the language but until there is some sort of stability guarantee, it is a fun toy, a distraction.

The Rust community appears desperate to have continuous improvement at the core language level, and despite some hand-waving, it feels like they simply won't be pinned down. I will watch it with interested post the May 15th 1.0 deadline -- but since they shipped entirely new Path and IO in Feb -- added new language constructs and removed others (Alpha2)... I am worried...

MetaCosm··on Super Fuzzy Searching on PostgreSQL
Indeed, <10 millisecond search results on 14TB is amazing (absolutely wrecked what we managed to get out of any other indexer - order of magnitude faster). Honestly, Sphinx is a little ugly to setup -- but it is an absolutely amazing piece of technology.

We are currently in the process of shifting everything to RT indexes and have been absolutely delighted with the new beta features.

MetaCosm··on We Actually Built a Remote Team, and It Rocks
It seems that "high quality audio solution", in their case polycom, in our case mumble + good mics and "no videoconferencing" are among the most common thing I see in successful remote work setups.

For reasons I can't seem to put down on paper, remote setups that insist on lots of video conferences feel... oppressive in a way that working next to someone simply doesn't.

MetaCosm··on GXUI – An experimental Go cross-platform UI library
Ignorance is bliss.
MetaCosm··on We Tried Building a Remote Team and It Sucked
Have any of the core developers considered creating a very polished / simplified / professional supported client for business?

Stuff like "native look" on OS-X, some shiny features and ability to be easily pre-configured and shipped to people. So I could just give <person-X> a pre-configured little bundle and they just run it, it would generate the cert and do the wizard, but we would have stuff like default push-to-talk, a few default keys, etc.

MetaCosm··on We Tried Building a Remote Team and It Sucked
Yeah, I really think a polished / pre-configurable UI for business could be an amazing thing for Mumble (both for business, "use this binary" and for guilds / gamers ... same thing "use this binary" ... binary carries the config, etc). I consider Mumble like IRC, amazing but a bit raw. Someone is going to take shiny interface to it and make a killing in business.
MetaCosm··on We Tried Building a Remote Team and It Sucked
Is your product OS-X focused? One of the big things about Mumble for us was the cross-platform support, we have developers on Linux, OS-X and Windows all talking together every day.

What codex are you guys using?

MetaCosm··on A success story for Haxe
Holy crap, had no idea it was Haxe. That is a great success story (and fun game).
MetaCosm··on We Tried Building a Remote Team and It Sucked
An unexpected tool has helped tremendously for our teams in terms of remote work: Mumble (http://wiki.mumble.info/wiki/Main_Page).

Mumble is a cross platform, open source VoIP application. Often used for gaming in a group (like Teamspeak or Ventrilo). It has the idea of channels (rooms, offices, etc) is very high quality, low latency and low bandwidth installed on your companies servers in minutes, always encrypted... and clients are available for linux, windows, os-x, android, ios, etc.

So you can have channels like "Bob's Office", "Working on XYZ problem", etc. People can come into these channels to speak to you and can leave them. It feels a bit like an office environment, I can pop into Jay's office, talk to him about an issue, and go back to my office. I recommend people setup Push To Talk, which really helps create a silent non-annoying environment. Basically, me and another developer can be working on an issue, but maybe not actively talking, but in the same channel -- and there is blissful silence... I don't hear the fan, the cat, the fact that his wife came into talk to him for a minute, etc.

When I start my work-day -- I start it by logging into the mumble server (or more accurately, moving myself out the AFK channel) -- and when I end it, I move myself back into the AFK channel. This is a realtime communication system, async work still happens... well, everywhere else.

It is easy to be on all day as an "in-office" experience... when I am eating lunch, I create a "eating lunch" channel under AFK and put myself there.... We find it works so much better than video chat (or really anything else), is far more casual (like an office) and far more fluid... it is like having an open door policy. Sometimes I might be in a channel that says "Debugging Race Issue Go Away" -- but it technically doesn't keep anyone out, it is a request.

Using mumble day to day basically changed the experience from mediocre to great for us. We still use everything else, but mumble is our real time core, and slack is our async core.

MetaCosm··on Did a Human or a Computer Write This?
The box scores were really good. They are the two that got me, I guess the word complexity is low -- so templating can be high, but they felt to me very human-ish.
MetaCosm··on The ups of downs of porting 50k lines of C++ to Go
Too regular? I gotta be honest, that comment makes very little sense to me. My problem diving into most codebases (over 10 years spent contracting) was always multiplied horrifically by non-idiomatic code in language X.

Bob the developer has his own ideas about what + should mean... and uses gobs of hard to puzzle through magic all over the place. You need to run this C++-alike code through Bob's Pre-Processor -- but it is fine, cause if QT can do it, Bob can do it.

I want to read the code to understand the goal and the means for achieving it, not to be impressed with your brevity or cleverness.

Go was/is developed for teams, which means to some degree to the lowest common denominator. So far, in the last couple years, I have -- in general -- come to see these trade-offs as generally wise. Go is exceptional pragmatic for working on a team.

MetaCosm··on Stages of learning Go, with code examples
> No, my problem, is with the pre-supposed and agreed upon set of idioms ("idiomatic Go", "idiomatic Java", "idiomatic Python").

Idioms have to be agreed upon (by the community) else they have no value at all. Shorthand only works if both people in the conversation understand what it means.

It seems like you are upset that the idioms came from the standard libraries (which is where I believe the initial idioms for Go, Java, and Python stemmed from), but you also have to give time.

Play was released in 2007 -- Java was released 1995. So it took a number of years for that change to take place. During the between time, idioms helped move java forward, make it understandable, make developers able to communicate via code.

Go was released in 2012 (v1), so of course a lot of the idioms are going to stem from the standard library -- we don't have two decades of Gophers moving the ball forward and agreeing as a community what the idioms are, they gotta start somewhere.

> Java programmers familiar with the circa-2004 idiomatic BS over-reliance of GoF patterns and deep class hierarchies created code that was "idiomatc Java EE" but difficult to undertand, overengineered, and inflexible.

Idioms are not static. Please stop using that as a strawman to tear down. Idioms rot. If they are not what the community currently uses, they are not idiomatic.

> People keep saying that, but most Go projects I've seen are made by only few of people, maybe even a couple. Plus, people complain about even single-developer Go projects being "unidiomatic".

Current use and design goals are not the same. Google developed Go to be used at (many-people) scale, even if it currently isn't (which I don't agree with: https://code.google.com/p/go-wiki/wiki/GoUsers). It isn't like Go can stop individuals from using it.

MetaCosm··on Stages of learning Go, with code examples
> Where does this idiotic idea cames from that being "idiomatic" is some kind of virtue?

Because being able to communicate is a virtue. That is all idioms are, a way to improve communication. By being well understood in a given community or sub-set of a community, they create a lot of value and a type of short-hand for understanding code.

Idioms are not static unchanging things -- they are flexible, adaptable, constantly changing tools that assist in understanding language (both spoken and programmed).

> Idiomatic Java was the FactoryProxySingleton EE-wank fest from Apache, SUN, Spring and co. It was by changing those idioms around (e.g. how the Play framework wrote Java), that saner alternatives emerged.

Seems like your problem is with bad idioms, you seem to be a fan of the Play style -- both are just idioms, a simple way to improve communication.

> The de-facto idiom of PHP before 2010 was messy code.

That isn't even an idiom. An idiom is a well understood part of a language and community. "Messy code" isn't an idiom, it is just messy code. There is no value gained from it, it has no short-hand value and it is not well understood across a community.

> It started getting more coherent after that, but the preffered idiom now (e.g. for Zend, Synmphony, Laravel) is still a tedious, verbose...

But well understood by those in the space, a Laravel person can see another Laravel persons code and "get it" very quickly because they speak in the same idioms. It might be ugly to you, but it is useful to the community. Rails has its idioms, Django as well...

> Idiomatic JS pre-Cockford was ad-hoc BS. After Cockford it got a lot better, but then it changed again (can't say for the worse) with all sort of functional tricks and patterns that weren't in vogue before.

Idioms are about communities more than languages, JS toolkits vary rather wildly in what they consider idiomatic.

> In all of those cases, if they have stuck to the same "idiomatic" way from the start, it would have been worse.

Again, idioms are about what those native in the language or toolkit understand and can expect others to understand, they have never been (nor are intended to be) static, they are a reflection of what a community understands. They are shorthand.

> But within a whole language people should be able to experiment and not be called upon for being "unidiomatic" all the time. This is exceptially disturbing and often in Go, where there's some cargo cult in many advocates that they have found the be-all end-all way to code.

Go has a very strong core set of idioms that Go developers understand and expect. Breaking them has a significant cost to all future readers of the code and should be done only if it adds value in some ways. But a lot of questions in Go are far from settled, error returns as interfaces, concrete types or strings. I would be interested in explicit examples rather than vague cargo cult claims.

> It seems to me this push for "idiomatic" is also related to the Blub paradox. Blub programmers know a couple of ways of doing things (the "idioms" of their language) and cannot understand why someone might want to program with higher (or just different but convenient) concepts he learned in another language.

"different but convenient" can to be looked at in two different ways. The first is for you, the original developer. It is more convenient for you... but what about the next 5 (or 50) developers who are unfamiliar with the idioms in play, it will radically slow them down as they lack the shorthand to quickly understand it. Go is about programming at scale (in terms of people) and something that benefits one while slowing down all others is going to be looked down on. Of course, there are valid reasons, it is faster, it is lighter, it is X. But when you diverge from the norm, you better be willing to explain it in a comment, both the what and the why.

MetaCosm··on On Rust and Nim
"Joy" -- I feel like I spend all my time bookkeeping -- which is about the least fun thing imaginable. The guarantees keep me interested, but just barely at this point.
MetaCosm··on Why schools are failing our boys
What annoys me is when it is treated as a money issue. The US spends more per student than any other country, and among the most as a % of GDP (7.3%) well above the average of industrialized countries of 6.3% -- there are countries that spend more (Denmark, 8%) but not in absolute terms, only as a % of GDP. We spend upwards of $15,000+ per student per year and still can't get the job done.

This pervasive myth that it is a "not enough money in the system" does a great disservice to everyone involved and means we never discuss the REAL issue. There is tons of money, but the systematic problems are immune to money -- we could double spending and it wouldn't fix the issues. Parents don't care, teachers are protected by a powerful union so they don't care... student are treated as "must move" assets, standardized testing is held up as the be all, end all of measuring progress.

Instead of continuing to throw money down a blackhole that seems to not generate better outcomes, maybe it is time to rethink our approach... or admit that schools are tiny people prisons and useful filters and have very little to do with educating children, and more to do with segmenting and ranking them (which is useful, but can be done far more cheaply).

MetaCosm··on Inbox by Gmail: now in more places
I have been using the star/archive/spam method for a long time now in regular gmail. The inbox interface seems to slow down my flow, as it has little inbetween steps I find irrelevant.

I zip through my email in gmail using keybindings, se/e/! respectively with gmail set to go to next message automatically. Takes me a few seconds to go through about 20 emails, then I circle back to the ones I starred.

Inbox looks better, but feels a bit worse for me. Also, the no apps support as always is a downer, but us apps users are used to it.

MetaCosm··on Dell XPS 13 Review
Indeed I am, my "minimum useful" amount is 16GB -- my desktops are 128GB, and my current "monster laptop" is 64GB. The in-flight state on the software I work on can get well over 8GB with our test dataset.
MetaCosm··on Dell XPS 13 Review
One can hope, currently as my next portable, I am looking at the Asus UX303LN (great memorable Asus names...) but haven't found much info on putting Linux on it yet.
MetaCosm··on Dell XPS 13 Review
I was excited until I read 8GB max... that can't be right can it? What modern developer machine would have an 8GB cap?
← PreviousPage 3 of 23Next →