AppFolio Engineering

engineering.appfolio.com · Company blog · on HN since 2012

The engineering team at AppFolio, a property management software company, writing about Ruby performance, CSS and Rails practices.

What HN saysHN links it for the Ruby 3x3 speed goal and JIT posts, as well as its CSS architecture article, which commenters bring up in CSS best-practice threads.
40HN people shared it
14linked it in comments
32stories submitted
417story points
3 years agolast shared
2012people per year2026

Most-shared posts

  1. 1
    CSS Architecture
    7 people · 196 points · first shared 2012 · 53 comments on HN
  2. 2
  3. 3
    How is ruby different in japan
    3 people · first shared 2017
  4. 4
    Ruby 3 and JIT: Where, When and How Fast?
    2 people · 9 points · first shared 2018 · discussion on HN
  5. 5
    Ruby Mixins & ActiveSupport::Concern
    2 people · 4 points · first shared 2013 · 1 comments on HN
  6. 6
    Bundler is Built into Ruby 2.6.0preview3
    2 people · 3 points · first shared 2018 · discussion on HN
  7. 7
    JIT and Ruby's MJIT
    1 people · 115 points · first shared 2019 · 54 comments on HN
  8. 8
    Ruby 3x3 Progress
    1 people · 22 points · first shared 2017 · 4 comments on HN
  9. 9
    A Composition Regarding Inheritance
    1 people · 12 points · first shared 2014 · discussion on HN
  10. 10
    My Experience With Mob Programming
    1 people · 4 points · first shared 2014 · discussion on HN
  11. 11
    Benchmarking Ruby's Heap: malloc, tcmalloc, jemalloc
    1 people · 4 points · first shared 2018 · discussion on HN
  12. 12
    Don't make your users wait for Garbage Collection
    1 people · 3 points · first shared 2012 · discussion on HN
  13. 13
    View Models, Form Objects, Presenters, and Helpers Oh My
    1 people · 3 points · first shared 2017 · discussion on HN
  14. 14
    Ruby, RubyGems and Bundler
    1 people · 3 points · first shared 2017 · 1 comments on HN
  15. 15

What HN people wrote when they linked it

pkmiec · 2016-01-08
AppFolio - Santa Barbara, CA - REMOTE We're looking for a C-hacker with experience in just-in-time compilers, virtual machines, runtime optimizations, etc to work with the Ruby core team on performance. We primarily use Ruby / Ruby on Rails on the back end side. Ruby is a great language, but a slow one. We'd like to help make it faster. So we've teamed up with the Ruby creator Yukihiro "Matz" Matsumoto on the Ruby 3x3 effort (http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3… See more information details and apply at, http://www.appfolioinc.com/jobs-openings?p=job%2FoZ1c2fwY About AppFolio: We create easy-to-use, cloud-based software that helps small and mid-sized businesses more effectively market, manage and grow their business. Today, our products serve the legal and property management industries. Thanks, Paul
benlinton · 2013-05-24
While we probably shouldn't worry about long CSS selectors due to performance issues, we should avoid them for other reasons. For instance, because it's considered a best practice to avoid "Modifying Components Based On Who Their Parents Are". Please see this article: http://engineering.appfolio.com/2012/11/16/css-architecture/
sethrin · 2023-08-18
Apparently there's a lot of embedded Ruby in Japan https://engineering.appfolio.com/appfolio-engineering/2017/5/24/how-is…
angelbob · 2019-12-07
At least as of Ruby 2.6 I tried that and it really didn't work: http://engineering.appfolio.com/appfolio-engineering/2018/4/3/ruby-26-… It may work a bit better now, but it's still very much not tuned for that. The result would probably still be slower than not JITting, for the same reasons mentioned for 2.6 in that link.
jashmatthews · 2018-06-04
MJIT is completely different to PyPy. Their problems are simply not relevant to MJIT. MJIT is already just as fast as standard CRuby when executing complex Rails code, minus the small overhead for JIT compilation: http://engineering.appfolio.com/appfolio-engineering/2018/3/6/ruby-26-… PyPy is a much more ambitious design, completely replacing CPython, and using an unusual JIT scheme of tracing the interpreter itself and trying to produce an interpreter optimized for particular traces of your code. It was much harder for that approach to reach the same level of general performance than it seems to have been for CRuby & MJIT.
TomK32 · 2018-02-02
The Rails-centrism is only a western phenomenon, in Japan the focus for using Ruby is a very different one. http://engineering.appfolio.com/appfolio-engineering/2017/5/24/how-is-…
greysteil · 2017-12-25
Nice to see the 3x3 work continuing to go well with that 5-10% speed up. For anyone who hasn’t seen it, Ruby declared a target for Ruby 3.0 to be 3x faster than 2.0. http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3…
holydude · 2017-08-03
Honestly I do not know. There was an article not long time ago mentioning that Ruby is not popular in Japan because of Rails but because it is used in a lot of places like embedded stuff etc. http://engineering.appfolio.com/appfolio-engineering/2017/5/24/how-is-…
meesterdude · 2017-07-27
> I don't see it ever getting too much faster ruby 3 will be 3 times faster http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3… > Rails is... kind of wacky, still, in what manner? it is one of the most well well crafted and thoughtful pieces of software i've ever used. It has never been "wacky" for me, behaved unexpectedly, or require convoluted effort.
molecule · 2016-05-16
> Ruby really needs to put performance on the roadmap as a serious project. http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3… > At RubyConf 2015 in San Antonio, Yukihiro "Matz" Matsumoto announced Ruby 3x3. The goal of Ruby 3x3 is to make Ruby 3 be 3 times faster than Ruby 2.
philipwalton · 2013-02-04
The double hyphen is actually part of a pretty common naming convention (BEM-style) for distinguishing between separate components, component modifiers, and component sub-objects. Examples: https://gist.github.com/1309546 http://nicolasgallagher.com/about-html-semantics-front-end-architectur… http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem… http://engineering.appfolio.com/2012/11/16/css-architecture
WickyNilliams · 2013-07-29
No I'm not arguing for style attributes, that's a maintenance nightmare waiting to happen (with very little waiting needed!). They are a layer of indirection indeed, but which of these do you think conveys more information/semantics to the developer (these aren't bootstrap specific classes, just illustrative): <div class="sidebar"> <!-- content --> </div> <!-- or --> <div class="sidebar grid-one-whole grid-one-half-medium grid-one-third-large"> <!-- content --> </div> The second one is way more verbose, but at a glance you know exactly what is happening (assuming my class names are obvious enough). The classes convey information that an amalgamated class you get from @extend simply cannot. First let me say that a lot of what I'm talking about is optimal for building large-scale web sites with lots of page variants. Your mileage may vary for smaller sites, the principles can still be applied, but you might not need adhere to them as strictly. There's been a movement in recent years, Object Oriented CSS (OOCSS). This ethos urges the developer to write CSS as they would other code, using the hard lessons that have been learnt in other language. We should be thinking in abstractions, utilising the single responsibility principle, favouring composition over inheritance, loose coupling, and self-documenting code. I'll go through these one at a time, because the benefits of each flow throughout one another. Abstractions - using a single class like "sidebar" to contain…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close