SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
Presenting Your Code
                                        Ian Dees
                              http://texagon.blogspot.com




Hi, I'm Ian Dees, a software developer for a test equipment manufacturer near Portland, Ore.

Today, we're going to talk about freeing your source code from your text editor and getting it into
your presentations.
TextMate
                                         http://www.macromates.com




                                         Smultron
                                         http://smultron.sf.net




The basic ideas will work on any platform, but the screenshots we're looking at today will primarily
be from two popular text editors for the Mac.
Let's say we're trying our hand at the great Computer Language Shootout with Ackermann's
Function. Here's what one solution looks like inside our text editor.
def ackermann(m, n)
           $memo ||= {}

           $memo[[m, n]] =
             $memo[[m, n]]   ? $memo[[m, n]]       :
             0 == m          ?n+1                  :
             0 < m && 0 == n ? ackermann(m - 1, 1) :
             ackermann(m - 1, ackermann(m, n - 1))
         end



         1.upto(8) {|n| puts ackermann(3, n)}




But if we do a Select All in our text editor and then copy and paste into our presentation, we lose all
the pretty syntax highlighting.
We could just take a screenshot from our text editor and paste it into the presentation as a graphic.
But that makes for large file sizes and blurry font sizes. And if we distribute our slides as PDFs,
readers won't be able to cut and paste our text.

Also, it's a pretty manual process.
pri
                                       nt         1 ! ackermann.rb ! 2007-09-03 23:11 ! Ian Dees

                                                   def ackermann(m, n)
                                                     $memo ||= {}

                                                     $memo[[m, n]] =
                                                       $memo[[m, n]]   ? $memo[[m, n]]       :
                                                       0 == m          ?n+1                  :
                                                       0 < m && 0 == n ? ackermann(m - 1, 1) :
                                                       ackermann(m - 1, ackermann(m, n - 1))
                                                   end


                                                   1.upto(8) {|n| puts ackermann(3, n)}



If you're using Smultron as your editor, you can print to a PDF and then drag the PDF file into your
slide--assuming your slides have a white background.
But I prefer a bit more flexibility. Let's look at HTML for a potential solution. We could just submit
our code to Pastie, and then cut/paste the result into our presentation.
<span class=quot;rquot;>def</span>
         <span class=quot;fuquot;>ackermann</span>(m, n)




         .r { color:#080; font-weight:bold }
         .fu { color:#06B; font-weight:bold }




And since Pastie's stylesheets are pretty simple, we could even tweak the colors before we put the
code into our presentation.
http://www.ruby-lang.org



But there's another way that doesn't require a round trip to the Pastie servers every time you want
to highlight your code.

First, get Ruby.
gem install syntax



Then, install the Syntax gem.
http://pastie.caboo.se/95056



Finally, grab the Ruby source code from this file and save it to your hard drive somewhere.
⌘B




Now, you can configure your text editor to run the script. In Smultron, hit Cmd-B to bring up the
Commands window. Create a new command, bind it to a keystroke if you like, and fill in its
contents like this. You'll want to substitute the paths to where you keep your Ruby interpreter and
where you saved the script, of course.
Now, whenever you hit your chosen hotkey, Smultron generates the HTML and (if you've enabled it
in the script) launches your browser for easy cutting and pasting.
⌘⌥R




The process is similar in TextMate. Just hit Cmd-Option-R to bring up the Filter Through
Command dialog, browse to where you saved the script, and select Show as HTML.
When you press Execute, TextMate brings up a new window with highlighted code that remembers
its colors...
def ackermann(m, n)
            $memo ||= {}

            $memo[[m, n]] =
              $memo[[m, n]]   ? $memo[[m, n]]       :
              0 == m          ?n+1                  :
              0 < m && 0 == n ? ackermann(m - 1, 1) :
              ackermann(m - 1, ackermann(m, n - 1))
          end



          1.upto(8) {|n| puts ackermann(3, n)}




...when you paste it into a slide, like this.
def ackermann(m, n)
                                                 $memo ||= {}

                                                 $memo[[m, n]] =
                                                   $memo[[m, n]]   ? $memo[[m, n]]       :
                                                   0 == m          ?n+1                  :
                                                   0 < m && 0 == n ? ackermann(m - 1, 1) :
                                                   ackermann(m - 1, ackermann(m, n - 1))
                                               end



                                               1.upto(8) {|n| puts ackermann(3, n)}


There will be a few minor dierences, of course. Punctuation, class names, and constants might be
colored a little dierently between your text editor and the resulting HTML. But with a little
tweaking, you can get pretty darn close.
⌘⌃R




And in the specific case of TextMate, you can do even better than just quot;pretty darn close.quot; Run the
quot;TextMate  Create HTML From Documentquot; command, which is bound to Cmd-Ctrl-R (as opposed
to Cmd-Opt-R) on my system. By default, that brings up the raw HTML tags in a new window, but
you can configure TextMate to actually render the HTML instead.
Presenting Your Code
                                        Ian Dees
                              http://texagon.blogspot.com




And that's it. Thanks for your time.

Más contenido relacionado

Similar a Presenting Your Code

Similar a Presenting Your Code (20)

Basic concept of MATLAB.ppt
Basic concept of MATLAB.pptBasic concept of MATLAB.ppt
Basic concept of MATLAB.ppt
 
Computer fundamentals
Computer fundamentalsComputer fundamentals
Computer fundamentals
 
Matlab1
Matlab1Matlab1
Matlab1
 
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
 
R Basics
R BasicsR Basics
R Basics
 
08 functions
08 functions08 functions
08 functions
 
Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)Parallel R in snow (english after 2nd slide)
Parallel R in snow (english after 2nd slide)
 
R Programming: Export/Output Data In R
R Programming: Export/Output Data In RR Programming: Export/Output Data In R
R Programming: Export/Output Data In R
 
Palm m3 chapter1b
Palm m3 chapter1bPalm m3 chapter1b
Palm m3 chapter1b
 
Introduction to matlab lecture 4 of 4
Introduction to matlab lecture 4 of 4Introduction to matlab lecture 4 of 4
Introduction to matlab lecture 4 of 4
 
Learn Matlab
Learn MatlabLearn Matlab
Learn Matlab
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 
Matlab-free course by Mohd Esa
Matlab-free course by Mohd EsaMatlab-free course by Mohd Esa
Matlab-free course by Mohd Esa
 
R Language
R LanguageR Language
R Language
 
DataWeave 2.0 - MuleSoft CONNECT 2019
DataWeave 2.0 - MuleSoft CONNECT 2019DataWeave 2.0 - MuleSoft CONNECT 2019
DataWeave 2.0 - MuleSoft CONNECT 2019
 
Chapter 1.ppt
Chapter 1.pptChapter 1.ppt
Chapter 1.ppt
 
MATLAB for Technical Computing
MATLAB for Technical ComputingMATLAB for Technical Computing
MATLAB for Technical Computing
 
AWS Summit Singapore - 21st Century Modern Architecture
AWS Summit Singapore - 21st Century Modern ArchitectureAWS Summit Singapore - 21st Century Modern Architecture
AWS Summit Singapore - 21st Century Modern Architecture
 
An implementation of RSA policy
An implementation of RSA policyAn implementation of RSA policy
An implementation of RSA policy
 
Structures-2
Structures-2Structures-2
Structures-2
 

Más de moto

Science Illustration
Science IllustrationScience Illustration
Science Illustrationmoto
 
Euia Medicaments 2007 2008
Euia Medicaments 2007 2008Euia Medicaments 2007 2008
Euia Medicaments 2007 2008moto
 
Funny8
Funny8Funny8
Funny8moto
 
Tintin And The Red Sea Sharks
Tintin And The Red Sea SharksTintin And The Red Sea Sharks
Tintin And The Red Sea Sharksmoto
 
The Mullet
The MulletThe Mullet
The Mulletmoto
 
Snappy Baby
Snappy  BabySnappy  Baby
Snappy Babymoto
 
Redes Peea
Redes PeeaRedes Peea
Redes Peeamoto
 
Funny Cartoons
Funny CartoonsFunny Cartoons
Funny Cartoonsmoto
 
Flowers
FlowersFlowers
Flowersmoto
 
Ravel Bolero
Ravel BoleroRavel Bolero
Ravel Boleromoto
 
Where In The World
Where In The WorldWhere In The World
Where In The Worldmoto
 
Very Funny
Very FunnyVery Funny
Very Funnymoto
 
Funny Slideshow
Funny SlideshowFunny Slideshow
Funny Slideshowmoto
 
Funny Humor
Funny HumorFunny Humor
Funny Humormoto
 
Crazy Picture
Crazy PictureCrazy Picture
Crazy Picturemoto
 
Dream House
Dream HouseDream House
Dream Housemoto
 
Best Websites List
Best Websites ListBest Websites List
Best Websites Listmoto
 
[Awesome] Military Photos Of The Twin Towers
[Awesome] Military Photos Of The Twin Towers[Awesome] Military Photos Of The Twin Towers
[Awesome] Military Photos Of The Twin Towersmoto
 
Audrey 20 Portraits Of Audrey Hepburn
Audrey  20 Portraits Of Audrey HepburnAudrey  20 Portraits Of Audrey Hepburn
Audrey 20 Portraits Of Audrey Hepburnmoto
 
What Is Love
What Is LoveWhat Is Love
What Is Lovemoto
 

Más de moto (20)

Science Illustration
Science IllustrationScience Illustration
Science Illustration
 
Euia Medicaments 2007 2008
Euia Medicaments 2007 2008Euia Medicaments 2007 2008
Euia Medicaments 2007 2008
 
Funny8
Funny8Funny8
Funny8
 
Tintin And The Red Sea Sharks
Tintin And The Red Sea SharksTintin And The Red Sea Sharks
Tintin And The Red Sea Sharks
 
The Mullet
The MulletThe Mullet
The Mullet
 
Snappy Baby
Snappy  BabySnappy  Baby
Snappy Baby
 
Redes Peea
Redes PeeaRedes Peea
Redes Peea
 
Funny Cartoons
Funny CartoonsFunny Cartoons
Funny Cartoons
 
Flowers
FlowersFlowers
Flowers
 
Ravel Bolero
Ravel BoleroRavel Bolero
Ravel Bolero
 
Where In The World
Where In The WorldWhere In The World
Where In The World
 
Very Funny
Very FunnyVery Funny
Very Funny
 
Funny Slideshow
Funny SlideshowFunny Slideshow
Funny Slideshow
 
Funny Humor
Funny HumorFunny Humor
Funny Humor
 
Crazy Picture
Crazy PictureCrazy Picture
Crazy Picture
 
Dream House
Dream HouseDream House
Dream House
 
Best Websites List
Best Websites ListBest Websites List
Best Websites List
 
[Awesome] Military Photos Of The Twin Towers
[Awesome] Military Photos Of The Twin Towers[Awesome] Military Photos Of The Twin Towers
[Awesome] Military Photos Of The Twin Towers
 
Audrey 20 Portraits Of Audrey Hepburn
Audrey  20 Portraits Of Audrey HepburnAudrey  20 Portraits Of Audrey Hepburn
Audrey 20 Portraits Of Audrey Hepburn
 
What Is Love
What Is LoveWhat Is Love
What Is Love
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Presenting Your Code

  • 1. Presenting Your Code Ian Dees http://texagon.blogspot.com Hi, I'm Ian Dees, a software developer for a test equipment manufacturer near Portland, Ore. Today, we're going to talk about freeing your source code from your text editor and getting it into your presentations.
  • 2. TextMate http://www.macromates.com Smultron http://smultron.sf.net The basic ideas will work on any platform, but the screenshots we're looking at today will primarily be from two popular text editors for the Mac.
  • 3. Let's say we're trying our hand at the great Computer Language Shootout with Ackermann's Function. Here's what one solution looks like inside our text editor.
  • 4. def ackermann(m, n) $memo ||= {} $memo[[m, n]] = $memo[[m, n]] ? $memo[[m, n]] : 0 == m ?n+1 : 0 < m && 0 == n ? ackermann(m - 1, 1) : ackermann(m - 1, ackermann(m, n - 1)) end 1.upto(8) {|n| puts ackermann(3, n)} But if we do a Select All in our text editor and then copy and paste into our presentation, we lose all the pretty syntax highlighting.
  • 5. We could just take a screenshot from our text editor and paste it into the presentation as a graphic. But that makes for large file sizes and blurry font sizes. And if we distribute our slides as PDFs, readers won't be able to cut and paste our text. Also, it's a pretty manual process.
  • 6. pri nt 1 ! ackermann.rb ! 2007-09-03 23:11 ! Ian Dees def ackermann(m, n) $memo ||= {} $memo[[m, n]] = $memo[[m, n]] ? $memo[[m, n]] : 0 == m ?n+1 : 0 < m && 0 == n ? ackermann(m - 1, 1) : ackermann(m - 1, ackermann(m, n - 1)) end 1.upto(8) {|n| puts ackermann(3, n)} If you're using Smultron as your editor, you can print to a PDF and then drag the PDF file into your slide--assuming your slides have a white background.
  • 7. But I prefer a bit more flexibility. Let's look at HTML for a potential solution. We could just submit our code to Pastie, and then cut/paste the result into our presentation.
  • 8. <span class=quot;rquot;>def</span> <span class=quot;fuquot;>ackermann</span>(m, n) .r { color:#080; font-weight:bold } .fu { color:#06B; font-weight:bold } And since Pastie's stylesheets are pretty simple, we could even tweak the colors before we put the code into our presentation.
  • 9. http://www.ruby-lang.org But there's another way that doesn't require a round trip to the Pastie servers every time you want to highlight your code. First, get Ruby.
  • 10. gem install syntax Then, install the Syntax gem.
  • 11. http://pastie.caboo.se/95056 Finally, grab the Ruby source code from this file and save it to your hard drive somewhere.
  • 12. ⌘B Now, you can configure your text editor to run the script. In Smultron, hit Cmd-B to bring up the Commands window. Create a new command, bind it to a keystroke if you like, and fill in its contents like this. You'll want to substitute the paths to where you keep your Ruby interpreter and where you saved the script, of course.
  • 13. Now, whenever you hit your chosen hotkey, Smultron generates the HTML and (if you've enabled it in the script) launches your browser for easy cutting and pasting.
  • 14. ⌘⌥R The process is similar in TextMate. Just hit Cmd-Option-R to bring up the Filter Through Command dialog, browse to where you saved the script, and select Show as HTML.
  • 15. When you press Execute, TextMate brings up a new window with highlighted code that remembers its colors...
  • 16. def ackermann(m, n) $memo ||= {} $memo[[m, n]] = $memo[[m, n]] ? $memo[[m, n]] : 0 == m ?n+1 : 0 < m && 0 == n ? ackermann(m - 1, 1) : ackermann(m - 1, ackermann(m, n - 1)) end 1.upto(8) {|n| puts ackermann(3, n)} ...when you paste it into a slide, like this.
  • 17. def ackermann(m, n) $memo ||= {} $memo[[m, n]] = $memo[[m, n]] ? $memo[[m, n]] : 0 == m ?n+1 : 0 < m && 0 == n ? ackermann(m - 1, 1) : ackermann(m - 1, ackermann(m, n - 1)) end 1.upto(8) {|n| puts ackermann(3, n)} There will be a few minor dierences, of course. Punctuation, class names, and constants might be colored a little dierently between your text editor and the resulting HTML. But with a little tweaking, you can get pretty darn close.
  • 18. ⌘⌃R And in the specific case of TextMate, you can do even better than just quot;pretty darn close.quot; Run the quot;TextMate Create HTML From Documentquot; command, which is bound to Cmd-Ctrl-R (as opposed to Cmd-Opt-R) on my system. By default, that brings up the raw HTML tags in a new window, but you can configure TextMate to actually render the HTML instead.
  • 19. Presenting Your Code Ian Dees http://texagon.blogspot.com And that's it. Thanks for your time.