CategoriesLinux

Cara instalasi DreamFactory 2.14.2

Setahun yang lalu, terjadi perubahan besar pada salah satu open source project favorit, DreamFactory. Pada versi setelah 2.14.2, developer DreamFactory menghapus dua fungsi yang paling populer digunakan oleh komunitas open source community, yaitu fungsi untuk menghubungkan DreamFactory dengan MySQL server dan fungsi untuk membuat script.

Dalam artikel ini saya tidak akan menceritakan permasalahan tersebut dengan panjang lebar. Bila tertarik untuk mengetahui akar permasalahannya, ada dapat membaca website berikut ini. Dalam artikel ini kita akan fokus tentang bagaimana mengatasi permasalahan tersebut dengan melakukan instalasi versi terdahulu dari DreamFactory sebelum terjadi perubahan tersebut, yaitu DreamFactory versi 2.14.2.

Server yang saya gunakan berbasis Linux Ubuntu 20.04 dengan web server NGINX, PHP, dan database MySQL. Sekarang mari kita bahas langkah-langkah instalasi DreamFactory.

Instalasi NGINX

Update apt repository dan lakukan instalasi NGINX dengan perintah

$ sudo apt update
$ sudo apt install nginx

Instalasi MySQL Server

Lakukan instalasi database server MySQL

$ sudo apt install mysql-server

Perintah ini optional, namun berguna untuk meningkatkan keamanan database server.

$ sudo mysql_secure_installation

Sekarang kita perlu membuat satu MySQL user untuk DreamFactory. Jalankan perintah berikut untuk membuat database df dengan user df dan password rahasia.

$ sudo mysql
mysql> CREATE DATABASE df;
mysql> CREATE USER 'df'@'localhost' IDENTIFIED BY 'rahasia';
mysql> GRANT ALL PRIVILEGES ON df.* TO 'df'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Instalasi PHP-FPM

Versi PHP yang kita gunakan adalah versi 7.2 karena versi ini yang telah saya coba dan berhasil digunakan untuk DreamFactory versi 2.14.2. Berikut langkah instalasi PHP-FPM.

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php7.2-fpm \
    php7.2-mbstring \
    php7.2-xml \
    php7.2-curl \
    php7.2-mysql
$ sudo systemctl restart php7.2-fpm.service

Instalasi Composer

Lakukan instalasi composer dengan perintah berikut.

$ cd ~
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
$ php -r "unlink('composer-setup.php');"

Instalasi Git Client

Secara default, git client sudah terpasang pada Linux Ubuntu 20.04. Namun bila belum ada, maka lakukan instalasi dengan perintah

$ sudo apt install git

Konfigurasi NGINX

Kita perlu melakukan konfigurasi NGINX agar dapat digunakan sebagai web server untuk DreamFactory. Bukalah file /etc/nginx/sites-available/default lalu ubah konfigurasinya seperti pada contoh berikut

server {
  listen [::]:80 default_server;
  server_name _;
  root /var/www/html/public;
  charset utf-8;
  index index.php index.html index.htm index.nginx-debian.html;
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  error_page 404 /index.php;
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
  }
}

Restart service NGINX dengan perintah

$ sudo systemctl restart nginx.service

Instalasi DreamFactory

Sekarang masuk ke bagian inti dari tulisan ini, yaitu cara instalasi DreamFactory. Langkah pertama masuklah ke dalam root directory web server /var/www/html.

$ cd /var/www/html

Clone source code DreamFactory versi 2.14.2.

$ git clone --branch 2.14.2-release --single-branch https://github.com/dreamfactorysoftware/dreamfactory.git .

Edit file composer.json dan hapus baris ini karena kita tidak menggunakan mongodb.

"dreamfactory/df-mongodb" : "~0.15.1",

Kemudian jalankan perintah berikut

$ sudo composer update
$ sudo composer install --no-dev
$ sudo php artisan df:env
$ sudo php artisan df:setup

Dalam proses instalasi tersebut, Anda akan diminta memasukkan beberapa data seperti MySQL password, user, dll. Silahkan masukkan data yang diminta sesuai dengan proses instalasi yang telah kita lakukan sebelumnya.

Langkah terakhir adalah melakukan update file permission dengan perintah.

$ sudo chown -R www-data storage/ bootstrap/cache/
$ sudo find . -type f -exec chmod 644 {} \;
$ sudo find . -type d -exec chmod 755 {} \;
$ sudo find storage/ -type d -exec chmod 2775 {} \;
$ sudo find storage/ -type f -exec chmod 664 {} \;
$ sudo find bootstrap/cache/ -type d -exec chmod 2775 {} \;
$ sudo find bootstrap/cache/ -type f -exec chmod 664 {} \;

Proses instalasi selesai, sekarang anda dapat membuka hasil instalasi tersebut melalui web browser misalnya dengan alamat http://localhost atau sesuai dengan domain server Anda.

Semoga bermanfaat.

CategoriesProgramming

Mengenal Bahasa Pemrograman Elm

     Bahasa Pemrograman Elm adalah Bahasa pemrograman fungsional untuk Frontend atau User Interface yang kaya akan fungsi Visualisasi yang bersifat Deklaratif. Elm dibuat untuk pengguna Web Apps dengan fungsionalitas untuk 3D Graphic dan Data Visualisation. Dilihat dari Fungsi dan kinerja Elm sangat berguna untuk membuat Game atau Game Dev berbasis Web Apps yang sangat Interaktif. Elm sendiri rilis versi stabilnya pada 21 Oktober 2019 Elm V 0.19 .1 namun pengguna sudah banyak. Sebelum lebih lanjut ke Elm tentunya kita harus tahu dasar dari Html dan CSS ya karena di Elm akan diintegrasikan dengan HTML dan CSS agar lebih cantik, tenang HTML dan CSS hanya pemanis karena Elm sendiri sudah Manis. Belajar Elm sangat mudah apabila Anda sudah memahami Pemrograman Dasar.

Beberapa kelebihan Elm Sebagai Berikut:

1. No Runtime Exceptions.

Elm menggunakan metode inferensi untuk mendeteksi error dan memberikan petunjuk yang jelas. Untuk lebih jelasnya silakah pelajari di link berikut : Detail
Berikut Contoh untuk Runtime Exception:
Pada saat Error akan muncul hints atau petunjuka yang jelas

2. Great Performance

Elm memiliki Virtual DOM sendiri yang di desain untuk kemudahan dan kecepatan. Semua funsional tidak bisa dirubah di Elm dan tolak ukur yang digunakan membuat code javascript yang cepat. 
Perbandingan dengan beberapa Framework terkenal untuk frontend lain, semakin kecil semakin bagus

3. Enforced Sematic Versioning

Elm memiliki Package yang digunakan sesuai dengan kegunaan. berikut link untuk packeage: Detail
tau bisa menggunakan comandline seperti gambar berikut:
Command line untuk Install Package Elm

4. Small Assets

Dibandingkan dengan React, angular dan Vue Assets Elm lebih kecil sehingga otomatis load akan cepat, elm memiliki cara endiri untuk meminimalisir assets silahkan baca di link berikut: Detail
Perbedaan ukuran / Size Asset dibandingkan dengan Vue, Angular dan React

5. Javascript Interop

Elm dapat digunakan di suatu node yang aktif, dan dapat disisipkan di suatu project tanpa menggangu.
Elm Bisa disispkan di project dengan javascript
 
 
Bahasa Pemrogram Elm sering digunakan untuk Desain Grafis atau Game Dev. Berikut Contoh Penggunaan Bahasa Pemrograman silahkan Anda Explore :

Beberapa Contoh Game   Dibuat dari Elm

Snake

Previous Elm versions

Tetris

Breakout

Pong

Mario

Tic Tac Toe

Space Invaders

Memory

Asteroid

Pac Man

Minesweeper

Roguelike

Classic Card & Board Game

Real-Time Strategy

Puzzle Games

Racing Game

  • Elm 0.18
    • Tacks – Real-time multiplayer sailing game [play]
    • Retrorace – Retrorace is a multiplayer game where the aim is to be the first to reach the top of the screen. [play]

Tools

Miscellaneous

Dilihat dari Contoh diatas bermacam macam game berbasis Web yang menggunaan Bahasa pemrograman Elm, tidak hanya untuk Game tentunya juga digunakan untuk landing page dll untuk mempercantik Website. Apabila Anda tertarik dengan Elm silahkan untuk mempelajari langsung di portal Web nya : Link. Akan banyak sekali contoh yang bisa Anda gunakan untuk belajar lebih lanjut.

Semoga Bermanfaat

Wassalamualaikum

 
CategoriesProgramming

Framework Performance untuk Developer

Performance adalah pilihan bagi pengguna framework, di artikel kali ini saya akan menyajikan beberapa pilihan yang mungkin bisa anda gunakan untuk menentukan framework yang akan anda gunakan.

Realworld adalah salah satu repository yang menyediakan perbandingan pengguna asli dari suatu framework. Realword sudah mendapat binta sebanya 45.2 K dan tentunya masih akan terus bertambah untuk meningkatkan performance sharing to sharing developer. Dari sini akan terlihat mana framework backend maupun frontend yang sering digunakan, juga tentunya bisa digunakan sebagai acuan untuk menentukan envorinment adalam suatu system.

Berikut Peringkat Pengguna asli Frontend.

Sorted by popularity on Sun Jul 19 2020

🥇🥈🥉
React / Redux
React / Redux Star Fork
Angular
Angular Star Fork
Vue
Vue Star Fork
Elm
Elm Star Fork
React / MobX
React / MobX Star Fork
Svelte / Sapper
Svelte / Sapper Star Fork
PureScript + Halogen
PureScript + Halogen Star Fork
AngularJS
AngularJS Star Fork
ClojureScript + re-frame
ClojureScript + re-frame Star Fork
Angular + ngrx + nx
Angular + ngrx + nx Star Fork
Aurelia
Aurelia Star Fork
Ember.js
Ember.js Star Fork
Rust + Yew + WebAssembly
Rust + Yew + WebAssembly Star Fork
AppRun
AppRun Star Fork
Next.js
Next.js Star Fork
Vanilla JS Web Components
Vanilla JS Web Components Star Fork
ClojureScript + Keechma
ClojureScript + Keechma Star Fork
Stencil.js
Stencil.js Star Fork
Hyperapp 1
Hyperapp 1 Star Fork
Dojo 2
Dojo 2 Star Fork
Ember Octane
Ember Octane Star Fork
San
San Star Fork
Riot.js v4
Riot.js v4 Star Fork
neo.mjs
neo.mjs Star Fork
Imba
Imba Star Fork
Crizmas MVC
Crizmas MVC Star Fork
Bridge.Spaf
Bridge.Spaf Star Fork
Riot.js v3
Riot.js v3 Star Fork
Riot.js + Universal + Effector
Riot.js + Universal + Effector Star Fork
 

Tentunya pengguna juga harus mengetahui patokan dalam menentukan ekosistem yang akan dibuat disni kita bandingkan adalah Framework.

1. Performance

Performance dilihat dari seberapa banyak orang atau End User  menggunakan Aplikasi dan di build dari framework tertentu dan seberapa bagus feedback dari enduser.

Semakin Tinggi Semakin Bagus

Untuk  nilai diatas 90 akan terasa perbedaan dengan yang dibawahnya.

2. Size

Transfer Size bisa di analitik menggunakan inspect element di browser dengan melihat Network dengan melihat GZIPed transfer response dan lama Deliver dari server.

Walaupun semakin banyak library yang digunakan bisa menjadi semakin lama load size nya, namun semakin baik coding maka seharunya library yang tidak berguna tidak boleh di load.

Semakin Kecil Semakin Bagus

Semakin kecil ukuran file maka semakin cepat download page.

Kesimpulan

Semakin kecil load file coding maka semakin cepat. Svelte menjadi nomor satu karena memiliki Langkah yang keren load tanpa virtual DOM jadi sangat cepat

3. Line Code

Lone Code menunjukkan betapa ringkasnya library / framework / bahasa yang diberikan. Berapa banyak baris kode yang Anda perlukan untuk diterapkan di aplikasi yang sama.

Semakin Kecil Semakin Bagus

Kesimpulan

Pada dasarnya semua framework bagus, namun didunia kerja kecepatan pengerjaan sangat menentukan. Jadi adanya framework sangatlah membantu, beberapa refrensi diatas saya harap bisa membantu anda para pembaca agar lebih eksplor lagi dan belajar lagi sehingga bisa mengatahui framework terbaik apa yang cocok untuk system Anda.

Semoga Bermanfaat
Wassalamualaikum
CategoriesProgramming

Pemetaan obyek dengan AutoMapper pada ASP .Net Core 3.1

AutoMapper adalah object to object mapper yang memetakan obyek A menjadi obyek B yang memiliki properti dan tipe yang berbeda. Seperti contoh kita perlu melakukan pemetaan Data Transfer Object ke object model. AutoMapper memudahkan proses pemetaan konvensional yang harus memetakan secara manual satu per satu.

Untuk menggunakan AutoMapper pada ASP .Net Core 3.1 terlebih dahulu harus menginstal AutoMapper melalui NuGet atau command pada NuGet Package Manager seperti ini.

Continue reading

CategoriesInternetLinuxProgramming

Menganal OpenStack untuk Cloud Computing

          Salah satu integrasi Open Stack yang pernah
saya buat ada dengan CRM (Customer Relationship Management) dimana Openstack
mengatur Cloud Computing yang berhubungan dengan penjualan atau yang sering
disebut dengan Cloud VPS, Cloud Hosting, Rack location dan RackSpace, integrasi
ini saya buat dalam bentuk Admin Dashboard yang bisa digunakan untuk mengatur
Cloud Computing dan Penjualan. Open stack memiliki fitur yang lengkap untuk
semua kebutuhan IAAS.

Gambaran Service dari OpenStack

Apa itu OpenStack?

       OpenStack merupakan project open source untuk platform cloud computing. sebagian besar digunakan sebagai Infrastructure as a Service (IaaS), di mana server virtual dan sumber daya lain tersedia untuk pelanggan.Platform perangkat lunak terdiri dari komponen-komponen yang saling terkait yang mengendalikan beragam perangkat keras multi-vendor yang meliputi pengolahan, penyimpanan dan sumber daya jaringan di seluruh data center. Pengguna dapat mengelolanya melalui dasbor berbasis web, hingga command-line tools, atau REST layanan web (wikipedia).

         OpenStack menyediakan solusi IaaS (Infrastructure ad a Service) dengan berbagai layanan yang berhubungan. Masing-masing layanan/service menyediakan API (Application Programming Interface) yang memfasilitasi integrasi. Layanan-layanan atau service-service ini dapat kita instal sesuai kebutuhan kita. Dimana API ini bisa digunakan untuk integrasi sesuai kebutuhan Anda, saya pernah membuat untuk kebutuhan CRM.

 

Service di Arsitektur OpenStack sebagai Berikut:

Dashboard / Horizon 

Dashboard menyediakan tampilan web yang berinteraksi dengan layanan OpenStack seperti meluncurkan instance, memberikan IP address dan mengkonfigurasi akses control untuk Nova, Neutron, Swift dll.

Compute / Nova

Compute/ Nva menyediakan manajemen instan dari Compute yang ada pada lingkungan OpenStack sebagai contoh Compute di Virtual Server. Nova / Compute memiliki fitur untuk managemen dalam Virtual Machine, baremetal servers dan system contaners. Nova /  Compute adalah daemon yang berjalan di linux server.

Networking / Neutron

Neoutorn memiliki fungsi untuk mempermudah kita memahami layanan Networking sebagai layanan yang membuat jaringan secara virtual tentunya. Memiliki plugin yang mendukung berbagai jaringan dari vendor dan teknologi.

Object Storage / Swift

Swift  Pada Object storage ini akan menympan dan menambil object data melalui RESTful, API berbasis HTTP.

Block Storage / Cinder

Cinder sebagai Object Storage menyediakan persistent block storage untuk menjalankan instance. Kita dapat melakukan  manajemen block storage devices.

Identity service / Keystone

Keystone menyediakan manajemen otorisasi layanan.

Image service / Glance

Glance adalah untuk pengelolaan image terutama untuk menyimpan dan meluncurkan VM disk images. OpenStack compute menggunakan hal ini selama provision.

Telemetry / Ceilometer

Ceilometer akan memantau billing, benchmarking, scalability dan tujuan statistik.

Orchestration / Heat

Heat berfungsi untuk menggabungkan beberapa aplikasi cloud.

Database service /  Trove

Trove Meydiakan layanan Cloud database-as-a-Service.

Data processing service

Menyediakan kemampuan provision untuk Hadoop clusters.

Kesimpulan

OpenStack adalah open source yang memili resource yan besar sehingga bisa digunakan stakeholder untuk membangun usaha atau bisnis maupun hanya untuk IOT. Namun apabila penggunaannya sebagai bisnis maka akan berguna , bayangkan apabila harus secara manual atau hanya dalam bentuk Insfrastruktur tanpa Service instan dari Open Stack, akan sangat merepotkan. Pada inti nya dengan Open Stack semua Insfrastruktur bisa tertata dan semua service bisa dijalankan dengan cepat dan Mudah. Untuk belajar lebih dalam silahkan dipijak disini.

Semoga Bermanfaat.

Wassalamualaikum.

CategoriesProgramming

Efisiensi proses fetching data dengan GraphQl

Apa itu GraphQl?

GraphQl adalah query pemrosesan data untuk memanipulasi API. GraphQl dikembangkan secara internal oleh Facebook pada tahun 2012 dan di publikasikan pada tahun 2015 namun untuk rilis stabilnya pada tahun 2018. GraphQl memiliki posisi diantara Client dan Server dimana menjembatani aliran data. GraphQl hamper sama seperti REST  dimana ada proses CRUD bedanya GraphQl ini memerlukan skema untuk proses fetching data yang diinginkan sehingga tidak ada proses berulang dari client dan server. Salah satu tujuan pengembangan bahasa query ini adalah untuk mempermudah komunikasi data antara server dan Client.

Alur poses penggunaan Schema GraphQl

GraphQl dapat diimplementasikan di berbagai bahasa sisi client seperti react, vue, svelte dll. Apapun jenis framework nya selama dapat mengakses data dengan API. dan karena GraphQl ini hanya penerjemah (query language) dan runtime saja maka tidak tergantung pada bahasa pemograman sisi server dan database apapun.

Kegunaa Utama?

Pandangan alur proses data di GraphQl
1. Handle untuk Permintaan Ganda.

GraphQl memiliki proses dimana fetching data setelah diproses dari server maka akan dimanipulasi lagi sehingga smeua yang client butuhkan bisa didapatkan. proses berulang seperti di REST tidak akan terjadi karena data yang diinginkan sudah diload oleh GraphQl dan hanya perlu mengambil ulang dari schema yang di buat GraphQl.

2. Efisiensi Data dan Konsistensi.

Asumsinya kita semua sudah mengenal REST endpoint jadi tidak perlu dijelaskan apa itu REST. Setiap endpoint mewakili satu entitas dan memiliki beberapa metode seperti GET, POST, PUT dan DELETE. Ketika mengakses endpoint dengan metode GET akan menampilkan data dari entitas tersebut. Data yang ditampilkan bersifat tetap, maksudnya kita akan menerima semua data meskipun kita tidak membutuhkan data itu. Konsistensi data karena data kita sendiri yang atur atau yg menjembatani antara API yang ada dengan data yang akan kita berikan ke client.

Seklias penggunaan GraphQl untuk Argument

Argument Pada saat fetching data menggunakan GraphQl
Argument ini menunjukan get data dari API akan dioleh oleh query GraphQl sesuai dengan kebutuhan client sehingga tidak semua data dari API akan muncul di Client. Untuk lebih jelasnya silahkan bermeditasi disini: graphql

Perbedaan dengan graphQl dengan REST API

Pada dasarnya GraphQl dan REST API tidak terlalu berbeda namun sesuai dengan penggunaannya, GraphQl digunakan untuk data yang besar dimana didapat API dari pihak ketiga yang kemudian akan di deliver ke client sedangkan REST API proses data yang diingin kan sudah disiapkan oleh programmernya sehingga telihat pakem.

 

Kesimpulan

GraphQl memiliki efisiensi, konsistensi dan kemapampuna untuk handle data yang ganda. GraphQl dibutuhkan pada saat data dari sebuah aplikasi semakin besar dan dari segi development akan sangat lama apabila menggunakan RESTful API langsung ke client, jadi GraphQl akan memilah data mana saja yang akan tampil dan digunakan oleh client. Meski bitupun GraphQl bisa digunakan di aplikasi dengan skala kecil.

Semoga Bermanfaat

Wassalamualaikum

CategoriesProgrammingUX Design

Meningkatkan Kolaborasi antara Designer dan Developer

Latar Belakang Masalah

Beberapa waktu belakangan, kolaborasi designer – developer masih terasa individualistis. Contohnya bisa dilihat pada proses kerja mereka yang dimulai dari seorang designer (fase perancangan design hingga design selesai dalam bentuk mockup dan prototype), lalu design disimpan pada file lokal dan selanjutnya adalah tugas developer untuk melakukan review. Setelah mereview, barulah developer mengimplementasi design ke dalam bentuk kode. Apabila workflow semacam ini masih dilakukan, tentu berpeluang membuahkan hasil yang kurang optimal. Beberapa kekurangannya antara lain terjadinya miskomunikasi, tidak efektif dan efisien-nya kolaborasi, dan yang paling disayangkan adalah tidak beradaptasi menggunakan tools yang membantu kolaborasi antara designer – developer seperti XD, Figma, atau Sketch. Mengingat beberapa tools tersebut gratis.

Padahal hakikatnya designer dan developer adalah satu kesatuan yang tidak dapat dipisahkan pada era saat ini. Keterikatan tersebut bisa dibina mulai dari tahap perancangan design hingga selesainya sebuah system atau aplikasi. Jadi mindset kita pada artikel kali ini adalah bagaimana membuat kolaborasi antara designer – developer menjadi satu kesatuan, bukan tim yang terpisah. Dalam implementasinya, memang ada hal-hal yang patut diperhatikan supaya job description kedua pihak tersebut tidak tumpang tindih. Jika tidak ada batasan yang jelas, aspek yang tumpang tindih bisa mengakibatkan developer berpikir sebagai designer dan begitupun sebaliknya. Pada artikel ini akan dibahas mengenai beberapa saran agar kolaborasi designer – developer bisa lebih optimal dan menjadi satu kesatuan namun dibatasi dengan batasan yang jelas.

Perbedaan Designer dan Developer

Sebenarnya designer dan developer memliki beberapa perbedaan yang jelas. Designer bisa diibaratkan sebagai arsitek dan developer adalah konstruktornya. Sehingga seorang designer harus melihat sesuatu secara menyeluruh. Sedangkan developer akan lebih nyaman untuk melakukan breakdown task menjadi beberapa langkah kecil dan membuat sesuatu secara cepat. 

Ketika membicarakan perbedaan antara designer dan developer, maka kita juga perlu mengetahui proses berpikir mereka. Terdapat dua proses berpikir yang kita bahas disini yaitu empathize dan systemize. Kebanyakan developer berpikir secara systemize daripada empathize. Mereka mengandalkan logika di atas segalanya sehingga jarang kita dapati sisi emosional yang dominan seorang developer. Berbanding terbalik dengan developer, designer memiliki pola pikir empathize yang lebih mengandalkan perasaan dan emosi sehingga mentrigger kreatifitas pada otak kanan mereka.

Fokus dari kedua pihak pun berbeda, developer lebih berfokus kepada sistem sedangkan designer lebih berfokus ke end user. Kedua pihak tersebut harus berkomunikasi sedari awal fase perancangan dan mengenal satu sama lain sehingga bisa berkolaborasi secara terpadu. Ibarat otak manusia, ada otak kanan dan kiri. Inilah yang saya maksud dengan satu kesatuan karena manusia tidak akan bisa menjalankan hasrat hidupnya hanya menggunakan otak kiri saja atau otak kanan saja melainkan harus saling melengkapi, sama hal-nya dengan kesatuan designer – developer.

Bagaimana Caranya?

Key Discussion

Pertama-tama sebelum designer memulai fase perancangan design dengan tools XD, Figma, atau Sketch, bertanyalah kepada developer beberapa pertanyaan kunci.

Tools Apa yang Digunakan?

Tools seperti XD, Figma memiliki fitur yang memudahkan kolaborasi antara designer dengan developer. Ketika developer memilihi hak akses untuk melihat keseluruhan design beserta assetnya, maka designer bisa mengecek sedari awal kira-kira seperti apakah design yang akan diimplementasikan, memberikan komen, dan menyatukan persepsi antara designer dengan developer secara lebih mudah. Sehingga feedback bisa langsung diberikan oleh developer sebelum designer mengimplementasikannya lebih jauh.

Cobalah untuk mendiskusikan tools apa yang terbaik menyesuaikan dengan jenis project, preferensi tim, hingga preferensi perusahaan. Tools ini bisa disebut juga sebagai asset management yang memudahkan developer untuk mengakses sekaligus mengekspor assets pada layout yang telah di design oleh designer secara mandiri. Sehingga tidak ada lagi yang namanya developer meminta asset kepada designer. Semua sudah tersedia di satu tempat yang sama dan lebih terorganisir.

Apakah Framework / Library yang Digunakan?

Penting sekali untuk menanyakan hal ini karena designer bisa menyesuaikan asset, icon, komponen, hingga grid supaya sesuai dengan apa yang akan diimplementasikan developer dan tidak memiliki gap yang terlalu jauh. Menjadi tidak baik apabila designer mementingkan ego untuk memberikan design dengan kompleksitas yang tinggi dan tidak memungkinkan untuk didevelop. Contohnya ketika mendesign untuk aplikasi android, maka designer alangkah lebih baik untuk memahami komponen yang digunakan dalam material design. Sama hal-nya ketika web developer mendevelop web dengan bootstrap 4, mau tidak mau, designer juga harus menyesuaikan design dengan guideline yang ada di bootstrap.

Fase Design Seharusnya Tidak Pernah Selesai

Terdapat miskonsepsi yang umum terjadi bahwa ketika designer selesai melakukan tugasnya (mendesign screen keseluruhan mockup serta prototype-nya), maka mereka merasa bahwa kerja mereka telah selesai. Konsep seperti ini sering ditemukan pada projek bertipe waterfall, bahkan pada beberapa project agile sekalipun. Sebenarnya ketika designer selesai mendesign mockup atau prototype, pekerjaan designer baru selesai setengahnya. Karena ketika design sampai di tangan developer, fokus tidak lagi berpusat pada screen tetapi lebih spesifik ke fitur. Fitur dikembangkan behind the screen sehingga beberapa perubahan akan sering terjadi. Maka designer harus bisa stand by kapan saja apabila sewaktu-waktu ada developer yang membutuhkan bantuan designer untuk menyesuaikan design-nya kembali.

Perlu diingat bahwa kerja designer adalah menyeluruh. Pekerjaan designer tidak boleh terbatas pada visual yang mengandung nilai estetik saja. Namun juga mencakup bagaimana keseluruhan sistem bisa mudah digunakan oleh user. Maka dari itu, designer juga sedikit banyak ikut bertanggung jawab pada produk final yang telah diimplementasikan oleh developer.

Membuat Guideline yang Memudahkan Developer

Developer sangat dominan menggunakan otak kiri. Maka dari itu, ketika design sudah di depan mata, tidak semua developer bisa menerjemahkan visual design ke dalam bentuk code. Ada beberapa developer yang mengerti komposisi design dan nilai estetik, ada pula developer yang kurang memahaminya. Maka designer harus lebih aware dalam hal ini. Setiap fase design yang dilakukan, jangan lupa membuat guidance yang simple namun mencakup keseluruhan aspek design. Guideline itu bisa mencakup palet warna, ukuran margin padding, white space, typeface dan font size, dan lain-lain. Biasanya developer tidak memberikan feedback apapun setelah melihat design guideline dari kita. Mereka mengaku paham mengenai guideline namun pegakuan ini seringkali bertolak belakang dengan yang diharapkan designer. Maka dari itu, kedua pihak harus saling supportive dan terbuka mengenai persepsi mereka masing-masing.

Akses ke Code Base

Mungkin banyak developer tidak setuju dan mempertanyakan untuk apa memberikan akses code kepada designer? Namun hal ini ternyata efektif dan solutif untuk menjawab masalah yang timbul ketika kolaborasi antara designer dan developer tidak berjalan lancar. Pada satu titik, kolaborasi tim ini memungkinkan untuk terjadi bottleneck dan muncul rasa ketidakpercayaan satu sama lain. Namun ketika designer memiliki akses kode, terjadi perubahan drastis yaitu munculnya rasa supportive dan kepercayaan.

Terdapat pro dan kontra di komunitas designer maupun developer mengenai designer yang memiliki akses code. Tetapi realitanya, sangat susah untuk mendapatkan chemistry untuk kolaborasi ketika ada tembok raksasa, tidak terlihat, dan hanya bisa di akses oleh satu pihak saja. Sehingga muncul istilah baru yang mengkombinasikan design dengan programming, yaitu fullstack design.

Ketika seorang designer dipercaya untuk mengakses kode program, berarti designer tersebut sudah memenuhi kriteria sebagai fullstack designer. Seorang fullstack designer harus memiliki pengetahuan dasar tentang git, git hub, dan penullisan kode khususnya di bagian client side.

Kembali lagi pada pokok permasalahan yaitu harus ada batasan pembagian jobdesc serta peraturan yang disetujui antara developer – designer supaya pekerjaan tidak tumpang tindih atau malah simpang siur karena cara ini bukanlah best practice yang bisa diimplementasikan pada mayoritas perusahaan.

Mempelajari “Bahasa” Satu Sama Lain

Jika penjelasan sebelumnya lebih spesifik ke fullstack design, pembahasan kali ini akan mencakup developer – designer secara umum. Mempelajari “bahasa” satu sama lain bukan berarti designer harus bisa menulis kode atau developer harus bisa mendesign sesuatu. Yang dimaksud “bahasa” disini adalah istilah yang berkenaan dengan bidang ilmu masing masing. Kenapa harus mengerti “bahasa” satu sama lain? Karena ada istilah-istilah yang tidak mungkin diperjelas secara panjang lebar dan diterjemahkan menjadi bahasa orang awam karena kemungkinan besar justru mengakibatkan salah persepsi. Katakanlah seorang developer menanyakan “Kenapa fontsize-nya berubah-ubah?” Maka designer bisa menjawab “Karena dengan penggunaan fontsize dan weight yang berbeda, bisa membuat visual hierarchy yang baik sehingga meningkatkan usability”. Jika developer mengerti istilah yang dimaksud designer begitupun sebaliknya, akan sangat menguntungkan kedua pihak dari segi apapun.

Kesimpulan

Tidak ada cara yang selalu cocok dengan kondisi kolaborasi apapun. Hal itu kembali lagi dengan karakteristik masing-masing tim. Ketika satu sama lain saling memahami kebutuhan dan kondisi, barulah bisa mengaplikasikan beberapa cara yang disarankan di atas. Saran dari saya sendiri, mulailah pilih salah satu cara di atas, dan aplikasikan sesuai dengan kondisi kolaborasi tim. Jika memungkinkan, temukan beberapa orang dalam tim yang memiliki visi serupa untuk mewujudkan lingkungan kerja yang kolaboratif antara designer –developer. Buatlah tim kecil, berdiskusi sambil minum kopi dengan membahas mengenai apa yang harus dan tidak dilakukan demi kolaborasi yang lebih baik. Pada akhirnya, catat progress dari cara yang sudah disepakati sehingga Anda dan tim bisa mengukur dan melihat dengan harapan bahwa cara tersebut membawa dampak baik dan tidak lupa untuk terus mengevaluasinya.

Referensi

CategoriesUI DesignUX Design

Fenomena Trend Design Neumorphism dan Bagaimana Cara Membuatnya

Sejarah Terciptanya Neumorphism

Saat ini, Neumorphism menjadi style design yang digandrungi oleh komunitas designer dan banyak ditemukan pada Dribbble, Behance, Instagram dan forum-forum lain. Neumorphism merupakan turunan dari skeumorphism. Untuk lebih mudah membedakannya, skeumorphism merupakan istilah yang digunakan pada user interface untuk membuat suatu komponen layaknya komponen real di dunia nyata. Salah satu contoh pengaplikasian skeumorphism adalah pada icon shortcut recycle bin di OS windows. Skeumorphism pertama diimplementasi pada era awal smartphone touchscreen yang diperkenalkan oleh Apple iOS. iOS sangat mengerti bahwa dengan mengaplikasikan skeumorphism, user yang awal mulnya tidak paham bagaimana cara kerja touchscreen, bisa beradaptasi lebih cepat. Contohnya button dengan efek glossy, foto dengan border putih seperti foto real di dunia nyata, dan masih banyak lagi. Design ini lalu dengan cepat menyebar sehingga tidak luput diaplikasikan pada platform lain.

Is skeuomorphism really dead? - Popicon
Skeumorphism VS Flat Design

Untuk saat ini, sudah sangat jarang ditemukan design dengan style skeumorphism karena hampir seluruh manusia di dunia sudah mengenal media digital mulai dari smartphone hingga desktop. Maka, penggunaan skeumorphism yang terlalu banyak detail, akan menjadi useless karena user sudah bisa menginterpretasikan suatu komponen dengan cepat meskipun tidak menyerupai komponen di dunia nyata. Ketika mendekati perilisan iOS7, Apple mengumumkan bahwa mereka akan meninggalkan style tradisional (Skeumorphism) dan beralih ke style yang lebih simple yaitu flat design. Saat ini, hampir semua platform mengimplementasi flat design. Namun dalam beberapa waku belakangan (2018-2019), flat design murni juga sepertinya mengalami dark period seiring berumunculan flat design yang dikembangkan dengan gaya flat illustratif.

Reinkarnasi Yang Bangkit

Skeuomorphism / Neumorphism UI Trend - SKEUOMORPH MOBILE BANKING BY ALEXANDER PLYUTO
Neumorphism Mobile Banking by Alexander Plyuto

Neumorphism lahir dari hasil kombinasi antara skeumorphism dengan flat design. Sehingga menghasilkan design yang 3D, bertekstur namun tetap soft dan simple. Output seperti itu bisa dihasilkan dengan racikan yang tepat atas bentuk, gradien, warna background, highlights, dan permainan shadow. Secara kasat mata, mungkin Anda berpikir bahwa Anda memerlukan aplikasi 3D rendering. Tetapi sebenarnya Anda hanya perlu aplikasi design standar yang biasa Anda gunakan seperti XD, Figma, Sketch dan sejenisnya dengan sedikit sentuhan “magis” dalam pembuatannya.

Anda bisa melihat panduan di bawah untuk membuat design neumorphism.

Mendesign Style Neumorphism

Panduan untuk Designer

Pada panduan kali ini, saya memberikan contoh bagaimana membuat design neumorphism secara simple menggunakan Adobe XD.

Popping Up

Disini, Anda akan membuat efek timbul neumorphism. Pertama-tama, Anda harus memilih warna yang smooth (biasanya saturasi rendah). Lalu implementasikan warna tersebut di artboard anda.

Hex color yang saya gunakan

Setelah itu, buat square shape dengan ukuran bebas. Dalam contoh saya, saya menggunakan ukuran 100px X 100px. Set warna menyamakan dengan warna background. Lalu berilah efek black shadow dengan X=6, Y=6, B=10 dan opacity 20%. Anda bisa mengatur shadow sesuai dengan preferensi Anda.

Atribut Black Shadow
Square dengan Black Shadow

Buat lagi square shape dengan ukuran yang sama, namun berilah efek white shadow dengan X=-6, Y=-6, B=10 dan opacity 80%.

Atribut White Shadow
Square Ke-dua dengan White Shadow

Gabungkan kedua square secara tumpang tindih. Berikut adalah hasilnya.

Hasil Popping Up Square

Popping Down

Disini, Anda akan membuat efek rongga (ketika di tekan) neumorphism. Pertama-tama, buat square bernama layer “dark” dengan ukuran yang sama seperti cara sebelumnya. Set fill color transparent, border black, object blur seperti gambar di bawah.

Atribut Square Dark

Hasil Square Dark

Buat square ke-dua bernama layer “light” dengan ukuran yang sama. Set fill color transparent, border white, object blur seperti gambar di bawah.

Atribut Square Light
Hasil Square Light

Lalu buat square ke-tiga bernama layer “mask” dengan ukuran yang sama. Set atribut fill color transparent dan border dengan warna mencolok.

Square “Mask”

Lalu posisikan ketiga square tersebut secara tumpang tindih dengan susunan layer dari atas ke bawah: mask – light – dark.

Susunan Layer
Ketiga Square Tumpang Tindih

Ubah ukuran square dark menjadi 120px X 120px dan geser beberapa pixel ke kanan dan ke bawah. Ubah pula ukuran square light menjadi 120px X 120px dan geser beberapa pixel ke kiri dan ke atas. Usahakan efek blur dari kedua square tersebut masih tercakup di dalam square mask.

Posisi Setelah Ukuran Square Dark dan Light Dirubah

Langkah terakhir, select ketiga object tersebut, klik kanan > Mask With Shape. Dan jadilah efek rongga (popping down) neumorphism.

Hasil Popping Down Square

Implementasi Neumorphism

Setiap design memiliki sisi baik dan buruknya. Sisi baiknya, neumorphism bisa memberi nuansa yang baru, fresh, dan terasa unik. Ketika dilihat oleh mata, membuat siapapun usernya ingin untuk memainkan komponen yang ada (termasuk saya) sehingga unsur gamification secara tidak langsung bisa dirasakan. Yang jadi pertanyaan adalah, mengapa saat ini kita masih belum melihat aktivitas masif implementasi neumorphism ini pada produk real? Meskipun neumorphism membawa efek visual yang bagus, ternyata mengandung kelemahan yang krusial yaitu usability.

Usability yang diusung oleh neumorphism sangat bergantung pada niche tertentu. Margin warna yang sangat kecil dan kontras membuat neumorphisme bekerja dengan tingkat saturasi yang rendah. Ditambah juga terlalu banyak shadow dan textur membuatnya tidak cocok untuk aplikasi yang tergolong kompleks.  Sehingga ketika diaplikasikan pada contohnya, aplikasi bisnis, mengharuskan nuansa formal dan neumorphism gagal diimplementasi. Sepertinya neumorphisme hanya cocok untuk beberapa aplikasi yang memiliki idealisme yang berhubungan dengan kreatifitas, out of the box, dan simplicity.

Beberapa Issue

Button (tombol) adalah salah satu komponen terpenting dalam user interface. Tanpa adanya button, user akan kesulitan untuk melakukan aksi trigger aktivitas dalam aplikasi. Maka dari itu, suatu button harus terlihat mencolok dan mengandung sedikiti interaksi untuk memberitahu user perubahan status dari suatu button. Meskipun hanya sepersekian detik, perubahan status dan warna sangat krusial karena bersifat komunikatif kepada user. Ketika button menggunakan style neumorphisme, sulit untuk memberi perubahan status pada button karena terhalang dengan margin tipis dalam efek bayangan. Beberapa designer mencoba menjawab permasalahan dengan tetap memberikan style neumorphism hanya pada cards namun mengunakan tombol classic tanpa sentuhan neumorphism.

My Thoughts on Neumorphism - Frank Huang - Medium
Neumorphism Button

Hal ini berlaku pula dengan prinsip CTA (Call to action). Sebagaimana diketahui, bahwa CTA harus mengandung warna yang mencolok sehingga mempersuasi user untuk menekan button tersebut. Dengan neumorphism, lagi-lagi ada batasan warna sehingga user tidak bisa menemukan CTA dengan mudah.

NEUMORPHISM TUTORIAL by Julia Shagofferova on Dribbble
Contoh Implementasi CTA pada Neumorphism

Issue berikutnya berhubugan dengan aksesibilitas. Melanjutkan perihal implementasi neumorphism yang bergantung dengan niche, neumorphism menyulitkan beberapa pengguna yang memiliki gangguan penglihatan khsusunya pada beberapa orang dewasa dan telah berumur. Neumorphisme adalah tentang UI yang lembut tetapi jika digunakan secara berlebihan, membuat user mudah untuk terdistraksi. Ditambah lagi apabila user menggunakan layar kualitas rendah sehingga menghilangkan detail dari neumorphism itu sendiri.

neumorphism : UI_Design
Beberapa Pihak Tidak Setuju dengan Neumorphism

Kesimpulan

Komunitas pada Dribbble, instagram, medium, hingga reddit, beberapa menganggap bahwa neumorphism adalah pengganti flat design. Hal tersebut tidak sepenuhnya benar, karena lebih tepatnya adalah design yang bersifat tambahan saja. Sama seperti halnya trend gradient yang terjadi beberapa waktu belakangan. Banyak yang bereaksi dan menggadang-gadang bahwa gradient akan menggantikan flat design. Katika gradient diimplementasi sedemikian rupa dan diterapkan untuk mengcover seluruh layar, ternyata hasilnya sangat buruk. Pada akhirnya, gradient hanya sebagai pelengkap dan perfectly fits pada UI design yang spesifik pada beberapa komponen saja.

Gelombang neumorphism untuk saat ini masih fase permulaan. Komunitas designer terus bereksperimen untuk menghasilkan neumorphism yang benar-benar bisa cocok diaplikasikan pada real produk. Sebagai designer, Anda bisa ikut berkontribusi melakukan eksperimen. Sebagai non designer khususnya developer, tetap ikuti dan amati trend neumorphism ini karena telah banyak bermunculan tools generator untuk membuat neumorphism secara mudah. Walaupun dalam waktu mendatang neumorphism gagal untuk benar-benar diimplementasikan, kita semua tetap bisa mengambil pelajaran dan menjadi bagian dari fenomena ini. 

Daftar Pustaka

CategoriesProgramming

Fast Track Jadi Mobile Developer

Halo teman-teman! Terimakasih sudah membuka artikel ini 😊

So, artikel ini saya tulis sebagai media literasi dan dokumentasi dari event webinar yang diadakan oleh Kopertip Indonesia pada tanggal 14 Juni 2020.

Jadi, Bagaimana cara cepat untuk berkarir sebagai Mobile Developer? Sebelum menjawab hal tersebut, saya akan menjelaskan kenapa harus berkarir sebagai Mobile Developer. Saya menghighlight beberapa hal penting yang terdapat pada profesi ini, yaitu:

[SATU]: Trend Statistic

Saat ini total dari perusahaan terdaftar pada sensus ekonomi 2016 berjumlah lebih dari 23 juta perusahaan yang terdiri dari UMK dan UMB. Selain itu juga terjadi pertambahan sekitar lebih dari 2000 perusahaan baru setiap tahunya. Perubahan pola administrasi dan bisnis pada perusahaan juga akan berubah seiring berjalanya waktu. Untuk mengubah pola tersebut Indonesia memerlukan sumber daya manusia yang banyak.

Untuk memenuhi target tersebut, saat ini pemerintah dan berbagai perusahaan swasta menyelengarakan berbagai program untuk memenuhi kebutuhan mobile programmer di Indonesia. Diantara program tersebut adalah menyelenggarakan bootcamp scholarship, workshop, online course scholarship, dan berbagai program lain. Seperti contoh: Program Digitalent by Kominfo, IDCamp by Indoosat Ooredo, Sholarship Internship by Apple Developer Academy.

[DUA]: Salary

Payscale merangkum beberapa hasil survey terhadap gaji developer, berikut hasil survey untuk rata-rata gaji dari android developer dan iOS developer di Indonesia.

resource: www.payscale.com

Angka tersebut belum menjelaskan angka pasti nilai gaji di seluruh wilayah Indonesia. Teman-teman bisa mengecek lebih detail pada qr code yang telah saya cantumkan atau pada link berikut:

Survey Android Survey iOS

[TIGA]: Interest

Saya pribadi menerapkan konsep Ikigai yang berkaitan dengan beberapa aspek pada hidup. Hal tersebut mendukung saya agar dapat mendalami lebih dalam tentang apa yang saya suka, apa yang saya bisa, apa yang dunia butuhkan, dan apa yang dunia mau membayar untuk mendapatkan hal tersebut.

resource: Ikigai, Hector Gracia and Francesc Miralles

Saya mendapatkan bahwa Mobile Developer menjadi profesi yang menarik saya untuk lebih mendalaminya.

[EMPAT]: Learning Path

Selain beberapa hal diatas, ada juga hal penting yang dapat mempercepat proses kita untuk menjadi Mobile Developer yaitu mengikuti Learning Path atau Roadmap yang dibutuhkan. Dengan memiliki learning path tersebut akan mempermudah dan mempercepat kita untuk mempelajari hal-hal yang dibutuhkan di dunia industri sebagai Mobile Developer.

Berikut saya bagikan learning path yang juga saya gunakan dalam proses saya untuk menjadi Mobile Developer.

LEARNING PATH ANDROID by Ana Coimbra dan Diego Cabral

LEARNING PATH IOS by Bohdan Orlov

[TIPS]

Sebagai developer tentunya kita harus dapat memecahkan sebuah masalah yang kita alami, nah untuk memecahkan masalah tersebut kita memerlukan proses pembelajaran dan best-practice untuk menyelesaikanya. Berikut beberapa tips yang dapat teman-teman terapkan untuk mendukung teman-teman menjadi Mobile Developer:

  1. Be Stackoverflow buddy!
  2. Join Bootcamp or Courses
  3. Find match Community!
  4. Remember, 10.000 hours rules

Berikut saya bagikan beberapa bootcamp dan course yang dapat membantu teman-teman dalam belajar sebagai Mobile Developer:

Jika kalian membutuhkan bantuan untuk belajar menjadi Mobile Developer. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!