Matt ([info]inpetto) wrote,
@ 2005-08-17 21:43:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Current mood: excited

The next thing
Big thanks to all of you who helped me when I put the employment call out earlier. Before I knew it, I was buried under interview appointments and résumé solicitations.

Although I variously looked at and had had interviews with Yahoo! and Google, a big company, no matter how cool, just did not feel right to me. So I consider myself just about the luckiest job seeker ever because I

  1. am working at a Silicon Valley startup
  2. that has money
  3. from Bloomington
  4. (and I can continue to work from wherever after my next n moves)
  5. building software I can really see the point of, and that I even use,
  6. am working with some SMFs,
  7. and get to use a language I really like.
Thanks to [info]cdent for thinking of me, and to the Socialtext dev team for letting me be a part of the action.

Yeah, the action. I really do think that much of what was hyped during the bubble is slowly coming to pass now in kind of bassackwards ways. By this I mean the revolutionary stuff. The 'net wasn't supposed to be about shopping, it was supposed to mean participatory democracy for everyone, a journalist lurking in every bush with the power to publish to the world. Free information resources for all. Collaboration over vast distances. Well, due to the take-off of syndication (aka the B word) and wikis, these things are starting to happen. The explosive growth of Wikipedia just boggles, really, if we stop taking it for granted and step back. I've lusted to own Brittanicas for many many years, and now that desire is mostly gone.

Enough. I ramble. Life is good.



(Post a new comment)


[info]trurl
2005-08-20 02:07 am UTC (link)
I would actually argue the fact that they write code in Perl to mean that they are doomed. Perl is hideously designed language for software engineering. They really ought to be looking at Haskell or OCaml instead.

(Reply to this) (Thread)


[info]inpetto
2005-08-22 11:40 pm UTC (link)
I have my own set of prejudices against Perl (even though I also love it), but I'm curious to hear you describe the aspects you consider hideous. Care to go in to more detail?

(Reply to this) (Parent)(Thread)


[info]trurl
2005-08-23 12:07 am UTC (link)
There are so many things but offhand: the whole notion of scoping is terrible. Dynamic scope in a modern language is a horrible idea. Second is the fact that the notion of a datatype is so weak. The only way I can specify the shape of a datastructure is to write about what it should be in a comment and pepper the code with assertions to make sure that it stays well-formed. I am always seeming to have problems with implicit coercions between different kinds of structures. For some bizarre reason it is not possible to pass arrays by value. Particularly bad is the fact that a length one array/list isn't an array/list, it is just a scalar. Furthermore, despite being an interpreted language I have on more than one occasion caused the Perl interpreter to segfault. To make matters worse even with "use strict" etc Perl doesn't emit warnings when a datastructure is used improperly, instead simply failing silently.

(Reply to this) (Parent)(Thread)


[info]inpetto
2005-08-23 12:36 am UTC (link)
the whole notion of scoping is terrible. Dynamic scope in a modern language is a horrible idea.
Well, I don't know about "the whole notion of scoping". Perl has both dynamically-scoped and lexically-scoped variables. If you go with the standard "use strict" idiom, variables are lexically-scoped unless you say "local", which is such a rare construct that it's assumed you know what you're doing. The most common use for local I have is when I'm trying to hack in a new language construct, since Perl doesn't really have macros.
Second is the fact that the notion of a datatype is so weak. The only way I can specify the shape of a datastructure is to write about what it should be in a comment and pepper the code with assertions to make sure that it stays well-formed. I am always seeming to have problems with implicit coercions between different kinds of structures.
Agreed, and this is one of the things I'm really looking forward to in Perl 6 (the fastest development of which, BTW, is taking place in Haskell.
For some bizarre reason it is not possible to pass arrays by value. Particularly bad is the fact that a length one array/list isn't an array/list, it is just a scalar.
This is definitely a problem. Sadly, like a lot of language warts, it's the sort of thing that regular uses just know about (e.g., like C "if (x = SPECIAL_VALUE)"). Since there's no formal parameter list, it's just standard practice to copy stuff out of @_ if you want to modify it. A typical incantation is "my @list = @_". The semantics of the language are that subroutine calls flatten list structure. If you want to preserve the distinction between a list and a scalar, you encode lists as listrefs: foo([1]) is distinct from foo(1).

In general, your grievances are reasonable, and yet I find the language works for me and a lot of other Perl hackers. It's hard to look at the size, scope and general quality of CPAN and say that Perl's such a horrible language for writing software. The linguistic aspect of its design really makes a lot of things very easy, and many of the problems can be fixed in principle (I've never had any problems with poor warnings or segfaulting interpreters). One of the most powerful ways of extending the language (e.g., to do runtime type checking for you) is with source filters, which are the closest thing Perl 5 has to macros.

I'm eager for Perl 6, though, which will have complex types (Array of Array of Int), scalar types (Int, String, etc), real macros and more. "use strict" will be the default. All this while keeping the syntactic sugar that really make the language shine, IMO.

Anyway, thanks for the response. I think we're less doomed than the Java and C# companies. :-) </evangelism>

(Reply to this) (Parent)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…