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
- 1CSS Architecture7 people · 196 points · first shared 2012 · 53 comments on HN
- 2The goal of Ruby 3x3 is to make Ruby 3 be 3 times faster than Ruby 26 people · 23 points · first shared 2015 · 9 comments on HN
- 3How is ruby different in japan3 people · first shared 2017
- 4Ruby 3 and JIT: Where, When and How Fast?2 people · 9 points · first shared 2018 · discussion on HN
- 5Ruby Mixins & ActiveSupport::Concern2 people · 4 points · first shared 2013 · 1 comments on HN
- 6Bundler is Built into Ruby 2.6.0preview32 people · 3 points · first shared 2018 · discussion on HN
- 7JIT and Ruby's MJIT1 people · 115 points · first shared 2019 · 54 comments on HN
- 8Ruby 3x3 Progress1 people · 22 points · first shared 2017 · 4 comments on HN
- 9A Composition Regarding Inheritance1 people · 12 points · first shared 2014 · discussion on HN
- 10My Experience With Mob Programming1 people · 4 points · first shared 2014 · discussion on HN
- 11Benchmarking Ruby's Heap: malloc, tcmalloc, jemalloc1 people · 4 points · first shared 2018 · discussion on HN
- 12Don't make your users wait for Garbage Collection1 people · 3 points · first shared 2012 · discussion on HN
- 13View Models, Form Objects, Presenters, and Helpers Oh My1 people · 3 points · first shared 2017 · discussion on HN
- 14Ruby, RubyGems and Bundler1 people · 3 points · first shared 2017 · 1 comments on HN
- 15Improving the bundle size of Reactstrap from 295kB to 84kB1 people · 2 points · first shared 2017 · discussion on HN
What HN people wrote when they linked it
ch4s3 · 2016-06-30
Ruby 3x3 is a plan to make Ruby 3 times faster than Ruby 2.x. Here's some further reading:
http://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3…
https://blog.heroku.com/where_will_ruby_go_now_talking_with_tenderlove…
https://www.reddit.com/r/ruby/comments/3tje5a/ruby_3x3_ruby_3_will_be_…
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/
glitchdout · 2013-04-25
I'm just going to leave here some of my CSS Good Practices bookmarks:
* https://github.com/necolas/idiomatic-css
* http://coding.smashingmagazine.com/2009/04/08/from-table-hell-to-div-h…
* http://engineering.appfolio.com/2012/11/16/css-architecture/
* http://www.stubbornella.org/content/2011/04/28/our-best-practices-are-…
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…