All that yazz
DESIGN
form
Form determines design and content. Form communication is the fundamental basis of the dialogue between the subject and the user. Before contemplating a concept, it is necessary to realize the whole foundation.
Aesthetics is the formation of style depending on the requirements. The ugly can be aesthetic, never judge by outfit, judge by message.
aesthetics
- typo
T
Don't blame Comis Sans
cause the font itself is not bad. The font has a purpose.
What is the design? This is a message. It can be purely visual, it can be textual, it can be functional,
but it exists.
content
+
= 20
art
&
20px
structure
Design is art, but design is rules. It is always important to find
a balance between freedom and limits.
BRANDING
DESIGN
CASES
Every piece is an individual solution with analytical approach and clients' needs. This is NOT templating. This is a unique answer for everyone.
UX|UI
Approach in details to solving tasks and building a convenient application architecture with an attractive design create an understanding of the concept of development and the total modeling of the application.
Seon Banking App
Seon Banking App
Seon Banking App
Seon Banking App
LOOKING FOR NEW WAYS OF USAGE
FLORI
STOCK
POSTERS
GENERATIVE
Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.
Generative
Generative
Josef Müller-Brockmann Generative #9
Josef Müller-Brockmann Generative #7
Josef Müller-Brockmann Generative #2
Josef Müller-Brockmann Generative #5
Josef Müller-Brockmann Generative #6
Josef Müller-Brockmann Generative #8
MRect r1, r2, r3, r4;
void setup()
{
size(640, 360);
fill(255, 204);
noStroke();
r1 = new MRect(1, 134.0, 0.532,
0.1*height, 10.0, 60.0);
r2 = new MRect(2, 44.0, 0.166,
0.3*height, 5.0, 50.0);
r3 = new MRect(2, 58.0, 0.332,
0.4*height, 10.0, 35.0);
r4 = new MRect(1, 120.0, 0.0498,
0.9*height, 15.0, 60.0);
}
void draw()
{
background(0);
r1.display();
r2.display();
r3.display();
r4.display();
r1.move(mouseX-(width/2),
mouseY+(height*0.1), 30);
r2.move((mouseX(width*0.05))%width,
mouseY+(height*0.025), 20);
r3.move(mouseX/4, mouseY-
(height*0.025), 40);
r4.move(mouseX-(width/2),
(height-mouseY), 50);
}
class MRect
{
int w; // single bar width
float xpos; // rect xposition
float h; // rect height
float ypos ; // rect yposition
float d; // single bar distance
float t; // number of bars
MRect(int iw, float ixp, float ih, float iyp, float id, float it) {
w = iw;
xpos = ixp;
h = ih;
ypos = iyp;
d = id;
t = it;
}
void move (float posX, float posY, float damping) {
float dif = ypos - posY;
if (abs(dif) > 1) {
ypos -= dif/damping;
}
dif = xpos - posX;
if (abs(dif) > 1) {
xpos -= dif/damping;
}
}
void display() {
for (int i=0; i<t; i++) {
rect(xpos+(i*(d+w)), ypos, w, height*h);
}
}
}