Software Development
“Programming is not a science. Programming is a craft.”
Richard M. Stallman, founder of the Free Software movement
I've been programming since 1999. At the end of the '90s, when the internet found its way into Israeli homes, I created a fan website for my favorite soccer team, Bnei-Yehuda Tel-Aviv. I can still remember the short HTML guide I read back around 1996 so I can start creating websites. Back then, the internet was largely static. When content management systems and the dynamic web began to show their faces, I started playing around with CMSs, message boards and other related software. Perl was the most popular language for web development at the time, and being unsatisfied with the CMSs and MBs of those days, I began modifying them to suit my needs, and thus started learning Perl by using it.
Eventually, I started creating my own programs. I became infatuated with the Free Software movement, and moved my workstation from Microsoft Windows to an all-free-software GNU/Linux system. When I started learning Mechanical Engineering in Tel-Aviv University at 2002 (for some reason), I checked out every Perl-related book from the library. I checked the famous "Camel Book" (Programming Perl) on my first week at the university and returned it to the library after four years, two weeks after I've graduated.
As I continued to hone my skills as a developer, I started releasing software libraries under free licenses to CPAN. I continued to create websites, all managed by my own software projects. Among these websites, I have maintained the official website for Bnei-Yehuda Tel-Aviv for more than 10 years.
When I was released from the Israeli army in 2009, where I served as a Mechanical Engineer, I sought out a career in software development. I've been employed by Bezeq - The Israeli Telecommunication Corp - as a software developer in a small team of developers in the company's engineering section, in charge of writing software for managing, controlling and diagnosing Bezeq's services. I have received an Employee of the Year award in 2011, a Project of the Year award in 2012, and a Project of the Year award in 2013.
I left Bezeq at the end of December 2015, moving to Israeli startup company Aqua Security Software, which specializes in development of security solutions for cloud-native applications.
“Talk is cheap. Show me the code.”
Linus Torvalds, creator of Linux
The following is a list of software projects I have released under free licenses. Most of these are in Perl, in which case they can be installed from CPAN. All are hosted at GitHub, and can be easily forked.
Web Development
-
Leyland Perl
Plack-based framework for RESTful web applications
-
Plack-App-MCCS Perl
Minify, Compress, Cache-control and Server static files in Plack applications
-
Markup-Unified Perl
A simple, unified Perl interface for Textile, Markdown and BBCode
-
DBIx-Class-InflateColumn-Markup-Unified Perl
Automatically formats a DBIx::Class text column with Textile, Markdown or BBCode
-
McBain-WithPSGI Perl
Turns McBain into a RESTful PSGI web application framework
-
Net-Server-ZMQ Perl
Preforking job server based on Net::Server
-
Szyslak JavaScript
Grunt-based static site generator with an attitude
-
Tenjin Perl
Perl CPAN version of the fast templating engine Tenjin
-
Catalyst-View-Tenjin Perl
Tenjin view class for Catalyst
-
Dancer-Template-Tenjin Perl
Tenjin wrapper for the Dancer Perl framework
-
WWW-Postmark Perl
API for the Postmark mail service
-
Plack-Middleware-PyeLogger Perl
Use Pye as a logger for Plack applications
Database-Related
-
Dancer-Session-MongoDB Perl
MongoDB session backend for Dancer
-
Giddy Perl
Schema-less, versioned media/document database based on Git
-
Plack-Session-Store-MongoDB Perl
MongoDB session store for Plack
-
MongoDBx-Class Perl
Flexible ORM for MongoDB databases
-
MongoDBx-KeyValue Perl
Use MongoDB as if it were a key-value store
-
MorboDB Perl
In-memory database, mostly-compatible clone of MongoDB
Application Utilities
-
Abilities Perl
Simple, hierarchical user authorization for web applications, with optional support for plan-based paid services
-
Brannigan Perl
Comprehensive, flexible input validation and parsing with Perl, targeted at web applications
-
Catalyst-Plugin-Authorization-Abilities Perl
Ability based authorization for Catalyst
-
Entities Perl
User management and authorization for web applications and subscription-based services, based on 'Abilities'
-
Homer Perl
Simple prototype-based object system
-
McBain Perl
Framework for writing portable, auto-validating, self-documenting APIs.
-
McBain-WithPSGI Perl
Turns McBain into a RESTful PSGI web application framework
-
McBain-WithGearmanXS Perl
Turns a McBain API into a Gearman worker
-
McBain-WithWebSocket Perl
Turns a McBain API into a WebSocket server
-
McBain-WithZeroMQ Perl
Turns a McBain API into a ZeroMQ REP worker
-
Locale-Wolowitz Perl
Dead simple localization for web apps with JSON
-
MQUL Perl
General purpose, MongoDB-style query and update language
-
Pye Perl
Session-based logging platform on top of SQL/NoSQL databases
-
Pye-MongoDB Perl
MongoDB backend for Pye
-
Pye-SQL Perl
MySQL/PostgreSQL/SQLite backend for Pye
-
SandyRivers JavaScript
Self-hosted, NodeJS feed reader with absolutely no features
Other
-
Text-SpanningTable Perl
ASCII tables with support for column spanning
-
Lingua-EN-Titlecase-Simple Perl
Automatically title-case headlines and title-texts