HNHacker News
TopNewBestAskShowJobs

ytinas

177 karma · joined January 5, 2010

submissionscomments
ytinas··on A startup's "Why we use Lisp" story
I just don't find this to be the case.

There are two kinds of design patterns: architectural patterns (e.g. MVC) and language patterns (e.g. Iterator). In the language I use for work, C#, we have to use a lot of both kinds of patterns. Often the "all code must be in a closure or a method" way the language works gets in the way (I can only imagine it's much worse in Java). In 100k LOC, I bet 25-30% of it (random "from the gut" guess) must be language patterns (e.g. visitor).

When you realize that nearly none (if any at all) of the language patterns are needed in Lisp you realize that in 100k LOC you only work with the problem. It seems to happen to me pretty often that I run into situation where there are two possible representations of something, both having problems and I realize that in Lisp I wouldn't have even noticed the situation at all because I could have used a more natural solution right from the start (CLOS' generic function approach makes all the difference in the world here).

Keep in mind I've used C++ and its descendants longer than I've used lisp.

ytinas··on A startup's "Why we use Lisp" story
I think you're missing the point here.

The lisp/smalltalk way: have all my tools within arms reach so I don't have to reach for anything while I'm developing. When I'm finished press a button to get everything I didn't end up using in the end put away.

Everyone else: have a very small set of tools so that I must constantly go back to the tool shed and pick up something I now need, often forgetting to put back things I'm not using anymore.

The second case is overstated in the case of at least MS Visual studio with Resharper, which will automatically suggest use statements when you use a class that isn't visible, and tell you about any includes that aren't being used. But with Lisp/Smalltalk (provided they have "tree shakers") you don't have to think about this, the computer will just do it automatically.

ytinas··on A startup's "Why we use Lisp" story
I wouldn't be impossible, it just wouldn't work the way a message passing language does. If you ask me the trade off wouldn't be remotely worth it.

You could e.g. have a system where write some type name (or variable with a declared type), hit a key and get a list of all the generic methods that apply.

ytinas··on A startup's "Why we use Lisp" story
In both Lisp and Smalltalk you (can in Lisp, must in Smalltalk) develop from an "Image" based point of view instead of a file based one.

The simplest way to understand this is to realize that you are basically living "inside" the running exe that you're writing.

Contrast this with e.g. C++ where you write a bunch of files, fight with the compiler until they turn into some black box exe, then run said exe and try to guess what it's doing based on the blueprints of your source file. To actually see what's happening inside the exe you would have to run some kind of debugger, but you can't take action based on what you see. You're looking through a glass.

Not so with Lisp/Smalltalk. If you see something wrong you can just fix it on the spot and continue running.

ytinas··on Search Baidu for "Tiananmen square massacre" - guess how many results?
Assuming it isn't already to some extent. This point should be made louder and more often. It's easy to see China as some big evil empire but there aren't many governments that haven't committed major atrocities.
ytinas··on Poor, Poor Child. You have no idea.
I like the layout of the page, nice fonts etc.

The bit about being constrained by your first language is demonstrably not true (read pg's own account!). It can be a burden, but what stops people from progressing isn't this, it's the usual suspects: arrogance and ignorance. Once you stop judging a language purely on its merits and, thinking you've found the best, begin evangelizing it you will have problems seeing more powerful ones (because the language has become part of your id).

You have to treat a programming language like a great chess player treats possible moves: when you find a great one, sit on your hands and look for a better one.

As far as math: in my experience it isn't required. It will make you better and make your work easier. I've had good math people replace whole algorithms of mine with a couple of math statements. But if you really devote yourself to getting better at programming, learning a lot of diverse languages and so on, your math will get better. I've found it easier to learn certain math concepts from related programming concepts that I had already learned.

ytinas··on On California, Don't Believe the Hype
Care to back that statement up? Does California get more services for its money than lower tax states? Do workers get better protection?

Maybe the problem really is that the costs of these services have gone up but the taxes haven't been adjusted to deal with that.

ytinas··on Google to mobile industry: 'F*** you very much'
Well, my statement is based on what the actual US law is (CEO's are required by law to increase share holder value) and actual experience working at large companies. Large companies are inherently inefficient, not more efficient. There are inefficiencies everywhere and "cost cutting" measures usually don't have any useful effect.

Your theory, like communism, etc., sounds good on paper but I've never seen it work as described.

ytinas··on Philip Greenspun Visits Berkeley
"None could accept the idea that their state had a spending problem rather than a revenue problem"

"For roughly 60 years, Berkeley has offered more services to its residents than virtually any other city in the U.S."

This should point out to him his mistake, I would think. He is assuming that the correct answer is to lower taxes (or keep them the same) and spend less. But this isn't a correct (or wrong) answer, it is one option. Maybe people in California would rather pay higher taxes and get more services. It works pretty well for a lot of European countries.

ytinas··on A new approach to China
I agree, but are you ready to pay what it really costs to make things?
ytinas··on Google to mobile industry: 'F*** you very much'
Except what the bigger business will actually be providing is just selling a cheap copies of the same product on razor thin margins.

The end goal of business is not to serve customers. It's to create more share holder value. If you can do that best by serving customers then so be it. If you can do it better by dirty tactics then don't think people will think twice about doing so.

ytinas··on Google to mobile industry: 'F*** you very much'
I'm sorry, but this just isn't well thought out. I do agree that people should be much more active in politics than they are (and much more educated on the subjects!), but the US has a hopelessly broken government. It will take a great deal more than activism to effect that.

If you were talking about an actual, direct democracy (e.g. Switzerland) then what you say would have some truth to it, but in the US? No.

ytinas··on Google to mobile industry: 'F*** you very much'
Well, in this case no one has a handle on the numbers yet. If you don't advertise at all and you have zero customers, then you advertise with google and get 100 customers, then the value is easily quantifiable. But it's never that cut and dry. How much value is e.g. HP getting from google?

If you can't know what the actual value of the service is, how can you make decisions about who is cheaper? Is bing cheaper? Maybe, but what about after you consider the vastly decreased exposure? How much does that matter?

I still think the only way to beat google today is to make a better search engine. Tomorrow that wont work either.

ytinas··on Google to mobile industry: 'F*** you very much'
But MS had exactly the weakness I was talking about. If someone gives away their OS for free what will you do? Giving away advertising for free wont affect anything.
ytinas··on Metaprogramming: Ruby vs. Javascript
I have the feeling that some of mine have been corrected (maybe all where this was happening).
ytinas··on Metaprogramming: Ruby vs. Javascript
In my next reply in our conversation I was going to quote exactly this article:

"The language in which the metaprogram is written is called the metalanguage. The language of the programs that are manipulated is called the object language. The ability of a programming language to be its own metalanguage is called reflection or reflexivity."

Reflection is what I was describing. Asking a function its arity is indeed accomplished by passing said function to some other function, but if you want to find the source code for this function look for "reflection" because that's where it should be defined.

"Metaprogramming usually works through one of two ways. The first way is to expose the internals of the run-time engine to the programming code through application programming interfaces (APIs). The second approach is dynamic execution of string expressions that contain programming commands. Thus, 'programs can write programs'. Although both approaches can be used in the same language, most languages tend to lean toward one or the other."

You seem to only accept the second kind as meta-programming. What do you base your description on? Knowing that would make it easier to see where you're coming from and hopefully what the source of the misunderstanding is.

ytinas··on Metaprogramming: Ruby vs. Javascript
I've had someone do that to me a time or two. I don't even have the power to down vote them back at this point! :)
ytinas··on Metaprogramming: Ruby vs. Javascript
>That is not metaprogramming as it is known by programmers.

By what programmers? I have a feeling we are coming from completely different places here.

What do you call what Smalltalk programmers do? In Smalltalk, what we call "meta-programming" happens a great deal but I've never seen eval called in a Smalltalk program ever.

Have you read the book "The art of the meta-object protocol"? Everything in that book is meta-programming yet I don't recall eval being used anywhere, and much of the code was simply to allow programs to discover things about the program itself at runtime.

ytinas··on Metaprogramming: Ruby vs. Javascript
>You are arguing that function arguments are metaprogramming

No, I'm not. We seem to have a terminology mismatch somewhere. Asking a function how many arguments it takes and then taking some action based on that fact would be meta-programming, but taking input isn't.

ytinas··on Metaprogramming: Ruby vs. Javascript
Introspection is a form of meta programming (if you're making choices based on what you learn from introspection).

When we say "meta x" we mean talking about x, e.g. "meta discussions" on HN is discussions about discussions. Meta programming is writing programs about the program, which can also just be doing introspection and making choices based on that.

ytinas··on Metaprogramming: Ruby vs. Javascript
Metaprogramming doesn't require eval. Meta programming is being able to ask the program about itself and make changes to it during run time.
ytinas··on Google to mobile industry: 'F*** you very much'
I don't trust Google myself, but you bring up very good points.
ytinas··on Google to mobile industry: 'F*** you very much'
Have you read some of the early writings of Bill Gates? It can be difficult to reconcile that with some of the things he did with his company. Maybe Google's main strategy today is to make the Internet better and maybe today providing less value to the customers goes against their goals, but I suspect they're going to exist for a long time. What would make them more money in 15 years when they've killed off every competitor in the space (they may not do this, but they could. They have the resources)?

You have very high expectations of people you don't know, and who wont remain in their current positions forever.

ytinas··on Google to mobile industry: 'F*** you very much'
Until now every company has had a weakness. Namely, dominance in some other market could be used to undercut them on price. The way to battle such companies has been to undermine their dominant market, or use the same strategy with a different market. Advertising is so unquantifiable at the moment that you can't undermine Google's market by simply selling advertising more cheaply. You could try to make a better search, but at some point Google wont be so depending on search for their ad revenue.

The thing that is scary about Google is they have unlimited pockets. They can just continue throwing money away until they've taken over every market they care to. And then they can recoup those losses...

ytinas··on Google to mobile industry: 'F*** you very much'
No, not at all. Worse, Google is a public company, toiling under the requirement (by law no less) to ever increase share holder value. If Google found itself as the main (or sole) player in the cell market there would be a very obvious way to dramatically increase share holder value. And if they play the game properly they will also use this time of dominance to set up so many blocks to market entry that no one will be able to easily do anything about it.
ytinas··on Ask PG: Feature request, down/up vote history
>or just coincidence that they see the world very differently from me and therefore just happen to strongly disagree with many things I say

But they are not supposed to down vote for strongly disagreeing. Down vote means "this person is not contributing to the discussion". Down vote is supposed to discourage the person from doing what ever they did again. So what message does the current environment send? Think like everyone else or you're not welcome here? Seems like exactly the opposite of what a start up oriented site would want.

ytinas··on Ask PG: Feature request, down/up vote history
Good points, but at some point the meta must be addressed. People abusing the system will either cause a ton of meta discussions (like this one) or people who don't fit the group think will simply leave.

A way has to be provided to keep accountability and/or defend one's self. On sites like reddit, at least new accounts have the ability to down vote. If you don't fit the group think here you wont even get that chance.

ytinas··on Ask PG: Feature request, down/up vote history
I use to have an older account from several years ago (I think the site was less than a year old when I joined).
ytinas··on Ask PG: Feature request, down/up vote history
The issue is that since I came back to this site the voting feels like reddit. People just vote down if they disagree. They are totally safe to do this because there are enough people now that you can't tell who did it.

As far as revenge down votes, that also comes with a risk. People who don't know the history will just see your revenge down vote and assume you are the jerk.

ytinas··on Philip Greenspun Visits Berkeley
It's not inevitable for everyone, just the majority. And guess what: you will support them one way or another. Either by providing a retirement they can live on or by paying for their housing/food stamps.

You could try making household economics an education focus, but countries with a much higher average IQ still have Social Security-like systems, so it seems that people simply wont do this for themselves, on average.

← PreviousPage 5 of 6Next →