393 karma · joined October 22, 2007
There is a nice optimisation in MYISAM table that makes count() from table <with no where clause> almost instant as its stored as meta-data on the table - in InnoDB, Oracle or Postgres this optimisation doesn't exist ...
irb(main):002:0> p = Proc.new { return :to_sender }
=> #<Proc:0x0035a050@(irb):2>
irb(main):003:0> p.call
LocalJumpError: unexpected return
from (irb):2
from (irb):3
from :0
irb(main):007:0> l = lambda { return :to_sender }
=> #<Proc:0x0033b86c@(irb):7>
irb(main):008:0> l.call
=> :to_sender
I had no idea it would do that - is a 'return' statement illegal in a Proc?Best case, people here love it. Worst case people will point out its failings and be critical. This is actually a good thing, as it gives you the information you need to vastly improve it.
Most likely outcome is that some people like it and some hate it, but either way you will get good, honest and helpful feedback on here ...
Its WYSIWYG editor annoys me quite a bit, and I find its Markup a bit clunky.
I guess my distaste for Confluence comes mostly from the slowness, which is probably not Confluence's fault. Also, editing pages on my Trac install is so much more pleasant.
He told me they used spelling mistakes to filter applicants - more than X (cannot remember what X was) typos in the form and you were cut - harsh, but somewhat fair at the same time. Yes they probably lost some good people, but probably many more bad ones - all recruitment is like that, there is always someone who should have gotten in that doesn't unfortunately.
He was not recruiting IT or even degree level folk either ...
The developers code to requirements - a bunch of signed off requirements are handed off to them and they go make the thing work, so yea there is a spec, but it doesn't go to the level of 'use library x' or feature y or a 5 table join instead of 5 individual selects etc. The developers have license to code the thing in the best way they see fit.
The point of my comment was to agree with what was said in the article in that its bad to go and spring 5 weeks of coding on the team (whether its an open source or closed source team) without running what you are doing past the other team members or stake holders at frequent intervals.
In my case, I have been sprung with weeks of code in one go - it doesn't really matter if there are modular/OO approaches being used - 5 or 6 weeks of code can run into thousands of lines.
The same problem appears with other things too - eg I need a report for 20 components of a system, and it takes some time to prepare the stats (one off manual task) for each part - I would say send me the stats for each component as you get them, but they tend to hold everything back until its all done - then when the report isn't quite right its a much bigger job to fix it than if I had seen some stuff early.
Agile development is sort of like this too - show your customer things each week as its easier to fix when its going down the wrong path, instead of springing three months of work on the customer in one go to find its no what they wanted.
* Often they make poor implementation decisions that as the 'designer' (I hate branding myself with that term) I don't like and know it could be done a different way, but now that X weeks of development work have been done, its too late to change it.
* Reviewing a big blob of code like that is a nightmare - easier if I get drip fed it feature by feature. Also, often when reviewing code I have noticed a junior developer will use the same anti-pattern over and over again - so they have to refactor all through the code - if such an error was noticed early, it would have resulted in much less work overall.
How important is the EULA/Terms and conditions that you always have to click OK to when you register to use a new web app? If I was to release an app without legally prepared terms and conditions would that be a stupid thing to do?
<%= h(@var) %>
I need at least 1 day a week off all the same - I think that is important. Work real hard Monday - Friday and then party at the weekend :)
Sometimes I think the way to progress in a big company is to make a hash of things and then stay late fixing them - that doesn't compute with me though - they are bound to get found out at some point, right?
I don't have or work for a startup granted, but when I am working on something hard, I reckon I have 5 - 7 hours a day in me and then I am just wasting time - it was the same studying for exams and my degree - I have never pulled an all nighter for an exam, but still managed to get the top grade - proper rest and relaxation are just as important as the working time - properly rested you will get far more done in less time too!
Oh and leave some time for exercise - that helps you productivity, stress and well being no-end!
If I want to travel, I can rent it out (the rent will cover the mortgage) and in 12 odd years I will owe nothing on it, and can live rent free for the rest of my days (or buy a bigger house) - I am only 28 so by 40 the house thing is largely sorted, which is nice ...
How hard would be it be to 'marshal out' the entire running Ruby VM to a binary image and load it back in again like the way the Smalltalk VMs seem to do, or add the ability to marshal out objects as a memory image of some sort, meaning they can be marshalled out and in really efficiently (ie stuff a true Ruby object into Memcached instead of a string representation of it ...
As I understand it, coding in Smalltalk involves developing code in an 'image' that is persisted to disk when you exit (sort of as if it dumps the entire memory contents to disk in a binary form that can be read back in). What sort of applications is Smalltalk suitable for? I know Seaside is a web framework, but a lot of the examples I can find show off more traditional GUI apps.
Does the image approach mean that Smalltalk is not really suitable for quick and dirty sys admin type scripts that you would use Perl or Ruby for?
I am fairly sure that HN doesn't use a traditional DB - and that if I recall PG said that Viaweb didn't either. With Viaweb, when a user logged into their admin console it loaded their environment into a process (and process memory) and kept it there (I think I read that somewhere).
Does that mean that each user had their own Lisp process fired up and kept around, and that data was just kept in process memory (and important stuff persisted to disk somehow)?
What I was thinking then is that if you had a web-app like Basecamp for instance (ie, an Account with no shared data between accounts), would it be technically feasible to have a different Smalltalk image for every single account that is loaded only when that account is being used, with basically all the account data inside the image? I am thinking memory could be a serious limiting factor here!
Sorry for the long rambling post - just trying to get my head around this stuff - hopefully someone on here knows something about it ...
Granted if you are sober, a really drunk person can be a pain. However, drunk people don't know you are sober, so you can banter away with them sober or not, but its difficult if you are shy I admit. Its 'just' a matter of putting yourself out there and doing it.
Other good places to meet people is at the gym - take circuits classes, join a sports club of some sort (tennis, biking, swimming, rock climbing ...).
I am pretty shy naturally, but I have met a ton of people at the swimming pool and on nights out (but I do drink a bit too much beer!).
I even posted in a thread on there that a 'usable whiteboard' was one of those problems that still needed solving - I reckon you are a long way there - well done.
Maybe my head has just gone blank, but I cannot think of a way to get a local called 'x' inside that block that is in scope only within the block.
In Perl you would have done
my $x = 5;
foreach my $i in (1..5) {
my $x = $i;
...
}
And it would have given you a new 'block local' and left your original x alone, but I cannot think of how you can do the equivalent of 'my' in Ruby ... x = 4
1.upto(5) do |x|
puts x
end
puts "after the block x is #{x}"
It will print: 1
2
3
4
5
after the block x is 5
That is probably not what you would expect!