List

The Future of Sass

The Future of Sass

by Hampton Catlin

In this presentation titled "The Future of Sass" at Rails Conf 2012, speaker Hampton Catlin provided insights into the features and developments anticipated in the upcoming Sass 3.2 release. He began by sharing his background with Sass, admitting that he had taken a step back from actively discussing it due to burnout from previous consulting work. After detailing his journey, including his work on various mobile applications and his role at Move Web, Catlin shifted focus to notable improvements coming to Sass.

Key Points Discussed:
- Catlin announced the introduction of placeholder selectors in Sass 3.2, which allows developers to declare reusable classes without printing unused selectors. This feature enhances the ability to create cleaner and more organized code.
- Another significant improvement is the new mixins with content feature, which allows for more dynamic and flexible CSS structures through nested media queries and passed parameters.
- The presentation highlighted the resolution of issues with at media queries, allowing for nesting and more complex, responsive design implementations.
- Catlin emphasized the importance of load paths, making it easier to manage Sass files across different directories, streamlining the compilation process.
- He addressed deprecations including the minimum Ruby version required for Sass to function properly, enhancing compatibility and performance.
- Catlin concluded the features by teasing the right path for increased performance and accessibility improvements, signaling a shift towards a C implementation of Sass—dubbed LibSass—that promises significantly faster compilation times.
- The major theme of the presentation was the push to make Sass not only more powerful but also more accessible for designers, encouraging their participation in using the language effectively.

Throughout the talk, Catlin used anecdotes from his past experiences in the industry to illustrate the challenges faced in web application development and how Sass can help mitigate these issues. He expressed a vision where Sass would serve as a powerful tool in the web design toolkit, allowing developers and designers to create sophisticated stylesheets with ease. Catlin encouraged the community to try Sass, provide feedback, and spread the word about its advantages, particularly to designers who can benefit from its features without feeling overwhelmed with learning a new syntax.

Ultimately, Catlin's presentation was not just about new features but about championing Sass as a tool that bridges the gap between design and coding, making web styling more intuitive and enjoyable.

A glimpse of some of the features coming to Sass in the pending 3.2 release. Plus, a huge announcement about the project that's been months in the making as we have secretly toiled away on something that we think will be awesome. Hear it first at this talk. Repositories will be made public when the talk is over. Shh! Its a secret!

Rails Conf 2012

00:00:24.679 hi I'm Hampton okay and i'm here to talk to you about the future of SAS how many
00:00:32.400 people here use SAS hi nice to meet you
00:00:38.370 all yeah so I created SAS for something
00:00:45.210 years ago for five years ago I kind of did the initial stuff hope and more of that and so I decided it's been I think
00:00:54.480 it's been four years since I talked at a railsconf and like so this is I feel
00:01:00.090 really good being back like I'm back with my people you know like finally a crowd I understand and so I kind of want
00:01:07.439 to start off with just a real quick like where I've been just like a quick little update because I love talking about me
00:01:13.890 and I know you love hearing about me so this was something that Ryan Carson said to me he's like used to do all this cool
00:01:20.429 stuff before then you disappeared and I realized I kind of stopped talking about what I was doing like I stopped blogging
00:01:26.399 and I was just doing stuff but I didn't actually tell anyone so yeah I was like
00:01:31.979 that's what I'm doing the section cuz I'm like I want rails people I want you guys to know what's been up and the
00:01:39.119 simple first answer is burnout I worked at a consultancy called n space in Toronto which despite what ehh keep
00:01:46.649 saying I'm not Canadian I wish I was me no I'm an American but i was living in
00:01:52.950 canada so whatever yes ass was invented in Canada but it was written for like a
00:01:58.740 boutique consultants he called on space and you know we did really great work I was really proud of what we did there I
00:02:03.779 worked super hard but what kind of happened was these people keep coming in
00:02:09.629 with you know they come with an okay idea like people too much money and there's like hey should do this whole web thing we'd come
00:02:15.239 and take the idea and I put my heart into it I'd make it into something I was really proud of them like this is awesome like no you're going to make so
00:02:21.390 much money doing this just do this in this and cover the whole plan and build it and like spend three or four months of my life on it and then inevitably
00:02:29.099 what kept happening besides only two clients I think they just kind of they failed at it like they kind of gave up
00:02:35.970 or didn't actually go through with it or only kept it up for a couple of months and didn't go you know talk or get any
00:02:41.760 groups or do any marketing or even blog or any the basic things that we would
00:02:46.769 just assume you do and it's amazing how fast that can kill something like even something that's kind of good just nobody ever goes to the site you don't
00:02:53.069 tell anyone about it you know I try to tweet but that'd be it so yeah I just you know I couldn't do it couldn't do it
00:02:59.310 like I was like I have to make something myself and I think that's a very common thing you hear the people who do consulting at the end you're just like
00:03:04.650 okay it's my turn to see if I can do this so a friend asked me like I just
00:03:13.319 overheard them go I actually didn't even have an iphone and they were like I wish I could like view Wikipedia on my iPhone
00:03:18.510 so I made this I I pedia or I wick depending on its version this is like
00:03:24.329 what i did is i kind of like stopped being part of the rails world and you
00:03:31.230 know it had ads on the top and it's it sold really well as the first wikipedia
00:03:36.480 up out there you know it's not perfect but I was pretty proud of it got really
00:03:41.609 popular crap ton of downloads I don't know the exact number but it is the unit of crap tons the problem was that this
00:03:48.239 was called I wick the Wikipedia encyclopedia a little problem the W is
00:03:54.209 copyright and you can't really say wiki plus encyclopedia without start to do some trademark infringement so I got a
00:04:00.450 call from Mike Godwin who's the legal counsel for the commedia foundation that
00:04:06.030 runs wikipedia and of Godwin's law by the way casing he was familiar with that yeah but he called me up and just like
00:04:14.489 hey you know this isn't cool but would you mind changing it and these are the things I was like yeah I'll change it
00:04:20.669 but uh like do you guys want a nap so as
00:04:26.520 it turns out i think i'm the only software like only start over in there was acquired by wikimedia i
00:04:32.230 totally think I get the only they actually kind of bought it and bought me yeah and I don't definitely don't think
00:04:37.960 that's happened before or since so this it kind of I got even more W's in the corner I was like yeah or official now I
00:04:44.590 mean this wouldn't do a bunch of virgins I assume you guys have seen I'm not responsible the most recent one it's not
00:04:51.190 getting great feedback the one right before was the the one I built it's true
00:04:56.680 go look in the store sort of look done nobody i love those guys they're working really hard in their fantastic after i
00:05:03.730 installed them publicly but the real thing i was doing why was there there was the app but then there was the
00:05:09.160 mobile site and that was really the heart of what i was doing so if anybody
00:05:14.290 has drunkenly looked up a fact on their iphone and seen the mobile site yeah that was team of one doing that so I
00:05:20.920 kind of disappeared but I showed up while you were drunkest it's a bit like being the Hampton ferry floating in and you know you didn't even know I was
00:05:27.580 there there were two sets of tracks in the sand I was one at whatever many how
00:05:35.860 so still being offensive it was written in verb and yeah it just recently it's
00:05:43.840 still the same product to get ported about six months ago to PHP don't ask
00:05:50.430 but 1.8 billion monthly pageviews so I'm pretty proud of that yeah I think when
00:05:57.820 it switched for movies about 900 and it wasn't for performance reasons it was political which sucks but also I did
00:06:05.170 this sorry I'm go faster if this dictionary I don't know if this one of the things I'm most proud of if you
00:06:10.870 don't have this app get it it's free but what's on different platforms with the iphone one like it was with the iphone
00:06:17.470 3gs and i wanted to have an on phone dictionary so and had to fit in i think it was ten megabytes of the time and
00:06:23.140 also had a terrible processor and sequel light with indexes I couldn't really use so it but its search as you type and
00:06:30.760 with sound alike algorithm so you can misspelled words and it will figure it out for you which was super ridiculously hard i spend like a month just tweaking
00:06:37.810 the algorithm so the user experience was awesome you can see the same user experience now on your iphone 4s but the processor is
00:06:43.630 crazy fast and so all that hard work would have just been easy now many also whole bunch of people that did some more
00:06:50.289 stuff gap with white cats called color puzzle and then I kind of got bored of
00:06:55.810 just doing my own stuff and basically now I met move web I'm the director of
00:07:01.090 engineering there and kind of oversee our platform development basically we kind of take regular websites and make a
00:07:07.090 mobile and we try to do in a way that doesn't suck as the I think the woman to
00:07:12.430 present early this morning on all the bad sites none of those are like ours we do too can we do good ones we're kind of
00:07:19.120 still if though they shown our technology maybe we'll be hearing about this later some other point but yeah
00:07:26.050 we're about half a billion page views through our cluster and yeah went from oh sorry the important part not funded
00:07:32.380 completely bootstrapped two years ago for people today 43 and we're profitable so yeah it's pretty awesome we've been
00:07:39.580 growing like crazy I know right it's like it feels so good to say that it's like yeah we didn't take a dime it's all
00:07:45.940 yeah but hiring is a little stressful because you're like do we really need this person but you come out of
00:07:51.460 something good all right back to the SAS at hand another great joke I think so um since kind of at that point I broke off
00:07:59.110 from working on SAS or Hammel and you guys probably know these fellows Nathan and Chris who like the amount of Awesome
00:08:08.470 I can say about them I just can't like they have really run the project they've owned the project they've made it what
00:08:14.409 it is today if I had been running it it probably would have ended up like less
00:08:19.510 or something not not very well polished that's my insulting thing to less no but
00:08:25.630 like they they really brought all these extra features kind of when I left it was like all I wanted was nesting and variables and like maybe some functions
00:08:32.169 and mix-ins like the most basic probably the way I think a lot of people use it or like me but they really gone and the
00:08:37.930 thing is just deep you know you can go pull into it as a language and there's all this craziness and then I want to
00:08:44.800 clear up a couple things about SAS real quick scss this is may be contentious with people it's the extension de SAS
00:08:51.970 files now that's the way we're timing indented sasses will remain supported
00:08:59.259 but the brand confusion on what's SCSS what's ass scss is really taken off
00:09:05.110 people really like it new users you know as much as i'm like hey just learn it you know they really connect with it and
00:09:10.869 so you know even a move web we as SCSS I know Chris uses SCSS so we're kind of
00:09:18.339 going with that so now it's really just the extension to SAS files isn't of fact the book pragmatic guide to SAS by
00:09:24.850 Michael Caitlin and Hampton Caitlin available now for purchase we only talked about like we don't really cover
00:09:30.399 indented SAS which was the thing I made for myself but other people you know they kind of put throws people off so
00:09:36.929 anyhow that's just said to settle that and it's a snot SAS please don't do this
00:09:43.869 it looks like you're screaming it's a backronym not an acronym okay I just thought SAS was a funny sounding name so
00:09:51.069 i went with that and everybody now just when i see that it's like yeah I don't
00:09:56.350 know it looks like something made by a committee when it's all on letters or something right yeah so what am I
00:10:01.990 talking about now is SAS 3.2 and SAS 3.2 has been all Chris and Nathan's work i'm
00:10:10.089 not claiming i helped with any of this but i'm simply tell you about it yeah so
00:10:17.199 this is actually going to release a long time in coming it polishes off a lot of corners and it should be out in the next
00:10:22.240 couple weeks where you go through a couple of things that are coming into SAS in the future police holder
00:10:27.999 selectors so this there's been a lot of
00:10:33.179 requests with wait who here uses at extends okay yeah so it's it's
00:10:40.720 definitely a ninja tool and this kind of gives you a little insight into it it's
00:10:46.720 really really awesome it's really worth looking into Chris when he usually does his talks it's all about these kind of
00:10:52.269 features and i'll be honest i mean i use this a little bit but i don't write that
00:10:57.669 much sass anymore i mean i'm not doing a lot of front-end work I'm mostly just coming into other people's code but this
00:11:03.699 stuff's really really powerful but basically when you define a class you can kind of use that class later and say that it
00:11:10.810 really inherits from those selectors so it's kind of like I think of it like mix-ins but you're also bring along the
00:11:16.600 selectors and one of the problems is like let's say you want to make a reusable class that you're going to
00:11:21.910 extend somewhere else well it would always print out like the normal thing is it would print out that selector that
00:11:27.519 you never actually used on your page so by putting in sorry so the proposal have been at silent you could do at silent
00:11:34.029 put a selector and it would never print out so instead if you put a percent in
00:11:39.279 your selector that will that first bit will never actually print out itself but what you've just done is you declared a
00:11:45.910 placeholder selector and later anywhere else in your file you can use it so
00:11:52.089 libraries and stuff can define these so here I take dot highlight and I extend with a strong link and then all of a
00:11:58.870 sudden see how it kind of places itself into that spot the logic to get that
00:12:04.120 done and it extends is mind-blowing because you're really there's a lot of math about selectors and it'll do even
00:12:11.200 crazy stuff like this is a simple example you could just put it in place but sometimes when there's a comma and
00:12:16.750 you're doing multiple selectors or conditional selectors and it all kind of works which is pretty awesome so that's
00:12:23.110 the thing that's going in this is 1 i'm really excited about mixing content I also call it blocks for mix-ins which
00:12:30.459 will make sense to Ruby people so here's the example and this actually your I would totally will use this as soon as
00:12:38.050 this is out mix an iphone that i have a media query inside that mix in and then
00:12:43.870 I kind of define some stuff and then I say at content and that's basically the yield right so it's saying right here
00:12:50.620 put anything you passed me so then when i use out include iphone down below this is where i'm actually going to print
00:12:55.959 stuff out and then i say body color red so i passed in those selector sorry
00:13:01.089 those attributes into the mix in which we have never been possible before you just call them and that's it and then
00:13:06.970 look what happens I media only screen and then kind of nested inside that is this body so and going further where
00:13:14.380 this gets really useful is we now support what I call at media craziness I'm sure
00:13:21.010 a lot of people here have hit this add media is not perfectly taken care of and SAS 3.1 and before it kind of like you
00:13:28.900 can do simple ones but it you can't combine them they can only I think they can only be on the route like there's
00:13:34.030 all sorts of not goodness about it we kind of like basically this is a huge push almost every you can nest at media
00:13:40.600 queries and it will join them with an end you can use you could call at iphone
00:13:45.700 somewhere deep in your code and it will just kind of go back to the top level in place at media's around it so it's
00:13:52.780 really nice this will really help with responsive design stuff this is a feature I like load paths it's pretty
00:13:59.080 simple seems like it should have been there before variously they're also called include paths but you can
00:14:04.300 actually set an environment variable and say hey add this kind of using the colon normally unix style you say hey this
00:14:09.970 folder search here also for spss file so if you have like a little snippet or like a little repository of your secret
00:14:17.380 tricks and stuff and you're compiling locally you can do that so it's kind of cool and this is what compass is going
00:14:23.860 to use in the future because you just it's a load path instead of a special case and then some deprecation 'he's 187
00:14:32.170 is now the minimum ruby version but if you're using 186 that's the look i gave
00:14:37.270 you I am person foo is gone I don't know everything is a really cool thing it
00:14:42.730 used to be what we kind of do to get around not having out extends when you want to do some kind of ninja put these
00:14:48.610 two together in a different way but you now you have to have a space and that's
00:14:54.010 because doing the ampersand got really confusing in the edge cases like do you actually insert the previous selector in
00:15:00.460 there anyhow blah blah blah it doesn't work that way anymore it's only the simple case use ad extends that's much
00:15:06.550 cleaner way it's got all the proper logic behind it it will behave in a repeatable and understandable way thanks
00:15:13.150 for watching oh I was trolling you we
00:15:19.420 actually are announcing something alright so coupling just to start some
00:15:29.579 pros and cons of SAS first alternatives number 1 mature like way older than any
00:15:37.529 other ones and with that bug fixes and edge cases or pretty much taken care of it you don't really deal with them these
00:15:44.070 are all the good things advanced you can do like I was saying that extends although there's very few situations
00:15:49.649 were like no that's impossible Chris I've seen make sure that you like he's the most advanced user ever and like
00:15:57.269 he's thought through all of this so there's an answer maybe some of our competitors have lots of we don't handle
00:16:02.820 that as a response and so that's things like full unit support and if you can if
00:16:08.850 anybody gives suggestions on how to do the units will take them if we can make it work better we have tons of functions
00:16:14.820 selector inheritance which is the same as that extends I mean in tons more once again see Chris Epstein talk he will
00:16:22.050 brief you in all of it but here's the downsides accessibility yes Ruby is
00:16:29.250 installed on a stock Mac but getting a designer to go into the command line and
00:16:34.769 type that stuff and it's kind of a big step for them also if your designer you used to working with a framework we do
00:16:40.649 have the gooeys but those are kind of also you have to go kind of setup stuff on the side and a lot of people are kind
00:16:46.470 of not into that you like you have to go if your designer uses you have to go to the developer who's you know using
00:16:52.920 whatever technology to a to go doing this is this is where less really one when they went to JavaScript right drop
00:16:59.910 it in the page you don't need anything if you got a browser you can compile so they really kicked ass with that and
00:17:05.970 then speed speeds a pretty big issue if you're a really advanced user wait i
00:17:11.730 hope we here's a good question who here thinks speeds an issue in SAS whose to that point okay alright so the rest of
00:17:17.160 you have pretty small projects because it move web between art we have ton of projects but I about fifty thousand
00:17:23.400 lines of sass I think caring calm or chris's have probably has that on there one ref site so the average project that
00:17:31.470 we have is about 30 seconds to compile caching helps with this stuff if you have it set up right but if you push too
00:17:37.470 coo or whatever in your asset pipelines a little off then it takes this or longer some of our projects take about
00:17:42.780 two minutes to compile which is just unacceptable like completely so that's
00:17:48.450 why I'm proud to announce SAS jayus no
00:17:53.520 I'm trolling you I'm totally trolling you hell no they're already got that they already got that I'm sick yeah no
00:18:00.720 we're not doing that noise it's even crazier than that so how can we get it
00:18:06.870 fast and accessible what's the language that you can compile anywhere Lib SAS
00:18:14.299 like we re implemented SAS in c yeah it
00:18:19.799 was crazy it's mostly this guy Aaron yeah I mean if I hadn't met Aaron who is
00:18:25.470 just super de Solis Marty works in move web loves parsers loves languages and when when I kind of mentioned this idea
00:18:31.830 which I think only if you've ever read the SAS code and you know the edge cases that are covered in there I mean it is
00:18:37.770 complex there's there's like lists that aren't keywords which are also arrays I
00:18:43.650 need to be dealt with in like the same way is it's crazy right but he really took on the challenge and well hopefully
00:18:51.000 you guys will think we did a good job so here's the main design constraints that we had so it's a see interface with C++
00:18:58.080 internals we're corrupt quite crazy enough to build a full tree and see we try to get this done in about two months
00:19:05.330 so yeah c++ internals its statically linkable and also no external libraries
00:19:12.450 that that would've made a lot less it would have been a lot easier we should like imports nice tree algorithms or
00:19:17.850 something or an ast or something like that nope statically linkable its small ish the main site it's about 600 k if
00:19:25.980 it's a library compiled on my Mac mostly you actually have to keep a list of all
00:19:31.980 the colors I don't even think people notice you guys know that you can add red and blue together and then sass will
00:19:37.289 compile out to fuchsia like it actually figures it out and then if you use a color that's a hex code it'll look up
00:19:43.049 the word so that takes some size because we have the full list of all the colors
00:19:48.419 plus some extras want to have a simple interface so it's really easy to integrate and obviously
00:19:53.830 fast and then for now we're doing sass 3.1 features not the ones okay 13.2
00:20:00.280 thick it is just a set of goal right it's not out yet but we're like okay if we can get this done it'll be awesome
00:20:06.990 the development was sponsored by move web mostly because I said we use it internally a lot and a lot of our tools
00:20:14.560 are now using go so we actually wanted to on our production servers not have to have Ruby installed but you know we just
00:20:22.150 like why isn't as possible also right we should be able do this you guys for about two minutes less than Chevy
00:20:28.330 grayling she's a little over two months in we actually got a lot more done than I thought a lot more edge cases are
00:20:33.460 covered and then the big thing is working on adapters and I'll get into that in a minute so here's the stuff
00:20:39.430 that is pretty much completely covered mix-ins just work anyway use mix-ins variables are good most unit conversions
00:20:46.450 that's more I'm scared that there's crazy units we missed that's all I'm trying to read through the code on that
00:20:52.180 but you know simple interpolation there's some edge cases that don't work
00:20:57.300 most functions color functions if anybody loves color math please help and
00:21:04.930 then honestly it's every besides the color functions it's everything i use personally is currently working so when
00:21:10.450 I just go start writing it just it does what I do there's stuff that it doesn't do yet where selector inheritance is
00:21:17.680 coming probably in that this is a release I'm going to do next monday so Aaron right now as I'm doing this is
00:21:24.010 currently coding on making sure that this works correctly full interpretation with all units and then hopefully we'll
00:21:30.160 have gone through and just double-check sure we have all the units it's all the normal units but I don't know you guys
00:21:35.440 me you can do crazy unit math and conversions and stuff and so don't know people do it but you probably don't even
00:21:40.630 notice when you're using a library right you're mixin can use certain settings and then it doesn't matter what you pass
00:21:47.080 in any oh and then after that obviously color functions control directives and
00:21:53.440 then a callback api call that kpi is pretty big because you can implement functions in Ruby right now basically we
00:22:00.280 want to MIT we want any host environment to be able to mimic that where you can actually go into whatever language you're using and just
00:22:05.919 go right a you know in that language go write a callback function I'm sorry call
00:22:11.080 a function in sask will eventually get routed to that language there's the
00:22:17.649 benchmarks I had trouble making it clear but there is a green line to the right of it yeah and now it's pretty fast it's
00:22:28.419 roughly this is the worst case number this is out of our projects we've been compiling this is the worst case number
00:22:34.029 of speed improvement yeah so and the
00:22:39.369 best case when we do one big file and it's super nested a lot of this is IO kind of limited both languages are
00:22:44.649 having to wait for operating system to read a file right so lots of files lots of i/o but it's about 10,000 times
00:22:51.789 faster not % not times whoo ten thousand percent faster if you do like one big
00:22:59.499 file or iOS and really the thing it's more calculations and stuff all right so
00:23:04.599 lips s is is kind of inert itself it's built in the tradition of a proper library like you can compile it but it's
00:23:12.820 just a library file he doesn't do anything so sassy it's a good name right
00:23:18.549 sassy yeah yeah I like it so in generally sometimes well find myself we
00:23:25.029 refer to the overall project is sassy but like really strictly there's they're two different things so lib SAS is
00:23:31.059 basically the internals when you build sassy sassy is an executable project and
00:23:36.339 we don't it's not perfect yet we're quickly trying to add like we would work
00:23:41.739 in the library so much that only the last two days where we like oh we should probably write the wrappers now so it kind of works in this forum where
00:23:48.999 you kind of run it and pass in a file name and then it'll pipe out the results but we're gonna you know it's just you
00:23:55.299 have to go in to see and just write the stupid code right but you can pipe in you can do all the normal stuff we can do with the command line SAS and this is
00:24:02.469 how we ran the test by the way we so it was actually starting up a process and Ruby we didn't require to do that so it
00:24:08.979 was a little bit of cheap well cheat and that it helped Ruby but yeah this is the way we ran the test but the real plan
00:24:15.399 for this thing is this Ruby which is a real project that I've been working on wraps around lips ass it
00:24:23.510 uses Ruby ffi rate compiler looks just like nokogiri you install it says compiling and then you're done so it's I
00:24:31.730 didn't upload to the gym server yet because it works on my computer but I know these native gems I didn't want to
00:24:36.799 look like a fool if everybody's like holy doesn't install so give me a couple days on that will be tweeting
00:24:42.380 that but the repos there and yeah so we're just wrapping lips asteroid loops
00:24:47.659 ass is just the guts it's just the logic but I really want sash Python it's ask jas I mean I'm not gonna probably work
00:24:54.350 on the I don't know about those languages I don't really want to know about them necessarily it sounded really catty didn't it yeah but like I want
00:25:01.669 people to go build this I mean we can do with J&I I don't know people in Eclipse land like why can't they enjoy what we
00:25:07.880 have right like that's that's what I really want I want it to be that it's just part of your normal tool chain so I mean there's more sass whatever language
00:25:14.600 I don't care Oh sasco is another one I'm i mean i'll be releasing that one soon I'm just cue really quick about the capi
00:25:22.370 I know it's really simple oh and I think that's what I'm trying to prove that even if you don't really know see that
00:25:28.130 well you'll be like oh that makes sense so this is basically how that red doesn't work does it this is kind of a
00:25:36.970 mangled version of what sassy does but all you've to do is build a context
00:25:42.890 object called SAS new context you have it it's a struct you sent input string
00:25:48.350 on it then you can set the output style and then you run compile and then the
00:25:53.390 context object has errors and it also has normal other stuff that you'd be looking at this would break in an air
00:25:59.570 case I think you just print out nothing but this would print out the output and then you it's see so you need to free
00:26:06.260 the context that's that is the API it's very very dumb and we wanted it to be
00:26:12.529 dumb because you know integration should be easy and then just really quickly
00:26:18.409 these are the strokes wow I'm going fast I know you guys have some questions SAS
00:26:28.370 options that's like a shared object right now we only have two things and it but include pass is important you
00:26:34.520 probably put the director you're in even wherever your SAS files are plus compass and load path and all that and then this
00:26:41.120 is you see SAS options as part of this context and this context is particularly for strings so we do input string output
00:26:47.360 string air status and error messages it's pretty simple we have two other context you don't have to pay that much
00:26:53.660 attention but I mean there's a file one where you just pass it a file name and plus mostly the same options the other
00:26:59.210 ones a folder which is the way that kind of rails works for you you know subfolders we want to see it's actually search path instead of input path so we
00:27:06.770 go find all the files compile them keep them all in memory at once so that we're not having to like you know we can just
00:27:12.050 focus on the output files a little more efficient but you know you can you can do it all with strings if you're writing adapter library we don't really care you
00:27:18.230 can handle it we don't really it's fast know if we don't care yeah and look the
00:27:23.780 question is why right like is it like oh let's get out of Ruby forever no it's
00:27:29.990 not this is about like I truly believe SAS is awesome like I've made a lot of things in my life right you know like
00:27:37.280 well go hamel I still love hamill i use hamill i'll never stop using hamill I built it for myself you know and I'm
00:27:44.840 happy other people like it people come up to me and they're like what you know why I you know him I really camel and
00:27:51.770 I'm like good I mean I don't know I I do I mean and it's fine I mean I don't it
00:27:57.980 doesn't hurt my feelings you know people seem guilty about this I wouldn't really use Hamlin like yeah I don't yeah and it's not a big deal because honestly it
00:28:06.410 was something for me and sass started that way but it's become something different like when IC designers and
00:28:11.600 people using CSS and then they like the dumb the stupid thing you can nest like
00:28:17.450 do like what Oh obviously you should have right like I'm still surprised I
00:28:22.910 can't as far as I can tell anywhere on the Internet this was the first time buddy thought to nest CSS really or at
00:28:29.750 least they ever even proposed it I nobody's even pointed out a thing like that like that's such a dumb obvious
00:28:35.540 idea and like you know less is doing their thing and they're kind of going for the node crowd or what right but like I'm thinking about all
00:28:42.540 the people in corporate offices doing design right and they're having to work in a built environment they didn't choose and they don't even like right
00:28:48.990 why can't we bring that to them you know SAS came out of the joy that I got doing
00:28:54.030 rails you know that that freedom that as you learn you become like a ninja right you don't feel strapped down by the
00:28:59.730 environment you you learn a new thing you can do and you just refactored your coat it's more beautiful right that's
00:29:04.800 that's that power that's I mean at least that's why I'm here and that's why i love rails and and I think SAS has some
00:29:11.100 of that but less for me because I don't spend all day doing CSS but when IC designers who work for me and they're
00:29:16.380 you know personally ought to learn something like no no this is the trick with scss this is why it was so successful it's like no no you can just
00:29:22.980 keep doing everything you normally do don't change anything try putting a variable in and they're just like what
00:29:28.830 like and it worked magically so i really i really want to bring this out to people i really want to bring this to
00:29:34.650 the world I'm kind of and part of it is the competitor I'm gonna keep that
00:29:40.350 competitors I don't really feel like there's a lot of edge cases they miss and I mean stylist and less and a whole
00:29:46.260 bunch of other ones that are out there that are just popular you know they're either really flimsy or they kind of
00:29:52.080 look just like the number of open issues on lasts like and the response to most of them are just like oh like oh sorry
00:29:59.490 yeah it doesn't do that it's supposed to be small right but like why can't we bring a really powerful full-featured
00:30:05.010 environment to designers with every like full out software development why can't
00:30:10.590 design be that right and that's the mission I'm on and that's how much I know that's I think I think that's
00:30:15.810 Chris's on his blog it's like he's like making web design like or have all the
00:30:21.150 same tools of software development right just make it a real thing you empower them and people are happy they make some
00:30:26.370 love their job again so what can you do obviously you guys are rubios so SAS
00:30:33.810 Ruby try to install it give me feedback for breaks Felgate issues please if
00:30:39.990 anybody here know C++ or used to do it and wants to help out with color functions really appreciate it
00:30:46.700 evangelize I mean that's and that's why follow me on twitter @ h Catlin and
00:30:51.740 retweet which sounds stupid but when I I'm a little worried like when we come out with like SAS Python right like
00:30:58.830 most people who follow me or rubios and they're like her Python okay or whatever
00:31:04.170 you know it's the other guys we're not usually retweeting Python stuff all the time but like if if people do that then
00:31:11.130 they'll hear about it you know if you just take that one step somebody follows you probably does it right so then
00:31:16.590 they'll get to find out about this cool thing that came out of the Ruby community so yeah that's and you know
00:31:22.320 tell your designers if you're at a company and that first or the I don't want to learn something new and be like you don't have to it's okay calm down
00:31:28.520 you know it works with CSS CSS is totally valid and yeah so here's the
00:31:35.880 link gasm I think these are all live Michael yes all right so they just went
00:31:43.470 live so there's lib SAS which is the internal library there's sassy which is the binary which I'm trying to get brew
00:31:50.130 going for that so that you can just do brew install sassy I mean like come on that'll be so awesome right and then SAS
00:31:57.210 Ruby which I really want to get going because think of it like ER beavers rubus right I mean obviously rails will
00:32:02.850 never include this because it compiles but you know and maybe your things that's a little one why not have it
00:32:07.980 right why not give back to the Ruby community with this there's my twitter at age going so I never pimpin enough
00:32:15.960 people are always like oh you kind of mumble over your twitter name and so I'm trying to do it a lot and then yeah so
00:32:23.940 the pragmatic guide to sass which I by the way is a dream to write for prague
00:32:29.429 prague like you know just such great authors they're such great people in getting to work with them was amazing
00:32:36.030 like total lifetime dream and i got to write the book and my husband Michael and yeah so we have a twenty five
00:32:42.540 percent discount code makes a great stocking stuffer for Memorial Day is that coming up yeah I don't know give it
00:32:50.220 to you give it to designer friends it has easy install instructions you know or what I do it like sometimes just like
00:32:55.830 you put on the coffee table at work you know people like Oh what anyhow so it's
00:33:02.700 30 minutes past now so I think obviously we have some time for some QA
00:33:08.029 please don't beat me up about Hamill I don't care if you don't like it but any other question ya know you actually can
00:33:15.590 I will if somebody wants to discuss it questions oh yes lady back there
00:33:38.740 he I know right I'm glad you like camel so
00:33:50.070 the question was a besides Hamels awesome the question was what was the
00:33:57.240 like what toolchains do the designers and move web views uh I mean without
00:34:02.550 getting into too many specifics we have our own so I mean that's kind of what we're doing it is a platform i think i
00:34:08.880 can say that much so it's kind of tightly integrated into it so yeah i
00:34:15.030 mean that is kinda one of the downsides right now is that if you're not doing rail if it's not rails project it's easy
00:34:21.060 drop it in this folder it builds you don't have to think right but yeah I mean and this is actually one of the
00:34:26.730 reasons behind this is there like their Scout app which can compile stuff for you if you don't like the command line
00:34:31.770 but yeah I mean there aren't a lot of tools that integrate and you know yeah
00:34:37.470 like I was saying you know Ruby's installed on Macs and that does make that easy so that's good but you know
00:34:42.630 windows things what about commercial applications you know I mean I my life will be changed the moment that a
00:34:49.500 commercial application comes out like whatever dreamweaver or something right and there's just save as a CSS like that
00:34:56.490 would just write and Cohen Ruby like Rudy people we this is our thing and it's in your world now that's what I
00:35:03.360 want and so that's I mean it's exactly it's like oh you play with that oh that was cool but it doesn't work in whatever
00:35:08.850 I mean I'm curious what to without you giving anything like what tools that do
00:35:14.040 you guys or did they primarily use
00:35:31.770 so you but you mean like text editor an IDE kind of thing so we use a sublime and textmate I think are the two mmm
00:35:44.880 yeah I mean well vim has highlighting eMac says highlighting text mate and
00:35:50.340 then everything that supports textmate does yeah so what we're mostly using text pane sublime think of the two most
00:35:56.940 popular them if you want to show off is nicely Lucy the way it works in the office it's true no I'm sorry not did I
00:36:04.170 just totally insulted ever even person here including you I'm sorry it yeah
00:36:10.620 yeah yeah yeah no because it does look cool right it's like I never left still
00:36:17.790 the terminal I think it's kind of cool i'm like i can like do the simple
00:36:23.460 commands like WQ editor file and i feel cool enough doing that and then I see like pains and i don't know if i get a
00:36:30.660 pain if one appears on them I've done something terribly wrong I need to quit right now I'm like whoa I don't know
00:36:36.930 what I just did yeah vim or as i like to call it oops i forgot to hit i I don't
00:36:43.110 know if anybody else has a dance yes sorry uh other questions doctor
00:36:58.119 hmm so it's going to be I I mean my plan is that it is so SAS is going to remain
00:37:06.980 especially with rails SAS gem the normal SAS gem is going to remain as it is and
00:37:12.859 it will continue to probably be the place where most language changes come in so that will continue so it's like ER
00:37:20.539 B&E rubus right and especially because rails has a rule which makes sense no compile gyms or by default because you
00:37:27.859 don't want have to have a whole build environment just to install it um so I think the gym is going to be called
00:37:34.250 sassy just cuz i do just like the name right the project's a series that dumb
00:37:40.010 that's dumb I don't know seems don't know Jim SAS Ruby you're in Ruby you're
00:37:45.109 like I know it's Ruby the important part is the sea part yeah so they'll both
00:37:51.010 continue so I mean personally in my rails applications i mean it you know
00:37:56.450 i'm going to start putting this in as a like personal i'm compiling anyway so you know and I want to make stuff little
00:38:04.509 yeah that was the first name of it and then it was I you guys want to hear all
00:38:09.950 the details of that process on this no yeah so that was my first version and then I was like lips ash Ruby then like
00:38:15.170 it's not so but the thing is I want like SAS Python SAS Jas and so I'm like I
00:38:20.420 can't say that that naming convention that I want to see in other languages we don't do in Ruby so I was like it was
00:38:27.170 either SAS Ruby or SAS RB but shied you look at Twitter poll decisions by
00:38:33.559 committee and group think that's the best decisions ever yeah so I don't wait
00:38:39.470 which one do you like yeah the fourth
00:38:44.809 out so you have a slow oh sorry I should really be repeating what he likes a four thousand percent the recording this this
00:38:50.960 is a one-sided conversation with an Australian so yeah you like the four
00:38:57.230 thousand percent yeah me too is there a Windows gym hopefully i mean
00:39:03.849 i'm using rate compile which is supposed to do cross compiling i did a lot of the work on the flight without internet so i
00:39:10.300 was just reading source code trying to figure out how it worked and i'm not a build expert so it was I'm just glad I
00:39:17.320 got it building on my machine but I'm sure there are people experts in here
00:39:22.420 who one little patch would solve that but yeah I would love it to run on windows with with SAS Ruby I mean that's
00:39:27.839 there's no reason it can't compile and windows maybe we haven't there might be some way we haven't done it but we're
00:39:34.900 not using any extra libraries were only using the most base CSS C++ and C library I mean bears standard libraries
00:39:41.530 just the most standard all right anybody else no I thought there were more hands
00:39:49.000 they reach I'll son there we go no no
00:39:58.240 indented I'm sorry I know and that was the that was my idea I mean I still like
00:40:03.700 it I'm not it's it's in a way the
00:40:08.859 struggle for me is I I like indented a lot I think it looks really clean and it was actually funny Michael when I writing the book he's like we should do
00:40:15.099 this indented I think it looks better and he's not a breeze not it wasn't a program he learned all of this to write the book oh I just yeah dropped out of
00:40:22.630 his biology PhD and then like prag prog asked if we want to write the book and then yeah we were like I was like I
00:40:31.329 don't have the time to do it he's like I'll do it I was like yeah all right I'll help ya Sonia so I think a lot of
00:40:38.920 people who don't do CSS I do think it's easier to understand like traditional
00:40:43.990 sass i do but i think the real realization for me is that like
00:40:50.680 sometimes it's not about it's not I mostly go off what I like is what I'm
00:40:56.200 going to go with but I think this is one where I just have to go you know if every CSS person out there I want them
00:41:01.839 to have a just no friction moment coming in like you don't if your developer
00:41:07.720 turns on on SAS you can you can just keep writing CSS you didn't get you
00:41:13.599 don't feel that you have to learn something new and so it's it's only about the human element on this and the
00:41:20.150 kind of that moment that we can give however I am pushing and I don't know if
00:41:26.750 I'm Nathan area disagree on I really the plus syntax for mix-ins and equal
00:41:34.640 probably I really really want brought into CSS because the ad includes and all
00:41:40.460 that the original one of the original ideas with SCSS was kind of okay if we make this thing awesome the w3c might go
00:41:47.000 that you did it exactly that was so it's actually kind of designed to please what
00:41:54.349 they might do so it's like oh they would like at rules because that's what they do so we should have at rules and that's
00:42:00.800 there's a fair point it's also more similar to CSS but I just yeah so in
00:42:06.950 case you know you can do add includes for mixin but then in SAS traditional SAS it's just plus the name so it looks
00:42:13.550 nice to me because it almost looks like you're kind of a pending you know you're just like oh add some selectors hear
00:42:19.280 this you know and that I think it just looks so clean and I hate type II I that include and I just bugs me we'll see
00:42:26.960 maybe libs supports that secretly I didn't I didn't say that yeah anything
00:42:34.970 else what time do I have oh we have a couple probably time for one or two more
00:42:40.309 questions if there's anybody actually with questions or if I'm just oh wait in the back sitting yeah you better yell
00:42:47.890 just scream aah
00:43:09.790 hmm if you want to dig in the lib SAS yes I mean that isn't in the sea
00:43:15.880 interface right now but I mean there is if you look at the sea driver file it
00:43:21.070 basically just kind of pull pushes away all the error handling and stuff so that
00:43:26.500 is all kind of clean and but yeah you could if you want integrated with the
00:43:32.020 c++ stuff that'd be the way to do it at current to get it done it doesn't have a
00:43:37.630 full AST tree all the time the output it kind of is half streaming which i think
00:43:43.960 we're going to be changing but the whole point is it that can change and then the capi that most adapters will use it
00:43:50.920 doesn't really matter right it's the same as far as you can tell whatever happens inside is what happens inside but no I mean yeah passing and data
00:43:57.190 alright sorry I keep forgetting to repeat the question I'm looking at you camera so what if you wanted to pass in
00:44:02.440 a data structure into SAS instead of read on a file and yes you're welcome to
00:44:08.850 brave the internals yeah all right one more come on somebody's got one more
00:44:14.590 question for me and then don't just make up something right there I'm very
00:44:23.290 serious with a discount code and it is misspelled I know it has all caps is that the yeah so that came from the
00:44:29.770 editor she sent that to us and I didn't notice it till I put it on there and then I was like yeah it's all caps
00:44:37.030 on that but that is incorrect yeah railsconf catlin test 2012 I should
00:44:43.600 probably tweet that she didn't say not to anyhow all right that's a great question because that's available at
00:44:49.570 pragmatic programmers com or Amazon but the code doesn't work at amazon so go to Prague Prague they're awesome and the
00:44:57.070 book is amazing it's for beginners that by the way so sorry there is some advanced stuff covered but it's pretty much for beginners okay wait one more
00:45:02.830 question yes oh yeah sorry I probably show me to that a little bit so
00:45:09.040 basically as far as when they see something monolithic and external they're out they're not interested I
00:45:14.440 mean it was like it's like talking to deaf people about it there don't even want to look but Chris has been working
00:45:20.620 really hard I mean my god that guy is a trooper being on the forums of the w3c uses for
00:45:26.440 these proposals just answering questions and debating with people and just so there is a proposal I meant to have the
00:45:33.010 link for it that is I think accepted ish for CSS three or four whichever I don't
00:45:39.730 know where it's going to fall but for nesting so nesting is going into CSS which I just like to think that I made
00:45:47.319 that happen all by myself but yeah it's good so the first thing I really wanted is is in so yeah if they done that
00:45:54.549 earlier I wouldn't have had to do all this work anyhow so that's a discount code I'm Hampton feel free to come talk
00:46:01.359 to me of course move web is hiring and I do have cards because that's what we do yeah surbhi have a great day thanks for
00:46:08.020 coming
00:46:23.460 you
00:46:57.810 member