The awesome power of pretending - <AUTHOR> http://russelldavies.typepad.com/planning/2009/11/playful.html <comment><USER2> A note with respect to the portions mentioning gaming: one of the ideas floating around recently in game design is a move away from the term "fun" towards the term "engagement." Why? Because "fun" implies a certain kind of candy-coated, theme-park image. It straight-jackets your views. "Engagement" can apply to all kinds of experiences - serious, practical, romantic, frivolous - so it allows a broader vision for the interactive medium.

</comment><comment><USER3> Kind of an aside, but: reading this, I found that all the embedded pictures/videos actually made it harder to follow because they broke my concentration on the narrative. A few pictures may improve an article, but there are limits.

</comment><comment><USER4> The RJDJ iPhone app referenced towards the end of the article is brilliant: <http://www.rjdj.me/></comment>


Clojure 1.2 RC3 released - <AUTHOR> http://groups.google.com/group/clojure/browse_thread/thread/c6551e345255bced

<comment><USER2> Not much on that link - this has more: <http://github.com/clojure/clojure/blob/1.2.x/changes.txt>

</comment><comment><USER3> Is this an "it's done when it's done"-style release cycle, or is there a finite number of RCs planned? Given how small the changes per RC seem to be, surely 1.2 final can't be far off?</comment>


Meet the laptop you'll use in 2015 - <AUTHOR> http://www.computerworld.com.au/index.php/id;943721494;fp;16;fpid;1 <comment><USER2> This is a repost.

<http://news.ycombinator.com/item?id=147559>

</comment><comment><USER3> Pssh we won't use laptops in 2015, we'll all have microprocessors embedded in our brains!</comment>


Show HN: Bisectercise – A simple repo to help you learn git bisect - <AUTHOR> https://github.com/bradleyboy/bisectercise <comment><USER2> Great idea for a simple tutorial.

</comment><comment><USER3> Interesting, I wasn't aware of this feature. Thanks</comment>


Russia Jumps into the Race to Build a Hyperloop - <AUTHOR> http://www.bloomberg.com/news/articles/2016-07-07/putin-mind-melds-with-elon-musk-as-russia-funds-hyperloop-dream <comment><USER2> People in this discussion keep on referring to the levitation as "maglev." It is a form of magnetic levitation, but it's significant that they're planning to use Halbach arrays. Musk's original idea was to basically "fly" the pod inside a low-vacuum tube using air bearings on the bottom of the pod. Halbach arrays basically fly above a series of passive metal coils. The faster the Halbach arrays are traveling, the stronger the field, which lifts the pod, which decreases the field, lowering it again. The system experiences negative feedback. It's self regulating. This makes it much cheaper than other forms of Maglev.

The advantage over Musk's original idea, is that Halbach array levitation doesn't require the tight clearances that air bearing levitation would require. Apparently, the cost of manufacturing linear arrays of aluminum coils is cheaper than ensuring tight tolerances.

</comment><comment><USER3> I don't understand why we haven't seen decently sized scale model before starting full sized tests. It seems that sending packages over a few miles would be an interesting viability test... Connect a bunch of oil pipes, design a self-driven transporter and see what the issues are. Then the public could also see the thing working as well. It's weird to me the groups so far have just started with massive designs.

<comment><USER4> How about a demonstration system spanning the island of Manhattan: [https://en.wikipedia.org/wiki/Pneumatic_tube_mail_in_New_Yor...](https://en.wikipedia.org/wiki/Pneumatic_tube_mail_in_New_York_City)

The thing about hyperloop is that none of the technology is new...or even recent! The pneumatic mail system in NYC was in use between 1897 and 1953. What's new is that in the 1950s the energy economics made it cheaper to replace pneumatic tubes with automobiles. Fast forward 60 years and the energy economy has been turned on its head, thus hyperloop.

<comment><USER5> > The thing about hyperloop is that none of the technology is new...or even > recent!

...or even works.

It's quite clear that all this hyperloop hype is a publicity scam targeted at states with deep pockets and whose governments are gagging for some propaganda talking point. The people behind hyperloop dedicate themselves to one thing only: generate hype around the project and jump from publicity stunt to publicity stunt.

The end goal is to get a government to shelve a wheelbarrow full of hard cash for them to waste the money building a prototype for propaganda purposes.

In short, it's the Simpson's monorail episode.

<comment><USER6> It seems like you are much smarter than the rest of us.

Would you please tell us plebs what the fatal flaw is?

<comment><USER7> Capacity seems like a killer flaw to me. Just doesn't make economic sense compared to rail.

<comment><USER5> Capacity is a problem, but not a significant one. The problem is the cost to build, maintain and operate the infrastructure required to comply with the speed requirements, the fact that most of the technology doesn't exist, that the physics issues of a vehicle interacting with a foundation medium at very high speeds are far from being tackled (commonly referred to as trans-rayleigh trains), and that even the most basic issues of the propaganda talking points are yet to be tackled by the project.

Hyperloop reminds me of the Simpson's monorail episode in many ways.

</comment></comment></comment></comment></comment></comment><comment><USER8> Russian politicians make crazy promises all the time, and deliver almost never.

All their recent tech projects have been disastrous, either technologically or financially, or the funds were simply stolen.

</comment><comment><USER9> Rule of a thumb: every time you hear news about some Big Hairy Audacious Goal coming from Russia, it's about somebody trying to create an opportunity to fleece more federal money.

</comment><comment><USER10> Incredible... the vac-train turned maglev... from the ultimate master of modern marketing, Elon Musk.

<comment><USER11> Does it matter? He's seriously stimulated a market that has been fairly stagnant for decades, making it an exciting and interesting field again, and encouraging engineers who previously weren't interested in transportation to become interested. All without the hassles or complications of having to form and run the companies himself, or have to pony up the cash. His only investment has been the work on producing the original whitepaper, and the blast radius is huge.

<comment><USER10> Does it matter? I don't know, we'll have to see if something other than some money going nowhere actually comes from this. If it's just "excitement" and some lucky folks making millions... don't expect me to get in a tizzy.

Edit: If however this leads, by some longshot, to a functional maglev system in Cali or anywhere else in the US? Yes, I'd change my tune then.

</comment></comment></comment><comment><USER12> This will end as well as the "nanomachines" project did. By which I mean, nothing will happen, but a few people will get a bit richer.

<comment><USER13> That assertion doesn't really make sense. Nanomachines are still theoretically possible but we don't have the technology to really make them shine yet. But hyperloop? Nothing new really needs to be discovered. It's simply an engineering task at this point.

So why do you think it would end like nanomachines? Simply Russian politics?

<comment><USER14> The only way to complete it in Russia is to buy it. But it is impossible to buy it because nobody completed it. So it will fail. If you want to understand why every big government projects fails in Russia, just look at salaries of workers in government sector.

<comment><USER13> Fair enough. I don't know much about Russian politics.

</comment></comment></comment></comment><comment> Const-me About two weeks ago, Russian president Putin told they are going to have teleportation by 2035:

[http://www.telegraph.co.uk/news/2016/06/22/russia-aims-to- de...](http://www.telegraph.co.uk/news/2016/06/22/russia-aims-to-develop- teleportation-in-20-years/)

Isn't teleportation more practical than a Hyperloop? It doesn't require the land, nor the power to make and sustain the vacuum…

<comment><USER15> Typical nonsense brought by main stream media to discredit a politician they don't like.

Apparently enough people here buy this as this is the top rated comment.

<comment><USER16> Source in Russian: [https://lenta.ru/news/2016/06/22/teleportation/](https://lenta.ru/news/2016/06/22/teleportation/)

<comment><USER15> Every word Putin utters in public is recorded on video and lenta.ru is small opposition media.

If Putin really said this it would be all over the largest media in Russia.

Edit: The article you link to doesn't even state that Putin said this, why do you even link it here?

Edit 2: The only teleportation mentioned in the article is using a quantum effect to "teleport" information, not physical objects.

<comment><USER17> lenta.ru _was_ something like "opposition media" some time ago, but not anymore. In 2014, all management was fired and almost all the journalists left. So now lenta.ru is as state-controlled as most other media in Russia.[1]

> If Putin really said this it would be all over the largest media in Russia.

Pretty much all "largest media" in Russia are state-controlled.

[1] [https://en.wikipedia.org/wiki/Lenta.ru](https://en.wikipedia.org/wiki/Lenta.ru)

<comment><USER15> > lenta.ru was something like "opposition media" some time ago, but not > anymore

Didn't know that, thanks

> Pretty much all "largest media" in Russia are state-controlled.

I know, this is a problem. But when we are talking about what Putin actually said or did not say these media are very accurate. Much more so than our Western media.

</comment></comment></comment></comment></comment></comment><comment><USER17> As most tyrants, Putin is attracted to flashy expensive projects allowing him to show off his greatness and power. Economic viability is not a big factor there, neither is the actual benefit vs. costs to the citizens - the only citizen whose opinion matters is Putin himself. This makes it attractive for some big projects - you only need to convince one person, and nothing else matters.

However Russia would not be a good place to do this, the level of corruption is astonishing and the number of local interests one will have to satiate would be enormous. And the manufacturing culture is not that great, which means most of things will need to be imported and assembly will have to be very tightly controlled, and even then screwups will happen a lot. So I would estimate the probability of success as very low.

BTW: I wasn't aware there was a "race". Who exactly is racing?

</comment><comment><USER18> I've never been able to find an actual technical description of the hype-loop.

Wasn't it downgraded to maglev at some point?

<comment><USER19> The original air-supported Hyperloop concept, with clearances of a few millimeters between vehicle and tube, isn't looking good. The MIT prototype uses maglev suspension and more clearance, which is safer.

Maglev in vacuum or near-vacuum is not a new idea; it's been discussed for decades. The question was always whether the vacuum tube was worth the trouble. The Shanghai airport maglev reaches 250 MPH right now in normal operation, and air resistance isn't the limiting factor on speed. The Japanese L0 Shinkansen reaches 375 MPH in tests, with an operational speed of 315 MPH. The main problem with maglev is that the track costs too much.

The main claim for Hyperloop is that the tube is cheap. The original cost estimates assume using someone else's right of way and unreasonably cheap tunneling. Also, to get the straight right of way, the endpoints have to be somewhere inconvenient, well outside major urban areas.

<comment><USER20> The concept of a vacuum tube dates back further. You can look up Evacuated Tube Transport (ETT), which is basically the core of the Hyperloop idea.

There was one company that was proposing building an ETT between Chattanooga, TN and Atlanta, GA in the US; reducing the two and a half hour drive to less than twenty minutes. It never really got past the environmental planning phase (plus Chattanooga didn't want Atlanta commuters, because the South and anti- progress).

A successful tube transport system could be technologically ground breaking. Theoretically they'd be faster than airplanes and use a fraction of the fuel/energy (once they're constructed of course; not counting development costs).

But they have all the same design problems of monorails (the worst and least expandable form of public transportation). Difficult to switch lines and difficult to extend. Also you get the additional difficulty of turning, which apparently is very difficult in ETTs.

<comment><USER21> > But they have all the same design problems of monorails (the worst and least > expandable form of public transportation). Difficult to switch lines and > difficult to extend. Also you get the additional difficulty of turning, > which apparently is very difficult in ETTs.

I see the fan group for monorails has a response on the switches [http://www.monorails.org/tMspages/switch.html](http://www.monorails.org/tMspages/switch.html) \- what are they missing?

<comment><USER22> Monorails operate at relatively low speeds. It's much easier to switch something running 20 mph than something at 200 mph, particularly because you start running into issues with the acceleration curves and thus having the two lines angle off appropriately.</comment></comment></comment></comment></comment>


Winners of the 2015 Pulitzer Prize - <AUTHOR> http://www.pulitzer.org/awards/2015

<comment><USER2> Congrats to Adam Zyglis of the Buffalo News who won for his editorial cartooning—I was disappointed when Tom Toles left for The Washington Post.</comment>


Exploring the Tesla Model S CAN Bus - <AUTHOR> http://www.instructables.com/id/Exploring-the-Tesla-Model-S-CAN-Bus/?ALLSTEPS <comment><USER2> Many cars, especially the smarter kind, have multiple CAN buses. A CAN bus is relatively low bandwidth by today's standards, so manufacturers have had to resort to splitting them up to increase effective utilization, (which also leads to its own problems when a device on Bus 1 needs to talk to a device on Bus 2).

I would expect this user-accessible (give-or-take the connector) bus is only the monitor/dashboard bus, to avoid possibly fucking up the timings on the more loaded and critical buses.

<comment><USER3> Apparently busses are connected via gateways: [https://www.youtube.com/watch?v=7h7LWeET1fI](https://www.youtube.com/watch?v=7h7LWeET1fI)

<comment><USER4> They are - but they don't forward all messages. All gateways are configured in detail which signals should be forwarded from Bus A to B and which transformation functions should be applied.

This means you won't get access to any signal from any bus.

<comment><USER2> Yeah, I know of at least one company who spec'd their gateway module for something like 20% message bridging, but expanded use mean they're way beyond that and facing the limitations of their original design. :)

</comment></comment></comment></comment><comment><USER5> The physical connector is J1962, not the "OBDII" port. OBDII encompasses multiple network layers (datalink, physical, etc). Prior to the J1962 connector there were other physical connector allowed.

<comment><USER6> According to Wikipedia (and other research I did) "The OBD-II specification provides for a standardized hardware interface—the female 16-pin (2x8) J1962 connector." OBD-II mandates the J1962 connector, so I wasn't so much wrong as slightly vague. In my case, I was referring to the whole system, meaning the connector and what passes through it, so I lumped everything together under one moniker.

Thanks for pointing out the difference though. I'll update the Instructable to reflect that.

<comment><USER7> The Instructable is awesome, thanks for writing it up! Do you have a guess as to what higher-layer protocol Tesla uses (like CANOpen [http://en.wikipedia.org/wiki/CANopen](http://en.wikipedia.org/wiki/CANopen))? I used to work on devices with ECUs that communicated via j1939, and I'd be curious if Tesla uses a known standard on top of CAN, or their own thing.

<comment><USER6> No, thank you! I nearly hit the roof when I saw it had over 14K views on Instructables (I thought it was an April fools prank) when I checked earlier this evening. In fact it's now up to 16K+, thats 2K views in only a few hours, it took me 2+ weeks to get that kind of viewership when I originally posted it.

As for the protocol, so far Tesla isn't using much standard stuff, everything from the connector to the codes is proprietary, not surprising considering that they aren't starting from a legacy platform (like Chevy, Ford, Toyota). Frankly I'm more of a hardware guy then an infosec expert, so the communication protocols seem a bit abstract to me (got to do some more reading), however, from what I've gathered based on jobs postings and forum chatter on TMC (Tesla Motors Club) Tesla might have worked with Vector group to implement CANOpen, but thats purely speculation at this point.

If you are interested in helping decode the bus or getting a closer look at the protocols used, just let me know and I will send you an email with more details. Many hands make light work as they say.

<comment><USER7> I would be interested in taking a closer look, although I can't guarantee I'll have time to help decode. If you feel like it you can shoot me an email at the address in my profile! Thanks again.

</comment></comment></comment></comment></comment><comment><USER8> Aw man I read this and thought they were getting into public transportation.

Then I thought about it, and it seems feasible to me. Since the lines are predictable and buses tend to end up at the bus terminal we can just put a charging station there. Since we're doing hybrid buses anyway might as well go all the way?

</comment><comment><USER9> If the Model S has all the sensors and actuators for automatic driving, those should be accessible. The cameras might not be on CANbus (it's too slow) but the brakes, steering, powertrain, and radars probably are.

<comment><USER2> I certainly hope those aren't accessible! That's safety-critical hardware, I don't want some overconfident geek messing up their car's driving systems.

<comment><USER10> Everything is accessible, it's just a question of how many layers of plastic you have to remove to get there. I wouldn't call the bus he found in this article user accessible but he still found it by removing some cover.

</comment></comment></comment><comment><USER11> Was slightly disappointed it wasn't about a Tesla bus :) I have been secretly hoping they produce a VW-style camper van.

<comment><USER12> I want to hear a Tesla bus when it makes this sound: [https://youtu.be/LqFWvAplIKc?t=2m9s](https://youtu.be/LqFWvAplIKc?t=2m9s)

<comment><USER13> There are many trolleybuses with bigger torque.

<comment><USER12> But muni is slow and shitty; not actually exhibiting large torque.

</comment></comment></comment></comment><comment><USER14> The fact that you can access the HV BMS directly is definitely concerning, but it's tough to make any comment on how big a security risk that is without poking around myself. That said, I really want to try this out with CANtact + CANard: [http://cantact.io](http://cantact.io)

Is anyone willing to lend me their Model S, possibly permanently?

</comment><comment><USER15> Tried this, bricked my car. :(

<comment><USER12> You can rent out your bricked car on airbnb: [https://www.airbnb.com.au/rooms/4182729](https://www.airbnb.com.au/rooms/4182729)

<comment><USER16> The question is, is Uber going to swallow AirBnB, or AirBnB Uber? Distributed roving cities of the future.</comment></comment></comment>


Shazam for TV Now Works With Any Show - <AUTHOR> http://mashable.com/2012/09/17/shazam-for-tv-any-show/

<comment><USER2> Shazam for music was an amazing invention that has really helped a lot of people.

Shazam for TV reminds me of QR codes that take you to websites - kind of pointless. There have been multiple ways of finding out what show you are watching for decades - through closed captioning, through tv guides, even googling from dialogue. The benefit is marginal. The page with information on the show and the actors may be useful, but google could find you something like this too.</comment>


I don't like Python. Does that make me a bad person? - <AUTHOR> I don't like Python.
I love C. I like C++ too. I used to write a lot of Java when I was a kid (as in high-school kid) but now that I've written quite a bit of C and C++, Java seems more like a toy language. I did enjoy Java back then, however. I yet to do any major work in C#, but it seems to be a powerful language, especially when handling certain kinds of complexity.
I've been learning LISP on weekends for two weekends now, and I find it interesting. I know little bits of Haskell (am planning to learn it later this year) and seem to like it too. Maybe I like the idea of liking Haskell, I'll know for sure once I actually start writing Haskell.
Coming back to the point - I don't like Python. I've never liked it. I've tried working on various Python projects but have always found some or the other excuse to prematurely back out. And mind you, I love coding - I spend most of my time writing code or learning new stuff about code.
My question to the hardcore python lovers is this (and mind you, by hardcore I mean the kind of people who wrote Exaile, not the kind who hack up a Python script every now and then to organize their iPod): No doubt many of you have come from C / C++ / LISP backgrounds. What is the paradigm shift you experienced? I look at a piece of C code in a certain way - how do I look at a piece of Python code? How do I think about Python? How do I think in Python (copied that one from Bruce Eckel)? <comment><USER2> Yesterday there was an interesting link on HN comparing NLP in Python vs. other languages: [http://nltk.googlecode.com/svn/trunk/doc/howto/nlp- python.ht...](http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html). I think this article shows the clearness of the Python language - - and this clearness and simplicity is the reason why I love to code in Python.

<comment><AUTHOR> I agree that short python samples are as clear as a high level language can possibly be. Implementing algorithms, for instance, becomes incredibly easy in Python. I face problems when Python programs get above a certain length.

I've done some Django programming in the past. A view gets a request object (pardon me if I'm wrong or if this has changed recently) and is supposed to then render the response (or something similar, I don't remember exactly). Now what is a request? If Django were in C, I would know _what_ a request object really was, grep for it, and look up the header file. If request has a GHashTable named post_data, I don't think I need two guesses about what it exactly is. Same goes for C++ and C#.

Then you've inconsistencies. The same method may return a string object or an integer on different calls. And this happens in practice - I remember when I was (trying to) model a relational database in Django, I found a ManyToMany field returning (when invoking values ()) a list of dictionaries instead of a list of Model objects (which I was expecting).

Of course, if I was not dumb enough to not read the documentation I might not have stumbled; but the point is that Python _allows_ this to happen. And since I don't have the benefits of a compiler, anything other than basic syntax errors (the ones I can catch by calling py.compile) explode at runtime.

The thing I've begun to notice that scripting languages tend to require you to hold the entire structure of the program in your head as you code. In C++ you know that unless you've gone out of your way to do some casting magic, a string get_foo () will _always_ return a string. And you can _always_ do get_foo ().c_str (). In python you're never sure.

<comment><USER3> You seem to be complaining that when using a language new to you in combination with a large framework written in that language you would have been forced to read the (very good) documentation to figure out what was happening.

The inconsistencies you mention are (in a well written code base) very rare. If you call a method get_name() odds are you are going to get back a string. If you seem to randomly get back an int or a dictionary or a datetime object it's a pretty good sign the code is foobar'd. Good Python programmers don't abuse the dynamic nature of the language. Methods should return predictable types (documentation is important), it might return different types depending on the input but this should be documented and obvious (say a parse date method that returns a datatime object if you pass it a string containing a date and time). The values() example you use is very clearly documented as returning a ValuesQuerySet that supplies dictionaries not models ([http://docs.djangoproject.com/en/dev/ref/models/querysets/#v...](http://docs.djangoproject.com/en/dev/ref/models/querysets/#values- fields)).

In a number of years using python, the standard library and 3rd party libraries I've never been left wondering "If I pass X to this method what the hell type am I going to get back". Just like in C/C++ I need to remember it returns a list or a string or a dictionary but that's usually where the mental overhead stops.

Python is dynamic which means it's flexible. Flexibility is usually reached by sacrificing simplicity so Python encourages testing and good documentation. I would argue that these are both necessary features of any good code base, Python is just more upfront about this than a number of languages.

<comment><AUTHOR> I'm not really not complaining about anything - the shortcoming clearly lies within me and not in Django or Python.

The purpose of this thread was merely to gauge what kind of paradigm shift people who were used to programming in C or C++ generally experience when they move to Python. Some people seem to find making the jump easier than others - I personally have found it difficult and have made little progress so far. Since I generally consider myself good with computers, I find this a little unnerving.

</comment></comment></comment></comment><comment><USER4> I'm a guy from a C/C++ background who did linux kernel development, and picked up python along the way and used it to do desktop tools. I used python (without knowing any of it) to write a disassembler for a project I was doing in 2003 on a non-x86 processor. It took me 5 days to learn the language enough to do so and to write the entire tool, at which point I "got it".

First off, Java isn't a toy language. You've characterized it improperly. Java is a bureaucratic language. You have to cross your t's dot your i's, fill out your requests in triplicate at the FactoryFactoryFactory to get the objectOfYourDesire. Why is this so?

This comes back to how C++ works on projects, especially large projects and midsize projects with a couple mediocre programmers thrown in (because, in commercial software development, you rarely get control of your team). C++ does not work well for large team development unless 1> You have very capable people 2> and you can fire everyone who steps outside the "defined okay subset" of C++ you use on the project. The language is too big, certain parts make it too uncertain, etc, for people to just willy nilly use all the language features. So Java, is basically Sun's "redoing" of C++ where they took its wild west nature, and made a BureauDisney version where you can't do a dozen things that happens in C++ all the time when good programmers go off the reservation or bad programmers enter the equation at all.

C++ has uses, but it's the sulfuric acid of programming languages: you have to have good personnel control and fire those who screw around outside the boundaries of the right style. A programming group with one guy programming like C with classes and another guy programming like it's Ocaml without garbage collection, and you're in for a mighty piece of hell.

So that's where Java came from. That's why it is what it is, and I hope I've highlighted a non-business issue with C++ that comes up from it's overabundance of "understanding breaking powers" which don't mess well with total programmer freedom.

Now lets look at what python was, and what it is now: Python was originally designed as a substitute for the pascal/BASIC line of programming languages (specifically a language called ABC). It was designed to be very very clear. It still _is_ very very clear. It is still quite terse compared with C++/Java/C, but it's wordier than perl and ruby, but very much clearer for even non-python programmers to decipher much of the time.

Over time, it grew into an Application development and webserver development language. Why?

It has a very easy way to interface to C code. This is important, because C does great module level integration, but once you get at the system level, you start to get issues with namespaces, tracing bugs, etc. So python became an alternative for tying C code together.

It writes very quickly. While you may not understand how to write it quickly yet, usually python/ruby/perl will be quite a bit more productive on a feature basis than Java/C#, and tons more productive than an equivalent C/C++ project. This has to do with the fact it takes very few lines of these languages to "do a job".

For you currently, you're possibly less productive in python right now than you are in C++; I've honestly found this doesn't hold true more than 40-80 hours into learning python development while doing a real project for almost anyone who can handle commercial C++ software development. The C++ people do python faster than they do C++ and it has many fewer issues in the end than C++ they would have wrote. We use weave.inline or something else to speed up the inner loops with some native C, if even required for that application, and all is good, it works just as fast for the user or application, and was completed much faster with much less obtuse bugs.

If you spend those 40-80 hours on the language, you too will likely be a faster developer in python than C++ for many features.

Some tips: You are not doing C, you are not doing C++, you are not doing Java. Don't pretend you have to do the bueracracy that those languages require. If you write a python program with absolutely no functions, it will run just fine. So if all you need to do is process a small amount of text or open a little server, you can do this in a flat file with just a series of lines of code striaght out of main() in a C program. However with the size and completeness of the python standard library, you'll rarely have to write the rest of the functions.

Secondly, it's important to learn idomatic python today. If you write things like "it's supposed to be" in python today, you get speed on par with C/Java (or only 3-5x slower), and it's really freaky to see an interpreted language do that.

Thirdly, it's important to _learn and use the standard language rather than writing code_. Python module of the week blog is a great resource to do this: <http://www.doughellmann.com/projects/PyMOTW/> Much of python's power comes from a stupidly complete standard library that does much of what you need to do so allows you to write 20 line programs.

Lastly, learn _easy_ ways to fall back on C/C++ in python. This way when you use python for an application it turns out it's too slow for, you can still add a bit of C/C++ to get the speed you need. You can embed C++ inline and have it compiled on the fly with weave, so I suggest you learn that.

<http://www.scipy.org/Weave> for getting it

<http://www.scipy.org/Cookbook/Weave> for examples of use

<http://www.scipy.org/PerformancePython> for examples of how fast this runs vs other things.

<comment><USER5> """ Java is a bureaucratic language. You have to cross your t's dot your i's, fill out your requests in triplicate at the FactoryFactoryFactory to get the objectOfYourDesire. """

This is such an absolutely fantastic way of succinctly describing why I dislike Java so much. Bureaucratic!

Absolutely fantastic post, get this on a blog somewhere. I seriously wish I could upvote you more.

<comment><USER6> It's also a great way of specifying why I love it. Having been bitten on the ass one too many times by typing problems in a Python project, the feeling of confidence I get from doing the Java bureaucracy (to some extent mitigated now I do Scala instead) is something I have really come to love.

It's like a security blanket for me.

<comment><USER7> (Disclaimer: Not meant as flamebait)

Not to be a prick, but if you're having "typing" problems with Python, you're using it wrong.

Types are almost irrelevant in Python. What matters is whether, in a given situation, the method you're calling is supported and does what is intended. The actual type/class of the receiving object doesn't really matter, ditto for any arguments you pass to the method.

While this may seem highly unsafe and brittle, it has important benefits. You can just hack up some code that "just works" in a few minutes, without having to sacrifice a goat to the compiler first, making sure that all the correct types are specified, subclasses are defined, interfaces are implemented completely, etc. The rigid type systems in other languages often require this and more; making changes to your software becomes a chore. Rapid prototyping this is not.

In Python, when used correctly, you don't have this problem. Write a bit of code, write a test, run it, and decide what to do next. Ideal for testing out ideas. It doesn't work? Throw that shit out and write something else; two minutes later you'll be testing your new code again. Yes, you do need to have unit tests, but the same is (or should really be) true for most languages. Just because something compiles, doesn't mean that it does what you want. (Except maybe in Haskell. :-)

Interestingly, the quickly-written prototype might well be good enough to become the actual production code, with some additions. Just keep you tests up-to-date, for reasonable use cases, and there's no reason why your code shouldn't work in real life. Sure, that function foo(x) that wants to call x.bar() will fail if you call it with an x that doesn't support the bar() method. So don't do that, then! ;-)

Anyway, to summarize, I personally would much rather have Python's flexibility, paired with unit testing, than Java's lack of flexibility paired with compiler checks.

<comment><USER6> Well of course I'm doing it wrong, I got crashers during execution :)

I understand the concept, but sometimes in a medium-size project, you just accidentally send the wrong object back. It happens. But Python won't tell you, and it'll blithely wait for the code to get exercised before dying. I don't remember exactly why I was having this problem, but the bug wasn't shallow, and required a certain confluence of exceptions to occur before it would fire. The sort of thing that would even escape most unit testing.

I would never force static typing on Python or Ruby or upon any language that didn't want it, and when I switched to Python I was very pleased with dynamic typing. However, I find myself much happier with the stronger compiler checks. Writing a medium project in Python now frays my nerves!

<comment><USER7> "I don't remember exactly why I was having this problem, but the bug wasn't shallow, and required a certain confluence of exceptions to occur before it would fire. The sort of thing that would even escape most unit testing."

I agree that this does indeed happen... I think it's a matter of, the more flexible a language is, the more rope you get to hang yourself with, even unintentionally and unexpectedly.

(Anecdote:) For my work, I have been developing and maintaining a fairly large Python code base... (~70K lines... comparable to about 700K lines of Java <wink>). Another developer changed a module so it would access the database upon importing, which was a no-no (IMHO), so I changed it back, using a class that gets the desired info from the db upon instantiation, and some sort of singleton construct so the same instance would be reused. I also decided to write a test to check that when this module was first imported, there would be no instance of said class yet. To make sure it was a first import, I removed any references to the module from sys.modules, then did an import. This worked great... until I ran the whole test suite using nose [<http://code.google.com/p/python-nose/>], which has its own ideas about import order and such. This turned out to be surprisingly hard to fix... a non-shallow bug that wouldn't even be possible in less flexible languages.

<comment><USER8> Regardless of the language, when you get to over 50K lines of code, cute tricks need to go out the window.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I've been using Python since around 1996. Back then I had used, or was still using, C, C++, Turbo Pascal, Delphi, BASIC (groan) and assembler.

Python was so much more high-level than all these other languages that it was staggering. It was pretty weird to use it at first. Where are all the declarations? What are these "lists" and "dictionaries"? You mean I can just stick any old thing in an object or even a class? Etc.

Soon it became obvious how much more powerful this new language was, and I enjoyed replacing reams of Pascal/C code with a few lines of Python. I tried to use it at work too, but failed because it was considered "unmaintainable" by the powers that were (this was around 1999-2000). Of course, this just fueled the feeling of having an obscure but superior language rebelling against the big evil statically typed empire. :-)

Anyway, this used to be some of the appeal of Python. I suppose it still applies to some extent, although since then, Python has been passed left and right by languages that are more powerful, more flexible, more functional, more "fun", and whatnot. Nowadays there seems to be a meme going around claiming that e.g. Ruby is fun and flexible, while by contrast Python is boring and conservative. It wasn't always like that. I distinctly recall people discovering Python and exclaiming that "programming is FUN again!".

Then again, all of these things are in the eye of the beholder, mostly. If you don't like Python, no big deal, especially if you have both lower-level (C, C++) and higher-level (Lisp) languages at your disposal. (Personally, I used to think that Ruby was butt-ugly and uninteresting... these days, I have taken more of a liking to the spirit of the Ruby community, which (perhaps ironically) reminds me of Python's in the 1990s.)

</comment><comment><USER9> <http://tryruby.org> You'll probably still dislike it. But at least you can feel more comfortable comparing python to something.

I prefer Ruby, but appreciate Python and Perl. I come from C/C++ coding for 14 years.

</comment><comment><USER10> Yes, you're a bad person. We're assembling a re-education camp for People Like You right now.

</comment><comment><USER11> The paradigm shift is that in Python the most direct way is best.

Examples.

In Java, accessor methods are considered good style. In Python, directly accessing a member is better. (more concise, makes client code clearer.) If you need to do magic, you can use properties.

In C++ and Java, you use inheritance to denote which classes have a given behavior. In Java, you also use interfaces. In Python, you simply give a class the needed method(s). (I.e., you use duck typing.) That flattens or removes lots of class hierarchies. If you need to do magic, you can use isinstance(), issubclass() or hasattr().

In Python, you use the built-in types a lot. Many problems decompose easily to lists, sets and dictionaries. That reduces code dramatically. Java and C++ STL's containers, in contrast, are so clumsy they make me look for ways to avoid them. If you need to do magic, you can subclass the built-in types or build new types with the same methods as the built-ins.

</comment><comment><USER12> Python is a great language. But there is nothing bad about preferring one language/style over another. There are great programmers in all the camps.

Try the other two scripting languages - Ruby and Perl. I would prefer Ruby. See if you like the way things are done there.

If you find that you are more at home with this language than Python, try analyzing what makes you prefer it over Python.

I would suggest you to start with the basics of the Ruby language, and then try building a simple web app with Sinatra. I find the Ruby style much more comfortable than Python.

But if you don't like any of these languages, its still well and good. If you get can shit done with C#, thats all it counts.

</comment><comment><USER13> A lot of us don't like Python. It's a language with a mediocre design, a somewhat frustrating syntax, and a stubborn refusal to commit to such essentials as real closures and lambdas.

It's basically a language written by a group of people who don't trust you (as a Python user) to be knowledgable and educated. Decisions have been made based on the assumption that you are bad at your job.

Now, everyone seems to comfort themselves with the notion of making it "easy for maintenance"; repeating "I am smart, surely, but not everyone can be as smart as I am." But this is ultimately a dodge that feeds into the problem endemic to our industry: a disdain for everyone else and everyone else's methods if they differ slightly from our indoctrinated best practices.

<comment><USER14> > It's a language with a mediocre design, a somewhat frustrating syntax, and a > stubborn refusal to commit to such essentials as real closures and lambdas.

I agree about closures, but why lambdas would be so much better than named functions (already available)? I think named functions help code readability, which is among Python's top goals.

<comment><USER13> > I agree about closures, but why lambdas would be so much better than named > functions (already available)?

Because sometimes you want to conditionally create functions on the fly. Named functions are a very awkward way to do this.

It is unfortunate that we even have to have this argument. Anyone with significant experience in functional programming can tell you how useful unnamed functions are.

And it's important to realize they are not necessarily anonymous in _local scope_. They're anonymous in the _global scope_.

> I think named functions help code readability, which is among Python's top > goals.

Anonymous Lambdas need not be a detriment to readability. Why do you think it would be otherwise?

</comment></comment></comment><comment><USER15> You owe it to yourself to learn at least one dynamic high level language. The advantage of Python (and Ruby, which I prefer) is that, for the right tasks, it's an extremely productive language. Compared to C++ or Java you have to write far, far less code and you can usually find good libraries that reduce the amount of code you have to write even further. Python doesn't have the elegance or flexibility of Lisp, but it's an extremely _practical_ language for getting anything done that doesn't need C++ performance.

<comment><USER16> curious what you prefer about Ruby. i'm very familiar with python, and have only looked at Ruby long enough to decide (mistakenly?) that it wouldn't do anything for me which python doesn't already.

<comment><USER17> Given a = [1, 2, 3, 4, 5]:

        Ruby:    a.map{|i| i+1}.reject{|i| i%3 == 0}.map{|i| i*i}
        Python:  [i*i for i in filter(lambda i: i%3 != 0, [i+1 for i in a])]

Please ignore the fact that the whole operation can be simplified mathematically - nontrivial map-grep-map operations do occur.

I find the Ruby version clearer because it proceeds from left to right like a shell pipeline.

<comment><USER18> I see your point, but I think your Python's not terribly idiomatic and that's a big part of the problem.

This is easier to read and understand, only goes through the list twice, and loses nothing in terms of power:

        [j*j for j in [i+1 for i in a] if j%3 != 0]

(And for any given operation, there's very possibly a cleaner way to abstract out the inner list comprehension, which would again make it a lot nicer.)

In general, I don't see much of a reason to use filter/map/etc in Python: weak lambdas mean they're not terribly powerful. List/sequence comprehensions can do everything they can do with cleaner syntax and/or fewer operations.

This, I think, is actually at the core of this whole discussion. The Ruby/bash approach makes sense if you're used to working with sequences like Ruby/bash do. The Python approach is more natural to me though, because I've written a lot of Python. (And having spent the last year writing a lot of Ruby, I still find the Python approach cleaner/easier to understand at a glance.)

<comment><USER19>
      [(i+1)**2 for i in a if i%3!=2]

Goes through the list once, and reads like set notation! (and does i+1 once, which is what I assume you were going for with the separate [i+1 for i in a])

<comment><USER18> I kept the i+1 separate because the parent noted that this was a trivial example and wanted to make a point about the more general map-filter-map operation. _I_ wanted to make the point that you can do the map-filter-map in Python more succinctly and more efficiently without sacrificing any power or flexibility.

In this example, yes, it's easy to solve the problem with only one iteration through the list. In a more complicated example (especially when the first map step is expensive and you really only want to do it once) this kind of solution may not work.

</comment></comment></comment></comment></comment></comment><comment><USER20> I am a day-to-day C programmer. I am surprised to hear Python did not fit well after C for you. In my view, Python is the like the easy scripting version of C. I first learned Tcl/Tk, then Perl, then looked at bash scripting (my god, horrible) and seen that the earlier three has some obscure syntax with some special meanings of $'s and @'s and hyphenated flags everywhere with no resemblance to C.

Then looking into python, I saw the same philosophy as C; A struct or an array? Use a nice dictionary, set, tuple or a list, nicely kept under the [ ] brackets. Throw them in for loops without the iteration integer. Its just all the same things I do in C but easier, with no cryptic idioms. That's why I love it.

I have 2 choices of languages for all my projects: C and Python

<comment><USER21> Agreed. And interesting you said C and Python.

A few years ago I was thinking about what would be the minimum set of languages that would be good to know in order to be able to do almost anything you wanted, and do it well, and to always be employable. I ruled out 1 language alone because of the C phenomenon: there's a whole class of software where today C is the best choice, and a whole different set where C is a bad choice. Therefore, the ideal set was 2+ with C being one. I ended up settling on C, Java and Python. Java for enterprise/BigDumbCompany work, but also because there's a lot of great tooling and innovation happening in the Java space more so than other langs. Python for the role of glue and prototyping and high level no boilerplate bureaucracy but where you could still trust every developer using it. Ruby could probably fill that role decently instead, except be a little better or worse in diff areas.

C, Java, Python

Then I found out that Google had picked these three as well. Nice!

<comment><USER22> No, Google picked C++, not C. Very different philosophy!

<comment><USER21> Thanks, looks like you may be right. I just found a post by Steve Yegge in 2007 where he said it was C++, Java, Python and JavaScript. I'm pretty sure I found references elsewhere to C/Java/Python though. Close enough.

I had forgotten about JavaScript, I guess I considered that one a no-brainer on the browser side. However, the line blurs between C and C++, especially if you use the extra stuff only tactically as needed rather than a hard-core- always-OO-and-templates approach.

</comment></comment></comment></comment><comment><USER23> I started off hating Python as well. I could not stand a language that didn't terminate statements without semicolons! :) And python just seemed a lot like Perl; when using both languages for large projects my code just seemed to degenerate to "hacky."

But I've grown to like the simplicity of Python. One thing I don't like is its threads implementation, however. Because of the GIL, multithreading (GUI + background thread) just doesn't work right. Maybe I'm using it wrong?

<comment><USER24> The Right Way for a long time was to run multiple processes. If you absolutely needed threads, then the Other Way That Is Less Correct involved launching threads written in C from a C extension

The Python community seems to be warming to the importance of threads. There are several efforts breaking their swords against the GIL nowadays (Unladen Swallow being the most prominent), and Antoine Pitrou wrote a new GIL to help improve contention [1]. With any luck, by the end of the Python Feature Freeze, there will be some significant headway towards efficient handling of threads within Python, but I'm not holding my breath yet ;)

[1] <http://www.dabeaz.com/python/NewGIL.pdf>

<comment><USER25> If someone were to submit a patch nuking the GIL, I doubt it would be a language change, ergo, the language moratorium (a block on new syntax) does not apply.

<comment><USER24> I agree. To clarify, I'm hoping that _because_ they're not focusing on language enhancements, they might make some major headway towards nuking the GIL

</comment></comment></comment></comment><comment><USER26> > I like C++ too

I never met a hardcore C++ guy claim they like C++

> by hardcore I mean the kind of people who wrote Exaile

I think Python weren't meant to write desktop music players. Stuff like Zope are hardcore.

<comment><AUTHOR> I never said I was a hardcore C++ guy. :)

I'm more like a hardcore C guy.

I do know a fair bit of C++ though. Perhaps C++ would've been better if compatibility with C was not kept as a fundamental goal. Just a personal opinion.

Qt does an amazing job of taming C++. I used their framework for some GUI design and loved it.

<comment><USER27> I think what he is saying is, if you program enough C++, you'll grow to dislike it.

</comment></comment></comment><comment><USER28> The biggest revelation Python gave me is peoples thought process/problem solving process/whatever you want to call it (I call it brains) work differently. And importantly peoples brains are wired to work really, really well with specific language qualities(dynamic, functional, boilerplateish) as manifested in specific languages. But really poorly with other qualities/languages.

So, no you are not a bad person. If you've given Python a honest attempt (took me a year to do that, I had whitespace hangup that was hard to get past), then you aren't missing anything either. Python just isn't the language for you. Move on, be happy.

</comment><comment><USER29> You don't have to like Python. I don't.

Of course, I don't have any pretentions of being a "good person" either.

</comment><comment><USER30> I don't much like it either.

Came from C++, learned Perl, got a job writing Fortran, learned Lisp. When hating on Perl came into vogue on the internet, I said to myself, okay, I will learn Python as a Perl replacement. It is a decent Perl replacement, what with all the libraries and the fact that it is shebang-able.

Now that I've dispensed with background, what I don't like about Python:

1\. Assignments don't return values. I _hate_ this. An example. I would like to write:

        if (m = re.match("woo, regular expression")):
            do some stuff with match object

Instead

        m = re.match("woo, regular expression")
        if m:
            do some stuff with match object

This obscures the fact that I only care about this match object if it evaluates to true.

2\. List comprehensions kind of suck. [(a, b) for a in as for b in bs] is a _cartesian product_ and not a zip? Really?

3\. Loops don't help this either: There's no equivalent of the Lisp (loop for x in xs for y in ys do (stuff x y)). I have to explicitly loop over the index. This pisses me off.

4\. I feel that I am generally shoehorned into creating and assigning more objects than I would like.

Honestly it seems kinda crippled in comparison to Lisp, which, by the way, _runs faster_.

I would go back to Perl if multidimensional arrays were not so godawful. Perhaps I should try Ruby.

<comment><USER31> Perhaps `zip' could help address some of your points?

> 2\. List comprehensions kind of suck. [(a, b) for a in as for b in bs] is a > cartesian product and not a zip? Really?

Strange. I would say it sucked if it was the other way round. You can use the `zip' function, if you want a zip.

      zip (as, bs)

> 3\. Loops don't help this either: There's no equivalent of the Lisp (loop > for x in xs for y in ys do (stuff x y)). I have to explicitly loop over the > index. This pisses me off.

Try the function `enumerate' and `zip'. E.g.

      for x,y in zip(xs, ys): stuff (x,y)

If you need an explicit index for your stuff:

      for (i, (x,y)) in zip(xs, ys): stuff (x,y)

> 4\. I feel that I am generally shoehorned into creating and assigning more > objects than I would like.

I agree, only the other way around. Python is much too destructive and relies on in-place updating. E.g. recently we got `sorted' that doesn't sort in-place but return a sorted array --- but the `shuffle' function still works only in- place. Also dicts are destructive. There should be a persistent (i.e. non- ephemeral) data structure for key-value-mappings in the standard library.

</comment></comment><comment><USER32> I was in the same boat as you before, but it is now my "go to" language. It happened when I started using django. Just humor yourself and go through this tutorial:

<http://docs.djangoproject.com/en/dev/intro/tutorial01/>

Don't copy and paste the code in the tutorial and when they ask you to type something in the REPL, do it.

That's when it all started for me.

<comment><USER9> I was looking for a smooth way to ramp up my Python (very weak). Just had a little experience with it from the friendfeed api v2 on the app engine.

</comment></comment><comment><USER33> "My question to the hardcore python lovers is this (and mind you, by hardcore I mean the kind of people who wrote Exaile, not the kind who hack up a Python script every now and then to organize their iPod)"

I'm disqualified to answer - as I come in your so called second type (softcore python lover perhaps), people who uses python to fix things in day to day life.

</comment><comment><USER34> I like Python because, IMO:

* It's the most concise, expressive language I know * Friendly syntax: I just write what I'm thinking and it pretty much works * Most importantly: It includes a ton of functional programming goodies (of which I make liberal use), but I can still just say x = 1 when I want to. Best of both worlds.

</comment><comment><USER35> Do you hate scripting languages in general? Maybe you should compare python with other scripting languages.

<comment><USER36> I really dislike the term "scripting languages". While you could describe Python and Ruby this way, it does them a huge disservice, implying that they aren't capable of large scale application development. I think this term should really be reserved for Bash et al.

<comment><USER37> I read "scripting language" as a legitimate warning about tradeoffs that make it unsuitable for high-volume use, because the code is permitted to change so much runtime behavior that most known optimizations (and other kinds of static analysis!) are ruled out. For example, Twitter's Ruby to Scala migration made news, so there's value in being able to broadly say what's different between those kinds of languages.

</comment></comment></comment><comment><USER38> I still write most of my code in C. Could never really warm to C++ and Java was fun in the early days, but the sheer volume of API's, J2EE, et al eventually crushed my spirit.

It took me several goes to become friendly with Python. I find it excellent to try out algorithms. If I don't know how something is going to be best implemented, then writing a bunch of classes in Python and tweaking attributes and methods until the algorithm is as simple as can be helps me get there very fast.

<comment><USER39> I didn't warm to Python until v2.2. Took an article by Eric Raymond for me to take another look at it and it finally clicked. Great for trying out ideas, etc. But I still write all the heavy duty stuff in C. Its really cool to do the heavy lifting in C and expose it as a shared library and then do the coordination stuff in Python.

</comment></comment><comment><USER40> Programming languages all come with a specific mental model for how you're supposed to code in the language. That's why it's so useful to learn different types of languages so that you "pick up" those different ways of thinking. Everybody thinks differently so not every language is going to suit the tastes of every developer. You may find that Lua or Ruby are a better fit with your thinking patterns and that you are more productive using one of those as a scripting language of choice.

The power of scripting languages really come down to a very simple thing: each line of code in a scripting language is equivalent to roughly 5 to 10 lines in a systems programming language. You're doing the same mundane programming tasks but with fewer lines and getting nearly the same performance as if you had written the code in one of the systems languages. It really won't make much difference which one you use, you'll see the same productivity gains using Perl, Ruby, Python, Lua or practically any of the others. However, the more obscure the language you choose, the fewer developers and the fewer available libraries to use.

</comment><comment><USER41> I hate Python too, only because of its insistence on indentation and because of its verboseness relative to, say, Perl.

I'm not against the non-Perl philosophy of There Is Only One Way To Do It, but for God's sake, don't insist on indentation! I am under a personal vow that until Python lifts its indentation requirement (say, via a command-line switch), I'm no way using this language for my programming needs.

<comment><USER42> I've never understood this objection. Do you not indent your code anyway? If so, why should you also need to delineate scopes in another way? Python allows you to choose your indentation, it just requires consistency: something that is always required by coding standards (with good reason).

If there was a command line switch, would you use it? Why?

<comment><USER15> Python's whitespace indentation seems like a great idea until you realize that it makes things like copying & pasting code from web pages etc far more difficult and, worse, makes automatically reindenting a block of code in an editor impossible. If I come across a badly formatted block of code in Ruby or Java or C in emacs it takes me _one_ keypress to sort it out. In Python I have to carefully, manually look at each line.

It's also fun to spend an hour looking for a bug caused by somebody inserting a tab instead of a space somewhere. We had a production crash that took us a long time to fix because somebody hotfixed a file with the wrong editor and did this.

I also don't understand how forcing people to indent code in the same way magically makes people write good code. The kind of programmer that can't or won't indent his code properly is introducing bugs far more serious than bad layout into your project.

Python's a nice language in many ways but I consider the syntax to be a bug.

<comment><USER43> It's also very annoying to have to un-indent an entire block of code during debugging just because you want to comment out the conditional statement around it...

<comment><USER44> You could do what you say - comment the conditional:

        # if x:
        if 1:         # DEBUG
            block

<comment><USER45> Or, even quicker and dirtier:

        if 1: # x:
            block

</comment></comment></comment></comment></comment></comment><comment><USER46> Before I ever encountered Python, I'd gotten pretty familiar with a wider variety of languages than C, C++, and Java.

So if you don't _have_ to learn Python right now, maybe you should first learn Lisp, Haskell, or whatever else you want or need to learn that isn't much like C/C++/Java. I think you'll have more fun this way. :-)

</comment><comment><USER47> I think an exhaustive answer is "mu". Focusing on the tools instead of the problem is bad.

</comment><comment><USER48> Easy language to read, write, and maintain. Big standard library and lots of tools. Win.

</comment><comment><USER49> If you ignore the fact that this page is a bit biased towards python, it is a pretty good intro to Python if you're coming from a C++ or Java background: <http://dirtsimple.org/2004/12/python-is-not-java.html>

My personal experience is that the Java-ish languages encourage you to overthink problems a bit. Instead, I suggest that you just do what comes naturally. This will actually get you pretty far, as Python doesn't have that many gotchas (at least in comparison to Java or especially C++).

</comment><comment><USER50> Languages fit you if your tasks are fitting to those languages. As far as I can see as a C/C++ programmer you should have been involved more lower-level issues rather than writing software standing on several frameworks. Java is not a toy language but it handles the stuff you were used to deal with almost automatically so it feels like it is.

So what kind of programmer are you? What do you develop? These questions are essential before making any advise.

<comment><AUTHOR> Currently I'm a student and question of what kind of a programmer I'm is wide open. I _am_ currently working on a project that has to do with the GC and the JIT compiler for a language runtime. I plan to use my (remaining) student years to gain as broad a programming experience as I possibly can, not because I wish to be good at everything but so that I don't miss anything out. The whole point of this post was to find out that since virtually everyone finds Python so bouhaha and I don't, am I doing something wrong?

Secondly I don't mean to criticize Java. By calling it a toy language, I was simply referring to the fact that Java tends to make writing bad code difficult, and in doing this takes away some of the flexibility and power that you tend to associate with other languages.

I mean

while ( _str++)_ str = ( _str) + 1;

becomes

for (int i = 0; i < sb.length (); i++) sb.setCharAt (i, sb.charAt (i) + 1); // and relevant casting

While the above piece of Java code can be improved and condensed (for instance, by calling getChars and iterating through _them* and _then_ creating a new String - would be slow however), I think you get the point.

<comment><AUTHOR> It seems some of the HN eats up some of the asterisks. But you get the idea.

</comment></comment></comment><comment><USER51> Python's alright, but it made me work too hard for what it does. I tried hard to like it but using Python for writing scripts I was constantly asking it, "why are you making me do extra work? Perl doesn't make me do half the crap that you ask of me" (ex. regexes, quoting, string interpolating). Also, Perl has the CPAN, so, I fired Python and use Perl.

</comment><comment><USER52> Preference for languages can take into account everything from the syntax to the libraries to the community. It's not surprising when someone has strong opinions about them. The problem is when people get precious, but you seem to be straight up about it. And with C and C++ you certainly won't suffer because you aren't a Python guy.

</comment><comment><USER53> Python people are too busy solving real world problems fast and quick and getting their shit done, to fall in love with python.

Tools are just tools. And I don't mean to come across as a jerk. I love developing. But that is as a means to an end, but not as an end in itself. - Those who like the latter, end up as research scholars; or Rubyists.

</comment><comment><USER54> Disclaimer: I'm not saying this to start a holy war...

Try Ruby. It gives much more freedom than Python, not to mention countless way of shooting oneself in a foot (which you know already from the C family ;)

</comment><comment><USER55> If you don't like Python, it may just be an indicator that you know more about functional programming than Guido, which is hardly a feat. Read his opinions about tail-calls for a good laugh.

</comment><comment><USER56> A programming language is like a screw driver, the brand doesn't matter but what you do with it!

</comment><comment><USER16> what don't you like about it vs python? it could be easier to respond to some specific issues.

</comment><comment><USER57> Yes

</comment><comment><USER58> yes

</comment><comment><USER59> I don't like Python, either. There's nothing wrong with disliking Python - there's lot to dislike. There's also a lot to like, for a certain kind of person - e.g. not you and me.

It's an aesthetic and personal choice.

</comment><comment><USER60> No.

</comment><comment><USER61> Nope, I fucking hate python.</comment>


Google SSL Search - <AUTHOR> http://www.google.com/support/websearch/bin/answer.py?answer=173733&hl=en

<comment><USER2> This was available for quite a while already, though in beta/labs. I'm not sure what is new.

<comment><USER3> Yeah, it doesn't seem any different to how its been in the past year. The _beta_ sigil is still under the logo.

I wish theyd put the links to maps and images back in, maybe with some visual warning that theyre not encrypted. I have SSL search as the default search in chrome, and I hate having to manually jump back to normal google to do image searches.

While we're here, don't forget SSL wikipedia!

<https://secure.wikimedia.org/wikipedia/en/wiki/Main_Page>

<comment> mike-cardwell If you're using the HTTPS-Everywhere Firefox addon (1), or the HTTPS- Everywhere Squid redirector (2), you don't need to know/remember about the SSL versions of Wikipedia or Google. You're just sent there by default.

1.) <https://www.eff.org/https-everywhere>

2.) <https://github.com/mikecardwell/perl-HTTPSEverywhere>

</comment></comment></comment><comment><USER4> Been using this for a year now, there's also a hack to use it in the Chrome bar by entering a custom search engine. Very handy and works nice.

Only miss is that I can't immediately click through to image searches, they're only available over unsecured HTTP.

<comment><USER5> Unfortunately, you lose autocompletion (other than history autocompletion) when you use something other than the built-in Google search.

</comment></comment><comment><USER6> Good, but to make this truly useful we need a really simple way to specify which country-specific google search engine we would like results from.

</comment><comment><USER7> DuckDuckGo has been using this for many months, when you use the !g bang

<comment><USER8> Really? It doesn't seem to do it for me. Do you have some setting set somewhere?

</comment></comment><comment><USER9> Anyone that has the HTTPS everywhere extension (Firefox) is already using the SSL search in Google. As others noted it has been in beta for quite a long time and is missing some features like the image search or the doodles on the homepage.

</comment><comment><USER10> Also, if you want to browse on SSL whereever possible:

[https://chrome.google.com/webstore/detail/flcpelgcagfhfoegek...](https://chrome.google.com/webstore/detail/flcpelgcagfhfoegekianiofphddckof)

Love this Extension!

</comment><comment><USER11> The only thing I dislike about this is it hides the refer, screwing up my analytics. I'd have to completely convert all of my sites to HTTPS only to be able to make use of the additional headers for analytical purposes. Not really a big deal I guess, but kind of unnecessary to have to purchase wildcard certs if you have many sub domains.

<comment><USER12> The free certs from <http://www.startssl.com/> are apparently accepted by most browsers these days (the exception being IE6/7 users on XP who have not downloaded the optional CA cert updates): <http://en.wikipedia.org/wiki/Startssl#StartSSL>

I've not used their cert for anything yet (I plan to test them on some personal sites when I get chance, before using them elsewhere), and wildcard certs are not free (but they do seem relatively cheap), but it might be worth looking into for someone in your position.

<comment><USER13> I've used them for a few personal sites and projects with no complaints.

The fee for wildcard certs (~60USD) is a one-off to verify your identity - usually via a quick phone call to confirm details from your official documents.

Once that's complete, you can generate as many certs as you need (incl. wildcards and Subject Alternative Name) from their control panel, subject to jumping through the usual hoops to prove that you have control of each domain.

<comment><USER11> I do use StartSSL but the problem just comes from having multiple sub domains. I get IPv4 addresses for $0.50/mo/each but I'd rather not setup each subdomain on its own dedicated IP for the sakes of using free SSL certs.

<comment><USER12> You don't need multiple IPv4 addresses to make use of a wild-card (or other multi-name) certificate. A wildcard certificate will verify any matching domain so you could have many sub-domains of the same domain (using a single certificate for *.domain.tld) on one address and browsers would not complain.

Also you could run the distinct (sub)domains on different ports on the same address, though this is perhaps less useful.

Also, with SNI you can use many single-name certificates on one address (and all on the same port) using SNI. Unfortunately there are a number of significant client combinations that won't play nice with this (most notably, if you can't guess, IE on Windows XP): <http://en.wikipedia.org/wiki/Server_Name_Indication#Support>

<comment><USER11> I know that. I'm saying I don't want to have to pay for a wildcard certificate since you can get free certs for individual domains. The alternative for me purchasing a wildcard domain would be to get many different single domain certs for free and assign each one to a different IP address.</comment></comment></comment></comment></comment></comment>


Ask HN: Wither Product Development/Management, as a defined role? - <AUTHOR>

Looking through the current "Who's Hiring" list, I only count 3 product management jobs.
Sure a company needs more engineers than product people, but I continue to be surprised at how much this role is disappearing given that most agile methodologies call for "Product Owners", who usually shouldn't be engineers.
Would other HN'ers concur there is a decline in Product Management as a role in startups?  And why? <comment><USER2> At a startup, product management is everybody's job. There's neither the money available nor enough work to justify a dedicated product manager. At big companies, managers will always be needed. Big companies that have tried to do away with managers have always learned that engineers are best left to do engineering and managers are best left to do managing.

<comment><AUTHOR> "Product management is everybody's job" that's true for perhaps the first 5 employees. And big companies sure they have managers.

I'm still left puzzled for the companies in between.</comment></comment>


Defense Intelligence Agency sending hundreds more spies overseas - <AUTHOR> http://www.washingtonpost.com/world/national-security/dia-to-send-hundreds-more-spies-overseas/2012/12/01/97463e4e-399b-11e2-b01f-5f55b193f58f_story.html

<comment><USER2> Sounds like mission creep to me. They are getting out of war, so now they have to find a reason to keep those people employed. What is the point in replicating the CIA? I thought the country needed budgets cuts to get rid of the debt or something?</comment>


Ask HN: What's HN community opinion on 5G health issues? - <AUTHOR> Wired and many other news outlets are writing about health concerns, opinions are different, so I'm interested to hear the opinion of HN community. <comment><USER2> It's a difficult issue, as the people carrying the water on it tend to overlap with ignorant constituencies like anti-vaxers.

I know there was concern in the 90s about military exposure to millimeter wave radars, and I've never read anything credible about the outcome of whatever studies were done, good or bad. I know that the 24 GHz bands are part of 5G and also related to vehicle networks, so I assume that all major roads will be blanketed with coverage.

My biggest concern with 5G is the FCC declaring every telephone pole "critical infrastructure" and removing or limiting the ability of local governments set rules. In my city, the incompetent response on the city's part means that Verizon is dropping poles in the optimal (from a cost/radio pov) spot, period. So people have wooden telephone poles in the middle of their lawn. A block from my house, they dropped a pole in the middle of the curb cut for crossing the street, 5 feet from another utility pole. (To avoid renting pole space)

</comment><comment><USER3> The only people I've seen suggesting that it has health implications have been hanging out in my city centre also claiming that 9/11 was an inside job and that InfoWars is a legitimate news source. This is in the UK!

...so I'm not convinced of any issues so far.

<comment><USER4> 9/11 being an inside job is still more plausible than any other theory or "investigation" conclusion really.

<comment><USER3> It's definitely not. But thanks for playing along.

</comment></comment></comment><comment><USER5> Although we should always be studying potential risks, I have little concern.

Just keep it in perspective, you walk around outside under a nuclear fusion fireball receiving around 1000 watts of terahertz radiation some of it ionizing and known to cause cancer.

Wifi, Cell including 5G are in the Gigahertz range, non-ionizing, which means they can basically heat your flesh like a microwave and nothing more and are at milliwatt power levels from the phones transmitter and maybe a hundred watts from the towers transmitter.

This would be like worrying about what an led flashlight (the phone) or street light (the cell station) does to you.

</comment><comment><USER6> Related :

[https://news.ycombinator.com/item?id=19595450](https://news.ycombinator.com/item?id=19595450)

</comment><comment><USER7> I wasn't even aware of health concerns.

My first uninformed impulse reaction:

More cell towers means lower signal strength which means less risk of health issues.

</comment><comment><USER4> I don't need 5G, and I will have it as far as possible until people study it better.

</comment><comment><USER8> It's non-ionizing radiation. I don't worry about health issues from 5G.

</comment><comment><USER9> Isn't that just a narrative pushed by RT as Russian propaganda?

<comment><USER10> No, that's just what people who believe in conspiracies (like "everything is Russian propaganda") believe.

Except if you consider the "US department of health" as Russian agents:

"The NTP studies found that high exposure to RFR used by cell phones was associated with: Clear evidence of tumors in the hearts of male rats. The tumors were malignant schwannomas. Some evidence of tumors in the brains of male rats. The tumors were malignant gliomas. Some evidence of tumors in the adrenal glands of male rats. The tumors were benign, malignant, or complex combined pheochromocytoma."

[https://ntp.niehs.nih.gov/results/areas/cellphones/index.htm...](https://ntp.niehs.nih.gov/results/areas/cellphones/index.html)

[https://www.ncbi.nlm.nih.gov/pubmed/29530389](https://www.ncbi.nlm.nih.gov/pubmed/29530389)

[https://www.sciencedirect.com/science/article/pii/S0006291X1...](https://www.sciencedirect.com/science/article/pii/S0006291X15003988)

[https://www.researchgate.net/publication/298533689_Internati...](https://www.researchgate.net/publication/298533689_International_Appeal_Scientists_call_for_protection_from_non- ionizing_electromagnetic_field_exposure)

[https://www.ncbi.nlm.nih.gov/pubmed/29459303](https://www.ncbi.nlm.nih.gov/pubmed/29459303)

"The results also show that the peak-to-average ratio of 1,000 tolerated by the International Council on Non-Ionizing Radiation Protection guidelines may lead to permanent tissue damage after even short exposures, highlighting the importance of revisiting existing exposure guidelines."

[https://www.ncbi.nlm.nih.gov/pubmed/30247338](https://www.ncbi.nlm.nih.gov/pubmed/30247338)

"Our results show that 5G downlink RF fields generate significantly higher power density (PD) and specific absorption rate (SAR) than a current cellular system. This paper also shows that SAR should also be taken into account for determining human RF exposure in the mmW downlink."

[https://arxiv.org/abs/1711.03683](https://arxiv.org/abs/1711.03683)

[https://www.sciencedirect.com/science/article/pii/S016041201...](https://www.sciencedirect.com/science/article/pii/S0160412012002334)

"Preliminary observations showed that MMW increase skin temperature, alter gene expression, promote cellular proliferation and synthesis of proteins linked with oxidative stress, inflammatory and metabolic processes, could generate ocular damages, affect neuro-muscular dynamics."

[https://www.ncbi.nlm.nih.gov/pubmed/29402696](https://www.ncbi.nlm.nih.gov/pubmed/29402696)

"The analysis of various antioxidants in the plasma of exposed individuals revealed a significant attrition in glutathione (GSH) concentration (p < 0.01), activities of catalase (CAT) (p < 0.001) and superoxide dismutase (SOD) (p < 0.001) and rise in lipid peroxidation (LOO) when compared to controls. Multiple linear regression analyses revealed a significant association among reduced GSH concentration (p < 0.05), CAT (p < 0.001) and SOD (p < 0.001) activities and elevated MN frequency (p < 0.001) and LOO (p < 0.001) with increasing RF power density."

[https://www.researchgate.net/publication/318916428_Impact_of...](https://www.researchgate.net/publication/318916428_Impact_of_radiofrequency_radiation_on_DNA_damage_and_antioxidants_in_peripheral_blood_lymphocytes_of_humans_residing_in_the_vicinity_of_mobile_phone_base_stations)

"► Base Station (BS) clusters and deaths by neoplasia in the Belo Horizonte municipality have been identified. ► The mortality rate has been higher for the residents within an area of 500 m from the BS. ► The radiation superposition near the BS has also been observed; the nearer the stronger. ► Measured values stay below Brazilian Federal Law limits that are the same of ICNIRP. ► The human exposure pattern guidelines are inadequate. More restrictive limits must be adopted urgently."

[https://www.sciencedirect.com/science/article/pii/S004896971...](https://www.sciencedirect.com/science/article/pii/S0048969711005754)

[http://www.5gappeal.eu/signatories-to- scientists-5g-appeal/](http://www.5gappeal.eu/signatories-to- scientists-5g-appeal/)

[https://mdsafetech.org/2018/07/18/dr-leszczynski-sounds- warn...](https://mdsafetech.org/2018/07/18/dr-leszczynski-sounds-warning-at- australian-meeting-precaution-with-5g/)

[https://drive.google.com/file/d/1DNh0DEBrK8LyQjP1uTUjYMFguO4...](https://drive.google.com/file/d/1DNh0DEBrK8LyQjP1uTUjYMFguO4cF4hR/view)

<comment><USER11> Thank you. It's nice to see references to real studies as opposed to the social logic saying 'It's the same as anti-vaxers, so there's no basis to that!'</comment></comment></comment>


Dear Sam Altman: All Coherent and Fruitful Thought Is Restricted - <AUTHOR> https://dispatches.artifexdeus.com/dear-sam-altman-e3028db79802 <comment><USER2> A giant fallacious argument. Hard even to read. See examples below.

> "That your post elicited outrage from a large body of people who study > sociology, politics, and culture should provide you with some evidence that, > perhaps, you are wrong."

Argumentum ad populum. Appeal to Authority. Slightly softballed with the perhaps, but it doesn't make it better.

If all we ever did was listen to the experts, the earth would be flat still.

> "So, maybe it's a real problem when you share your thoughts on something you > don't understand."

Where's the line where you're "understanding" enough to talk about things?

I can't get through the fallacious logic enough to see the real argument here.

<comment><USER3> > If all we ever did was listen to the experts, the earth would be flat still

That's mostly a myth. In almost all cases, at least in objective fields, the people who establish a new understanding that replaces the old expert consensus are themselves experts in the old understanding.

The people who established a round earth in any given culture were experts in that culture's flat earth view.

Copernicus was an expert in geocentric cosmology.

Galileo was an expert in Aristotelian physics.

Einstein was an expert in Newtonian physics.

<comment><USER2> Sources required, for all our benefit

</comment></comment></comment><comment><USER4> What utter rubbish. All this says is that "sociologists out there disagree hence you are wrong". The post is one giant appeal to authority. There is no discussion of why they disagree. Or that there is a consensus, or that different fundamental values may motivate different people.

</comment><comment><USER5> I'm not sure why this post is getting such criticism.

The entire argument made here basically reduces to the concept "if everyone around you is telling you you're an asshole, the most probable conclusion is that you're an asshole" but in a more diplomatic way.

Which, having read the original post in question, seems a reasonable response.

<comment><USER6> ... so basically argumentum ad populum. Galileo should've just shut up

<comment><USER7> Come now, it wasn't the "populum" that wanted Galileo to shut up, it was the "Pope-ulum".

<comment><USER6> Bazinga!

</comment></comment></comment></comment><comment><USER8> Attention has quickly become our scarcest and most valuable resource, and filtering out noise is one of the most valuable services that can be provided. The no limits, "let the good in with the bad" approach is just not realistic at this point in human history.

Unfortunately, I don't think that sociologists are going to find the answer alone. It will take others who can engage the theory, but not become swept away in it. What's most troubling is that Sam Altman is just the sort of person who might be able to add value to the situation by taking a complex issue and thinking really hard about how to deal with it. We need to develop nuanced mechanisms of combatting misinformation and filtering out truly impoverished arguments while letting in unusual, perhaps even incorrect, but potentially valuable ones. Instead he merely repeated dogma of a "marketplace of ideas" model of the world that is clearly inconsistent with the evidence all around us.

This is, at least in part, a technical problem. Zuckerberg seems to be waking up to the role of the failed marketplace of ideas in creating the political monstrosity that we are dealing with now. He seems to be at least thinking through how to deal with it. But it's going to require a lot more than one organization to figure out how to communication must change in an era where the value of talk is so much lower and the value of the attentional resources required to truly listen are so much higher.

</comment><comment><USER9> The rails metaphor is especially weak here. The author's argument conflates the idea of rejecting an established field of knowledge outright with Altman's critique of the absolute way in which some ideas have become taboo in society.

</comment><comment><USER6> Tl;dr? This is word salad and isn't saying anything other than "Sam Altman shouldn't speak about this because he isn't a sociologist". Where is the author's rebuttal?

<comment><USER10> Tldr: a lot of people disagree so you're inarguably wrong

</comment></comment><comment><USER11> >You are right on one part — culture acts as a filter upon collaboration. For some reason, you assume that the people who are harder to work with — those less capable of empathy or at least compassion — are the ones more likely to profitably explore the space of technological possibility. I'm not really sure how to address that.

Of course the people who are harder to work with are the ones on the bleeding edge! SSC had a great post on this[0]. What are the qualities that make a good scientist? Curiosity, open-mindedness, looking for errors in the dominant paradigm. Not coincidentally, these are also exactly the qualities that lead people to question the popular orthodoxies of the moment.

A good scientist would never be so absurdly naive to assume that society "drawing a line" necessarily "limits harm". Society is often wrong. Society has drawn many, many stupid lines in the past and there is no reason to believe that we have moved beyond that.

Also, someone should alert the author about the replication crisis. There are extremely good reasons not to trust sociologists.

[0] [http://slatestarcodex.com/2017/10/23/kolmogorov- complicity-a...](http://slatestarcodex.com/2017/10/23/kolmogorov-complicity- and-the-parable-of-lightning/)</comment>


Black Design – Design tools for early stage startup founders - <AUTHOR> http://www.black.design/ <comment><USER3> For those others who tend to go to the comments before clicking through, these aren't tools for _visual_ design, they're for _product_ design - how to pitch your product, how to plan your MVP etc.

Glad to see these hit the front page, they were a big inspiration behind the product design parts of [https://nichetester.com](https://nichetester.com), particularly the idea of visualising a tagline by throwing it up on a T Shirt.

</comment><comment><USER4> I just did the MVP design quiz. Here's the result

[http://www.black.design/wp-content/themes/make-child/mvp- out...](http://www.black.design/wp-content/themes/make-child/mvp-output.php)

This output document doesn't make any sense to me. Ticks and crosses everywhere, some lines are blue, some not.

I feel bad that I have to ask for help on how to interpret this document from a website that is all about design.

<comment><USER5> It just doesn't display your own answers (relative to the static correct answers), giving the impression that there's no correlation between what you attempted, versus the actual expected answers.

Also, I agree that _" X"_ usually is an indicator of a " _wrong_ " answer. And why place check marks (⍻) across all of the other answers, when check marks ordinarily indicate correct/approved answers?

It seems like a bug. It would make sense if there were _NOTHING_ for incorrect answers left unmarked, an X for _YOUR_ unmarked correct answers or marked incorrect answers, and check marks for the answers you marked off correctly.

Given that it's a quiz, people want to compare their answers to the expected answers, so I think they need to create this logic, or patch whatever bug is preventing the answer markings from rendering properly.

</comment></comment><comment><USER6> to be a little bit cynical..... is this a way for them to harvest ideas?

<comment><USER7> It's content marketing. They run two design businesses on the side.

[http://blackappl.com/main](http://blackappl.com/main) [http://www.hatebranding.com/](http://www.hatebranding.com/)

</comment></comment><comment><USER8> A bit pedantic, but this is more product management. Not design.

<comment><USER9> I think the strongest Product Designers wind up taking on responsibilities that PM's might traditionally hold (and vice versa).

I'm fairly biased here, but I'd argue that product vision is often best executed in the hands of product designers rather than PMs. Having a design leader who takes the product or feature from high level goals, to flows & interactions, and finally down to the pixels often leads to a less-compromised end result. I usually find that singular vision beats design-by-committee.

Of course, this rarely happens due to company politics, which PMs tend to excel at versus designers.

<comment><USER10> As much as I want this to be true, there is (in my experience) an observable difference between product designers and product managers when it comes to understanding technical and business problems... especially in communicating with engineers.

As egotistical and tyrannical as PMs can sometimes be, I have learned to appreciate their function... however, they love to believe that they are miniature CEOs which is hilarious and incredibly annoying at the same time. Designers in lead roles don't seem to have this problem. Maybe it comes with the MBA.

</comment></comment></comment><comment><USER11> Nice tool set. I've definitely seen more than a few startups that would benefit greatly by filling out the details asked here.

</comment><comment><USER12> Man these are good ! I was very impressed with the professional look and downright usability!

</comment><comment><USER13> Do (did?) you work for bloomberg? Very similar to their old online style - <USER2> like it!

</comment><comment><USER14> This should be pinned somewhere. So much time could be saved.

</comment><comment><USER15> In the messaging design, I love that you put it on a t-shirt and on the side of a van.

Thanks to you, whether we understand it or not, we are all in the t-shirt business now.

</comment><comment><USER16> Huh. Design is so subjective. I would not call this site "aesthetic".

<comment><USER17> This is about the design process, not a particular visual aesthetic.

<comment><USER12> agreed !

</comment></comment></comment><comment><USER18> Great concept! Minor feedback/nit: bottom of landing page is (c) 2016 in Aug 2018.

<comment><USER19> Copyright notices aren't there to tell you what the current year is. What would the point of that be? Everybody knows what the current year is.

Copyright notices are there to declare when a creative work was created. That's when the copyright term starts. If you just set it to the current year you're lying about when the copyright expires and it renders the notice invalid (at least in the USA).

In this case, you can see from the Wayback Machine that this was, in fact, created in 2016 [0]. So that copyright notice is correct, and you're implying it should be changed to be incorrect.

[0] [https://web.archive.org/web/20161128194614/http://www.black....](https://web.archive.org/web/20161128194614/http://www.black.design/)

There's already tonnes of bad advice out there telling people that copyright notices should always display the current year. Please don't spread this idea.

<comment><USER18> Thanks Jim for highlighting this and teaching about a common misconception. My intent was to help the author avoid the "dead website" feel of a 2-3 year old (c) label. Updating the year to current year could be one solution but I was not proposing anything.

I hear your point on the legality angle and have done a ton of reading to update my own stance on this.

</comment></comment></comment><comment><USER20> Wonderful design - I'd consider this to be brutalist design already!

Too bad I cannot value the usefulness of the product, but it looks great.

<comment><USER21> Suprisingly to me to lot of people it looks bad. Same goes for Bloomberg which is similar. The reason why it is suprising to me is because this is how lot of the things looked in 60s and 70s. The medium/bold helvetica with clear colors coming from swiss design school. Lots of stuff used to be like this.

<comment><USER22> The problem with the design of this page isn't with the font, or with the decision to minimize decoration. The execution in that regard is done well.

The big problem is an aggressive blue (RGB 0,0,255) and similarly extreme Yellow (255,255,0). My eyes actually hurt when I scrolled to the bottom of the page and observed the yellow - there's a reason that these shades are reserved for CSS testing purposes only. This service is letting me know that they think their own time is too precious to spare a potential user a headache. It's not edgy or cool - it's entitled and lazy.

Lack of padding (aka breathing room) around text elements is a second but admittedly much more minor problem.

I would like a service that touts Design in the name to be at least semi- conscious of some very basic user-friendly design principles.

<comment><USER21> I mean about colors i actually like pure RGB colors. It is very lively vibrant, but i guess that is taste.

About the spacing admitedly i saw this on mobile and it looked great but now after seeing on desktop it is not that great. I am not fan of long lines of text.</comment></comment></comment></comment>