Skip to content

Instantly share code, notes, and snippets.

@gferreira
gferreira / find-bezier-point-2.py
Last active April 18, 2019 22:16
translation along a path
'''draw a range of shapes along a bezier segment'''
# converted from:
# http://13thparallel.com/archive/bezier-curves/
def B1(t): return t*t*t
def B2(t): return 3*t*t*(1-t)
def B3(t): return 3*t*(1-t)*(1-t)
def B4(t): return (1-t)*(1-t)*(1-t)
@gferreira
gferreira / curso-progvis-sp.txt
Last active August 29, 2015 14:00
programação visual
······························································
······························································
········####·····####····###·····####····####····###··········
········#···#····#······#···#···#···#····#··········#·········
········#···#····#······#···#···#···#····#·······####·········
········#···#····#······#···#···#···#····#······#···#·········
········####·····#·······###·····####····#·······####·········
········#···························#·························
········#························###··························
········································#####·················
@gferreira
gferreira / porque-programar.md
Last active August 29, 2015 14:01
Porque programar?

Porque programar?

  • para executar tarefas repetitivas rapidamente
  • para explorar inúmeras variações de uma idéia
  • para melhorar nossa qualidade de vida

A vida é muito curta para se perder tempo executando tarefas repetitivas: para isso, existem computadores.

Muito do trabalho do designer gráfico (ou programador visual, como também chamamos a profissão em português) envolve a sistematização do uso de elementos visuais: cores, formas, posicionamento, dimensões etc. Definimos regras visuais em seus mínimos detalhes, para depois implementarmos tudo manualmente em manuais de identidade visual, layouts e artes-finais. Isso não faz muito sentido.

@gferreira
gferreira / porque-python.md
Last active August 29, 2015 14:01
Porque Python?

Porque Python?

Python é uma linguagem de programação moderna com ênfase em clareza, simplicidade e legibilidade – o que faz com que ela seja uma excelente primeira linguagem de programação. A filosofia por trás da linguagem é resumida no “Zen do Python”, uma coleção de aforismos que inclui:

  • Bonito é melhor do que feio
  • Explícito é melhor que implícito
  • Simples é melhor que complexo
  • Complexo é melhor que complicado
  • Legibilidade conta
@gferreira
gferreira / porque-drawbot.md
Last active August 29, 2015 14:01
Porque DrawBot?

Porque DrawBot?

DrawBot é um ambiente para programação gráfica, desenvolvido por Just van Rossum para ensinar programação a alunos de design na KABK. O programa permite usar código em Python para gerar resultados visuais. Com isso podemos aplicar todo o poder da programação ao design gráfico: coisas difíceis ou impossíveis de serem executadas à mão podem ser resolvidas com algumas linhas de código. Isso traz maior eficência, e também abre portas para muitas possibilidades estimulantes.

Por exemplo, no DrawBot é possível usar números aleatórios como parte da lógica de desenho. Isso nos permite trabalhar com faixas de variação numérica ao invés de valores fixos e estáticos – e esses valores podem ser usados para definir cores, posições, dimensões e o que mais a nossa imaginação desejar. Assim, usamos o poder de cálculo da máquina para explorar o espaço de variações de uma idéia, cabendo a nós escolher os valores certos de acordo com nossos olhos.

Os gráficos gerados pelo DrawBot podem ser exportados em dif

@gferreira
gferreira / zen-print.py
Last active August 29, 2015 14:01
The Zen of Python, in DrawBot
# how to get the text from Zen of Python
# and set it on a page with DrawBot
import this
# reload(this)
# this prints the ZOP in the output window
# but how can we get the text string and save it into a variable?
@gferreira
gferreira / compare-glyphsets.py
Last active March 16, 2018 13:33
Compare glyphsets of two .ufo fonts (in RoboFont)
# compare glyphsets of two ufos
f1_path = u"/path/to/font1.ufo"
f2_path = u"/path/to/font2.ufo"
f1 = OpenFont(f1_path, showUI=False)
f2 = OpenFont(f2_path, showUI=False)
f1_glyphset = set(f1.keys())
f2_glyphset = set(f2.keys())
@gferreira
gferreira / python-drawbot-diatipo.txt
Last active August 29, 2015 14:05
Python + DrawBot : introdução
--------------------------------------------------------------
Python + DrawBot : introdução
--------------------------------------------------------------
workshop de introdução à linguagem de programação Python
e ao ambiente de programação gráfica DrawBot
com Gustavo Ferreira @hipertipo
- duração total de 6 horas, divididas em 4 blocos de 1h30 cada
- para um mínimo de 10 e máximo de 30 participantes motivados
@gferreira
gferreira / custom-menu-items.py
Created December 16, 2014 17:11
Zen Of Python Remix
import this
print 'Custom menu items ' + ' '.join(''.join([char if not this.d.get(char) else this.d[char] for char in this.s.split('\n')[-1]]).split()[1:])
@gferreira
gferreira / InternationalMaritimeSignalFlags_Remix.py
Last active August 29, 2015 14:23
International Maritime Signal Flags — CodeFont Remix
"""
International Maritime Signal Flags
by Christopher P. Cacho @thenss
CodeFont Remix by Gustavo Ferreira @hipertipo
"""
# colors