(Italiano) Vulnerabilità sulla rinegoziazione TLS
Sorry, this entry is only available in Italiano.
Sorry, this entry is only available in Italiano.
We are hiring a Java developer. Italian language is a must, if you are interested see the italian version of this post.
We are hiring a Java developer. Italian language is a must, if you are interested see the italian version of this post.
In the busy days leading up to our first big release of 2009, we have been too busy to write about some other major news: two new people joined our team in the past weeks.
Diego is just about to complete his Master’s Degree in Engineering at the prestigious university of Pisa; he has been using Linux and FreeBSD for several years now, and he’s joining us as a junior system administrator. If you have a managed hosting, housing or professional services contract with us, you’ll be talking to him as a first line of support. That’s a lot for someone fresh out of college, but he has been stepping up quickly, so you can expect great stuff from him–we know we do (no pressure, Diego
).
Margherita is also a student getting close to the finishing line, but she’s getting a Master in Communication Design at the well-known Politecnico di Milano. She is currently an intern in our software development team, working side by side with us on our next project (still under wraps, but not for long!) to turn our ugly webapp ducklings into something beautiful and user friendly. But that’s just the beginning, and I doubt she’ll get bored anytime soon, either.
As you know if you’ve been following us, at ZephirWorks we are very sensitive to social and environmental topics. We have been looking at how to make the web more cost- and energy-efficient, and today we are announcing our contribution to counter the world economical crisis, as well as fighting global warming.
The internet wasn’t born with HTTP; before that, a much more efficient and cheaper protocol existed, called gopher. When HTTP and the world wide web took over, we sadly saw a sad growth in the number of web sites, most of which of awfully bad taste. The success of flash made things even worse: suffering through 40-second intros with horrible background music when you are just looking for some information makes no sense at all.
To counter that, ZephirWorks labs have been working on a Ruby framework for developing gopher sites, as well as a device that can serve them while consuming just 2 watts.
We like to set a good example, so starting now our blog will be available via gopher; you can access it with Firefox at gopher://gopher.zephirworks.com. We’ll be working with other vendors to help them support gopher in their browsers. This is just one way in which this move will create plenty of new jobs, too.
Join us in this revolution; the web will soon be over!
Long live Gopher!
UPDATED: in an interesting coincidence, OmniWeb 5.9.2 has come out today, adding support for gopher.
Also, for your convenience, we are now linked on Floodgap; Veronica, the gopher indexing engine, will soon be indexing our content.
Pseudocode from an open source client library:
static int send_command_final(struct iax_session *i, ...) {
r = schedule_transmit_at_a_later_time(i, ...);
if (r >=0) {
free(i);
}
}
In case you’re confused, let me assure you, there is no magic going on in the schedule_transmit_at_a_later_time function: no cloning, no reference counting, nothing like that. This code just hopes the freed structure will still be valid if/when the transmission does occur. Just add a memset before the free and see it explode in technicolor. WTF?
We are hiring a junior system administrator. Italian language is a must, if you are interested see the italian version of this post.
Among the many characteristics of Ruby on Rails that help increase productivity there two that in my opinion are fundamental: the emphasis on tests, and the readability of code, which makes it self-documenting.
Developers often dislike writing tests, and if the language or the platform make it difficult, they try to avoid it (or cheat, writing useless or bad tests that will come back to haunt them later; a lot could be written about this topic) until they reach enlightenment, understanding that the time spent upfront will more than pay for itself when tests will help quickly find issues that would have taken hours to debug.
Luckily Rails makes writing tests almost a pleasure, thanks to the many “shortcuts” that make it particularly expressive. Rails inherits the Ruby legacy, with its emphasis on ”Domain-Specific Languages“; in other words, the language is so powerful and natural that features you implement become extensions of the language.
Testing is usually something that only matters to developers; customers expects a perfect bugfree product, and they don’t want to know anything about how that goal is reached (never mind the time and cost involved in it). The point is that quality starts before the first line of code is written, and if client and developer don’t understand each other from the start, the project will only generate frustration and be destined to be unsuccessful.
Agile methodologies offer a solution: customer and team interact using “stories” written by the customer in natural language (in english, or in their own native language) with minimal formality but sufficient clarity to be read by developers and immediately implemented.
Cucumber is a tool that enables feature documentation in plain text, as well as generate tests from them. This post is an introduction to cucumber, but unfortunately it’s only in italian, since there are already excellent introductions to Cucumber in english.
The few months since we launched ZephirWorks flew by, filled with many interesting projects but also satisfactions and great feedback from the first customers, and the atmosphere in the company is electrifying, as in any good startup. On the other hand, we have been working like crazy, probably too much.
We have already mentioned in previous posts how important it is to us to deliver quality, respect project deadlines, but also work in a fashion that is sustainable over the long term; that’s why we have decided to start growing the team in advance of our initial plans.
We are looking for at least one full-time person on a project contract, to help us with the most important projects; after the initial period, we will probably offer him/her a permanent position.
Unfortunately, right now we are looking for someone who speaks italian; if you are interested and can read italian, see the italian version of this post.
When we started talking about how we wanted to build our company and what we wanted to offer, we realized there were many things we thought we could do well; and while we want our values to be reflected in everything we do, some of the day to day goals were conflicting. For instance, we are passionate about Ruby on Rails and as developers we would be rather happy to use it exclusively; but at the same time, we realize there are some products that are interesting for our customers, even though they are developed in other languages.
Our answer to this dilemma is to structure the company into separate business units that will act in an independent yet coordinated way, bringing their respective expertise and peculiarities together into a complete service offering. Each division is free to make their own technological choices, without preclusions or a-priori choices.
ZephirWorks is the main unit; it doesn’t sell products, it offers complete solutions that integrate services from other company units but also products and services from other companies, as long as they guarantee reliability, simplicity and flexibility in solving real problems. Most of the time this means Open Source products, of course, but we also offer some closed source solutions in areas where we think that’s the best option for our customers.
ZephirWorks is made of people who are capable of managing projects of any complexity. With the sensibility that comes from an extensive experience as consultants, they work side by side with the customer, speaking his language and helping him at each step navigate the complexity of technology and make conscious decisions.
Some examples? we have been working with a VoIP provider to help them roll out their next generation offering; helping public libraries come up with new service models and offer internet access from their computers; supporting smaller IT startups to get their business up and running by providing them with technology that sets them apart from their competition.