It looks pretty nice. I'm curious about how the code generation works and whether Clay has the potential to produce the kind of code bloat you sometimes see with C++ templates. Say I have a function
min(a, b) {
if(a < b)
return a;
return b;
}
From what I understand, this function can accept two Int32s, or a Uint8 and a Float32, or basically any other combination of numeric types. Is a new function for each type combination generated? I don't think there's any way around this to some degree, but I'm curious if you've been able to do anything to ease the pain.
You can control type specialization to a certain extent with overloading. For instance, if a procedure takes two arguments, and if both these types can vary independently, then you can use overloading to ensure that both arguments are converted to a common type.
procedure foo;
[T1,T2]
overload foo(a:T1, b:T2) {
// by default, convert both arguments
// to the type of first argument.
foo(T1(a), T1(b));
}
// the following overload specializes for the case
// when both arguments are of the same type.
[T]
overload foo(a:T, b:T) {
...
implement the logic here
...
}
It's hard to tell what Thompson's level of involvement is with Go. His level of public activity is lower than some of the other Googlers on the project, but who knows what's actually going on internally.
I live and work in Olathe. It is a great town, no doubt, although I'm likely biased by the fact that I grew up nearby in Overland Park and have lived in this area for most of my life.
Nobody on the Garmin Connect team or here on Hacker News needs to give me a reason for not wanting to relocate here. In a way, the place where you want to live is a very personal thing. Different people have different reasons for what they do and they don't need to justify their choices to me, just as I feel no need to justify my choice to them.
That said, I definitely think there are people blindly saying "Kansas sucks" without having lived there or even traveled there. I sympathize with the Garmin Connect team, as I would not want my employer to try to force me to move anywhere. However, I also resent the attitude that they seem to have taken toward Kansas and the implication that no one would choose to live there. (I admit that perhaps I'm reading too far into it.) To me, it would be enough to say that Garmin asked them to move and they didn't want to.
It is bad in a totally different way than his other patently silly ones (become a tour guide in NZ) though because it's not obvious what's wrong with it unless you know how IP is attributed and the marginal utility of working in your employer's office vs a starbucks down the street is not worth risking all of your IP.
The risks with going to NZ and becoming a tour guide are much more obvious.
That is why that option is particularly pernicious.
Exactly, and it's ruling out the less desirable options at the very beginning that may keep you from stumbling upon more desirable variants of them later on. Don't brain storm with a pencil, the eraser will end up "costing" you more than you'll save on paper.
This is the nature of free software and a big part of why free software is great. Sometimes a maintainer can no longer work on a project for a variety of reasons. A free license makes it pretty easy for someone to fork the project and take over development.
It would be nice if John Gruber opened up the contribution process or officially handed off development to someone else, but he's under no obligation to do so. We're not paying him. He probably started Markdown for his own purposes and was kind enough to release it under a free license. It's totally fine if he doesn't want to continue work on it, because I can easily take his code, check it into GitHub, and start my own fork.
For what Kurzweil actually predicted around 2000, check out his book The Age of Spiritual Machines. It's wildly wrong about some things and overly optimistic about others, but still a pretty interesting read.
You're not wrong, but I think you're missing the point. The fact is, a lot of computer science students intend to go out into the world and become software engineers. Likewise, many software engineering positions require computer science degrees. Because of this, you'd expect that a computer science degree would prepare you for a career in software engineering.
Many (if not most) university computer science programs do attempt to prepare you for a software engineering career, but the point is that they're failing in several areas. You could call it a software engineering degree and they'd still have the same issues.
It's an interesting idea, but this seems more like something that could be a neat tech demonstration rather than a product that people would want to use.
First, speech recognition is very difficult. Fortunately you have a limited number of key words you have to support. Unfortunately, there's an almost infinite number of symbol names available, many of which can't be pronounced in a definite way. Variables created through speech recognition are going to be pronounceable, but what if you're working on a project with someone else who's not using speech recognition? What if you're working on existing code and don't want to refactor all the variable names? It seems to me that this could be even more difficult than natural language speech recognition.
Second, what problem does this solve? You mentioned RSI sufferers, which is certainly a problem, but how large is the market of Python programmers suffering from RSI? I'm guessing not that large. The software would have to be extremely accurate in order for me to not get quickly frustrated. On top of that, it would have to offer some benefit over typing, and that's not something I see in your pitch.
Third, I'm not so sure about your business model. I think in order for people to want to pay to download their personal acoustic model, the default model would already have to work really well. If it didn't, programmers would probably find themselves thinking "If the default model works so poorly, will the custom model really be that much better?" However, if it's too good, then there's no incentive to get the custom model. You're creating a balancing act that you'll have to perform in order for anyone to want to give you money.
A more interesting goal would be to supplement the keyboard and mouse setup rather than replace it. Think of ways that any programmer might become more productive through using voice in addition to hands. This would probably be much simpler, which allows you to release more quickly. I think it would also increase your potential user base, and eventually you could expand it to do everything if need be.
It might not make a difference, but it can't hurt.