Hacker Newsnew | past | comments | ask | show | jobs | submit | rfunduk's commentslogin

It didn't look very smooth either, the pictures jumped around a lot and... wait did you say Vista desktop!? Nevermind :)


Don't you just have your other hand on the keyboard all the time anyway? Set FF to open everything in tabs, so that's solved, and then use cmd+: w to close windows, q to quit, c to copy, v to paste, etc etc... they're all right there under your non-trackpad fingers.

I didn't even use middle-click back before wheel mice (when they literally had 3 buttons).


> i run full width.

Really!? Can I ask why? Why not just make the browser about 1050px or so wide, you can view every website out there and you can have other things in the extra space (twitter, client, terminal, downloads, whatever).


I do this too. My screen is pretty much always taken up either by a full-width Emacs, or a full-width Firefox.

I can't speak for diN0bot of course, but the reason I work this way is to minimize distractions. I don't want all that stuff in my peripheral vision when I'm busy trying to get stuff done.


Assuming you're using a Mac, opt-cmd-h will hide all windows but the one you're using...

Personally, what I find worse than 'distractions' is being blinded by whitespace caused by Firefox (/whatever) being way too huge.

And, full-width emacs!? On my monitor (with a rather large font size) that's almost 250 columns, I hope you don't have any code over there! If you're vertically splitting emacs, then, I think we're on the same page. It's not about windows themselves being any specific size, it's about making them an appropriate size for their content.


Probably because managing windows is a big pain, but everyone still thinks it's 1980 and overlapping windows are really cool.


Managing windows is a big pain? Is it 1980? :)


Talk about flame-bait.

I'm not sure who they're arguing with here. Developers that write code in Ruby have a testing culture... I've never heard anyone imply that Matz and the core development team care even slightly about it.

In short, your average Ruby project and Ruby the project are entirely unrelated, they're written in different languages, even!


I took the line Hello, core Ruby developers! You've got an awesome language there. Could you start testing, please? Your community seems to do OK. Why not you? to suggest that the author of the post is fully aware that the Ruby Core team and the Community of Ruby Users are two separate things with different attitudes towards testing.


I agree with you, but if you get detailed, you might also question the use of "culture" as in "who has the testing culture again?" to be more indicative of Ruby developers as a community (which is a word the author also uses in praise of it)

I think the words were poorly chosen. I understand the main point, which IMO supports your assertion. But knowing the habits of people surfing the web, I can certainly understand how it doesn't appear that way to everyone.


Two words: Vocal Minority

This happens every time Facebook (or any other major site for that matter) makes a change. A few months from now everyone will forget about it and get on with their lives. At least until they change it again, when everyone flips out and wants the 'old' layout back (eg, the one they're complaining about today).


Your analysis is much too simplistic, and lumps a number of very different episodes of Facebook change into one common pattern when in fact they differed significantly, and what happened after was different.

See my comment in reply to devicenull for more detail.


If you ask me (I maintain a fork of flot on github) there is no reason to use a client-side library for graphing unless the graphs are dynamic. Requesting/rendering/etc tons of images is painful, flot can add and remove data on the fly and re-render -- and that's not even getting into the potential for hovering effects and the like (flash-style).

Flot also supports all reasonable browsers (including some unreasonable ones, like IE6). If you find a bug in either the 'official' flot or my fork (or any of the forks of my fork :)) then you should be able to report it and have it fixed quickly enough (or, fix it yourself, the code isn't especially complicated).


I maintain a fork of flot on github. The graphs function correctly in IE (barring some here-and-there bugs which you can report). The only issue is speed (always an issue with IE), and as a result I wouldn't try too much of the interactivity... But on the whole it works great.


'Letting' students use the internet while they're writing essays? I think I'm missing something. I've never written an essay anywhere but on a computer with regular stuff around, including a web browser, etc.


Because we shouldn't ever have any fun? We shouldn't check out Blake's cool little micro-framework? We shouldn't use our own blogs for things we find interesting?


Did you try getting it to fit? Even 'cheating' a bit by renaming the route and make the TTL 1 second I couldn't get it closer than -2 :/

I can get to +1 character left if I just make the route '/:n'! :)


I thought about it, but then I remembered you'd get something like the camping microframework:

     %w[rubygems active_record markaby metaid ostruct].each {|lib| require lib}
 module Camping;C=self;module Models;end;Models::Base=ActiveRecord::Base
 module Helpers;def R c,*args;p=/\(.+?\)/;args.inject(c.urls.detect{|x|x.
 scan(p).size==args.size}.dup){|str,a|str.gsub(p,(a.method(a.class.primary_key
 )[]rescue a).to_s)};end;def / p;File.join(@root,p) end;end;module Controllers
 module Base;include Helpers;attr_accessor :input,:cookies,:headers,:body,
 :status,:root;def method_missing(m,*args,&blk);str=m==:render ? markaview(
 *args,&blk):eval("markaby.#{m}(*args,&blk)");str=markaview(:layout){str
 }rescue nil;r(200,str.to_s);end;def r(s,b,h={});@status=s;@headers.merge!(h)
 @body=b;end;def redirect(c,*args);c=R(c,*args)if c.respond_to?:urls;r(302,'',
 'Location'=>self/c);end;def service(r,e,m,a);@status,@headers,@root=200,{},e[
 'SCRIPT_NAME'];@cookies=C.cookie_parse(e['HTTP_COOKIE']||e['COOKIE']);cook=
 @cookies.marshal_dump.dup;if ("POST"==e['REQUEST_METHOD'])and %r|\Amultipart\
 /form-data.*boundary=\"?([^\";,]+)\"?|n.match(e['CONTENT_TYPE']);return r(500,
 "No multipart/form-data supported.")else;@input=C.qs_parse(e['REQUEST_METHOD'
 ]=="POST"?r.read(e['CONTENT_LENGTH'].to_i):e['QUERY_STRING']);end;@body=
 method(m.downcase).call(*a);@headers["Set-Cookie"][email protected]_dump.map{
 |k,v|"#{k}=#{C.escape(v)}; path=/"if v != cook[k]}.compact;self;end;def to_s
 "Status: #{@status}\n#{{'Content-Type'=>'text/html'}.merge(@headers).map{|k,v|
 v.to_a.map{|v2|"#{k}: #{v2}"}}.flatten.join("\n")}\n\n#{@body}";end;def \
 markaby;Class.new(Markaby::Builder){@root=@root;include Views;def tag!(*g,&b)
 [:href,:action].each{|a|(g.last[a]=self./(g.last[a]))rescue 0};super end}.new(
 instance_variables.map{|iv|[iv[1..-1].intern,instance_variable_get(iv)]},{})
 end;def markaview(m,*args,&blk);markaby.instance_eval{Views.instance_method(m
 ).bind(self).call(*args, &blk);self}.to_s;end;end;class R;include Base end
 class NotFound<R;def get(p);r(404,div{h1("#{C} Problem!")+h2("#{p} not found")
 });end end;class ServerError<R;def get(k,m,e);r(500,markaby.div{h1 "#{C} Prob\
 lem!";h2 "#{k}.#{m}";h3 "#{e.class} #{e.message}:";ul{e.backtrace.each{|bt|li(
 bt)}}})end end;class<<self;def R(*urls);Class.new(R){meta_def(:inherited){|c|
 c.meta_def(:urls){urls}}};end;def D(path);constants.each{|c|k=const_get(c)
 return k,$~[1..-1] if (k.urls rescue "/#{c.downcase}").find {|x|path=~/^#{x}\
 \/?$/}};[NotFound,[path]];end end end;class<<self;def escape(s);s.to_s.gsub(
 /([^ a-zA-Z0-9_.-]+)/n){'%'+$1.unpack('H2'*$1.size).join('%').upcase}.tr(' ',
 '+') end;def unescape(s);s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){[$1.
 delete('%')].pack('H*')} end;def qs_parse(qs,d='&;');OpenStruct.new((qs||'').
 split(/[#{d}] */n).inject({}){|hsh,p|k,v=p.split('=',2).map{|v|unescape(v)}
 hsh[k]=v unless v.empty?;hsh}) end;def cookie_parse(s);c=qs_parse(s,';,') end
 def run(r=$stdin,w=$stdout);w<<begin;k,a=Controllers.D "/#{ENV['PATH_INFO']}".
 gsub(%r!/+!,'/');m=ENV['REQUEST_METHOD']||"GET";k.class_eval{include C
 include Controllers::Base;include Models};o=k.new;o.service(r,ENV,m,a);rescue\
 =>e;Controllers::ServerError.new.service(r,ENV,"GET",[k,m,e]);end;end;end
 module Views; include Controllers; include Helpers end;end


That was the interesting thing for me: not that you couldn't do it in a shorter number of characters, but that it was 7 lines of code written for people to read, and incidentally for machines to execute.


There are many hundreds more lines in the background of the sinatra example the OP lists (the 7 lines, that is).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: