Git Product home page Git Product logo

difm's Introduction


jip.dev · stackoverflow (top 0.7%) · linkedin

★★★★★

🙋🏻‍♂️ I am a versatile, self-directed engineer with +4 years of professional experience and +18 years of overall software engineering experience.

❤️ I have a passion for software engineering that naturally drives me to help others, read and learn new things, write about what I learn, and put what I learn to action both in personal projects (see below) and at work.

👷🏻‍♂️ I have a proven record for designing, planning, leading, and developing complex projects, both greenfield projects as well as those involving major sweeping changes to critical, complex, interconnected legacy systems.

🚀 I consistently clear obstacles. If something is broken or lacking, I dive in to investigate, file a thorough ticket, and often fix or implement the feature myself (see example issue and PR), and if what I need doesn't exist yet, I will build it.

🐞 I love the thrill of the chase of debugging. This has led me to diagnose and address subtle and elusive bugs in all manner of previously-unfamiliar, complex, and diverse projects (see below), and all have been tremendous learning opportunities.

⚡ My thrill for debugging has allowed me to develop an acute ability to dive deep into unfamiliar projects and quickly make meaningful contributions (see below).

🧘🏻‍♂️ I am practical. I dive deep into niches like emacs, vim, and zsh (see extensive dotfiles), or state-of-the-art technologies like Rust, or perspective-expanding technologies like Haskell and Clojure—but I always remain grounded and pick the right tool for the job even if others may consider it boring. I always appreciate what each tool has to offer and its trade-offs.

👀 I keep up with the latest developments and constantly read and learn new things, preferring source material like documentation and manuals, if available. See my extensive notes and my recent reading list.

★★★★★

🔽 Click here to expand some of my varied open source contributions 🔽

See the full list here.

Project Language Description
AWS CDK
Infrastructure as Code
TypeScript I implemented native .dockerignore and .gitignore support to fix confusing and erratic behavior, and also added support for the AWS Lambda WorkDir option. Learn more.
Minio
Kubernetes Native Object Storage
Go I optimized listings of large HDFS directories with +1,500 files by 200x to aid a company merger. Learn more.
Rust
Systems Programming Language
Rust I was an early Rust user since before 2014 and consistently helped to adapt Rust packages to breaking changes of syntax, semantics, and libraries. I reported compiler errors that I discovered by using bleeding-edge nightly features, and contributed a speedy fix in time for the 1.0 release. Learn more.
libtorrent/rtorrent
BitTorrent Library/Client
C++ I fixed elusive platform-specific bugs reported by Solaris users caused by non-portable signal handling due to non-POSIX compliant system calls. Learn more and more.
hoedown
Markdown C Library
C Early on Rust lacked a fully-featured Markdown library and I needed one for the static site generator I was writing (diecast), so I wrote idiomatic bindings to hoedown for Rust which exposed previously unknown edge cases in the C library through different combinations of feature flags. Learn more.
WP-reCAPTCHA
Official reCAPTCHA WordPress Plugin
PHP Back in 2008 the lead engineer of the Carnegie Mellon University project reCAPTCHA asked if I would be interested in creating the official WordPress plugin for reCAPTCHA and I accepted. After over half a million installs, I transferred ownership to Google after they acquired reCAPTCHA. Learn more.
Hakyll
Static Site Generator
Haskell I fixed a reported bug that appeared without any changes to code nor to the Hakyll library, something especially rare in Haskell. Learn more.
Aura
AUR Package Helper
Haskell I implemented search-result count limiting. Learn more.
Syncplay
Media Player Synchronizer
Python I contributed features to the synchronization algorithm and made Syncplay packageable on Linux, then created ArchLinux AUR packages for them. Learn more.
Handlebars-Rust
Template Engine
Rust I kept it updated against the frequent breaking changes of pre-1.0 Rust.
MPC-HC
Media Player
C++ I fixed remote web UI seeking.
notify
File System Events
Rust I kept it updated against the frequent breaking changes of pre-1.0 Rust, as well as fixed general bugs and made certain optimizations.
git2
Rust Bindings to libgit2
Rust I increased C library binding coverage.
inotify-rs
Rust Bindings to Linux inotify
Rust I adapted it to pre-1.0 breaking changes by interpreting Linux documentation for the correct kind of error to yield.

difm's People

Contributors

blaenk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

difm's Issues

Devise a way to store the stream URLs

If the guys at di.fm don't come up with a way to fetch the stream URLs (JSON for example), then figure out a way to store the URLs.

To avoid a single point of failure, fetch all of the possible stream URLs and store them in a property list. Dictionary root with array keys which store the genre followed by all of the URLs. Change the streamer source so that if one fails, another one is attempted.

Perhaps provide a way to download the pls file and scrape the URLs as a form of updating the URLs in case they become old or outdated, though this probably wouldn't be very efficient.

Add links to youtube

The player view should have a YouTube logo or icon that when clicked, takes the user to the YouTube app's results page for that song. Include an alert view to alert the user that they will be taken away from the app.

The favorites list should also include links to YouTube results.

This would allow users to easily favorite the songs on their YouTube accounts for later viewing or even for hearing the song again.

Also provide links to DJ Cotts, Ravine, and other DJs from di.fm in the app. They could appear in the channels list in their separate section or somewhere else.

Note: Verify legality of including YouTube logo.

Organize the favorite channels and all of the channels

Using the info from page 115 of the book, maybe it'd be a neat idea to make the favorite channels and all of the channels be back to back.

If not, then have two sections, one for favorites at the top and the other for the rest of the channels.

Clicking each channel will switch the view to the player view if it is a different channel than the one currently playing.

Handle Failed Attempts at Streaming Properly

Currently, when a stream is chosen and the connection fails somehow, it displays an alert view.

Implement a fallback mechanism. If one stream fails, try to load a different URL. If all of the available URLs fail, cycle through all of the URLs one more time. If this fails, finally display the alert view.

Read Issue #7

Create a favoriting feature

The player view sould have an empty star or heart, clicking on it should fill it or color it. What this will do is add the song name (Artist and Title) to a favorites database categorized by genre/channel. Whenever the same song plays again, the heart or star will be filled, and perhaps the DI.FM logo will glow.

Perhaps add an option to vibrate the phone at the beginning of the song.

A database should be created for this. It will store the genre and song artist and title. Each time metadata is updated, the database will be queried to find out if the song is already there. If it is, then the heart will already be filled with red and song will not be allowed to be re-added to the database.

Should the genre be stored? If it isn't, it would avoid the problem that might happen if the same song appears in different channels. If it is stored, then when the user views the favorites, he or she will be able to look at their favorites on a per-channel basis.

Memory Leak When Starting a Stream

Create a Fallback MetaData Parser

Sometimes the meta data is stupid and messy like "Artist-Song (The Remix)". If the first parse attempt fails, try for this format.

Don't Manually Create the Time String

The formatted time string should not be created manually each time. Instead, create a method within DIFMStreamer that returns the formatted string.

App Crashes During Ad

When the ad comes up "Hey, you like the tunes here right?" the app crashes. This is most likely due to an out of bounds error when the metadata is parsed and split. A fix has been applied, but it has not been tested yet.

Redesign the Audio Streamer's Architecture

Redesign the Audio Streamer's architecture so that it is not necessary to access the app delegate each time (Makes things messy). Instead create a singleton that provides all of the necessary information. This should also make it easier to re-start the stream using the persistent data.

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.