Yes, we can! English website available
Well, we finally realized what has been long overdue: Our website is available in english!
With english being the primary language in your browser, you should automatically be redirected to the english version, if not there is a language switcher.
There is not really much to say except: Sorry it took us so long. After providing our software in english along with english manuals, blog posts, and a growing number of international customers and partners it was necessary to set this important step towards lowering the barrier for English-speaking people to get in touch with bytemine.
If you enjoy our english website, you likely are looking forward to our shop being available in english soon as well. We’re working on this and as soon as CeBIT has passed by can devote more time to it.
bytemine started into the conference season 2010
Last saturday bytemine started into the conference season 2010. Well, not quite. We’ve started into the conference season as an exhibitor. The visiting conference schedule was begun by Bernd attending Fosdem 2010.
At the 4. Linux-Informationstag Oldenburg (“4th Linux-Informationday”) we’ve been one of the main sponsors, while this is a local and regional event for us it is like a homecoming game, as it is the only linux event in Oldenburg.
The day itself was quite nice. It is always good to hear how much visitors like the way we represent the company and our products.
Felix gave a presentation on OpenVPN and also represented the german OpenVPN Association. The slides from his (my) talk can be found on our website.
By the way, we do sell the ‘bytewear’ visible on the photo. We have hoodies, polos, various shirts and even bathrobes. This as a small note until we finally get around to add them to our online shop.
Next stop on our conference schedule: CeBIT 2010.
Soekris and Alix Kits
Ever since we started selling Soekris systems, people would forget to order a power supply with it. To the point at which we now always ask whether or not a power supply is needed. I really wonder why it took until today, that we actually start offering them bundled. So, there is now a bundle with a Soekris 5501-70 in the desktop case, one 2.0A power supply as well as a SanDisk 2GB compact flash.
We made the same style bundle for the PC Engines Alix 2d13 system as well.
You can find all the bundles in the bundle section of our shop.
I did wonder previously whether this would also make sense for the 19” variant. Any opinions?
[DE] bytemine auf dem 4. Linux-Informationstag Oldenburg
Am 13. Februar 2010 findet in Oldenburg wieder der Linux-Informationstag statt. Die Veranstaltung findet wie die letzten Male in den Räumen des KDO (Zweckverband Kommunale Datenverarbeitung Oldenburg) statt. Eine Anfahrtsbeschreibung findet sich hier.
Als Unternehmen aus Oldenburg begrüßen wir das Engagement der Organisatoren und unterstützen die Veranstaltung so weit wie möglich.
bytemine wird auf dem 4. Linux-Informationstag mit einem Stand sowie einem Vortrag präsent sein. An unserem Stand werden wir unter anderem die kommende Version des bytemine manager präsentieren, sowie auch unsere bytemine openbsd appliance ausstellen. Einen Prototyp der kommenden Erweiterung der Hardware-Plattform der bytemine openbsd appliance werden wir ebenfalls vorstellen.
Seit heute ist auch das Vortragsprogramm veröffentlicht. Ich werde einen Vortrag zum Thema OpenVPN halten. Inhaltlich liegt der Schwerpunkt hierbei auf Einsatzszenarien abseits von “08/15” Setups. So behandelt der Vortrag unter anderem auch die Authentifizierung gegen LDAP.
Wie die letzten Jahre sind wir auch wieder finanzieller Unterstützer der Veranstaltung, zusätzlich freuen wir uns darüber, dass wir den Linux-Informationstag dieses Jahr auch mit dem Hosting der Webseite unterstützen können.
bytemine is starting into 2010
An exciting and interesting year has started for us at bytemine. There are many items on our agenda for this year, especially regarding our product development. Not only there is a list of products we will be releasing over the year, but also we’re going new ways on how we develope these. Bernd Ahlers will hopefully elaborate in another blogpost on how we introduce behaviour driven as well as test driven development. (BDD and TDD).
As a new years present to our customers, we’ve released the 1.4 version of our
bytemine openbsd appliance software, bringing once again lots of new features. There is a
Changelog available. Among the
features, is also support for the uthum(4) USB temperature sensors, we’ve backported the driver
from OpenBSD-current.
bytemine openbsd appliance - version: 1.4.5 [1209] hanah $ sysctl | grep uthum hw.sensors.uthum1.temp0=28.36 degC (temp) hw.sensors.uthum1.percent0=11.50% (humidity)
Right after releasing 1.4 we’ve had some other things to keep us busy. Since the year also started with moving into new rooms. In order to have more space we’ve moved into the new building of the technology center, where we have our office since 2005.
Here are a couple of pictures of two of the new rooms. The developers office, with one of our mascots already up (while the rest is still pretty rough :)
For the first time, we have a meeting room on our own. Well, it is not supposed to be a solemnly meeting room, but furthermore space where one can relax, read and code in a relaxed environment.
Pictures of the other office will follow, once everything is in place.
The conference schedule is about to start with the 4. Linux-Informationstag which will happen in Oldenburg on the 13th of February. Next item on the conference schedule is then our first appearance at the world’s largest IT fair, CeBIT 2010. For CeBIT we have some nice new product announcements up our sleeve, so you should definitly stop by our booth there (Hall 6). Right after CeBIT, there will be the Chemnitzer Linuxtage, where we will have a booth, just like last year.
Of course a new year has also started in regards to the services and hosted solutions we provide. We’ve started to provide the groupware Zarafa as a hosted solution. Each setup gets a Xen (and possibly KVM) instance with the zarafa version best suited for their needs. We’re also looking into adding more types of databases to our hosting environment, considering at least CouchDB.
This only being a subset of what is planned for 2010, you can see this will be an interesting year!
[DE] bytemine hinter den Kulissen: Miniaturwunderland und "Wetten dass" Aussenwette
Die Aussenwette der Fernsehsendung “Wetten dass?” fand letzte Woche bei einem unserer Kunden, dem Miniatur Wunderland in Hamburg statt. Aufgrund der hohen Einschaltquote bei dieser Sendung wurden im Vorfeld vom Miniatur Wunderland diverse Vorbereitungen für den erwarteten Besucheransturm auf die Webseite getroffen.
Die Webseite vom Miniatur Wunderland basiert auf dem Content-Management System typo3 und läuft auf einem Cluster von Webservern mit vorgeschaltetem Loadbalancer und separaten Datenbankservern. Das ganze wird bei n@work in Hamburg gehostet. Im Rahmen unser Zusammenarbeit mit dem Miniatur Wunderland beraten wir von bytemine (in Bezug auf die Webpräsenz) unter anderem wenn es um Details der Realisierung, Skalierung und Sicherheit des Setups, sowie um weiterführende Maßnahmen geht.
Im Vorfeld der Aussenwette wurde von n@work ein Reverse-Proxy, varnish, vor das Setup geschaltet. Zusätzlich wurde der Datenbank-basierte Counter (unten links auf der Einstiegsseite) auf eine XEN-Instanz bei bytemine ausgelagert. Bisher war immer die maximale Anzahl an möglichen Verbindungen zu den Backend-Datenbankservern der Flaschenhals. Um möglichst viele aktive Verbindungen haben zu können, haben wir zusätzlich an verschiedenen Parametern im MySQL Server gedreht um inaktive Verbindungen schneller zu trennen.
wait_timeout = 60 connect_timeout = 10 interactive_timeout = 100
Thorsten Veith, massgeblich an der Typo3-Umsetzung der Webseite beteiligt, hat auf seinem Blog auch eine Nachlese zur Aussenwette
Update: snakeyaml deals with custom Java objects
Andrey, the owner of snakeyaml, has written a reply to our latest blogpost :
In record time he patched snakeyaml to be compliant with our example of a Ruby-generated yaml file. By defining some conversion directives like
addTypeDescription(new TypeDescription(Sub1.class, "!ruby/object:Test::Module::Sub1"));to the parser and
addClassTag(Sub1.class, "!ruby/object:Test::Module::Sub1");to the dumping emitter snakeyaml seems to be able to do the Ruby->Java transfer, and vice versa.
Thanks alot to Andrey, a great job in very short time!
yaml in Java and Ruby: Welcome yamlbeans!
During our hackathon at the North Sea Bernd and I were thinking about how to share objects between Java and Ruby. We had to decide between JSON and YAML, both very powerful, slim and well supported in both languages.
YAML has won the award, because there are no major differences between YAML and JSON, and Ruby offers excellent support for YAML.
So, the Ruby side was done, now we came to the Java part: Reading about Java and YAML you will always find the following libraries:
- JvYaml
- JYaml
- snakeyaml
To make a long story short: None of them work out of the box for our purposes, which is importing a Ruby generated YAML into JAVA, generating the Java beans and write back these beans as YAML our Ruby app can parse. Not a big deal, you might think.
The YAML file our Ruby code produces looks quite similar to this one:
--- !ruby/object:Test::Module::Object
sub1: !ruby/object:Test::Module::Sub1
subsub1s:
- !ruby/object:Test::Module::Sub1::SubSub1
att1: []
att2: true
att3: 11111
att5:
att1: []
att2: 0
att3: []
sub2: !ruby/object:Test::Module::Sub2
att1: MyString
att2:
- entry1
att3: 12345
subsub2: !ruby/object:Test::Module::Sub2::SubSub2
att1: true
att2: true
JvYaml was the first we tried: The code to generate the beans out of the YAML should be easy like that:
Module module = (Module)YAML.load(new FileReader("example.yml"));
Result: java.lang.ClassCastException: org.jvyaml.PrivateType cannot be cast to net.bytemine.jvyaml.ModuleTo come to its defense: JvYaml is no longer supported, last version is from september 2006, and it is not documented :(
This was leading us to JYaml, also with a very slim api:
Module module = Yaml.loadType(new File("example.yml"), Module.class);
This produces an instance of the Module class, but none of its attributes or subclasses where instanciated. Also gambling around
with the jyaml.yml config file did not work any better. Result: JYaml is better maintained (last release in august 2007 ;) ), and much better documented than JvYaml. But still not working for us.
snakeyaml:
Config config = (Config)new Yaml().load(new FileInputStream(new File("example.yml"))); produces the following error:
Can't construct a java object for !ruby/object:Test::Module::Object; exception=Class not found: st::Module::ObjectBecause snakeyaml seems to have a syntactical problem with this YAML document we did no further investigations on snakeyaml. But: It is very well documented, at just yesterday somebody was committing something to the project. Perhaps snakeyaml will become more interesting by the time.
The solution:
Late at night I stumbled over a different project: yamlbeans. This library seemes to be highly flexible in its configuration and is documented in an excellent manor. So I gave it a try, and after some reading and testing I finally was able to extract our whole class hierarchy from the YAML. Even better: The exported YAML looked quite like the original. After patching three lines of code into the library we finally got the solution on how to exchange objects between both worlds.
This patch has been already applied to the newest version 1.0 by Nate, who is the maintainer and author of yamlbeans.
And finally here is the code doing the job for us:
YamlReader reader = new YamlReader(new FileReader("example.yml"));
reader.getConfig().setClassTag("ruby/object:Test::Module::Object", Module.class);
reader.getConfig().setClassTag("ruby/object:Test::Module::Sub1", Sub1.class);
...
Module module = reader.read(Module.class);
YamlWriter writer = new YamlWriter(new FileWriter("example-out.yml"));
// writes also false values
writer.getConfig().writeConfig.setWriteDefaultValues(true);
// writes root tag with prefix '--- '
writer.getConfig().writeConfig.setExplicitFirstDocument(true);
// writes out every unknown classname
writer.getConfig().writeConfig.setAlwaysWriteClassname(true);
writer.getConfig().setClassTag("ruby/object:Test::Module::Object", Module.class);
...
writer.write(module);
writer.close();
Thanks again to Nate of the yamlbeans project, he did an excellent job!
next evolutionary step for the openvpn administration - bytemine manager 1.2
During our bytemine hackathon at the north sea, I gave a talk on the history of the company, the way bytemine has developed over the years and our current development culture. During this presentation we came to the conclusion that we follow the ‘evolution, not revolution’ paradigm, just like OpenBSD does.
This is also the paradigm of this bytemine manager release. Of course the bytemine manager had its fair-share of focus during the hackathon, after all it is, what we think the future in OpenVPN administration. But all the ideas we had and also the outcome of a user-interface-usability session, will not become alive over night.
The bytemine manager 1.2 brings a lot of fixes and smaller features, that have been added in the last five weeks to the codebase of the manager. Among other things the following items can be found in the ChangeLog:
- Many smaller UI fixes, the tables now grow upon resizing the main window, etc.
- CN and usernames do not have to be the same, eg. decoupled.
- Each controlcenter tab can now send custom commands to the OpenVPN server
- Updated bouncycastle provider jar (3rd party crypto library)
- External db can be passed on the commandline
- Extract the username out of X509 subject when revoking a certificate
and many more changes.
Of course we’ve also worked on improving the documentation. The manual for the bytemine manager is now also available in english. Direct links to the manuals: english manual, german manual.
The evaluation version of the bytemine manager can be downloaded for free from our eval version.
Daniel is actively working on a much improved user-interface, so stay tuned for further updates to the bytemine manager.
Alongside with the new bytemine manager, we’ve setup a new mailinglist. The mailinglist products-discuss is meant as a direct feedback channel for you. Not only for feedback, but also for technical (and philosophical) discussions around and about our products.
Enjoy!
Developing a development culture - bytemine hackathon 2009
While waiting for the second car to arrive here at the North Sea, I want to give a short elaboration on what’s going on the next five days at bytemine.
Back in january we were on a visit at the North Sea for a kick-off-2009 bytemine weekend. Today two cars are heading again towards the North Sea.
This time, not for conceptional and strategic meeting, but for spending five days of hacking and development in a nice atmosphere. We’ve rented a house in St. Peter-Ording, where we will be with, at peak-times six people, working on features for the bytemine openbsd appliance, bytemine manager as well as on a product we will be announcing early next year.
Of course, there are going to be many more smaller and larger things going to happen in these days, which can be summarized in – what I would call – “developing a development culture”. We already have one at bytemine, but as we grow, these aspects do need some constant attention.
If you want to follow the things happening , lookout on twitter, we use the hashtag #btm-hackathon09.


