My name is Omer Katz
Welcome to my personal website
I'm a 25 years old software engineer & political activist. You can read more about me here.
This website contains a blog about software development, DevOps, software configuration management, application lifecycle management. Feel welcome to read it, subscribe, comment and share.
Me drinking a beer on the banks of the Zambezi river.
Featured Posts
In case you're not familiar with PyPy yet, it's a Python interpreter with JIT compiler.
PyPy has many advantages. It can run Python code faster then any existing interpreter, has a lower memory footprint then CPython, it allows you to choose the right level of language abstraction for your code depending on how fast you need it to be since it supports running Python, RPython and allows you to provide C and C++ extensions and It's 99% compatible with CPython.
One of the major differences and what makes PyPy adoption a non-trivial process is the why PyPy interfaces with CPython extensions. If you're interfacing with C code you need to ensure that you use the right bindings.
CPython extensions use Python's C API which PyPy does not have. PyPy can run some CPython extensions using cpyext but those extensions will run slower on PyPy due to the need to emulate reference counting. That also means that Cython generated extensions will be slower.
PyPy on the other hand has support for the not very commonly used ctypes and CFFI which can be run on both interpreters. CFFI runs much faster on PyPy than ctypes so if you're targeting PyPy it's better to use it. I was told that CFFI has been known to be a bit slower than C extensions on CPython because it does not access the C API directly but it wraps it. I could not find evidence for that claim although it makes sense.
If you're interfacing with C++ code, there has been a discussion to port boost::python to PyPy but I don't think it has been done yet.
PyPy provides cppyy which is written in CPython and thus able to JIT out most of the binding related code. cppyy has multiple backends it can use. In this post I'm going to cover Reflex since it's the default and it is currently the most stable backend.
In this post I'm going to demonstrate how to run Protobuf 2.5.1 on PyPy. Protobuf's compiler generates Python code which relies on a CPython extension in order to interface with the Protobuf implementation and is I mentioned before this is not going to be as fast as it should be for PyPy. Google provides a pure python implementation of Protobuf in version 3.0 which is not yet release and breaks compatibility in some aspects from Protobuf 2.x.
This post describes how to implement Git hooks using Python. If you have some commit hooks in Python or any other languages please do share them in the comments as Gists or repositories.
If you've ever developed an open source project on Github you probably have heard about coveralls.io already but you, like me until recently are probably not measuring code coverage accurately enough if you have multiple testsuites (e.g.. unit, functional, integration).
How did I reach this conclusion? Keep reading.
As of Setuptools 0.7 Distribute is now merged back into Setuptools.
This means that you should remove Distribute if you have it installed already and you probably do.
You can find the instructions to do so here but I have encountered some problems during the process so I'll share my solution here.I'm learning how to use Salt Stack so I started a new project that provisions a baseline Vagrant Box for Python development.
I wanted to check that my vagrant box can be provisioned & packaged every single time for every single change I committed into the repository so I created a .travis.yml configuration file in order to do so.
That attempt has failed unfortunately. Read this post to understand why.
Social Feeds
-
RT @ori_goldberg: 2/ זוכרים שאמרתם שהכיבוש פחות דחוף מההפיכה? הכיבוש הוא הדלק עליו נעה ההפיכה. הדה-הומניזציה של הפלסטינים, בתוך ישראל… https://t.co/y3Jun4rxdW
-
RT @ori_goldberg: 1/ ההסלמה הישראלית המכוונת באלאקסא משקפת את המשותף להופכים ולמוחים- חייהם ובטחונם של פלסטינים אזרחי ישראל ונתיניה ב… https://t.co/HxuUG4g9aj
-
RT @AidaTuma: 1/ כבר שבועות ממשלת הימין פועלת להדליק את האזור: התנהלות תוקפנית בצפון, הפצצות וחדירה לטריטוריה של המדינות השכנות.… https://t.co/b9O6mNcQaf
-
RT @MeravMichaeli: תפקידה של האופוזיציה הוא *לא* לתת גיבוי אוטומטי לממשלה שחבריה מסתובבים עם חבית בנזין ומנסים להדליק את השטח. להפך. ת… https://t.co/OUYP5nPZCw
-
RT @grapesofwhat: אנשים שמעולם לא הביאו את עצמם להפגנות בשייח׳ ג׳ראח, פעילות במסאפר יטא, ליווי רועים בבקעה, מאהל מחאה בשרונה, הגוש נג… https://t.co/IgtBTNtLBW
Foursquare
-
Agadir (אגאדיר)חיפה, חיפה
-
Тель-Авивישראל
-
Florentin 10 (פלורנטין 10)תל אביב-יפו, תל אביב
-
La Repubblica di Ronimottiתל אביב-יפו, תל אביב
-
La Repubblica di Ronimottiתל אביב-יפו, תל אביב
-
Humus Nachmani (חומוס נחמני)תל אביב-יפו, תל אביב
-
Bazili.com (בזיליקום)תל אביב-יפו, תל אביב
-
Café Noir (קפה נואר)תל אביב-יפו, תל אביב
-
Pure gymתל אביב-יפו, תל אביב
-
SatchmoTel Aviv District, ישראל
-
Casbah di Florentineתל אביב-יפו, תל אביב
-
מרינדוIsrael
-
Pure gymתל אביב-יפו, תל אביב
-
Café Noir (קפה נואר)תל אביב-יפו, תל אביב
-
Pure gymתל אביב-יפו, תל אביב
-
Humus Nachmani (חומוס נחמני)תל אביב-יפו, תל אביב
-
Café Noir (קפה נואר)תל אביב-יפו, תל אביב
-
Café Noir (קפה נואר)תל אביב-יפו, תל אביב