HNHacker News
TopNewBestAskShowJobs

carbon8

1,261 karma · joined October 30, 2008

submissionscomments
carbon8··on The “designers should code” bullshit and a not so new idea
The problem is that in a startup environment, needing to constantly explain how web application design works can waste significant time and energy, decreasing morale and impacting momentum. It's a drag, and an unnecessary one.

Web applications don't need to have heavily designed UI elements. The kind of designer that's useful for a web application is one who has a deep understanding of the unique constraints and conventions of web application design, not someone who is a whiz is Illustrator or screen printing.

carbon8··on The “designers should code” bullshit and a not so new idea
Design and art have always required technical knowledge of tools and the medium, and knowing HTML and CSS is no different.

Web application design (which is distinct from brochure web design or print design) has unique conventions and constraints, and web application designers absolutely must have a deep understanding of both. There are header nav bars. The branding with the link to the root path is in the upper left, user info/settings are in the upper right. HTML and CSS are structured as boxes within boxes. Main content areas contain the primary content, sidebars contain secondary content. Components are modular. Browsers have significant variation in how they render things, and viewport sizes vary dramatically. We have views and forms, GETs and POSTs. Resources are nested, with one URL per resource. Browsers have different levels of CSS support, leading to a focus on progressive enhancement and graceful degradation.

Every single time I've ever worked on a web application with a designer who didn't know HTML/CSS or a web designer who only does brochure sites, they stumble on these issues, and we end up with inflexible designs that have usability issues and are a pain or impossible to implement. Designers who don't know HTML/CSS create drag in a startup environment. It forces others to spend time and energy explaining how the web works and what the conventions are.

carbon8··on Reading Hacker News is not launching
When it comes to the kinds of businesses we are dealing with here, operating and researching not only can be done concurrently, but they are often more valuable together. Particularly with tech businesses, we are often pushing some boundaries somewhere, and the only way to really figure out whether what we are reading is valid and useful is to actually put things in action. By having a business in motion, you have direct context in which to interpret information, as your research is also informed by the additional information that can only be obtained by operating in some capacity.

All of this is why the minimum viable product approach can be so valuable. In many cases, you absolutely do not need to make a huge number of decisions before operating. Treat the business as a largely blank canvas. There's a core idea, so put that out there and start experimenting.

Don't worry that you don't have all the features of a similar or competing business that's been operating for a couple years. Don't worry that you don't have everything figured out. In the kinds of business we most frequently discuss here, it really doesn't matter. You will make mistakes (and even your most competent competitors will, too). You will tweak. You can pivot. Most importantly, you can grow.

carbon8··on NYT Skimmer
The reasons the codex format supplanted the scroll format had everything to do with physical properties, specifically that codices use material more economically, are more compact, easier to handle and transport.

In fact, as far as reading is concerned, the primary advantage of the codex over the physical scroll was, conversely, also the main advantage of scrolling over pagination on the web: the ability to easily jump to any point in the text.

carbon8··on Team Fortress 2 now free forever
TF2 on 360 actually had a remarkably good community, at least for a year or year and a half until many people moved over to PC as that version started evolving significantly. The nature of the community was especially pronounced since it was released at about the same time as Halo 3, which was the hypocenter of bad behavior on xbox live.
carbon8··on Idea Guy Looking for Developer
It's not simply that programming itself is difficult, it's that ideas conceived without knowledge or consideration of the technical implications are frequently more difficult to implement than a non-technical person realizes.
carbon8··on Rails 3 Performance - Not Good Enough
You're right. I'm distracted by the reported 20-30 second environment load time for each test when it only takes about 7 seconds for my tests to start with autotest in my current pretty large app on an older MBP.
carbon8··on Rails 3 Performance - Not Good Enough
"That's not the dev server, which is able to start and reload pretty fast...That post is complaining about...a production problem."

The issue is actually that it takes time to load the application code and dependencies, something that applies to Django, Rails and just about any similar framework, regardless of whether it's the production or development environment. In general, the production environment will actually be faster at this.

Just to clarify the context to future readers, I deleted by post because I wasn't interested in discussing django, but since you responded I'm addressing it. My original post pointed out that in my experience it indeed does take time to load django and linked to this post: http://stackoverflow.com/questions/1702562/speeding-up-the-f...

carbon8··on Rails 3 Performance - Not Good Enough
That's only 9 libraries, and that shouldn't be enough to cause your load times to reach 20-30 seconds.

Also, since you asked :-) I would question #5. Auto admin libraries (and this applies to multiple languages and frameworks) are generally heavy, too general and have code hidden away in the library. In contrast, banging out crud views and controllers in a locked-down namespace is easy, only relies on same dependencies as the rest of the app, can be customized for the specific business needs and all the code is in one obvious place.

carbon8··on Rails 3 Performance - Not Good Enough
"I don't think I should forgo reusing community code to reduce start times."

Using too many gems is an problem for a lot of reasons, though. You are introducing dependencies that you then need to manage and update, they often do more than you need to while being harder to maintain (you might end up with a bunch of forks in your gemfile as things get outdated), they are sometimes invasive and will require big rewrites to switch from.

"it seems people in the community get overly excited about something that saves 5 characters"

I agree (though I'd modify to to say "some people in the community"), I just find that I don't encounter it much when I'm following best practices myself.

carbon8··on Rails 3 Performance - Not Good Enough
"autotest or watchr doesn't help startup times -- I'm not sure why you mentioned that here."

If you use autotest or watchr you aren't starting up the environment very frequently.

carbon8··on Rails 3 Performance - Not Good Enough
"Starting a test or server on my dev machine takes 20-30 seconds. Particularly with tests, this is a huge problem for doing proper TDD"

Long startup times or not, sounds like you should probably be using autotest or watchr. 20-30 seconds is not normal. Unless the app has a very large amount of code and dependencies, that sounds like an environment issue.

"while most "Rubyists" would rather pollute the namespace"

That's unfair, and I say that as someone who is very adamant about clarity, explicitness and simplicity in my apps. In my experience, most (not all, but most) of the libraries where people are doing weird things are libraries that are far from necessary, so avoiding that is trivial.

For instance, you cite metawhere. First, I haven't investigated the implementation in depth, but, FYI, it doesn't appear to use method_missing at all. Secondly, I'd be very hesitant to include a library like this in an app, regardless of the implementation, since it's too invasive of a dependency.

carbon8··on Weapons of Mass Assignment: Patio11 on Diaspora
Yeah, DJ is actually the only one I'm still using via a fork (https://github.com/alphabetum/delayed_job/commit/9637a4418ad...). I haven't had time to put the change in a topic branch and do a pull request.
carbon8··on Weapons of Mass Assignment: Patio11 on Diaspora
The approach has been around for a years (see my comment in that thread, for example), but very few of us use it.

The thing you'll run into with that approach is that no authors of gems and plugins that include AR models declare attributes as accessible, effectively assuming that mass assignment is enabled and resulting in the gem/plugin not saving properly. I've had to fork and submit patches for every hugely popular gem with AR models I've used, so it appears practically no one else follows this approach in production apps.

I strongly suspect that leaving all attributes mass assignable on all models other than generated user models is extremely common in Rails apps and it's very likely that this vulnerability is ubiquitous.

carbon8··on Rails 3.1 has jQuery by default
It was added as a joke in response to the controversy on reddit about the original commit.
carbon8··on Rails 3.1 Adopts CoffeeScript, jQuery, Sass and.. Controversy
In the years I've been using haml my experience has been exactly the opposite. Haml discourages excessive code in the template, reduces noise, makes the document structure immediately obvious and places emphasis on classes, ids, element names and attributes, making it easier to work with CSS and Javascript. As a result, its benefits become even more obvious as templates become larger and more complex.
carbon8··on Rails 3.1 Adopts CoffeeScript, jQuery, Sass and.. Controversy
"A designer that can design for any framework with standard CSS/HTML is more flexible than a designer that knows HAML, but could't write vanilla markup."

This is a very bizarre statment. How can someone write haml without understanding HTML and CSS? How could that even be possible? Haml is little more than classes, ids and element names.

In my experience as a Ruby contractor I've seem many, many more WTFs in erb than haml, to the point where when I join a project using erb I now brace myself.

carbon8··on Rails 3.1 shipping with CoffeeScript
The CSS person doesn't need to know Sass in order for the project to benefit from it. At the very least, you could just dump the CSS in an .scss file and just use the automatic output formatting feature.

In my current project I take it a step further. I get the CSS from a designer, dump it in an scss partial, include that partial in the main sass/scss file where I then override and add styles. That way I can keep their CSS versioned and untouched while being able to automatically combine it with additional styles into a compressed CSS file.

The point is that there are plenty of ways Sass is incredibly useful even if the main CSS person doesn't work with it directly.

Obviously Coffeescript is a little different, but the advantage is that a Javascript developer is a programmer and it's not an unreasonable expectation for them to be able to get up to speed on Coffeescript.

carbon8··on Ask HN: Chicago-Area Startups
If you are on the north side, north shore, at NU or anywhere near Evanston, come check out http://coworkingevanston.com/ It got started because there have been a bunch of startups and indie devs/designers working out of coffeeshops and home offices in the area and there wasn't any central point to get together and collaborate anywhere north of lakeview.

We started hosting the Monday Jelly Chicago meetups this week and had a packed house. Next monday following Jelly some of the people here are starting a Startup Evanston meetup http://www.meetup.com/Startup-Evanston/ One of the members here also hosts the well-attended monthly Chicago Web Pros meetup in Evanston http://www.meetup.com/chicago-web-pros/

The startup I'm with is technically based in San Francisco, but I'm actively looking to find another developer in Chicago. If you are a Chicago-area Ruby developer, my email is in my profile.

carbon8··on Ask HN: Anyone have a really smart way to organize css?
I also use Sass and Compass. I generally organize the directory roughly like this for projects without a separate designer:

    stylesheets
      - ie.sass
      - master.sass
      patials
        - _base.sass
        - _forms.sass
      utilities
        - _custom_mixins.sass
      vendor
        - _facebox.scss
        
The files with leading underscores are partials which are included in the master.sass. Note that facebox is an scss file. I just dump the CSS in it and include the partial in master.

The nice thing about sass is that it you can change output format, so you can just include all the external CSS files as partials and automatically output a single compressed files with your entire CSS.

When I work with a designer who uses CSS I use a structure like this:

    stylesheets
      - master.sass
      partials
        - _style.scss
      vendor
        - _facebox.sass
In this case, the designer's CSS is dumped in the _style.scss partial, then included in master.sass. Then in master.sass I include my modifications to the designer stylesheets. That way I can leave the designer-provided CSS largely untouched and still have all the flexibility and power of Sass.
carbon8··on I think tumblr has a huge security hole
"In a dynamic language, and where you trust the person doing the configuration, there's no reason why your configuration shouldn't be in a source file. Both Django and Rails do it this way."

Not true. In Rails, sensitive information like database passwords or AWS keys are not stored in the source, you store them in configuration files, YAML files by default. It's also widely recommended that these not be checked into version control.

carbon8··on Rails + MySQL scaling on a budget
The #map and #select approach in your example is even worse since it loads all of the associated friend and photo records into memory and tries to use Ruby for queries that should be performed by the database. If there are more than a handful of those records, that process will balloon up and could bring the server to a halt.
carbon8··on New Ruby 1.9 Features, Tips & Tricks
"If you want a language where there's only one way to do it, I think there's a language with that exact motto."

Be that as it may, in Ruby you should also follow conventions, write readable code, use the most obvious choice when possible and avoid being unnecessarily clever. Most of the core principles that Python promotes should also be heeded when writing Ruby code. Ruby gives you the flexibility to choose different options, but that doesn't mean that the flexibility should be abused.

carbon8··on New Ruby 1.9 Features, Tips & Tricks
Agreed. If there is anyone here who knows the justification for the latter two, please explain.

Edit: found the explanation for the last one: http://www.aimred.com/news/developers/2008/08/14/unlocking_t... So, basically, it's just using it as a normal case equality operator and you generally shouldn't use it in place of a regular #call.

carbon8··on Ask HN: any known production use for Sinatra(rb)
What exactly are you looking for? A complex Sinatra app? Sinatra is largely suited for smaller apps, so you won't find many super complex apps built on it, though there are some open source examples. However, it is used rather extensively in conjunction with large, high traffic Rails apps. For instance, the RubyGems gem sever: https://github.com/rubygems/gemcutter/blob/master/app/middle...

If your requirements fit within what Sinatra can provide, you shouldn't hesitate using it. It's a very straightforward framework and works well. If your requirements are more complex, look at Rails or Padrino, the latter of which is built on top of Sinatra and is actually pretty awesome.

carbon8··on Ditch Starbucks and work at the library
Basically what you are describing is a coworking space. Coworking spaces are great, but from the perspective of an operator (I recently opened one) it's not a business to go into if you are looking to make money with it. Rent can only be so cheap (and in the US the commercial real estate market is already picking up again), you only have so much space and people are only willing to pay a certain amount. It's also logistically more difficult to manage and monitor an hourly pricing structure than one that's per visit/day/week/month and those longer periods require larger lump sums then some people are willing to pay.

Coffee shops, which are more profitable but also not usually a huge money makers, can make money from walk-ins and, due to the lower upfront prices, require less commitment from each customer. There are a few hybrid coffee shop/coworking spaces, but it's unclear how viable the model actually is. Commercial espresso machines are very expensive ($10K-$15K+), barista salaries are an additional expense and you need to balance serving people who walk in with the people who are on the coworking side. Also, if you have things like enclosed booths that means you have to fit in fewer people per square ft.

So, there's often a market there, but the economics are such that it's hard to make it very profitable, certainly much harder than many other businesses. Still, just so this doesn't sound completely pessimistic, it's not much work to maintain a straight coworking space (not much more than a regular office), it's entirely possible to make enough money to offset the work you put into it and there is a lot of value that extends beyond the immediate financial compensation.

carbon8··on Poll: Where do you work (physically)?
After 4 steady years of working out of coffee shops, I'm currently opening a coworking space in Evanston, IL.

http://coworkingevanston.com/

http://desktimeapp.com/spaces/92-coworking-evanston

We "officially" open on Monday, but we are already functionally open and a group of us have been working out of the space for about a month. The picture above only shows one small section. It has open shared spaces, a small lounge, a collection of private offices and meeting space. If you are a north Chicagoan, stop by!

Coffee shops are great, I really love working out of them and we have some awesome ones in the area, but I needed a change. IMO, coworking spaces can do a good job of having the positive atmosphere of a coffee shop while also being conducive to actually getting work done and they make it easier to connect with people working on similar things. It's also a great way to crowdsource an awesome office for people who otherwise would be working in more isolated environments.

carbon8··on 20,000 square foot coworking / hackspace opens in Manhattan
It's definitely nice to see coworking taking off. There's a combination of factors that I think are leading to increased popularity of coworking: proliferation of smaller teams, more remote workers, cheaper real estate prices. Even with the lower real estate prices, however, it's very difficult to make them profitable, so operating one is often a labor of love.

Anyway, to any Chicagoans looking for a nice coworking space, check out Desktime: http://desktimeapp.com

I'm currently opening a 2500 sq ft coworking space in Evanston, IL (http://coworkingevanston.com/). The website isn't updated yet and we are still building out one of the private areas, but we are already fully operational in the main spaces (http://desktimeapp.com/spaces/92-coworking-evanston). Even before officially opening we already started developing a nice community of developers and designers. If you are on Chicago's north side, in Evanston, the North Shore or anywhere else in the area, drop by (600 Davis, 2nd Fl).

carbon8··on Ruby and Python: pivot points
You wouldn't use a named Ruby method for something like this. You'd typically use a Proc or block.

    [1,2,3].map{ |x| x * 2 }
or if you wanted to reuse the block for other things

    transform = lambda { |x| x * 2 }
    [1,2,3].map(&transform)
carbon8··on Ruby and Python: pivot points
In Ruby, things are more complicated. I need an ampersand to pass a function and brackets to call it:

Proc calling is built directly into the language via the yield keyword and it's by far the most common way to call Procs.

More importantly (and annoyingly), if I define a top-level method with def—let’s call those top-level def methods (TLDMs)—Ruby won’t let me pass it as a block to any other method.

First, you can indeed pass a method as an argument using &method(:method_name). Secondly, it's rare to pass around named methods in Ruby (http://news.ycombinator.com/item?id=1141245) because Procs/blocks are flexible enough to make it almost always unnecessary. See also: http://yehudakatz.com/2010/02/21/ruby-is-not-a-callable-orie...

← PreviousPage 2 of 15Next →