Coder Social home page Coder Social logo

gimoji's Introduction

๐Ÿ‘‹ Hi there, I'm Zeeshan Ali Khan

  • Previous Name: Zeeshan Ali
  • Location: Berlin, Germany. ๐Ÿ‡ฉ๐Ÿ‡ช
  • Nationality: Finnish. ๐Ÿ‡ซ๐Ÿ‡ฎ
  • Contact: zeenix@gmai<guess-this-letter>.com

Summary

I'm an experienced Rust developer. I have worked on various Linux-based solutions over the past 22 years on different levels, from kernel to UI applications. I am eager to learn new technologies and a quick-learner.

In the last 5 years in (mostly) my spare time, I created and maintain a Rust crate that makes D-Bus very easy, called zbus. It has become the way to do D-Bus in Rust. It's a project I'm particularly proud of.

Top Skills ๐Ÿ˜Ž

  • Rust (5 years)
  • C (17 years)
  • Open Source development (22 years)
  • Linux/Unix Programming (22 years)

Career Highlights ๐Ÿš€

  • Rust & FOSS specialist consultant at Mercedes-Benz Vans in the Digital Upfitter project on a 1 year contract from Dec 2022 to Dec 2023. My work included:

    • Development of the Digital Upfitter platform, especially the Rust components.
    • Helping various teams in the Mercedes-Benz group learn Rust and adopting the best practices around it.
    • Development of busd, a D-Bus broker in Rust.
    • Helping shape the future FOSS strategy of the company.
  • Senior Software Engineer at Kraken from 2021 to 2022. I worked on their web backend in Rust, enabling the transition of various services from PHP to Rust as well as creating new services for new product features.

  • Lumeo HQ from 2020 to 2021. Lumeo's mission is to create a complete, edge-to-cloud vision platform that accelerates design, deployment and monitoring of vision solutions. Most of the software is written in Rust. I worked on the component running on the edge devices.

  • Pelagicore as Software Architect from 2016 to 2017.

    • Lead the development & maintenance of GENIVI Development Platform from Dec 2016 to May 2017.
    • Worked on PELUX, a Linux-based Open Source platform for In-Vehicle Infotainment systems.
    • Developed gps-share, a utility to share your GPS device on local network and enable support for standalone GPS devices in Geoclue. This was my first real world experience of Rust.
  • Red Hat Inc. as Senior Software Engineer from 2011 to 2016 and then from 2019 to 2020:

    • GNOME Boxes, a simple but powerful virtual and remote machine manager for GNOME. Together with my awesome colleagues, I not only implemented the application but also the needed infrastructure and frameworks for it (such as, libosinfo and libvirt-glib).
    • Geoclue, a D-Bus geoinformation service that makes creating location-aware applications as simple as possible. I single-handedly re-wrote the entire project in 2013.
    • Maps, a map application for GNOME.
    • In my last year at Red Hat, I was part of the team that makes it possible to deploy Openshift clusters on desktop machines for easy testing and development.
  • Nokia Corporation as SW Design Engineer from 2006 to 2007 and as Lead-Developer/Architect from 2008 to 2011. At Nokia, I worked at MeeGo (formerly Maemo) group, developing Linux-based mobile products. I worked on development of N800, N810, N900 and N9. I was behind the following successful open source projects:

    • Created and maintained Rygel, a collection of UPnP/DLNA services for GNOME (Mobile). Rygel is readily available in/for all major Linux distributions, was shipped as part of Nokia N9 and currently being deployed in In-Vehicle Infotainment systems.
    • Co-developed and co-maintained GUPnP, an elegant, object-oriented open source framework for creating UPnP devices and control points. GUPnP was integral part of Nokia N900 and N9. Rygel is heavily dependent on GUPnP so all products that use Rygel, also use GUPnP. Raumfeld uses GUPnP for their multi-room music solution.
    • MAFW (Media Application Framework) is a framework that makes writing multimedia applications, easy. It also abstracts low-level technologies, such as GStreamer and GUPnP. The project was later renamed to Grilo and is still being maintained and used by Linux applications.
  • Aerocar Engineering as Software Developer from 2004 to 2005. Aerocar was mainly a consulting company but also worked on a few products of their own. My job was design and implementation of most parts of their ATM (Automated Teller Machine) project. My work mainly involved development of the user-interface and device drivers for the ATM peripherals. The company no longer exists.

  • North West Research as Software Developer from 2002 to 2004. It is a small company that develops various small consumer and enterprise products, mainly for local markets. Two of my main projects were:

    • An open-source video-wall solution based on GStreamer, called video-whale. The effort was highly appreciated in the open-source community slashdot.org, The Linux Magazine (March 2003), etc.
    • ENAS (Ethernet Network Access Server). ENAS was a RADIUS-compatible network access and bandwidth control box, that restricted users' access and bandwidth on the network based on their systems' MAC and IP addresses. The core of the system was a Linux kernel module.

Other projects/achievements ๐Ÿ†

Education ๐ŸŽ“

Bachelor of Computer Science from University of Peshawar, Pakistan.

Hobbies ๐ŸŽธ

๐Ÿš ๐Ÿ›ฉ ๐Ÿ––๐Ÿผ

gimoji's People

Contributors

a-kenji avatar badboy avatar maxverevkin avatar renovate[bot] avatar whot avatar zeenix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gimoji's Issues

Integration with commit alias

Very nice tool, but woudl you know how irt would be integrated into when using the following alias?

git cm "some message"

[alias]
 cm = commit -a -m

On Mac git hook does not work

The hook ends up with the following output:

+ exec
+ gimoji --hook .git/COMMIT_EDITMSG
Error: Custom { kind: Other, error: "Failed to initialize input reader" }

Handle proxy

Currently you can download emojis from behind a proxy.

There seems to be something wrong with the alembic

I copied alembic โš—๏ธ to the clipboard and then pasted it to the console (iterm2) and here is what I see:

image

That does not happen with, for instance, lock icon:
image

Also, it looks ok when I paste the alembic to another medium, such as here: โš—๏ธ

One more thing: I have noticed that with lock, there is a space between the icon and to in the message Copied ๐Ÿ”’๏ธ to the clipboard, while with alembic it does not exist.

gimoji doesn't handle light themes

A screenshot says more than a multitude of words:

screenshot

Reproducible in kitty and gnome-terminal in Light theme, gnome-console has a slightly different theme so the light grey is just visible. Some squinting may be required.

Show progress of emoji download

Although the database is a 10K file, it could still take a few seconds on a congested/slow network. It would be good to show progress if possible. ratatui has two widgets we can use for showing the progress.

Outdated lockfile

Rust Book FAQ

Please update the lock file prior to tagging, so the package can be built using cargo.lock. Currently this is not possible.

Ctrl+c doesn't work to quit

It'd be nice if there was a way to quit gimoji using Ctrl+C. Currently only Esc works but for a terminal app that wasn't immediately obvious.

Admittedly, it's not needed since Escape works but it feels wrong that I can't Ctrl-C my way out and even the venerable :q doesn't work (which btw would be a nice easter-egg ;)

"Copy to clipboard" doesn't work

This patch does not fix it:

diff --git a/Cargo.toml b/Cargo.toml
index ec6afbb..6e825eb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,7 +16,7 @@ clap = { version = "4.3.0", features = ["derive"] }
 crossterm = { version = "0.26.1", features = ["use-dev-tty"] }
 ratatui = "0.21.0"
 regex = { version = "1.8.2", default-features = false, features = ["std", "perf", "unicode-case" ] }
-arboard = { version = "3.2.0", default-features = false }
+arboard = { version = "3.2.0", default-features = false, features = ["wayland-data-control"] }
 
 [build-dependencies]
 serde = { version = "1.0.163", features = ["derive"] }

Doesn't compile

  • Tried to install using cargo install --locked gitmoji
  • OS: 6.3.7-arch1-1
  • rustc -V: rustc 1.72.0-nightly (d59363ad0 2023-06-01)

The compilation fails with the following message:

    Updating crates.io index
  Installing gitmoji v1.0.0
    Updating crates.io index
warning: package `bumpalo v3.1.2` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `futures-util v0.3.1` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `miow v0.2.1` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `net2 v0.2.33` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `pin-project v0.4.8` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `pin-project-lite v0.1.4` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
warning: package `structopt v0.3.9` in Cargo.lock is yanked in registry `crates-io`, consider running without --locked
    Updating crates.io index
   Compiling libc v0.2.66
   Compiling cfg-if v0.1.10
   Compiling proc-macro2 v1.0.8
   Compiling unicode-xid v0.2.0
   Compiling syn v1.0.14
   Compiling lazy_static v1.4.0
   Compiling autocfg v1.0.0
   Compiling log v0.4.8
   Compiling pkg-config v0.3.17
   Compiling bitflags v1.2.1
   Compiling cc v1.0.50
   Compiling memchr v2.3.0
   Compiling rustversion v1.0.2
   Compiling bytes v0.5.4
   Compiling slab v0.4.2
   Compiling fnv v1.0.6
   Compiling version_check v0.9.1
   Compiling getrandom v0.1.14
   Compiling itoa v0.4.5
   Compiling pin-project-lite v0.1.4
   Compiling futures-core v0.3.1
   Compiling serde v1.0.104
   Compiling openssl v0.10.27
   Compiling unicode-width v0.1.7
   Compiling ppv-lite86 v0.2.6
   Compiling foreign-types-shared v0.1.1
   Compiling pin-utils v0.1.0-alpha.4
   Compiling foreign-types v0.3.2
   Compiling futures-sink v0.3.1
   Compiling matches v0.1.8
   Compiling native-tls v0.2.3
   Compiling indexmap v1.3.1
   Compiling futures-io v0.3.1
   Compiling unicase v2.6.0
   Compiling httparse v1.3.4
   Compiling futures-task v0.3.1
   Compiling http v0.2.0
   Compiling smallvec v1.2.0
   Compiling futures-util v0.3.1
   Compiling unicode-bidi v0.3.4
   Compiling ryu v1.0.2
   Compiling unicode-normalization v0.1.12
   Compiling c2-chacha v0.2.3
   Compiling openssl-probe v0.1.2
   Compiling unicode-segmentation v1.6.0
   Compiling quote v1.0.2
   Compiling iovec v0.1.4
   Compiling net2 v0.2.33
   Compiling num_cpus v1.12.0
   Compiling rand_core v0.5.1
   Compiling openssl-sys v0.9.54
   Compiling term_size v0.3.1
   Compiling mio v0.6.21
   Compiling atty v0.2.14
   Compiling dirs-sys v0.3.4
   Compiling regex-syntax v0.6.14
   Compiling try-lock v0.2.2
   Compiling rand_chacha v0.2.1
   Compiling unicode-xid v0.0.4
   Compiling synom v0.11.3
   Compiling idna v0.2.0
   Compiling rand v0.7.3
   Compiling want v0.3.0
   Compiling dirs v2.0.2
   Compiling textwrap v0.11.0
The following warnings were emitted during compilation:

warning: build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
warning:     4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
warning:       |                        ^~~~~~~~~~~~~
warning: build/expando.c:5:23: note: in expansion of macro โ€˜VERSION2โ€™
warning:     5 | #define VERSION(n, v) VERSION2(n, v)
warning:       |                       ^~~~~~~~
warning: build/expando.c:10:1: note: in expansion of macro โ€˜VERSIONโ€™
warning:    10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
warning:       | ^~~~~~~

error: failed to run custom build command for `openssl-sys v0.9.54`

Caused by:
  process didn't exit successfully: `/tmp/cargo-install0qx1v5/release/build/openssl-sys-f75fbb9c71127340/build-script-main` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
  OPENSSL_LIB_DIR unset
  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
  OPENSSL_INCLUDE_DIR unset
  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
  cargo:rerun-if-env-changed=OPENSSL_DIR
  OPENSSL_DIR unset
  cargo:rustc-link-lib=ssl
  cargo:rustc-link-lib=crypto
  OPT_LEVEL = Some("3")
  TARGET = Some("x86_64-unknown-linux-gnu")
  HOST = Some("x86_64-unknown-linux-gnu")
  CC_x86_64-unknown-linux-gnu = None
  CC_x86_64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_x86_64-unknown-linux-gnu = None
  CFLAGS_x86_64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
  running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "/usr/include" "-Wall" "-Wextra" "-E" "build/expando.c"
  cargo:warning=build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
  cargo:warning=    4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
  cargo:warning=      |                        ^~~~~~~~~~~~~
  cargo:warning=build/expando.c:5:23: note: in expansion of macro โ€˜VERSION2โ€™
  cargo:warning=    5 | #define VERSION(n, v) VERSION2(n, v)
  cargo:warning=      |                       ^~~~~~~~
  cargo:warning=build/expando.c:10:1: note: in expansion of macro โ€˜VERSIONโ€™
  cargo:warning=   10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
  cargo:warning=      | ^~~~~~~
  exit status: 1

  --- stderr
  thread 'main' panicked at '
  Header expansion error:
  Error { kind: ToolExecError, message: "Command \"cc\" \"-O3\" \"-ffunction-sections\" \"-fdata-sections\" \"-fPIC\" \"-m64\" \"-I\" \"/usr/include\" \"-Wall\" \"-Wextra\" \"-E\" \"build/expando.c\" with args \"cc\" did not execute successfully (status code exit status: 1)." }

  Failed to find OpenSSL development headers.

  You can try fixing this setting the `OPENSSL_DIR` environment variable
  pointing to your OpenSSL installation or installing OpenSSL headers package
  specific to your distribution:

      # On Ubuntu
      sudo apt-get install libssl-dev
      # On Arch Linux
      sudo pacman -S openssl
      # On Fedora
      sudo dnf install openssl-devel

  See rust-openssl README for more information:

      https://github.com/sfackler/rust-openssl#linux
  ', /home/maxv/.cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-sys-0.9.54/build/main.rs:126:13
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `gitmoji v1.0.0`, intermediate artifacts can be found at `/tmp/cargo-install0qx1v5`

P.S.: Why tokio and openssl are even needed for this project? ๐Ÿ˜†

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.