Rendering Art on the Web - A Performance compendiumRaimon Ràfols
This session starts by showing how to build something very simple with the HTML5 Canvas API, taking into account some performance considerations. Then the presentation adds more rendering complexity while keeping an eye on how it is impacting performance. It also evaluates different alternatives from a performance point of view and tries out a few optimizations. Having the right level of optimization makes it possible to add more complexity or render what seemed impossible. On the other hand, not optimizing properly will definitely impact performance and reduce quality, and for mobile users, battery life will suffer more than it needs to. As somebody said before, “With great power comes great responsibility.”
Rendering Art on the Web - A Performance compendiumRaimon Ràfols
This session starts by showing how to build something very simple with the HTML5 Canvas API, taking into account some performance considerations. Then the presentation adds more rendering complexity while keeping an eye on how it is impacting performance. It also evaluates different alternatives from a performance point of view and tries out a few optimizations. Having the right level of optimization makes it possible to add more complexity or render what seemed impossible. On the other hand, not optimizing properly will definitely impact performance and reduce quality, and for mobile users, battery life will suffer more than it needs to. As somebody said before, “With great power comes great responsibility.”
Technical operations is plagued with an unhealthy infatuation of typically untested, imperative code with a high reliance on shared mutable state using dynamically typed languages such as Ruby, Python, Bash, and - ugh - remember Perl? :) In an age where building reliable infrastructure to elastically scale applications and services are paramount to business success, we need to start rethinking the infrastructure engineer’s toolkit and guiding principles. This talk will take a look at applying various functional techniques to building and automating infrastructure. From functional package management and congruent configuration to declarative cloud provisioning we’ll see just how practical these techniques typically used in functional programming for applications can be used to help build more robust and predictable infrastructures. While specific code examples will be given, the emphasis of the talk will be on guiding principles and functional design.
Explores how to write a tic-tac-toe API that meets some interesting static typing constraints. Specifically, programs using the API may fail to compile, depending on the state of play in the game, such as trying to call move() with an already completed game board. The real theme of the presentation is not so much solving the tic-tac-toe problem but, rather, pushing static typing to its limits (and some might argue beyond its useful limits—you will have to judge for yourself).
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
He will start you at the beginning and cover prerequisites; setting up your development environment first. Afterward, you will use npm to install react-native-cli. The CLI is our go to tool. We use it to create and deploy our app.
Next, you will explore the code. React Native will look familiar to all React developers since it is React. The main difference between React on the browser and a mobile device is the lack of a DOM. We take a look a many of the different UI components that are available.
With React Native you have access to all of the devices hardware features like cameras, GPS, fingerprint reader and more. So we'll show some JavaScript code samples demonstrating it. We will wrap up the evening by deploying our app to both iOS and Android devices and with tips on getting ready for both devices stores.
I love Ruby! But as in any relationship, to love means that you (often) have to accept the “dark side” too! Ruby is human in nature and has a lot of gotchas, tricks, wierdness and sometimes scary features that I plan to highlight. This talk aims to provide the “Ah-ha!” moments when working in Ruby.
This talk is for beginners and experts alike – in fact, I tag slides to mark their level and beginners can choose to tune out of the heavy stuff!
How is Rust able to enforce safety in your code?
The simple answer to this question is: the borrow checker.
This presentation is an overview on the language concepts that helps the developer to allocate and deallocate memory in an efficient way just like in C/C++, and also safe.
Rust learnt from C/C++ design patterns and included those in the language, adding the concept of Ownership and Borrowing.
This is part 1 of fuzzing, an introduction to the subject. This presentation covers some of theory and thought process behind the subject, as well as an introduction to environment variable fuzzing and file format fuzzing.
A presentation of Apache TinkerPop's Gremlin language with running examples over the MovieLens dataset. Presented August 19, 2015 at NoSQL NOW in San Jose, California.
OSCON Presentation: Developing High Performance Websites and Modern Apps with...Doris Chen
Creating high performance sites and apps is crucial for every developer. In this session, we will explore the best practices and performance tricks, including startup time, UI responsiveness, and Memory efficiency to make your apps running faster and fluid. Come learn the tips, tricks, and tools for maximizing the performance of your sites and apps with JavaScript and HTML5.
Teach your kids how to program with Python and the Raspberry PiJuan Gomez
RaspberryPis are the new frontier in enabling kids (and curious adults) to get access to an affordable and easy-to-program platform to build cool things. Over a million of these nifty little devices have been sold in less than a year and part of their popularity has been due to how easy it is to start programming on them.
In this session you'll learn how to get started with the Raspberry PI, initial set-up, configuration and some tips and tricks. Then we'll have a brief introduction to basic Python and we'll write a few simple programs that run on the RaspberryPI. The last section of the session will be dedicated to PyGame, we'll learn about surfaces, events, inputs, sprites, etc and demonstrate how to build very simple games that are as much fun for kids to write, than to play!
Technical operations is plagued with an unhealthy infatuation of typically untested, imperative code with a high reliance on shared mutable state using dynamically typed languages such as Ruby, Python, Bash, and - ugh - remember Perl? :) In an age where building reliable infrastructure to elastically scale applications and services are paramount to business success, we need to start rethinking the infrastructure engineer’s toolkit and guiding principles. This talk will take a look at applying various functional techniques to building and automating infrastructure. From functional package management and congruent configuration to declarative cloud provisioning we’ll see just how practical these techniques typically used in functional programming for applications can be used to help build more robust and predictable infrastructures. While specific code examples will be given, the emphasis of the talk will be on guiding principles and functional design.
Explores how to write a tic-tac-toe API that meets some interesting static typing constraints. Specifically, programs using the API may fail to compile, depending on the state of play in the game, such as trying to call move() with an already completed game board. The real theme of the presentation is not so much solving the tic-tac-toe problem but, rather, pushing static typing to its limits (and some might argue beyond its useful limits—you will have to judge for yourself).
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
He will start you at the beginning and cover prerequisites; setting up your development environment first. Afterward, you will use npm to install react-native-cli. The CLI is our go to tool. We use it to create and deploy our app.
Next, you will explore the code. React Native will look familiar to all React developers since it is React. The main difference between React on the browser and a mobile device is the lack of a DOM. We take a look a many of the different UI components that are available.
With React Native you have access to all of the devices hardware features like cameras, GPS, fingerprint reader and more. So we'll show some JavaScript code samples demonstrating it. We will wrap up the evening by deploying our app to both iOS and Android devices and with tips on getting ready for both devices stores.
I love Ruby! But as in any relationship, to love means that you (often) have to accept the “dark side” too! Ruby is human in nature and has a lot of gotchas, tricks, wierdness and sometimes scary features that I plan to highlight. This talk aims to provide the “Ah-ha!” moments when working in Ruby.
This talk is for beginners and experts alike – in fact, I tag slides to mark their level and beginners can choose to tune out of the heavy stuff!
How is Rust able to enforce safety in your code?
The simple answer to this question is: the borrow checker.
This presentation is an overview on the language concepts that helps the developer to allocate and deallocate memory in an efficient way just like in C/C++, and also safe.
Rust learnt from C/C++ design patterns and included those in the language, adding the concept of Ownership and Borrowing.
This is part 1 of fuzzing, an introduction to the subject. This presentation covers some of theory and thought process behind the subject, as well as an introduction to environment variable fuzzing and file format fuzzing.
A presentation of Apache TinkerPop's Gremlin language with running examples over the MovieLens dataset. Presented August 19, 2015 at NoSQL NOW in San Jose, California.
OSCON Presentation: Developing High Performance Websites and Modern Apps with...Doris Chen
Creating high performance sites and apps is crucial for every developer. In this session, we will explore the best practices and performance tricks, including startup time, UI responsiveness, and Memory efficiency to make your apps running faster and fluid. Come learn the tips, tricks, and tools for maximizing the performance of your sites and apps with JavaScript and HTML5.
Teach your kids how to program with Python and the Raspberry PiJuan Gomez
RaspberryPis are the new frontier in enabling kids (and curious adults) to get access to an affordable and easy-to-program platform to build cool things. Over a million of these nifty little devices have been sold in less than a year and part of their popularity has been due to how easy it is to start programming on them.
In this session you'll learn how to get started with the Raspberry PI, initial set-up, configuration and some tips and tricks. Then we'll have a brief introduction to basic Python and we'll write a few simple programs that run on the RaspberryPI. The last section of the session will be dedicated to PyGame, we'll learn about surfaces, events, inputs, sprites, etc and demonstrate how to build very simple games that are as much fun for kids to write, than to play!
Modern Radio Frequency Access Control Systems: The Key to Efficiency and SafetyAITIX LLC
Today's fast-paced environment worries companies of all sizes about efficiency and security. Businesses are constantly looking for new and better solutions to solve their problems, whether it's data security or facility access. RFID for access control technologies have revolutionized this.
Scandal! Teasers June 2024 on etv Forum.co.zaIsaac More
Monday, 3 June 2024
Episode 47
A friend is compelled to expose a manipulative scheme to prevent another from making a grave mistake. In a frantic bid to save Jojo, Phakamile agrees to a meeting that unbeknownst to her, will seal her fate.
Tuesday, 4 June 2024
Episode 48
A mother, with her son's best interests at heart, finds him unready to heed her advice. Motshabi finds herself in an unmanageable situation, sinking fast like in quicksand.
Wednesday, 5 June 2024
Episode 49
A woman fabricates a diabolical lie to cover up an indiscretion. Overwhelmed by guilt, she makes a spontaneous confession that could be devastating to another heart.
Thursday, 6 June 2024
Episode 50
Linda unwittingly discloses damning information. Nhlamulo and Vuvu try to guide their friend towards the right decision.
Friday, 7 June 2024
Episode 51
Jojo's life continues to spiral out of control. Dintle weaves a web of lies to conceal that she is not as successful as everyone believes.
Monday, 10 June 2024
Episode 52
A heated confrontation between lovers leads to a devastating admission of guilt. Dintle's desperation takes a new turn, leaving her with dwindling options.
Tuesday, 11 June 2024
Episode 53
Unable to resort to violence, Taps issues a verbal threat, leaving Mdala unsettled. A sister must explain her life choices to regain her brother's trust.
Wednesday, 12 June 2024
Episode 54
Winnie makes a very troubling discovery. Taps follows through on his threat, leaving a woman reeling. Layla, oblivious to the truth, offers an incentive.
Thursday, 13 June 2024
Episode 55
A nosy relative arrives just in time to thwart a man's fatal decision. Dintle manipulates Khanyi to tug at Mo's heartstrings and get what she wants.
Friday, 14 June 2024
Episode 56
Tlhogi is shocked by Mdala's reaction following the revelation of their indiscretion. Jojo is in disbelief when the punishment for his crime is revealed.
Monday, 17 June 2024
Episode 57
A woman reprimands another to stay in her lane, leading to a damning revelation. A man decides to leave his broken life behind.
Tuesday, 18 June 2024
Episode 58
Nhlamulo learns that due to his actions, his worst fears have come true. Caiphus' extravagant promises to suppliers get him into trouble with Ndu.
Wednesday, 19 June 2024
Episode 59
A woman manages to kill two birds with one stone. Business doom looms over Chillax. A sobering incident makes a woman realize how far she's fallen.
Thursday, 20 June 2024
Episode 60
Taps' offer to help Nhlamulo comes with hidden motives. Caiphus' new ideas for Chillax have MaHilda excited. A blast from the past recognizes Dintle, not for her newfound fame.
Friday, 21 June 2024
Episode 61
Taps is hungry for revenge and finds a rope to hang Mdala with. Chillax's new job opportunity elicits mixed reactions from the public. Roommates' initial meeting starts off on the wrong foot.
Monday, 24 June 2024
Episode 62
Taps seizes new information and recruits someone on the inside. Mary's new job
As a movie director, I am often asked about the process of creating an indie film. It's a journey of passion, perseverance, and planning, and today, I'm going to take you through it.
Young Tom Selleck: A Journey Through His Early Years and Rise to Stardomgreendigital
Introduction
When one thinks of Hollywood legends, Tom Selleck is a name that comes to mind. Known for his charming smile, rugged good looks. and the iconic mustache that has become synonymous with his persona. Tom Selleck has had a prolific career spanning decades. But, the journey of young Tom Selleck, from his early years to becoming a household name. is a story filled with determination, talent, and a touch of luck. This article delves into young Tom Selleck's life, background, early struggles. and pivotal moments that led to his rise in Hollywood.
Follow us on: Pinterest
Early Life and Background
Family Roots and Childhood
Thomas William Selleck was born in Detroit, Michigan, on January 29, 1945. He was the second of four children in a close-knit family. His father, Robert Dean Selleck, was a real estate investor and executive. while his mother, Martha Selleck, was a homemaker. The Selleck family relocated to Sherman Oaks, California. when Tom was a child, setting the stage for his future in the entertainment industry.
Education and Early Interests
Growing up, young Tom Selleck was an active and athletic child. He attended Grant High School in Van Nuys, California. where he excelled in sports, particularly basketball. His tall and athletic build made him a standout player, and he earned a basketball scholarship to the University of Southern California (U.S.C.). While at U.S.C., Selleck studied business administration. but his interests shifted toward acting.
Discovery of Acting Passion
Tom Selleck's journey into acting was serendipitous. During his time at U.S.C., a drama coach encouraged him to try acting. This nudge led him to join the Hills Playhouse, where he began honing his craft. Transitioning from an aspiring athlete to an actor took time. but young Tom Selleck became drawn to the performance world.
Early Career Struggles
Breaking Into the Industry
The path to stardom was a challenging one for young Tom Selleck. Like many aspiring actors, he faced many rejections and struggled to find steady work. A series of minor roles and guest appearances on television shows marked his early career. In 1965, he debuted on the syndicated show "The Dating Game." which gave him some exposure but did not lead to immediate success.
The Commercial Breakthrough
During the late 1960s and early 1970s, Selleck began appearing in television commercials. His rugged good looks and charismatic presence made him a popular brand choice. He starred in advertisements for Pepsi-Cola, Revlon, and Close-Up toothpaste. These commercials provided financial stability and helped him gain visibility in the industry.
Struggling Actor in Hollywood
Despite his success in commercials. breaking into large acting roles remained a challenge for young Tom Selleck. He auditioned and took on small parts in T.V. shows and movies. Some of his early television appearances included roles in popular series like Lancer, The F.B.I., and Bracken's World. But, it would take a
240529_Teleprotection Global Market Report 2024.pdfMadhura TBRC
The teleprotection market size has grown
exponentially in recent years. It will grow from
$21.92 billion in 2023 to $28.11 billion in 2024 at a
compound annual growth rate (CAGR) of 28.2%. The
teleprotection market size is expected to see
exponential growth in the next few years. It will grow
to $70.77 billion in 2028 at a compound annual
growth rate (CAGR) of 26.0%.
In the vast landscape of cinema, stories have been told, retold, and reimagined in countless ways. At the heart of this narrative evolution lies the concept of a "remake". A successful remake allows us to revisit cherished tales through a fresh lens, often reflecting a different era's perspective or harnessing the power of advanced technology. Yet, the question remains, what makes a remake successful? Today, we will delve deeper into this subject, identifying the key ingredients that contribute to the success of a remake.
Meet Dinah Mattingly – Larry Bird’s Partner in Life and Loveget joys
Get an intimate look at Dinah Mattingly’s life alongside NBA icon Larry Bird. From their humble beginnings to their life today, discover the love and partnership that have defined their relationship.
Meet Crazyjamjam - A TikTok Sensation | Blog EternalBlog Eternal
Crazyjamjam, the TikTok star everyone's talking about! Uncover her secrets to success, viral trends, and more in this exclusive feature on Blog Eternal.
Source: https://blogeternal.com/celebrity/crazyjamjam-leaks/
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdfXtreame HDTV
In today’s digital age, streaming services have become an integral part of our entertainment lives. Among the myriad of options available, XCIPTV stands out as a premier choice for those seeking seamless, high-quality streaming. This comprehensive guide will delve into the features, benefits, and user experience of XCIPTV, illustrating why it is a top contender in the IPTV industry.
As a film director, I have always been awestruck by the magic of animation. Animation, a medium once considered solely for the amusement of children, has undergone a significant transformation over the years. Its evolution from a rudimentary form of entertainment to a sophisticated form of storytelling has stirred my creativity and expanded my vision, offering limitless possibilities in the realm of cinematic storytelling.
Experience the thrill of Progressive Puzzle Adventures, like Scavenger Hunt Games and Escape Room Activities combined Solve Treasure Hunt Puzzles online.
Hollywood Actress - The 250 hottest galleryZsolt Nemeth
Hollywood Actress amazon album eminent worldwide media, female-singer, actresses, alhletina-woman, 250 collection.
Highest and photoreal-print exclusive testament PC collage.
Focused television virtuality crime, novel.
The sheer afterlife of the work is activism-like hollywood-actresses point com.
173 Illustrate, 250 gallery, 154 blog, 120 TV serie logo, 17 TV president logo, 183 active hyperlink.
HD AI face enhancement 384 page plus Bowker ISBN, Congress LLCL or US Copyright.
From the Editor's Desk: 115th Father's day Celebration - When we see Father's day in Hindu context, Nanda Baba is the most vivid figure which comes to the mind. Nanda Baba who was the foster father of Lord Krishna is known to provide love, care and affection to Lord Krishna and Balarama along with his wife Yashoda; Letter’s to the Editor: Mother's Day - Mother is a precious life for their children. Mother is life breath for her children. Mother's lap is the world happiness whose debt can never be paid.
1. TRICK 2018 FINAL
Results
TRICK judges:
mame, eto, shinh, yhara, matz,
leonid, eban
Transcendental
Ruby
Imbroglio
Contest
for RubyKaigi
2. Transcendental
Ruby
Imbroglio
Contest
for RubyKaigi
What’s “TRICK”
• A contest for “esoteric” Ruby programming
– The most "strange" Ruby program wins
– Ruby version of IOCCC (International Obfuscated C Code Contest)
Transcendental /ˌtransɛnˈdɛnt(ə)l/
“relating to a spiritual realm” *
「霊的領域に関する」
「世俗を超越した」「超絶技巧」
Imbroglio /ɪmˈbrəʊlɪəʊ/
“an extremely confused, complicated, or
embarrassing situation” *
「極めて混乱した、恥ずかしい事態」
* Oxford Dictionaries
3. The story so far
• TRICK 2013: “Best pangram” by @kinaba
• TRICK 2015: “Best piphilology” by @kinaba
• TRICK 2018 is the 3rd and final(!) contest
!@THEqQUICKbBROWNfFXjJMPSvVLAZYDGgkyz&[%r{¥"}mosx,
4>6]|?'while(putc 3_0-~$.+=9/2^5;)<18*7and:`#
This prints each printable ASCII character exactly once.
This contains each printable ASCII character exactly once.
big , temp = Array 100000000 ** 0x04e2
3 1 4 1 5. 9 2 6
…
4. This talk
• We held TRICK 2018 FINAL (2018/01/01 – 03/31)
• We announce the winners of TRICK 2018
6. Judges
Yusuke Endoh (@mametter)
Koichiro Eto (@eto)
Shinichiro Hamaji (@shinh)
Yutaka Hara (@yhara)
Yukihiro Matsumoto (@yukihiro_matz)
Sun Park (@sunleonid)
Hirofumi Watanabe (@eban)
7. Judges
eto
– Media Artist.
– Chairman at NicoNicoGakkai Beta.
shinh
– The admin of anarchy golf.
– IOCCC winner.
yhara – The author of Japanese esolang book.
matz – The creator of Ruby.
leonid – The 1st super Ruby golfer.
eban – The 2nd super Ruby golfer.
– Full-time Ruby committer at Cookpad.
– The world’s No.1 IOCCC player.mame
8. Submission statistics
• Thank you for all the submitters!
(I’m using 3D pie charts here to obfuscate the precise number of submissions.)
JP
US
DE
PL BE
9. Honorable mentions
• Best monkey - Tomoya Ishida (tompng)
• Best abuse of lambda - Shinichiro Hamaji
• Best abuse of meta - Yuki Yugui Sonoda
• Most solvable - Don Yang
• Best layout - Yutaka HARA
• Best abuse of regexp - Benoit Daloze (eregon)
• Most tolerant - Shuichi Tamayose
• Best applause - Colin Fulton
– Enjoy these entries yourself
10. CAUTION
• From here, this talk has a lot of spoilers!
– Exit now if you want to enjoy analyzing the winners
• The winning entries will be published at:
No k!
http://github.com/tric /trick2018/
12. Winner »
eban eto mame shinh yhara leonid matz AVG.
“Most warned”
『最も警告されたで賞』
kinaba
(JP)
13th & yhara award
N/A 5 7 3 7 4 N/A 5.20
13. kinaba.rb
• A ten-line program
• It prints "TRICK2018"
13th & yhara award
“Most warned”
def STDOUT.write (s); syswrite s
end if def $>.write; end
s = Array.new(){}.map{|s|}
s << (-"Trick").grapheme_clusters{} [0] # frozen_string_literal: Trick
s << ("Ruby".unpack *"ao") [0]
s << "#{10**2018 + 1e2018}" [0]
s << "#{1>2>3 rescue $!.class.trust.class}"[0]
s << "#{true; Kernel.public_class_method}" [0]
s << ($ruby.object_id.coerce +2018) [0]
result = puts s*""
$ ruby kinaba.rb
TRICK2018
14. kinaba.rb - Spoiler 13th & yhara award
“Most warned”
$ ruby –w kinaba.rb
-:1: warning: parentheses after method name is interpreted as an argument list, not a dec
-:2: warning: mismatched indentations at 'end' with 'def' at 1
-:3: warning: shadowing outer local variable - s
-:4: warning: `frozen_string_literal' is ignored after any tokens
-:5: warning: `*' interpreted as argument prefix
-:6: warning: Float 1e2018 out of range
-:7: warning: comparison '>' after comparison
-:8: warning: unused literal ignored
-:9: warning: ambiguous first argument; put parentheses or a space even after `+' operato
-:10: warning: assigned but unused variable - result
-:1: warning: method redefined; discarding old write
-:2: warning: previous definition of write was here
-:3: warning: given block not used
-:4: warning: passing a block to String#grapheme_clusters is deprecated
-:5: warning: unknown unpack directive 'o' in 'ao'
-:6: warning: Bignum out of Float range
-:7: warning: trust is deprecated and its behavior is same as untaint
-:8: warning: public_class_method with no argument is just ignored
-:9: warning: global variable `$ruby' not initialized
-:10: warning: #<IO:<STDOUT>>.write is outdated interface which accepts just one argument
TRICK2018
Each line has
static (parse/compile-time) warnings
Each line also has
dynamic (run-time) warnings
16. Winner »
eban eto mame shinh yhara leonid matz AVG.
“Minimum alternative of irb”
『最小の irb 代替物で賞』
Jan Lelis
(DE)
12th & mametter award
N/A 2 8 6 6 6 N/A 5.60
17. jan.rb 12th & mametter award
“Minimum alternative of irb”
eval %w?_="";_ _=binding;l
oop( )do $>< <"> >¥s
"if $/> _;p uts "=>
¥s%p "%[ __.e val (_+
=get s||exit!) ,_=""];rescu
e(Ex cep tio n); put
s""+ "¥e [31 m%p ¥e[
0m"% [$! ,_= ""] if/
d¥se |ee /!~ "#$!"end?*""
18. jan.rb - Spoiler
• Serves as an interactive Ruby interpreter
– Colors an error message
– Supports line continuation
12th & mametter award
“Minimum alternative of irb”
$ ruby jan.rb
>> 1 + 2
=> 3
>> foo
#<NameError: undefined local variable or met
>> "Hello," +
"world"
=> "Hello,world"
19. jan.rb - Spoiler
• Highlight: How to detect line continuation
– Try to evaluate the input lines
– If it throws an exception, and if its message matches:
– the input is considered "unterminated yet"
• This Regexp determines if the error is either:
12th & mametter award
“Minimum alternative of irb”
/d e|ee/
syntax error, unexpected end-of-input
unterminated string meets end of file
syntax error, unexpected end-of-input
unterminated string meets end of file
20. jan.rb - Spoiler
• mametter's comment
– I believe this is the ever shortest implementation of
interactive ruby program.
– Both the implementation technique and its appearance
are so smart.
– Thank you for the great program!
• Jan's comment
12th & mametter award
“Minimum alternative of irb”
21. Winner »
eban eto mame shinh yhara leonid matz AVG.
“Most attractive”
『最も魅力的で賞』
Tomoya Ishida (tompng)
(JP)
11th & eto award
5 10 8 4 9 8 3 6.71
26. tompng2.rb 10th & matz award
“Best double meaning”
• Works as a FizzBuzz-like program
$ ruby tompng2.rb
1
2
Ruby
4
Trick
Ruby
7
8
Ruby
Trick…
27. tompng2.rb 10th & matz award
“Best double meaning”
• Looks like a FizzBuzz program
…
def fizzbuzz n
set_error 'wrong argument type' if n.nil?
if n < 0
n = -n
retval =fizzbuzz n
return retval
else
…
28. tompng2.rb - Spoiler 10th & matz award
“Best double meaning”
• Contains many Unicode spaces
…
def ■ fizzbuzz■n
set_error 'wrong argument type' if n.nil?
if n < ◆0
n = -n◆
retval =◆ fizzbuzz■n
return ◆◆◆◆◆ retval
else
…
■:U+00A0 No-break Space
◆:U+200B Zero Width Space
29. tompng2.rb - Spoiler 10th & matz award
“Best double meaning”
• Looks like a fizzbuzz, and is actually a fizzbuzz
• However, the interpretation is completely different
than we expect
– For example, is not an integer negation,
but calls String#-@ (freeze)
• Of course, if all Unicode spaces are removed,
it also works correctly as we expect!
n = -n
32. yhara.rb 9th
“Most (un)readable”
• A Quine that explains how to work in Japanese
def method_missing(n);$*<<n.to_s.bytesize
n[-1]=="!" and eval$*.map(&:chr).join;end
*自己言及的なプログラム.
これは「自己に言及」したQuineプログラムです.
動かすには普通に無引数で実行してください.
MRIの最新の安定版で動作確認を行っています.
*冒頭の2行が日本語プログラミングのDSLを提供します.
Rubyはピリオドまでの部分がメソッド名であると解釈します.
そのままではNoMethodErrorになります.
それをmethod_missingを使って検知しメソッド名のbytesizeをASCIIコードとして文字にします.
メソッド名が半角の!で終わる場合、記憶した文字たちをjoinしてevalします.
これにより任意のRubyプログラムを日本語により記述することができます.
このプログラムの場合はこのファイルをreadし出力するようになっています.
*Note:文の長さは注意が必要.
UTF_8の日本語は1文字が3bytes.
端数が丁度になるよう英語を入れる.
以上、自己言及的programでした!
38. tompng3.rb - Spoiler 8th
“Best compiler”
• Brainf*ck to Ruby compiler
✓ The Ruby code works as the original Brainf*ck code
✓ The Ruby code shapes like the original Brainf*ck code
✓ The Ruby code works as the compiler if a file is given
✓ (Hard-coded font data is cute)
++++[->+
+++[->++
+++++>++
+<<]<]>>
compile
Brainf*ck code Ruby code
46. justcolin.rb - Spoiler 7th & shinh award & leonid award
“Most composable”
• Works as a cell of "the Game of Life"
– You can copy and paste it as a cell
– The composed program print the next generation
• Highlight: How to detect which cell is filled or not
– Y-coordinate:
– X-coordinate:
• Another highlight: Very fragmented code
– To make it vertically composable, no block ranges multi-
line
__LINE__
;;……s=%; (spaces) ;;……s=%;
47. justcolin.rb - Spoiler 7th & shinh award & leonid award
“Most composable”
• leonid's comment
– Box-shaped code that can stack: Fascinating.
– It's also a quine: Incredible.
– It's a dot in the Game of Life: AMAZING!
• shinh's comment
• justcolin's comment
48. Winner »
eban eto mame shinh yhara leonid matz AVG.
“Most reversible”
『最もリバーシブルで賞』
Yusuke Endoh
(JP)
6th & eban award
9 7 N/A 9 8 8 4 7.33
50. mame.rb - Spoiler 6th & eban award
“Most reversible”
– yields a reverse-sort program
– yields a program that sorts by reversed lines
– yields a program that reverse-sorts by reversed lines
– yields the original sorting program
ruby mame.rb mame.rb > rsort.rb
ruby rsort.rb rsort.rb > sortr.rb
ruby sortr.rb sortr.rb > rsortr.rb
ruby rsortr.rb rsortr.rb > mame2.rb
55. • Generates 3D model data of
"solid of revolution"
• The shape is configurable by
the DSL
“Most three-dimentional”
tompng4.rb - Spoiler
$ ruby tompng4.rb > wine_glass.stl
gen3d 'ochoko.stl' do
l------------------------l
l-ww------------------ww-l
l-ww------------------ww-l
l-ww++++++++++++++++++ww-l
l-ww++++++++++++++++++ww-l
l--ww++++++++++++++++ww--l
l---wwww++++++++++wwww---l
l----wwwwwwwwwwwwwwww----l
l----www----------www----l
end
59. “Best one-liner”
justcolin2.rb - Spoiler
• 68-character
test framework
require './justcolin2'
🤔 "Math" do
🤔 "Addition" do
🤔 "One plus one equals two.",
1+1 == 2
🤔 "One plus one equals eleven.",
1+1 == 11
end
end
$ ruby test.rb
Math
Addition
One plus one equals two.
🚫 One plus one equals eleven.
70. • A Quine that prints itself in spiral manner
– Uses an escape sequence to move the cursor
• The output is rearranged, and contains many
escape sequences, but it is actually executable
• mame's comment
“Best spiral”
mame2.rb - Spoiler
71. • The first letter of
each line spells out:
“Best spiral”
mame2.rb - Spoiler
'';eval(r=%q(->z{r="'';eval(r=¥
%q(#{r}))[%q`#{z}`]";i=-040;30.
times{|n|(15+n%2*15-n/2).times{
r<<r[i+=(1.-n&2)*(32-n%2*31)]}}
i=r[524,0]=?¥0;eval(r[479..-1])
c['"']}))[%q`GFEDCBA"+"[e¥"'"'t
kE*;;¥";" TRICK2018 ";tb,;{{r
2E0$ob[us@*0)[90,336])_#i¥n}s#i
0H}>["t]];};o[1,?¥n*8];ex"-}eac
1Hl<1[-1]*2*t=n%2];o[14-n,0)mvk
8M$<4,?¥n];15.times{|n|;o[35ie2
!Pss.slice!(0,1)+x;sleep(0.0t;0
'W=%q"<<95<<$s<<95;o=->n,x{n.'1
;@[2]}|¥e../,%@s="'%trick2018!8
eval$s=%q_eval($s.gsub!(/#{%@`]
'';eval(r=%q(->z{r="'';eval(r=¥
%q(#{r}))[%q`#{z}`]";i=-040;30.
times{|n|(15+n%2*15-n/2).times{
r<<r[i+=(1.-n&2)*(32-n%2*31)]}}
i=r[524,0]=?¥0;eval(r[479..-1])
c['"']}))[%q`GFEDCBA"+"[e¥"'"'t
kE*;;¥";" TRICK2018 ";tb,;{{r
2E0$ob[us@*0)[90,336])_#i¥n}s#i
0H}>["t]];};o[1,?¥n*8];ex"-}eac
1Hl<1[-1]*2*t=n%2];o[14-n,0)mvk
8M$<4,?¥n];15.times{|n|;o[35ie2
!Pss.slice!(0,1)+x;sleep(0.0t;0
'W=%q"<<95<<$s<<95;o=->n,x{n.'1
;@[2]}|¥e../,%@s="'%trick2018!8
eval$s=%q_eval($s.gsub!(/#{%@`]
73. • Before showing the program…
– kinaba2.rb is a program that does nothing
“Most reserved”
kinaba2.rb
74. “Most reserved”
FYI: Ruby's reserved words
Ruby Reference Manual: spec/flexical
https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html
Here is the list of the reserved words
Reserved words
75. • A program that consists only of
reserved words of Ruby
“Most reserved”
kinaba2.rb
alias BEGIN for unless def class
super true or return defined? next
break while begin undef do end
rescue then retry else undef module
nil ensure case if yield __LINE__
self and redo elsif not __FILE__
alias END in end when __ENCODING__
end until false end
76. • A position of the reserved words has
a strong restriction
– must be inside rescue
– / / must be inside loop
– if return then true end #=> SyntaxError (void value
expression)
• Further restriction of "six words pre one line" is
imposed
“Most reserved”
kinaba2.rb - Spoiler
retry rescue
break next redo
if return then true end
#=> SyntaxError (void value expression)
77. • / / can take reserved words
• / can be used to avoid "void value
expression"
“Most reserved”
kinaba2.rb - Spoiler
def alias undef
if return then true end
#=> SyntaxError (void value expression)
if false or return then true end
#=> no error
alias BEGIN XXX…
or and
78. • kinaba's last comment
“Most reserved”
kinaba2.rb - Spoiler
80. Honorable mentions
• Best monkey - Tomoya Ishida (tompng)
• Best abuse of lambda - Shinichiro Hamaji
• Best abuse of meta - Yuki Yugui Sonoda
• Most solvable - Don Yang
• Best layout - Yutaka HARA
• Best abuse of regexp - Benoit Daloze (eregon)
• Most tolerant - Shuichi Tamayose
• Best applause - Colin Fulton
– Enjoy them yourself at the github
83. Prize?
• Dishonor: the title of “insane”
• Invitation to RubyKaigi 2018
• Top five entries will be checked into the Ruby
official repository in “sample” directory
– Ruby 2.6.0 will have them (perhaps)
85. Conclusion
• The winning entries will be published soon at:
• Thank you for all participants!
• See you in the next TRICK "Returns" ???
No k!
http://github.com/tric /trick2018/