Meanwhile, back in Istanbul …

istanbul-skyline-2014-21

I’ve been in Istanbul for the last week or so. It’s been about a human gestation period since I was last here, and it’s unmistakable that the trend of building more, higher, and brighter has continued unabated.

Pastiche is an approach that’s not uncommon to new-money endeavors, and it’s no surprise that it’s common here. The biggest source of inspiration for the new designs seems to be iconic government projects, large-scale residential structures, and skyscrapers from Russia, Germany, the Netherlands, and other European countries whose cities are built on Cartestian street plans.

istanbul-buildings-2014-08The biggest problem with this is that almost nowhere in Istanbul are streets Cartesian. Nor are they radial. Rather, the streets and highways of Istanbul were determined, as one historian put it, by topography. Which is another way of saying that Istanbul’s roads developed in a very ad-hoc fashion. Some think it lends the city some of its charm.

What this means for the increasingly dense structure of new and tall buildings—already a mishmash of pastiche—is that each has a different orientation. You don’t get rows or arcs of buildings; rather you get a hodgepodge of orientations that the hodgepodge of styles simply aren’t suited to. Nothing relates to anything. Little islands of egocentricity and local optimization. An underscoring of the chaos of life in Istanbul.

Whether this will end up increasing the city’s charm remains to be seen.

It develops …

A2

Picking up from earlier, what we’re looking at here is an audio DAC reconstruction filter built around a prototype discrete opamp-like differential gain cell I’ve had in the works for quite a while. I finally chased out the last engineering details and have been listening to the final setup for about a month. I am still astonished at how good it sounds.

I designed the gain cell from the ground-up as a dedicated high-performance audio device. It uses some novel topological and other features that I’ll probably go into in a future post. For now all I want to say that the thing is wicked fast for a discrete device and has been rock-solid stable.

But why bother? Aren’t there already tons of reasonably decent, some even cheap, audio IC opamps out there? Yes, there are. But I’ve never been totally happy with any of them. Some have too much LF bloat, some are too strident—none to my ears do everything right (which is to say, do as little as possible apart from making the signal bigger and stronger).

Designing a discrete device let me optimize the gain structure specifically for audio, minimize and more effectively manage the number of parasitic interactions throughout, thermally couple and, more importantly, decouple elements as necessary, and a few other things. It started as a “Gee, let’s see…” exercise, and I have been rather shocked by the results.

Now I’m contemplating where to take things next. I’ve designed a couple small-footprint packages for the gain cell. I’m implementing a few other ideas with it too. I suspect this surprising little circuit will see some commercial application soon.

Right then. Back to listening. 😀

Acceptance testing and BDD with bash

berdea2
I’m working on a project that has some fairly weird acceptance criteria. I’d really like to automate the acceptance testing, but none of the tools I know of will cover all the requirements without a good amount of hoop dancing. So I wrote one … in bash. Truns out a few others have gone down this path as well.

While it’s currently quite limited and coarse, it might form the basis for a more comprehensive framework. Check the repo if you’re curious and/or interested.

Gitorious and GitLab

gitorious-logo gitlab-logo

My last post talked about using alternatives to GitHub in order to (in no particular order):

  1. Encourage diversity in project hosting in light of GitHub’s (not undeserved) domination in the area. This is all the more important because the GitHub stack is completely proprietary.
  2. Patronize vendors who more completely embody the spirit of FOSS (i.e., those who make significant parts of their platform available as FOSS).

I’ve done a bit more work with two Saas projects that can be used to achieve both goals above:  Gitorious and GitLab Cloud. My impressions follow.

Gitorious

gitorious-logoGitorious has been around a long time. I remember considering their hosting and software about the time when Google Code was still really hot (i.e., IIRC, before GitHub was a “thing”; Wikipedia says Gitorious launched in January of 2008 and GitHub in April of the same year). Many well-known and important FOSS projects are hosted on Gitorious.

If Gitorious (the service and the software) were the only option available today, people would be praising it to the nines. It offers repository hosting with decent code browsing, project logging/graphing, project wikis, and an interesting feature that lets you POST stuff to an arbitrary URL whenever a commit is made. The interface is pleasant and generally clear. The software that runs the service is FOSS and easily downloadable. Bitnami even packages a bundle that makes setting up your own service stupid easy.

However, there are a couple caveats. First, compared to other hosting options, Gitorious is a bit short on features. Notably absent are issue tracking and continuous integration support. While there are third-party tools that will do these for you, one of the nice things about GitHub and BitBucket (and, if we limit ourselves to issue tracking only, Google Code and Sourceforge) is that these are part of the service—meaning virtually no setup and good integration with the codebase. Some might actually prefer having orthogonal tools for issue tracking and CI, so this won’t be an issue for those.

The other thing you need to be aware of is that Gitorious organizes repositories based on projects rather than on users. Projects can have multiple repositories in them, but all the repositories will share the the same wiki (i.e., there is no per-repo wiki). Also, the owner of the repo will not be in the URL of the project. In other words, Gitorious isn’t really designed to support a “Here’s a collection of my repos,” Web presence. It’s setup is great if you are deploying a server for internal projects, but it’s not really optimal for being a “social coder.”

GitLab

gitlab-logoGitLab, or more relevantly, GitLab Cloud, is new to me—I discovered it only a few days ago. Indeed, it looks like it’s new to everyone, with late 2011 being the date of the first entry on the company blog.

It seems to me that GitLab is trying to be a feature-compatible alternative to GitHub. Even the names are similar. A GitLab account gets you repository hosting, per-repo wikis, issue tracking, and code review. GitLab also makes a FOSS Continuous Integration product—though I have yet to explore how it integrates with GitLab Cloud. The GitLab Community Edition is FOSS and easily downloaded.

My biggest concern with GitLab is that since it’s relatively new, it might go away. The fact that it’s FOSS hugely mitigates this concern. If Facebook buys GitHub and shutters it, your workflow, community, everything is screwed. But if GitLab shutters, you only need to grab the last release of the software stack, set up your own server, transfer your data to the new server, and update your URLs. As was the case with Gitorious, there is a Bitnami bundle to make setting up your own service brain-dead simple should you need/want to do this. (There’s also one for their CI project). In spite of this, it would be a bit of a drag of they disappeared.

My other concern is that I don’t know how much GitLab’s development will focus on introducing new features not available on GitHub (or elsewhere) and how much it will focus on simply maintaining feature-parity with GitHub. I’d be feeling a bit warmer and fuzzier if they were more aggressively inventing solutions rather than reimplementing GitHub’s offerings.

All said, I think I will focus on working with GitLab to see if there are any unforeseen gremlins. If not, GitLab may become the new primary host for my FOSS work.