Cover photo
Audrey Tang (唐鳳)
Works at Socialtext, Inc.
Attends Autodidactic
4,000 followers|125,727 views


Draft slides for my #FLOLAC'14 talk on CUFP tomorrow: (PDF: — corrections & suggestions welcome!
Zhemin Lin's profile photoTyng-Ruey Chuang's profile photoPaul Bennett's profile photoAudrey Tang's profile photo
Thanks, I need to do some scheduling so wish not to miss some of your talk. By the way, welcome to FLOLAC, and we are lucky to have you this year.
Add a comment...

Audrey Tang

commented on a video on YouTube.
Shared publicly  - 
 ·  Translate
Audrey Tang's profile photo
線上播放,來源是 venev & bp 製作的高品質收音版錄音檔。

 ·  Translate
Add a comment...

Audrey Tang

Shared publicly  - 
濟南側路人松 AP 建置。
 ·  Translate
Tyng-Ruey Chuang's profile photoRex Su's profile photoAudrey Tang's profile photo
我只是聊表心意。跟 @MindosCheng  聊了一下,第一次見面。另,台大新聞E論壇果真在 g0v 濟南出張所的隔壁。 :-)
 ·  Translate
Add a comment...

Audrey Tang

Shared publicly  - 
前天 20140308 於凱道舉辦的  #g0v  線路黑客松,在 +Ttcat Wu 挖坑、+Audrey Tang 領軍、 +Gavin Chang 降臨指導、+Hsin-Chan Chien +黃雋 +Chia-liang Kao +Finjon Kiang 技術支援、+Bropheus Huang 加碼直播、+tka lu +Mindos Cheng 熱情補給、+ipa chiu +venev chao 跨界協作、+Jeffrey Chen +貓橘毛 輪番相助、以及 +DAVID LIFU HUANG 豐富的經驗傳授之下,順利達成任務,讓辛苦奔波的記者與工作人員們能夠避開塞爆的 3G,使用媒體區專屬網路,通行無阻地發佈即時新聞,也為遊行活動提供了前所未有的網路影音直播。

秉持 g0v 一貫的造輪子精神,這次網路架設與現場直播的實戰經驗完全公開,歡迎大家自由取用,所有文件與討論過程全都在線路松共筆中 ,需要舉辦類似活動的人,歡迎複製這份空白模版

想參加其他 g0v 黑客松嗎?歡迎報名即將於 3/22 舉辦的海陸總匯萌典松
 ·  Translate
Kene Lin's profile photo
Add a comment...

Audrey Tang

Shared publicly  - 
First picture with the new light-field camera.
 ·  Translate
Add a comment...

Audrey Tang

Shared publicly  - 
 ·  Translate
yaowen zheng's profile photo
 ·  Translate
Add a comment...
Have them in circles
4,000 people

Audrey Tang

Shared publicly  -

我在 7/26 1:20pm~2:30pm 會講「萌典與零時政府」。在這時段裡,主辦單位所聲明的「請勿擅自錄音錄影,以維護授課品質」敬請忽略 —— 也就是歡迎直播文播。

 ·  Translate
Tyng-Ruey Chuang's profile photocaasi Huang's profile photo
Add a comment...

Audrey Tang

Shared publicly  - 
Programming Languages and [Transcript]
# My talk at TEDxTaipei at 2014-04-27 with Linda Liukas.
# Slides in Chinese: (CC-By 4.0, same as transcript)

Thanks, Linda, for sharing your fascinating story.

As my talk is about "Programming Languages and", I'd like to start with a few stories of programming languages.

As we know, Rails is built on the Ruby language. Matz created Ruby by blending his five favorite languages together: Ada, Eiffel, Lisp, Perl, and Smalltalk.

I cannot cover all of them in a 20-minute talk, so let us start with Ada. Ada comes first in this list not only because its name starts with an "A", but also because it was named after Ada Lovelace, the world's first computer programmer.

In 1842, Ada wrote this program for the Analytical Engine, the first general-purpose computer ever designed but not constructed until a century later. Ada was also the first to realize that computers are not limited to work with numbers; she envisioned that people would compose music and create art on a computer.

Ada's mother was Annabella, a gifted scholar of mathematics. Ada's father, the great Romantic poet Byron, nicknamed his wife the "princess of parallelograms" because of her strict morality with a mathematical rigor.

And indeed, the art of computer programming is a blend of mathematics and poetry. Like a mathematical formula, good programs are rigorous and correct. Programmers, however, work like poets — we are creative with our languages, we convey a sense of purpose in a concise way, and we inspire each other to carry on our work.

As Professor Dijkstra put it: "Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer."

Both mathematicians and poets require a coherent vision to guide their work. The same principle applies to professional programming: Without a coherent vision and design integrity, sloppy programs quickly become unmaintainable, such that any attempts to fix a bug will introduce more bugs.

However, professional programming is not the only kind of programming, or even the most popular one. For nearly twenty years, the most well-known language on the web has been JavaScript, a "scripting language" that's easy to start with, but that also makes it very easy to write sloppy programs with a lot of bugs.

The distinction between scripting and programming languages dates back to the 1970s, with the introduction of the C language, a portable language that runs on almost any computer. Computer scientists in Bell Labs wrote hundreds of programs in C that worked together as a complex operating system, and they called it Unix.

Users of the Unix system were not expected to program in C. Instead they wrote "shell scripts" that were simple to write — mostly just a list of commands — but very difficult to maintain once they got complex.

Throughout the 1980s, the worldview was that there were programs written in complex and powerful languages like Objective-C and C++; and there were scripts written in simple but limited languages like sed and AWK.

The picture here is a linear spectrum with nothing in-between. If a script became too complex to maintain, people would just re-write it in a "real" programming language like C++.

In 1987, Larry Wall said, "We can open up this spectrum and turn it into a space with two dimensions." He saw C's strength as "Manipulexity", the ability to manipulate complexity, while shell scripts excel at "Whipuptitude", the ability to whip things up quickly.

Perl was hatched in this newfound space, as a language that could do a little bit of both, and one that evolves by redefining its own vocabulary. Over time, Perl evolved to be better at Whipuptitude than any shell scripts, and as good as C++ and Java at Manipulexity for all but the most complex programs.

With Perl, one could start with a sloppy script and, through "refactoring" techniques, gradually make it more rigorous and correct over time, without having to switch to a different language.

In the 1990s, a new generation of Perl-influenced languages appeared, such as  Python, PHP, and Ruby. Each of them improved upon Perl toward their own domains; I consider Ruby the most flexible of the three.

In 2005, the Rails project combined Ruby on the server side and JavaScript on the client side into a full-stack web framework. For many people working with C++ or Java, Rails showed them for the first time that "scripting" languages can build web programs that are more complex, and of larger scale, than contemporary "programming" languages could.

Rails succeeded in part because of its use of meta-programming, which provided way to program the Ruby language itself into domain-specific languages such as ActiveRecord.

Since that time, popular frameworks such as jQuery and AngularJS have taken the same approach to JavaScript, allowing programmers to express our vision and design integrity with a re-programmed language that's much more rigorous and safe.

In the 2010s, Rails adopted CoffeeScript, a Ruby-like language that compiles into "the good parts" of JavaScript, to complement its use of the jQuery framework. This is an extension of the meta-programming idea — changing a language by keeping the best parts of it.

People in the Perl community took CoffeeScript to create the Coco language, and people in the Haskell community took Coco to create LiveScript. Nowadays, most of my programming is done in LiveScript, which allows me to express the same vision in a way that looks like Ruby, or looks like Perl, or looks like Haskell, whichever way that's most appropriate for the poem, er, program.

So those are my stories about Rails and programming languages. For the next half of my talk, I'd like to talk about the "Girls" part in Rails Girls.

In the first half of the 20th century, people working for women's rights have achieved a lot of legal victories, bringing equality in rights of voting, of education, of individual economy, of marriage and divorce to many people in the world.

However, this equality in law does not readily translate to equality in practice. As Simone de Beauvoir observed in 1949, many societies make women feel inferior not by law, but through the act of "Othering" in languages and in actions. Men are presumed as the default subject, and women are constantly reminded that they are the collective "Other" by the way they are treated, as a group different from the default.

In the 1970s, social workers and thinkers applied Simone's thoughts and observed various socially-constructed expectations known as gender roles. For example, a particular society may confine women into one of two primary roles: either as a Girl — an adorable object of desire, harmless and of inferior status; or as a Mother — a caretaker, provider of emotional support, and a reproductive agent.

What's missing in this picture is, of course, the various destinies that each of us wish upon ourselves. We encounter social pressure whenever we happen to contradict one of the expected roles.

We can fix this problem by adopting the vision: That Biology should not determine Destiny. In practical terms, it is helpful to re-introduce the concepts of "scripts" and "programs", this time from the field of social studies.

Larry Wall said this in his 2007 talk on scripting languages: "Suppose you went back to Ada Lovelace and asked her the difference between a script and a program. She'd probably look at you funny, then say something like: 'Well, a script is what you give the actors, but a program is what you give the audience.' That Ada was one sharp lady..."

Here we see social "scripts" are actions expected of people to act according to their roles. In contrast, a "program" informs participants what to expect from the social "norm", but does not dictate people's behaviors the way scripts do.

As a concrete example, when I began my IT career as the webmaster of a small publishing house "The Informationist" in 1994, I worked both online via a BBS and in the office. Many of our staffs were openly LGBTQ and LGBTQ-supporting; it was a safe space for me to explore my gender expressions.

The press turned into a software company named "Inforian" in 1995, when I became its CTO, and started participating in the global Free Software community. While Taiwan's software sector at that time was generally gender-balanced, it shocked me to find that male-dominant scripts were prevalent in online Free Software communities.

After a while, I learned that many women on forums and chatrooms used male-sounding nicknames, not because it was their preferred gender expression, but as a protection against harassment. This was obviously a problem.

In 1998, the Open Source movement started and I helped run a few startups in the Silicon Valley, China, and Taiwan. As I started attending conferences and giving talks, I couldn't help but notice the lack of variety in gender expressions and in ethnic distribution.

For example, I heard the question "are you here with your boyfriend?" asked many times in these conferences, but not once "are you here with your girlfriend?" or "are you here with your partner?" — it was clearly a social script to make the recipient feel identified as an "other" — an outsider instead of a participant in the space.

After I returned to Taiwan to work on local open culture communities, I started consciously using the feminine pronoun in all my Chinese online writings, in an attempt to turn around the language's "othering" aspect.

When we started organizing our own conferences in 2003, I also took efforts to invite only the most socially compassionate speakers from abroad, who helped establish a more relaxed atmosphere where people can enjoy a safe space.

However, as Open Source gained commercial popularity, sexualized practices of IT industries' trade shows started to affect our conferences as well. One of these practices is promotional models, hired to drive interests to a vendor's booth; another is offensive imagery in conference contents, including from prominent speakers in both Free Software and Open Source communities.

In 2009, Skud, a long-time fellow hacker in the Perl community, started to speak widely at conferences on this subject. She created "Geek Feminism", a wiki-and-blog platform to list the issues and work together to improve them.

After a year's work, participants in the wiki created a "Code of Conduct" template, a social "program" that sets the expected norms. Valerie Aurora and Mary Gardiner, two Geek Feminism contributors from the Linux community, co-founded the Ada Initiative in 2011, so they can work full-time to support women in open technology and culture.

With help from many contributors, the Ada Initiative worked with over 100 conference organizers to adopt the code of conduct program. I'm very glad to see the upcoming "Rails Girls Summer of Code" event among the list of adopters.

There are three main elements of such a program:
    •    Specific descriptions of common but unacceptable behavior (sexist jokes, etc.)
    •    Reporting instructions with contact information
    •    Information about how such policies are enforced

Together, they ensure a space where people can be aware of their own social scripts and their effects on each other and refactor them into a more sustainable community with openness and variety as a coherent vision.

There are many more activities from the Ada Initiative, and we have a list of resources and communities on the Geek Feminism wiki, which I'd like to invite you to visit.

To me, the most enlightening bit is perhaps not in the code itself, but in its programming — the fine-tuning of a conduct that fits best with the local culture.

When we create a safe space for a community's participants, to observe and decide our own social scripts, we can collectively program a social norm that is both rigorous and creative — just like the best formulas, poems, and programs.

In conclusion, I'd like to share two poetic fragments of mine with you:

    I would like to know you
        not by your types,
            classes or roles —
    — but by your values.


    Saying "Life is what we make it to be",
        is like saying "Language is what we make it to be" —
            True, but not at once;
                — just one bit at a time.

Thank you.
Add a comment...

Audrey Tang

Shared publicly  - 
程式語言與軌道女孩 [逐字稿中譯]
中文投影片: (CC-By 4.0,同逐字稿)


我們都知道,Rails 構建在 Ruby 語言上。松本行弘創造 Ruby 語言時,混合了他最喜愛的五種程式語言: Ada、Eiffel、Lisp、Perl、Smalltalk。

因為演講只有 20 分鐘,沒辦法五種都涵蓋,所以讓我們先從 Ada 開始說起。Ada 位列名單之首,不僅是因為它的名字以「A」開頭,更因為它是根據世界第一位程式人愛達‧勒芙蕾絲(Ada Lovelace)而命名的。

1842 年,愛達為分析引擎(Analytical Engine,第一部通用電腦,設計一個世紀後才製造出來)寫了程式。不只如此,愛達也是首位意識到電腦不僅限於處理數字的人,也預言了未來人們可以在電腦上創作音樂和藝術。



正如迪科斯徹教授所說: 「除了熱愛數學之外,專業程式人最重要的,就是精通自己的母語。」


然而,專業程式設計並不是唯一的一種程式設計,甚至不是最流行的一種。近二十年來,全球資訊網上最知名的語言是 JavaScript。它是一種「腳本語言」,雖然很容易上手,但亦因此很容易編寫出馬虎而且充滿錯誤的程式。

腳 本語言(Scripting Language)和編程語言(Programming Language)的區別,可以追溯到 20 世紀 70 年代。當時跨平台的 C 語言出現,幾乎能在所有電腦上運行。貝爾實驗室的電腦科學家用 C 寫下幾百個程式,它們串接成一個複雜的作業系統,也就是 Unix。

Unix 系統的一般用戶通常不會寫 C 語言,他們寫的是「shell 腳本」,寫法簡單(通常只是一系列的指令),但一旦複雜起來,就變得很難維護。

在 80 年代當中,複雜強大的編程語言繼續出現,如 Objective-C 和 C++;也出現了簡單但能力有限的語言,如 sed 和 AWK。

這是一個線性光譜,中間是一片荒蕪。如果腳本變得過於複雜、無法維護,人們會用「真正」的編程語言(如 C++)重新編寫。

1987 年,拉里·沃爾說:「我們可以打破這道光譜,把它想成一個二維空間。」他看到 C 善於「Manipulexity」,也就是操縱複雜性的能力,而 shell 則善於「Whipuptitude」,也就是信手捻來、一揮而就的能力。

Perl 誕生在這個新發現的空間當中,它可以兩者兼顧,也可通過重新定義自己的詞彙,來進行演化。隨著時間推移,Perl 的「信手捻來力」已經變得比任何 shell 腳本都要更好,至於其「複雜操作力」,除了規模最大的程式之外,也與 C++ 和 Java 在伯仲之間。

因此,Perl 程式員可以先寫出簡單的腳本作為開端,然後通過「重構」技巧,逐漸使之變得更加嚴謹和正確,而毋需切換到不同的語言。

90 年代,受 Perl 影響的新一代語言出現,如 Python、PHP 和 Ruby。它們向著自己各自的領域比 Perl 更進一步;我認為 Ruby 是三者中最靈活的一個。

2005 年, Rails 專案把伺服器端的 Ruby 和客戶端的 JavaScript 結合成全端的網站服務框架。對於很多使用 C++ 或 Java 工作的人來說,Rails 首次展現出所謂的「腳本」語言,也可以構建比當代「編程」語言更宏大、更複雜的網站程式。

Rails 之所以成功,部分原因是它使用 Ruby 的「元編程」特性,將語言本身改編為適合特定領域的一家之言,例如 ActiveRecord。

此後盛行的框架,例如 jQuery 和 AngularJS,也對 JavaScript 採取了同樣的方式,把它改編成更嚴謹、更安全的語彙,來表達我們的願景和設計概念。

來 到 2010 年代,Rails 採用了 CoffeeScript 這套程式語言,來搭配內建的 jQuery 框架。CoffeeScript 將與 Ruby 類似的語法,編譯到 JavaScript 的「優良部份」。這是元編程概念的一個延伸——改造一套語言,保留它最好的部分。

Perl 社群的朋友接力將 CoffeeScript 改造成 Coco 語言,Haskell 社群的朋友再將 Coco 接力打造成 LiveScript。如今,我大部分的程式都是以 LiveScript 撰寫,它讓我用像 Ruby、像 Perl,或是像 Haskell 的方式,來表達相同的願景,端視哪種方式最適合當下的詩意,噢,應該說是語意才對。

以上就是關於 Rails 和程式語言的故事。接下來的部分,我想談談 Rails Girls 中的「Girls」(女孩)部分。

20 世紀上半葉,致力爭取婦女權益的運動者,已經在法律上取得不少勝利,為世界上許多人在投票權、教育權、個體經濟、結婚和離婚等事宜上,帶來平等待遇。

然而,這種法律上的平等並不代表實質的平等。正如西蒙·波娃在 1949 年所觀察到的,許多社會並不是用法律來貶低女人,而是靠語言和行為上的「他者化」(Othering)。因為男人被認定為預設主體,社會對待女人的方式經常將其視為「他者」,也就是異於預設。

70 年代,社會工作者和思想家應用此想法,觀察出各種社會構建的期望,統稱為「性別角色」。比方說,某個社會可能將婦女限制為兩種主要角色:「女孩」角色——可愛、欲望的對象,與人無害,但處於弱勢地位;或者作為「母親」角色——照顧者、提供情感支持,以及生殖媒介。


要解決這個問題,需要採取一個願景: 人的命運不應受生理構造的支配。從實務上來說,我們可以再次引入「Script」和「Program」這兩個概念,從社會研究的角度來定義它們。

拉里‧沃爾在 2007 年的講座裡這樣說:「如果我們回到過去,問愛達‧勒芙蕾絲說 Script 和 Program 之間有什麼區別,愛達可能會笑著說:嗯,劇本(Script)是給演員看的,而程序(Program)是給觀眾看的。愛達的確是位聰明的女士……」


舉個具體的例子,1994 年當我剛剛開始進入資訊領域時,是一間小出版社「資訊人」的網站管理員,透過 BBS 在線上工作,有時也會到辦公室。出版社的工作者們,要不自己就是同志,不然就是支持 LGBTQ 族群的人。那是一個安全的空間,讓我能探索自己的性別表現。

出版社在 1995 年改組成「資迅人」軟體公司,我擔任技術總監時,開始參與全球自由軟體社群的工作。當時台灣本地的軟體業的性別還算平衡,但當我發現線上的自由軟體社群全是以男性劇本為主導時,不免大喫一驚。


1998 年,開源運動(Open Source)方興未艾,我在矽谷、中國和臺灣幫忙新創公司,也開始參加實體的開源聚會、四處演講。此時我不禁注意到,這些聚會的成員無論在性別表現,或是族裔組合上,都非常單調。

舉例來說,我在這些聚會裡,好幾次聽到這樣的詰問:「你是跟男朋友來的嗎?」,但從來沒聽過「你是跟女朋友來的嗎?」或是「你是跟伴侶一起來的嗎? 」——這顯然是個社會劇本,讓聽者感到自己是「他者」、局外人,而不是會議的參與者。


2003 年,我們開始組織自己的聚會時,我費心邀請了最友善、最有同理心的國外講者群,來幫助我們建立更放鬆的氛圍,讓參與者得以享受安全的空間。

然而,隨著開源運動在商業領域盛行, 資訊界的「商展」文化也逐漸開始影響會議的文化。一方面是攤位的走秀模特,由廠商聘來吸引目光;另一方面是演講內容中使用性意象的問題,甚至出現在自由軟體和開源社群的某些知名講者上。

2009 年,長時間活躍於 Perl 社群的朋友 Skud 開始巡迴演講,在各大會議上指出這個文化問題。Skud 創立了「Geek Feminism(技客女性主義)」的共筆與部落格平台,讓我們可以紀錄問題,並共同努力加以改進。

經 過一年的努力,參與共筆的朋友們推出「行為守則」模板,也就是設定聚會上行為規範的社會「程序」。2011 年,兩名來自 Linux 社群的 Geek Feminism 貢獻者瓦萊麗‧奧羅拉和瑪麗‧加德納共同創立了「Ada Initiative」,全職投入支持女人參與各式開放科技與文化社群的志業。

在許多貢獻者的幫助下,Ada Initiative 與超過 100 個組織單位合作,幫助他們為會議的行為守則做出承諾。我很高興能看到即將舉行的「Rails Girls Summer of Code」活動也名列其中。

• 常見,但不能接受的行為之具體描述(如性別歧視的笑話等)
• 如何回報此類事件
• 對處理此類事件的承諾


Ada Initiative 持續舉辦活動,我們在 Geek Feminism 共筆上也有各地的資源與社群,希望各位有空時可以來網站上看看。




    I would like to know you
        not by your types,
            classes or roles —
    — but by your values.

            類別或角色 —
    — 而是心中的價值。

    Saying "Life is what we make it to be",
        is like saying "Language is what we make it to be" —
            True, but not at once;
                — just one bit at a time.


 ·  Translate
ET Blue's profile photoJedi Lin's profile photo
Add a comment...

Audrey Tang

Shared publicly  - 
"But what makes Internet telegardening interesting, and what makes it a cousin of traditional gardening, is that it affords a direct link with a real garden — not, of course a causally direct link, but an epistemically direct link.

And it is this epistemic directness that matters. When telerobotic engagement is epistemically direct, it gives us uninferred knowledge of a garden thousands of miles away, and with it a desire to tend that garden and see it grow."

+Michael Idinopulos , «Telepistemology, Mediation, and the Design of Transparent Interfaces»
Audrey Tang's profile photo
網際網路上的遠距園藝有趣之處,正是它與傳統園藝共通之處: 它提供了與真實花園的直接連結 - 當然不是因果論上的直接連結,而是認識論上的直接連結。


— «遠距認識論、中介及透明介面設計»
 ·  Translate
Add a comment...

Audrey Tang

Shared publicly  - 
感謝 +Bropheus Huang  +venev chao 支援直播設備!
 ·  Translate
S.J. H.'s profile photoET Blue's profile photo
Add a comment...

Audrey Tang

Shared publicly  - 
感激萌典把卡在上個世紀的恐龍軟體——教育部重編國語辭典修訂本( )——帶入新世紀。介面清爽悅目,處處是功能。最感激的四大功能:


二、左上輸入框有動態回饋,不等按 ENTER 就即時顯示相關詞頭。



希望新增的功能:能用 ASCII 簡化版的漢語拼音查詢詞條,如gan ji 查得「感激」、「趕集」, gan3 ji1 查得「感激」。
 ·  Translate
Add a comment...
Have them in circles
4,000 people
  • Socialtext, Inc.
    Untitled Page, 2008 - present
  • Apple Inc.
    Consultant, 2010 - present
Basic Information
Other or Decline to State
In a civil union
Other names
Bragging rights
  • Autodidactic
    Philosophy, Linguistics, Informatics, Psychology, present
Other profiles
Contributor to
Audrey Tang (唐鳳)'s +1's are the things they like, agree with, or want to recommend. 台灣零時政府



» 收錄十六萬筆國語、兩萬筆台語、一萬四千筆客語條目,不需網路連線即可檢閱。 » 有網路連線時可播放國語常用條目、台語及客語條目名稱的真人發音。 » 定義裡的每個字詞都可以輕按連到說明。 » 萌典線上版網址: » 字典來源為教育部《重編國語辭

Firefox Beta

Help refine and polish the newest features almost ready for prime time. With Firefox Beta, you get to test the latest performance, customiza