﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>https://ayende.com/blog/</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Production Test Run: Too much of a good thing isn’t so good for you</title><description>&lt;p&gt;&lt;a href="https://ayende.com/blog/Images/Open-Live-Writer/4b6620a987d2_1331E/image_2.png"&gt;&lt;img width="206" height="244" title="image" align="right" style="border: 0px currentcolor; border-image: none; float: right; display: inline; background-image: none;" alt="image" src="https://ayende.com/blog/Images/Open-Live-Writer/4b6620a987d2_1331E/image_thumb.png" border="0"&gt;&lt;/a&gt;Not all of our &lt;a href="https://ayende.com/blog/181345-C/production-test-run-the-worst-is-yet-to-come?key=e182a5a6126a420fb36b7b3e8b9b5b03"&gt;testing happened in a production settings&lt;/a&gt;. One of our test clusters was simply running a pretty simple loop of writes, reads and queries on all the nodes in the cluster while intentionally destabilizing the system.&lt;/p&gt;&lt;p&gt;After about a week of this we learned that this worked, there were no memory leaks or increased resource usage and also that the size of the data on disk was about three orders of magnitude too much. &lt;/p&gt;&lt;p&gt;Investigating this we discovered that the test process introduced conflicts because it wrote the same set of documents to each of the nodes, repeatedly. We are resolving this automatically but are also keeping the conflicted copies around so users can figure out what happened to their system. In this particular scenario, we had a &lt;em&gt;lot&lt;/em&gt; of conflicted revisions, and it was hard initially to figure out what took that space. &lt;/p&gt;&lt;p&gt;In our production system, we also discovered that we log too much. One of the interesting feedback items we were looking for in this production test run is to see what kind of information we can get from the logs and make sure that the details there are &lt;em&gt;actionable&lt;/em&gt;. A part of that was to see if we could troubleshoot something simply using the logs, and add missing details if there were stuff that we couldn’t figure out from them.&lt;/p&gt;&lt;p&gt;We also discovered that under load, we would log a &lt;em&gt;lot&lt;/em&gt;. In particular, we had logs detailed every indexed document and replicated item. These are almost never useful, but they generate a &lt;em&gt;lot &lt;/em&gt;of noise when we lowered the log settings. So that went away as well. We are very focused on logs usability, it should be possible to understand what is going on and why without drowning in minutia. &lt;/p&gt;</description><link>https://ayende.com/blog/181346-C/production-test-run-too-much-of-a-good-thing-isnt-so-good-for-you?Key=49995da2-2b62-4ce4-b4d6-0b2113ddd978</link><guid>https://ayende.com/blog/181346-C/production-test-run-too-much-of-a-good-thing-isnt-so-good-for-you?Key=49995da2-2b62-4ce4-b4d6-0b2113ddd978</guid><pubDate>Wed, 17 Jan 2018 10:00:00 GMT</pubDate></item><item><title>The roadmap for 2018</title><description>&lt;p&gt;&lt;a href="https://ayende.com/blog/Images/Open-Live-Writer/The-roadmap-for-2018_1108E/image_2.png"&gt;&lt;img width="433" height="193" title="image" align="right" style="border: 0px currentcolor; border-image: none; float: right; display: inline; background-image: none;" alt="image" src="https://ayende.com/blog/Images/Open-Live-Writer/The-roadmap-for-2018_1108E/image_thumb.png" border="0"&gt;&lt;/a&gt;The year 2018 just rolled by, and now it the time to talk about what we want to do in this year. The release of the 4.0 version is going to be just the start, to be honest. &lt;/p&gt;&lt;p&gt;In no particular order, I want the following things to happen in the near future:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Finishing the book (&lt;a href="https://github.com/ravendb/book"&gt;github.com/ravendb/book&lt;/a&gt;). I currently have more than 300 pages in it, and I’m afraid that I’m only 2/3 of the way, if that. RavenDB has gotten &lt;em&gt;big&lt;/em&gt; and doing justice to everything it does take a lot of time. My wish list here is that I’ll finish writing all the content by the first quarter and have it out (as in, you can have it on your desk) by the second quarter. Note that you can read it right now, and the feedback would be very welcome.&lt;/li&gt;&lt;li&gt;All the client APIs RTM’ed. We currently have clients for .NET, Python, JVM, Go, Ruby and Node.JS. Some of them are already ready for production, some are at RC level and some are still beta quality. We’ll dedicate a some effort and release all of these in the first quarter as well. I think that alongside with being able to run on multiple operating systems, we want to give people the choice of using RavenDB from multiple platforms and having a client for a particular platform is the first step on that road.&lt;/li&gt;&lt;li&gt;Getting (and incorporating) users’ feedback. We have worked closely with several of our customers on the release of 4.0, and we have got people chomping at the bit to just get it out (who wants to say no to being 10 – 50 times faster). But RavenDB 4.0 is a &lt;em&gt;huge&lt;/em&gt; undertaking, and there are going to be things that we missed. The feedback from the RC releases has been invaluable in finding scenarios and conditions that we didn’t consider. I’ve explicitly put aside time to handle that sort of feedback as people are rolling out RavenDB and need to smooth any rough corners that still remain. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are all the near term plans, for the next few months. These mostly deal with actually dealing with the aftermath of a big release, with nothing major planned for the near future because I expect all of us to be dealing with all the other things that you need to do with a big release. &lt;/p&gt;&lt;p&gt;The last year had seen us grow by over 40% in terms of manpower and the flexibility of having some many great people working here which can push the product in so many directions at once is intoxicating. I have been dealing with a lot of retrospectives recently as we have been completing RavenDB 4.0 and it amazed me just how much was accomplished and how many irons we still have in the fire. So let’s talk about the big plans for 2018, shall we?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional storage types&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In 4.0, we have JSON documents and binary attachments that you can add to a document. One of our goals in 2018 is to add two or three additional options, turning RavenDB from a document database to a true multi paradigm database. In particular, we want to add:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Distributed counters&lt;/li&gt;&lt;li&gt;Time series&lt;/li&gt;&lt;li&gt;Graph operations&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are all going to be living together with documents, so you have have a user’s document with a FitBit and a heartrate time series on that document that updates every 5 seconds. Or you can have a post document in a blog and use a counter to track how many likes it has gotten. And I don’t believe that I need to explain about graph operations. We want to allow you to define connections between documents and query them directly. &lt;/p&gt;&lt;p&gt;The idea here is that we got documents, but they aren’t always the best tool for the job, so we want to offer you the option to do that in a way that is optimized, fast, easy and convenient to use. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Better integration&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We already have done a lot of work around working with additional services and environment, we just need to polish and expose that. This means things like being able to get a PouchDB instance that is running in your browser and have it sync automatically and securely to your RavenDB cluster.&amp;nbsp; Or being able to point RavenDB into an instance of a relational database and have it such all the data, build the document model and save your a lot of work on migrating to a document database.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ever faster&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Performance is addictive, and it has caught us. We are now orders of magnitude faster than ever before. We have actually been scaling &lt;em&gt;down &lt;/em&gt;our production servers intentionally to be able to see if we can find more bottlenecks in the real world, so far we went down CPU by half and memory to one quarter and we are still seeing faster response times and better latencies. That said, we can do better, and we are planning to.&lt;/p&gt;&lt;p&gt;I’m looking forward to are things like Span&amp;lt;T&amp;gt; and Memory&amp;lt;T&amp;gt; which would really reduce overheads in some key scenarios.&amp;nbsp; We are also eagerly awaiting the arrival of SIMD intrinsics in the CoreCLR and already have some code paths that are going to be heavily optimized as a result. Early results show something like 20% – 40% improvement, but we’ll probably be able to get more over time.&amp;nbsp; One of the reasons I’m so excited about the release is that people get to actually use the software and see how much it improved, but also give us feedback on the things that can be made even faster. &lt;/p&gt;&lt;p&gt;Until we have actual people using us in production over a long period of time, it is hard to avoid optimizing in the dark, and that never gives a good ROI.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Everything before was mostly technical things. Features that are upcoming and new things that you get to do with RavenDB. We are also going to invest heavily in getting the word out, showing up at conferences and users’ group. We are also scheduling a lot of workshops around the globe to teach RavenDB 4.0. The first round is &lt;a href="http://workshops.ravendb.net/basic/winter-2018"&gt;already available here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There is also the new community license for RavenDB, allowing you to go to production without needing to purchase a commercial license. This should reduce the barrier for adoption and we hope to see a lot of new users starting to come to RavenDB. We are now free to use, running on multiple operating systems and available in the most commonly used platform. And we are &lt;em&gt;easy &lt;/em&gt;to get right, although it was anything but easy to get there. A good example of that is &lt;a href="https://www.youtube.com/watch?v=K-2iZ_lJVag&amp;amp;t=26s"&gt;the setup video&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All in all, 2017 has been a major year for us, both in term of growth on any parameter we track and the culmination of years of efforts that lead us to the release of RavenDB and seeing the new version take its first steps on the first days of 2018. &lt;/p&gt;&lt;p&gt;Happy new year, everyone.&lt;/p&gt;</description><link>https://ayende.com/blog/181153-A/the-roadmap-for-2018?Key=9ddb7f30-61bf-4f50-b8a3-7875ba6f9ec4</link><guid>https://ayende.com/blog/181153-A/the-roadmap-for-2018?Key=9ddb7f30-61bf-4f50-b8a3-7875ba6f9ec4</guid><pubDate>Mon, 01 Jan 2018 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos is hiring</title><description>&lt;p&gt;It’s that time again, we are looking for more people to work on RavenDB. I’m going to assume that if you are reading this, you know what we do, so I’ll skip telling you how exciting, dynamic and buzzword of the day this position is. I’ll say that we are doing a lot of fun things, one of our guys just finished taking us from 200 req/sec in a particular scenario to 30,000 req/sec, for example &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="https://ayende.com/blog/Images/Open-Live-Writer/Hibernating-Rhinos-is-hiring_C9DA/wlEmoticon-smile_2.png"&gt;.&lt;/p&gt; &lt;p&gt;We are looking for someone who can build system software in C#, with really good understanding of the way computers work, and how to get the best out of them. If you have OSS contributions, that puts you at the head of the line.&lt;/p&gt; &lt;p&gt;Just ping us at &lt;a href="mailto:jobs@ravendb.net"&gt;jobs@ravendb.net&lt;/a&gt; with your CV.&lt;/p&gt; &lt;p&gt;This position is for Hadera, Israel, and is not available for remote work.&lt;/p&gt;</description><link>https://ayende.com/blog/175425/hibernating-rhinos-is-hiring?Key=30c02526-79a4-4412-a074-8c22c5e00ac6</link><guid>https://ayende.com/blog/175425/hibernating-rhinos-is-hiring?Key=30c02526-79a4-4412-a074-8c22c5e00ac6</guid><pubDate>Wed, 14 Sep 2016 08:24:00 GMT</pubDate></item><item><title>Meeting the Joel Test 2.0</title><description>&lt;p&gt;I run into &lt;a href="http://www.steve.codes/blog/2016/7/22/an-updated-joel-test"&gt;this post&lt;/a&gt;, which updates the (by now) venerable Joel Test to our modern age. I remember reading the &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;Joel Test&lt;/a&gt; (as well as pretty much anything by Joel) at the beginning of my career and I’m pretty sure that it influenced the way I choose employers and designed software. Seeing this post, I decided to see how Hibernating Rhinos would rank on this test today. I put both the original and updated version, and my comments are below.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="601" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="327"&gt;&lt;strong&gt;Original&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&lt;strong&gt;Updated&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;1&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you use source control?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;2&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Can you make a build in one step?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Can you build &lt;strong&gt;and deploy &lt;/strong&gt;your software in one step?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;3&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you make daily builds?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Do you build on every commit?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;4&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you have a bug database?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;5&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you fix bugs before writing new code?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;6&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you have an up-to-date schedule?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Do you measure your progress in terms of value delivered?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;7&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you have a spec?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Do you have a runnable spec?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;8&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do programmers have quiet working conditions?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Does your environment foster collaboration?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;9&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you use the best tools money can buy?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;10&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do you have testers?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt; &lt;p&gt;Is testing everyone's responsibility?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;11&lt;/td&gt; &lt;td valign="top" width="327"&gt; &lt;p&gt;Do new candidates write code during their interview?&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="217"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="55"&gt;12&lt;/td&gt; &lt;td valign="top" width="327"&gt;Do you do hallway usability testing?&lt;/td&gt; &lt;td valign="top" width="257"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Source control – &lt;/strong&gt;&lt;a href="http://github.com/ravendb/ravendb"&gt;Yes&lt;/a&gt;, thankfully, I think that the days of &lt;em&gt;anyone &lt;/em&gt;not using source control for anything but a scratch project are behind us. Now the arguments are &lt;em&gt;which &lt;/em&gt;source control.  &lt;li&gt;&lt;strong&gt;Build &amp;amp; deploy in one step&lt;/strong&gt; – Yes, the build process runs on a Team City server, and while it sometimes require some TLC (I’m looking at you , nuget), it pretty much runs without us having to pay much attention to it.  &lt;li&gt;&lt;strong&gt;Build &amp;amp; verify on every commit&lt;/strong&gt; – No. But yes. What we do is have the build server run the full suite on every Pull Request, which is our unit of integration. Commits are far less important, because we break them apart to make them easier to review.  &lt;li&gt;&lt;strong&gt;Bug database – &lt;/strong&gt;&lt;a href="http://issues.hibernatingrhinos.com/"&gt;Yes&lt;/a&gt;, but see also the next topic. We mostly use it for bugs we find, and features / improvements, not so much for customers bugs.  &lt;li&gt;&lt;strong&gt;Do you fix bugs before writing new code – &lt;/strong&gt;No. But yes. The reason this is complex to answer is how you define bugs. A customer issue is typically handled from A to Z on the spot. We have a rotating function of support engineer that handle such scenarios, and they prioritize that over their routine work.  &lt;li&gt;&lt;strong&gt;Do you have a schedule / do you measure progress in term of value – &lt;/strong&gt;We have a &lt;em&gt;rough&lt;/em&gt; schedule, with guidelines about &lt;em&gt;this is hard deadline&lt;/em&gt; and &lt;em&gt;this is a nice deadline&lt;/em&gt;. Hard deadline is about meeting outside commitments, typically. Nice deadlines are about things we would like to do, but we won’t kill ourselves doing them. We do have a sense of what is important and what isn’t. By that I mean is that we have a criteria for “we should be chasing after this” and “this is for when we run out of things to do”.  &lt;li&gt;&lt;strong&gt;Do you have a (runnable) spec?&lt;/strong&gt;&amp;nbsp; - Yes, we have a spec. It isn’t runnable, and I’m not sure what a runnable spec for a database would &lt;em&gt;be&lt;/em&gt;. The spec outline thinks like the data format and how we do data fetches for indexes, architectural considerations and rough guidelines into where we are going. It isn’t detailed to the point of being runnable, and I don’t like the idea very much.  &lt;li&gt;&lt;strong&gt;Developers have quite working conditions / environment encourage collaboration&amp;nbsp; – &lt;/strong&gt;The typical setup we have is a separate office for every two developers. I typically see people move around the offices and collaborate on all sort of stuff. If it bugs the other dev in the room, they usually have headphones to deal with it, but that isn’t happening enough to be a major problem. A common issue for people who leave their workstation unattended and use headphones is that by the time they get back and put the headphones, the music has been changes to something suitably amusing, &lt;a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ"&gt;such as this one&lt;/a&gt;.  &lt;li&gt;&lt;strong&gt;Best tools that money can buy – &lt;/strong&gt;Procurement in Hibernating Rhinos is a process, it involves sending an email with “I need this tool”, and you must include the link to the tool. Then you have to wait anything between 15 minutes to 24 hours (depending on when you asked), and you’ll get the license. I have seen far too many &lt;em&gt;stupid &lt;/em&gt;decisions of “oh, we don’t have a budget for this 200$ tool but we’ve no problem paying the 2000$ that it would cost us in time” to suffer that.  &lt;li&gt;&lt;strong&gt;Testers / everyone is a responsible – &lt;/strong&gt;Yes&lt;strong&gt;. &lt;/strong&gt;Every single dev is writing tests, and every single PR is sent after tests has been run locally, and then on the build server.  &lt;li&gt;&lt;strong&gt;Candidates write code in interview – &lt;/strong&gt;Yes, oh yes they do.  &lt;li&gt;&lt;strong&gt;Hallway usability testing&lt;/strong&gt; – See below, too complex to answer here.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;RavenDB has multiple level of “user interface”. The most obvious one is the RavenDB studio, but the one that we spend the most time on is the external (and internal) APIs. For the API, we have a review process in place to make sure that we are consistent and make sense. Most of the time we are doing things that follow the same design line as before, so there is not much to think about. For big things, we typically also solicit feedback from the community, to make sure that we aren’t looking into with colored glasses. &lt;/p&gt; &lt;p&gt;For our actual user interface, the Studio, we used to just have the other devs look at the new functionality.&amp;nbsp; But that led to a lot of stuff that &lt;em&gt;worked&lt;/em&gt;, but the amount of attention we actually paid to the UI used to be really variable. Some features we would iterate over for multiple weeks, getting them just right (the most common operations, as we see them). But other stuff was just “we need to expose this functionality, let us do this”, which led to almost one to one mapping of the server side concept to the UI, which isn’t always helpful for the users.&lt;/p&gt; &lt;p&gt;We have started with a full UX study of the RavenDB Studio, and we are going to be doing full design analysis on each of our views with an eye to improve it significantly by 4.0.&lt;/p&gt;</description><link>https://ayende.com/blog/175170/meeting-the-joel-test-2-0?Key=dbb3aa95-614e-4d94-83fb-436a5d1b4da4</link><guid>https://ayende.com/blog/175170/meeting-the-joel-test-2-0?Key=dbb3aa95-614e-4d94-83fb-436a5d1b4da4</guid><pubDate>Mon, 05 Sep 2016 09:00:00 GMT</pubDate></item><item><title>Elemar Junior is joining our Latin America RavenDB team</title><description>&lt;p&gt;&lt;p&gt;&lt;a href="https://ayende.com/blog/Images/Windows-Live-Writer/Elemar-Junior-is-joining-our-Latin-Ameri_4CE/elemarjr_5.jpg"&gt;&lt;img title="elemarjr" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="elemarjr" src="https://ayende.com/blog/Images/Windows-Live-Writer/Elemar-Junior-is-joining-our-Latin-Ameri_4CE/elemarjr_thumb_1.jpg" width="215" align="left" height="215"&gt;&lt;/a&gt;Today is a great plus one news day to RavenDB Latin America. Elemar Junior is joining our team as official RavenDB consultant, on January 1st.  &lt;p&gt;Elemar will work helping our customers, writing a lot of code, producing demos, videos and tutorials and in general focus on the getting started process easier as well as faster and smoother process for developers and operations people to get familiar and accustomed to getting the best out of RavenDB.  &lt;p&gt;Elemar is well known for writing and speaking about advanced topics on development, design and software architecture. If you aren’t familiar with him, feel free to check &lt;a href="http://elemarjr.net/"&gt;his blog&lt;/a&gt; (pt-br only), or &lt;a href="http://linkedin.com/in/elemarjr"&gt;linkedin &lt;/a&gt;but the short gist of it is that he started to write computer code when he was nine years old and still love it. He has over seventeen years of professional experience developing software (used in over thirty countries) for manufacturing furniture and to design and planning of residential and commercial spaces.  &lt;p&gt;With a strong focus on the Microsoft ecosystem, he has been awarded as Microsoft MVP since 2011. Elemar is the author of &lt;a href="https://github.com/FluentIL/FluentIL"&gt;FluentIL&lt;/a&gt;, an emitting library for .NET platform, and leading figure of &lt;a href="https://github.com/code-cracker/code-cracker"&gt;CodeCracker&lt;/a&gt;, a popular analyzer library for C# and VB that uses Roslyn to produce refactoring, code analysis, and other niceties.  &lt;p&gt;Elemar can be reached via &lt;a href="mailto:elemarjr@ravendb.net"&gt;elemarjr@ravendb.net&lt;/a&gt; and is currently looking for someone that would Photoshop this &lt;a href="https://media.giphy.com/media/3o85xrALI3ALNU88Fi/giphy.gif"&gt;image with a cat&lt;/a&gt; or ask him tough questions about RavenDB.&lt;/p&gt; &lt;p&gt;On a more serious note, this represent a bigger focus on having dedicated people to handle just working with customers, providing guidance and support and writing tutorials, sample applications and in general just making everything that much easier.&lt;/p&gt;&lt;/p&gt;
</description><link>https://ayende.com/blog/172611/elemar-junior-is-joining-our-latin-america-ravendb-team?Key=9162b60d-99b4-4cf0-8c2b-3628cf9f8c5b</link><guid>https://ayende.com/blog/172611/elemar-junior-is-joining-our-latin-america-ravendb-team?Key=9162b60d-99b4-4cf0-8c2b-3628cf9f8c5b</guid><pubDate>Fri, 01 Jan 2016 17:00:00 GMT</pubDate></item><item><title>We are hiring</title><description>&lt;p&gt;It is that time again, and Hibernating Rhinos is hiring developers to work on our flagship product, RavenDB. We need passionate developers, and we don’t care if you are just starting out, or if you have a decade of experience. &lt;/p&gt; &lt;p&gt;If you want to join our team, drop us a line at &lt;a href="mailto:jobs@ravendb.net"&gt;jobs@ravendb.net&lt;/a&gt;, with a link to github profile page (or similar) with projects that you have worked on, as well as your CV. &lt;/p&gt; &lt;p&gt;This position is only available in Israel.&lt;/p&gt;</description><link>https://ayende.com/blog/172513/we-are-hiring?Key=837a305e-ff27-4883-8edf-f8b213853411</link><guid>https://ayende.com/blog/172513/we-are-hiring?Key=837a305e-ff27-4883-8edf-f8b213853411</guid><pubDate>Mon, 16 Nov 2015 10:00:00 GMT</pubDate></item><item><title>Special Offer: 29% discount for all our products</title><description>&lt;p&gt;Well, it is nearly the 29 May, and that means that I have been married for four years. &lt;p&gt;To celebrate that, I am offering a &lt;strong&gt;29%&lt;/strong&gt; discount on all our products (&lt;a href="http://ravendb.net/buy"&gt;RavenDB&lt;/a&gt;, &lt;a href="http://www.hibernatingrhinos.com/products/nhprof/buy"&gt;NHibernate Profiler&lt;/a&gt;, &lt;a href="http://www.hibernatingrhinos.com/products/efprof/buy"&gt;Entity Framework Profiler&lt;/a&gt;). &lt;p&gt;All you have to do is purchase any of our products using the following coupon code: &lt;blockquote&gt; &lt;p&gt;4th Anniversary&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This offer is valid to the end of the month only.&lt;/p&gt;</description><link>https://ayende.com/blog/170945/special-offer-29-discount-for-all-our-products?Key=7bc5d5a8-d6b7-43ae-924e-83d5524b8bb3</link><guid>https://ayende.com/blog/170945/special-offer-29-discount-for-all-our-products?Key=7bc5d5a8-d6b7-43ae-924e-83d5524b8bb3</guid><pubDate>Wed, 27 May 2015 08:16:00 GMT</pubDate></item><item><title>Funding options</title><description>&lt;p&gt;
	This is a divergence from my usual discussion on technical stuff. In this post, I want to talk about money. In particular, how you get it from other people. Note that I am neither an expert nor qualified to talk about the subject matter, this post came out of a lot of scribbled notes and is mostly meant to serve as a way to lay down a line of thought. All numbers are made up, and while I &lt;em&gt;would&lt;/em&gt; like such a car, it would be mostly to inflict it on the employee of the month.&lt;/p&gt;
&lt;p&gt;
	There are many cases in the lifecycle of a business where you need more cash than you currently have (or are willing to spend outright).&lt;/p&gt;
&lt;p&gt;
	A common scenario is when you start a business, or when you want to expand it. For our discussion, we&amp;rsquo;ll use the example of the following drool worthy car:&lt;/p&gt;
&lt;p&gt;
	&lt;img src="http://bloximages.chicago2.vip.townnews.com/napavalleyregister.com/content/tncms/assets/v3/editorial/4/9e/49ebee0c-fc72-11e1-8e97-0019bb2963f4/504fd9d73a1fe.preview-620.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;
	I consider such a piece of art priceless, but let us say that I managed to convince the owner to sell it to me for the nice sum of 1,000,000$.&lt;/p&gt;
&lt;p&gt;
	Unfortunately, I don&amp;rsquo;t &lt;em&gt;have&lt;/em&gt;&amp;nbsp;1,000,000$. I only have 650,000$. So long, beautiful car, it was very nice to know you, but it is just not possible. Except that there is this thing where people give you a lump sum of money, and you give it back over time (although usually more than you got).&lt;/p&gt;
&lt;p&gt;
	Funding is important for businesses in the same manner that breathing is for people. There are typically several ways to fund a business:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;Direct cash infusion &amp;ndash; &lt;/strong&gt;That is usually how most business start. The amount of money put into the business depend on what it needs to do. A web developer would need the money buy a laptop and a Starbucks loyalty card, so that is easy. For a restaurant, you need enough money for rent, employees, equipment, etc. The smaller the amount you need to put into the business to kick start it, the easier it is to just use your own saving to do so.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Partners &amp;ndash; &lt;/strong&gt;This is pretty much the same as the previous one, but instead of having only one person do that, you have multiple people and more savings to dip into.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Angels/Investors &amp;ndash; &lt;/strong&gt;Those are people who for various reasons would give you money. Sometimes this is because they are related to you, but often time it is a calculated move, investing some money in a business in order to get a stake in it and cash it in afterward.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Government development loan / grant &amp;ndash; &lt;/strong&gt;Sometimes you can get this, and they usually have both very good terms, and really strict rules, regulation and hops to jump through.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Bank / credit loan &amp;ndash; &lt;/strong&gt;Well, you are presumably familiar with that. You get a loan, pay interest, mortgage some assets, etc.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Self funded &amp;ndash; &lt;/strong&gt;Your business is making more money than it is spending, therefor you have money to spend on the business.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	The best choice is self funding, because that mean that you are profitable and aren&amp;rsquo;t beholden to someone. The other really depend on personal preferences. Here are mine:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;Direct cash infusion&lt;/strong&gt; &amp;ndash; That works for starting a business with low starting overhead costs (see, single developer shop). It might also be viable if you have a lot of personal wealth that you can put into the business, but personally, I like to think about the money flowing in the other direction. Otherwise that is an indication that there is &lt;em&gt;something&lt;/em&gt; strange going on here.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Partners &amp;ndash; &lt;/strong&gt;I used to work at a place that was owned by 7 founding members + 1 &amp;ldquo;silent partner&amp;rdquo;. I still remember when the entire company got an email from a co-CEO that was basically: &amp;ldquo;You are forbidden to discuss project X or anything related to it with the other co-CEO&amp;rdquo;. That left an&amp;hellip; impression, shall we say. Also, this is again something that you would usually do in the beginning. Bringing a partner into an existing business implies one of a few things. You are in a big trouble (either personally or the business) and need cash infusion that you can&amp;rsquo;t/won&amp;rsquo;t supply or you are doing really well and people are flocking to join you.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Investors/Angels &amp;ndash; &lt;/strong&gt;This is very similar to the previous point, with the caveat that investors usually aren&amp;rsquo;t going to meddle in the day to day affairs, nor are they going to shoulder any burden. They are there to provide the money, some expertise/networking but that is basically it. They do create a pretty huge amount of bureaucracy, reports, compliance, etc. The investors needs to know that you aren&amp;rsquo;t blowing away their money, after all.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Government development loan / grant &amp;ndash; &lt;/strong&gt;This is pretty much the same as the previous one, only the investor is the government. If you thought that investors generated a lot of paperwork, you were mistaken.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	The remaining two options are self funding and getting a loan. Now, assuming that no one else buy this magnificent car, I can put some numbers in Excel and predict that in a couple of years, I&amp;rsquo;ll have enough money to buy it outright. So all I need to do is ask the owner to not sell it to anyone, hope that my cash flow remain according to projections, hope the price doesn&amp;rsquo;t change and just wait.&lt;/p&gt;
&lt;p&gt;
	Of course, that means that I can&amp;rsquo;t &lt;strike&gt;crash&lt;/strike&gt; lift moral by making this the official company car in the meantime. I&amp;rsquo;m losing quite a lot of amusing moments by waiting, and that is assuming that it is still possible in two years. Of course, if in two years I would have the money to do so, I&amp;rsquo;m not so sure that I would still want to just purchase it directly. That would mean having no money at all. And that is kinda of scary, because salaries need to be paid, and this car doesn&amp;rsquo;t look like it has good gas/mileage ratio.&lt;/p&gt;
&lt;p&gt;
	So the option that we have left is taking a loan. The nice thing about doing that is that we can mortgage the actual asset that we are buying, this magnificent car. Now, the bank may not value it as much as I do, so they are going to give it a price of only 900,000$, and then they are going to only agree to fund 80% of that, which gives us 720,000$.&lt;/p&gt;
&lt;p&gt;
	In other words, that means that we need to puny up 380,000$, which is much more reasonable, and leave us with a bit of free cash cushion. That lead to a few interesting observations:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		The loan amount and the money we already have are comparable. That means that the bank is going to be much nicer to us than if we wanted to borrow much more money than we already have (on the assumption that if we got this amount of money once, we&amp;rsquo;ll be able to get it again to pay them).&lt;/li&gt;
	&lt;li&gt;
		There is a valid asset to mortgage, which reduce the loan risk (and thus get us better terms).&lt;/li&gt;
	&lt;li&gt;
		The current interest environment is at an all times low, which mean that this is a great time to loan money (and bad time to try to save).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	This means that this is a much simpler deal than going to a bank with a business plan and hoping that they will believe that we can make it. Now, let us get down to the financial details.&lt;/p&gt;
&lt;p&gt;
	An offer from bank A is for an interest rate of 4%. That gives us a month payment over ten years of 7,290$ per month.&lt;/p&gt;
&lt;p&gt;
	An offer from bank B is for an interest rate of 4.25%. Which gives a monthly payment of 7,375$ per month.&lt;/p&gt;
&lt;p&gt;
	That is a simple number game, and we are pretty much done at this point, right? Almost, but let us project this over 10 years, and see where that put us.&lt;/p&gt;
&lt;p&gt;
	Bank A: Total amount of interest paid is 154,800$&lt;/p&gt;
&lt;p&gt;
	Bank B: Total amount of interest paid is 165,000$&lt;/p&gt;
&lt;p&gt;
	In other words, the total difference is 10,200$. That means that while it is still a numbers game, it isn&amp;rsquo;t just the interest rate. The reason is that we now need to consider a lot more aspects. For example, Bank B may have an easier loan approval process, or require less security, or value the car higher than bank A. Bank A doesn&amp;rsquo;t allow early cash out, while bank B does, or a million and one other differences.&lt;/p&gt;
&lt;p&gt;
	The question now becomes is whatever the other stuff beyond the raw interest rate can be quantified, and whatever it is worth more than 10,000$.&lt;/p&gt;
&lt;p&gt;
	As I said earlier in this post, this is mostly settling things in my mind. Feel free to ignore this post all together.&lt;/p&gt;
</description><link>https://ayende.com/blog/170658/funding-options?Key=47ff8aad-3b79-486a-b826-f1efa97954e7</link><guid>https://ayende.com/blog/170658/funding-options?Key=47ff8aad-3b79-486a-b826-f1efa97954e7</guid><pubDate>Thu, 30 Apr 2015 09:00:00 GMT</pubDate></item><item><title>Black Friday sale: 20% off for the next 48 hours</title><description>&lt;p&gt;I am currently in the states, and I can’t go anywhere without seeing a lot of signs for Black Friday. Since it seems that this is a pretty widely spread attempt to do a load test on everyone’s servers (and physical stores, for some reason). I decided that I might as well join the fun and see how we handle the load.&lt;/p&gt; &lt;p&gt;You can use one of the following coupon codes (each one has between 4 – 16 uses) to get a 20% discount for any of our products, if you buy in the next 48 hours.&lt;/p&gt; &lt;ol&gt; &lt;ol&gt; &lt;li&gt;pink-Sunday  &lt;li&gt;white-Monday  &lt;li&gt;green-Tuesday  &lt;li&gt;orange-Wednesday  &lt;li&gt;red-Thursday  &lt;li&gt;black-Friday  &lt;li&gt;yellow-Saturday&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;This explicitly includes 20% discounts for &lt;a href="http://ravendb.net/licensing"&gt;RavenDB&lt;/a&gt; and the &lt;a href="http://hibernatingrhinos.com/products"&gt;Profilers&lt;/a&gt;.&lt;/p&gt;</description><link>https://ayende.com/blog/164737/black-friday-sale-20-off-for-the-next-48-hours?Key=019989f6-3045-499e-a911-1701093e52cc</link><guid>https://ayende.com/blog/164737/black-friday-sale-20-off-for-the-next-48-hours?Key=019989f6-3045-499e-a911-1701093e52cc</guid><pubDate>Thu, 28 Nov 2013 10:42:00 GMT</pubDate></item><item><title>Pair Programming at Hibernating Rhinos</title><description>&lt;p&gt;Me &amp;amp; Michael looking at a tricky part of Voron’s rebalancing code:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/Pair-Programming-at-Hibernating-Rhinos_BBD1/IMG_1809.jpg"&gt;&lt;img title="IMG_1809" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="IMG_1809" src="http://ayende.com/blog/Images/Windows-Live-Writer/Pair-Programming-at-Hibernating-Rhinos_BBD1/IMG_1809_thumb.jpg" width="1024" height="768"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Michael &amp;amp; Daniel are working on Voron’s free space reuse strategy:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/Pair-Programming-at-Hibernating-Rhinos_BBD1/IMG_1815.jpg"&gt;&lt;img title="IMG_1815" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="IMG_1815" src="http://ayende.com/blog/Images/Windows-Live-Writer/Pair-Programming-at-Hibernating-Rhinos_BBD1/IMG_1815_thumb.jpg" width="1024" height="768"&gt;&lt;/a&gt;&lt;/p&gt;</description><link>https://ayende.com/blog/164257/pair-programming-at-hibernating-rhinos?Key=0a0c0002-4808-41d4-8319-6789ae0d5366</link><guid>https://ayende.com/blog/164257/pair-programming-at-hibernating-rhinos?Key=0a0c0002-4808-41d4-8319-6789ae0d5366</guid><pubDate>Wed, 30 Oct 2013 09:24:00 GMT</pubDate></item><item><title>Hibernating Rhinos and Managed Designs announce enterprise partnership related to RavenDB</title><description>&lt;h3&gt;&lt;font style="font-weight: bold"&gt;September 23, 2013&lt;/font&gt;&lt;/h3&gt; &lt;p&gt;Deal will allow Hibernating Rhinos customers to get premium level consulting and support services provided by Managed Designs across Europe  &lt;p&gt;&lt;strong&gt;Milan, Italy and Sede Izhak, Israel – September 23, 2013.&lt;/strong&gt; Hibernating Rhinos and Managed Designs today announced a partnership that will allow Hibernating Rhinos customers to get premium level consulting, support and training services appointing Managed Designs as its official partner for the following European countries: &lt;p&gt;· West Europe Countries: Portugal, Spain (including Andorra), France (including Monaco); &lt;p&gt;· Central Europe Countries: Luxemburg, Belgium, Germany, Switzerland, Nederland, United Kingdom and Ireland, Denmark, Sweden, Norway, Finland, Austria and Italy (including San Marino and Vatican City) &lt;p&gt;· East Europe Countries: Czech Republic, Poland, Hungary, Slovakia, Slovenia, Bosnia Herzegovina, Croatia, Serbia, Albania and Greece, Romania and Bulgaria &lt;p&gt;As per this partnership &lt;p&gt;“&lt;i&gt;Hibernating Rhinos is committed on developing and marketing a first class document database and wants its customers to get the best experience out of it, so we’re glad having Managed Designs assisting them&lt;/i&gt;” said Oren Eini, CEO of Hibernating Rhinos.  &lt;p&gt;“&lt;i&gt;Managed Designs has been enjoying RavenDB for years now, and we’re excited to have been engaged by Hibernating Rhinos in order to have their customers getting the best experience out of the product&lt;/i&gt;”, said Andrea Saltarello, CEO of Managed Designs. &lt;h5&gt;About Hibernating Rhinos&lt;/h5&gt; &lt;p&gt;Hibernating Rhinos LTD is an Israeli based company, focused on delivering products and services in the database infrastructure field. For more information about Hibernating Rhinos, visit &lt;a href="http://www.hibernatingrhinos.com/"&gt;http://www.hibernatingrhinos.com&lt;/a&gt; &lt;h5&gt;About Managed Designs&lt;/h5&gt; &lt;p&gt;Managed Designs provides consulting, education and software development services helping customers to find solutions to their business problems. For more information about Managed Designs, visit &lt;a href="http://www.manageddesigns.it"&gt;http://www.manageddesigns.it&lt;/a&gt; &lt;p&gt;RavenDB is a registered trademark of Hibernating Rhinos and/or its affiliates. Other names may be trademarks of their respective owners.&lt;/p&gt;</description><link>https://ayende.com/blog/163777/hibernating-rhinos-and-managed-designs-announce-enterprise-partnership-related-to-ravendb?Key=8bd4c14d-899f-48b3-9d49-199d0809ef0b</link><guid>https://ayende.com/blog/163777/hibernating-rhinos-and-managed-designs-announce-enterprise-partnership-related-to-ravendb?Key=8bd4c14d-899f-48b3-9d49-199d0809ef0b</guid><pubDate>Mon, 23 Sep 2013 03:05:00 GMT</pubDate></item><item><title>Looking at the bottom line</title><description>&lt;p&gt;In 2009, I decided to make a pretty big move. I decided to take RavenDB and turn that from a side project into a real product. That was something that I actually had a lot of trouble with. Unlike the profiler suite, which is a developer tool, and has a relatively short time to purchase, building a database was something that I knew was going to be a lot more complex in terms of just getting sales.&lt;/p&gt; &lt;p&gt;Unlike a developer tool, which is a pretty low risk investment, a database is something that is pretty significant, and that means that it would take time to settle into the market, and even if a user starts developing with RavenDB, it is usually 3 – 6 months &lt;em&gt;minimum &lt;/em&gt;just to get to the part where they order the license. Add that to the cost of brining a new product to market, and…&lt;/p&gt; &lt;p&gt;Anyway, it wasn’t an easy decision. Today I was looking at some reports when I noticed something interesting. The following is the breakdown of our product based revenue since the first sale of NHibernate Profiler. Note that there is no doubt that NH Prof is a really good product for us. But it is actually pretty awesome that RavenDB is at second place. &lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_thumb_1.png" width="723" height="295"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This is especially significant in that the profilers has several &lt;em&gt;years&lt;/em&gt; of lead time in the market over RavenDB. In fact, running the numbers, until 2011, we sold precious few licenses of RavenDB. In fact, here are the sales numbers for the past few years:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_thumb_5.png" width="978" height="290"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Obviously, the numbers for 2013 are still not complete, but we have already more than surpassed 2012, and we still have a full quarter to go.&lt;/p&gt; &lt;p&gt;For that matter, looking at the number just for 2013, we see:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_14.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://ayende.com/blog/Images/Windows-Live-Writer/4a8eec4cd2ed_3699/image_thumb_6.png" width="616" height="346"&gt;&lt;/a&gt;&lt;/p&gt;       &lt;p&gt;So NH Prof is still a very major product, but RavenDB is now our top performing product for 2013, which makes me a whole lot better.&lt;/p&gt; &lt;p&gt;Of course, it also means that we probably need to get rid of a few other products, in particular, LLBLGen, Linq to Sql and Hibernate profilers don’t look like they are worth the trouble to keep them going. But that is a matter for another time.&lt;/p&gt;</description><link>https://ayende.com/blog/163553/looking-at-the-bottom-line?Key=60b9ff75-9359-4d22-8879-56409bc9b8b3</link><guid>https://ayende.com/blog/163553/looking-at-the-bottom-line?Key=60b9ff75-9359-4d22-8879-56409bc9b8b3</guid><pubDate>Fri, 30 Aug 2013 09:00:00 GMT</pubDate></item><item><title>Special Offer: 29% discount for all our products</title><description>&lt;p&gt;Well, it is nearly the 29 May, and that means that I have been married for two years.&lt;/p&gt; &lt;p&gt;To celebrate that, I am offering a 29% discount on all our products (&lt;a href="http://ravendb.net/buy"&gt;RavenDB&lt;/a&gt;, &lt;a href="http://www.hibernatingrhinos.com/products/nhprof/buy"&gt;NHibernate Profiler&lt;/a&gt;, &lt;a href="http://www.hibernatingrhinos.com/products/efprof/buy"&gt;Entity Framework Profiler&lt;/a&gt;, etc).&lt;/p&gt; &lt;p&gt;All you have to do is purchase any of our products using the following coupon code: &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;2nd anniversary&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This offer is valid to the end of the month, so hurry up.&lt;/p&gt;</description><link>https://ayende.com/blog/162337/special-offer-29-discount-for-all-our-products?Key=5d9dd3f7-8898-4f57-b3ab-79ee79ece958</link><guid>https://ayende.com/blog/162337/special-offer-29-discount-for-all-our-products?Key=5d9dd3f7-8898-4f57-b3ab-79ee79ece958</guid><pubDate>Sun, 26 May 2013 10:12:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: A Sample Project</title><description>&lt;p&gt;I have previously stated that one of the things that I am looking for in a candidate is the actual candidate code. Now, I won’t accept “this is a project that I did for a client / employee”, and while it is nice to be pointed at a URL from the last project the candidate took part of, it is not a really good way to evaluate someone’s abilities.&lt;/p&gt; &lt;p&gt;Ideally, I would like to have someone that has an OSS portfolio that we can look at, but that isn’t always relevant. Instead, I decided to sent potential candidates the following:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Hi,&lt;/p&gt; &lt;p&gt;I would like to give you a small project, and see how you handle that.&lt;/p&gt; &lt;p&gt;The task at hand is to build a website for Webinars questions. We run bi-weekly webinars for our users, and we want to do the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Show the users a list of our webinars (The data is here: &lt;a title="http://www.youtube.com/user/hibernatingrhinos" href="http://www.youtube.com/user/hibernatingrhinos"&gt;http://www.youtube.com/user/hibernatingrhinos&lt;/a&gt;)  &lt;li&gt;Show a list of the next few scheduled webinar (in the user’s own time zone)  &lt;li&gt;Allow the users to submit questions, comment on questions and vote on questions for the next webinar.  &lt;li&gt;Allow the admin to mark specific questions as answered in a specific webinar (after it was uploaded to YouTube).  &lt;li&gt;Manage Spam for questions &amp;amp; comments.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The project should be written in C#, beyond that, feel free to use whatever technologies that you are most comfortable with.&lt;/p&gt; &lt;p&gt;Things that we will be looking at:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Code quality  &lt;li&gt;Architecture  &lt;li&gt;Ease of modification  &lt;li&gt;Efficiency of implementation  &lt;li&gt;Ease of setup &amp;amp; deployment&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Please send us the link to a Git repository containing the project, as well as any instructions that might be necessary.&lt;/p&gt; &lt;p&gt;Thanks in advance,&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oren Eini&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This post will go live about two weeks after I started sending this to candidates, so I am not sure yet what the response would be.&lt;/p&gt;</description><link>https://ayende.com/blog/161026/hibernating-rhinos-practices-a-sample-project?Key=36b548de-576b-479b-9eeb-9547a76aa1a3</link><guid>https://ayende.com/blog/161026/hibernating-rhinos-practices-a-sample-project?Key=36b548de-576b-479b-9eeb-9547a76aa1a3</guid><pubDate>Fri, 22 Feb 2013 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: Design</title><description>&lt;p&gt;One of the things that I routinely get asked is how we design things. And the answer is that we usually do not. Most things does &lt;em&gt;not&lt;/em&gt; require complex design. The requirements we set pretty much dictate how things are going to work. Sometimes, users make suggestions that turn into a light bulb moment, and things shift very rapidly.&lt;/p&gt; &lt;p&gt;But sometimes, usually with the big things, we actually do need to do some design upfront. This is usually true in complex / user facing part of our projects. The Map/Reduce system, for example, was mostly re-written&amp;nbsp; in RavenDB 2.0, and that only happened after multiple design sessions internally, a full stand alone spike implementation and a lot of coffee, curses and sweat.&lt;/p&gt; &lt;p&gt;In many cases, when we can, we will post a suggested design on the mailing list and ask for feedback. Here is an example of such a scenario:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="https://groups.google.com/group/ravendb/browse_thread/thread/ff19340be0aa5e77/5ececad5208059b7?lnk=gst&amp;amp;q=TransformResults#5ececad5208059b7"&gt;Proposed change to TransformResults&lt;/a&gt; – May 18, 2012&lt;/li&gt; &lt;li&gt;&lt;a href="https://groups.google.com/group/ravendb/browse_thread/thread/c3d0e2cbcb9be4e3/3254eb72e99064d0?lnk=gst&amp;amp;q=Transform+Results#3254eb72e99064d0"&gt;The New Transform Results&lt;/a&gt; – Jan 25, 2013&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In this case, we didn’t get to this feature in time for the 2.0 release, but we kept thinking and refining the approach for that. &lt;/p&gt; &lt;p&gt;The interesting things that in those cases, we usually “design” things by doing the high level user visible API and then just let it percolate. There are a &lt;em&gt;lot&lt;/em&gt; of additional things that we would need to change to make this work (backward compatibility being a major one), so there is a lot of additional work to be done, but that can be done during the work. Right now we can let it sit, get users’ feedback on the proposed design and get the current minor release out of the door.&lt;/p&gt;</description><link>https://ayende.com/blog/161025/hibernating-rhinos-practices-design?Key=14707226-592c-4b71-a7e6-8b691543ebd9</link><guid>https://ayende.com/blog/161025/hibernating-rhinos-practices-design?Key=14707226-592c-4b71-a7e6-8b691543ebd9</guid><pubDate>Wed, 06 Feb 2013 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: Pairing, testing and decision making</title><description>&lt;p&gt;We actually pair quite a lot, either physically (most of our stations have two keyboards &amp;amp; mice for that exact purpose) or remotely (Skype / Team Viewer).&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/pairing-testing-and-decision-making_C5A6/2013-01-27%2014.05.24%20HDR_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2013-01-27 14.05.24 HDR" border="0" alt="2013-01-27 14.05.24 HDR" src="http://ayende.com/blog/Images/Windows-Live-Writer/pairing-testing-and-decision-making_C5A6/2013-01-27%2014.05.24%20HDR_thumb.jpg" width="360" height="480"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And yet, I would say that for the vast majority of cases, we don’t pair. Pairing is usually called for when we need two pairs of eyes to look at a problem, for non trivial debugging and that is about it.&lt;/p&gt; &lt;p&gt;Testing is something that I deeply believe in, at the same time that I distrust unit testing. Most of our tests are actually system tests. That test the system end to end. Here is an example of such a test:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;[Fact]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CanProjectAndSort()
{
    &lt;span class="kwrd"&gt;using&lt;/span&gt;(var store = NewDocumentStore())
    {
        &lt;span class="kwrd"&gt;using&lt;/span&gt;(var session = store.OpenSession())
        {
            session.Store(&lt;span class="kwrd"&gt;new&lt;/span&gt; Account
            {
                Profile = &lt;span class="kwrd"&gt;new&lt;/span&gt; Profile
                {
                    FavoriteColor = &lt;span class="str"&gt;"Red"&lt;/span&gt;,
                    Name = &lt;span class="str"&gt;"Yo"&lt;/span&gt;
                }
            });
            session.SaveChanges();
        }
        &lt;span class="kwrd"&gt;using&lt;/span&gt;(var session = store.OpenSession())
        {
            var results = (from a &lt;span class="kwrd"&gt;in&lt;/span&gt; session.Query&amp;lt;Account&amp;gt;()
                           .Customize(x =&amp;gt; x.WaitForNonStaleResults())
                           orderby a.Profile.Name
                           select &lt;span class="kwrd"&gt;new&lt;/span&gt; {a.Id, a.Profile.Name, a.Profile.FavoriteColor}).ToArray();


            Assert.Equal(&lt;span class="str"&gt;"Red"&lt;/span&gt;, results[0].FavoriteColor);
        }
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most of our new features are usually built first, then get tests for them. Mostly because it is more efficient to get things done by experimenting a lot without having tests to tie you down.&lt;/p&gt;
&lt;p&gt;Decision making is something that I am trying to work on. For the most part, I have things that I feel very strongly about. Production worthiness is one such scenario, and I get annoyed if something is obviously stupid, but a lot of the time decisions can fall into the either or category, or are truly preferences issues. I still think that too much goes through me, including things that probably should not.&amp;nbsp; I am trying to encourage things so I wouldn’t be in the loop so much. We are making progress, but we aren’t there yet.&lt;/p&gt;
&lt;p&gt;Note that this post is mostly here to serve as a point of discussion. I am not really sure what to put in here, the practices we do are pretty natural, from my point of view. And I would appreciate any comments asking for clarifications.&lt;/p&gt;</description><link>https://ayende.com/blog/160902/hibernating-rhinos-practices-pairing-testing-and-decision-making?Key=42eb0a9e-8481-4897-a1b5-13fbd2e09623</link><guid>https://ayende.com/blog/160902/hibernating-rhinos-practices-pairing-testing-and-decision-making?Key=42eb0a9e-8481-4897-a1b5-13fbd2e09623</guid><pubDate>Tue, 05 Feb 2013 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: We are hiring again</title><description>&lt;p&gt;As part of this series, I wanted to take the time and let you know that we are hiring full time developers again.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;This is applicable solely for developers in Israel&lt;/strong&gt;. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;We are working with C# (although I’ll admit that sometime we make it scream a little bit:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/Hibernating-Rhinos-Practices-We-are-hiri_BF19/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://ayende.com/blog/Images/Windows-Live-Writer/Hibernating-Rhinos-Practices-We-are-hiri_BF19/image_thumb.png" width="289" height="278"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Candidate should be able to provide a project (and preferably more than one) that we can look at to see their code. It has got to be &lt;em&gt;your&lt;/em&gt; code. It is ain’t yours (if it is code that you wrote for an employer, or if it is a university code project) I &lt;em&gt;don’t wanna see it&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;We are talking about a full time employee position, working on RavenDB, Uber Profiler, RavenFS and a bunch of other stuff that I don’t want to talk about yet.&lt;/p&gt; &lt;p&gt;Ping me with your CV if you are interested.&lt;/p&gt;</description><link>https://ayende.com/blog/160901/hibernating-rhinos-practices-we-are-hiring-again?Key=78f3e7b7-d7a5-4238-879f-33809dceb126</link><guid>https://ayende.com/blog/160901/hibernating-rhinos-practices-we-are-hiring-again?Key=78f3e7b7-d7a5-4238-879f-33809dceb126</guid><pubDate>Mon, 04 Feb 2013 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: Development Workflow</title><description>&lt;p&gt;The development workflow refers to how a developer decides what to do next, how tasks are organized, assigned and worked on.&lt;/p&gt; &lt;p&gt;Typically, we dedicate a lot of the Israeli’s team time to doing ongoing support and maintenance tasks. So a lot of the work are things that show up on the mailing lists. We usually triage them to one of four levels:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Interesting stuff that is outside of core competencies, or stuff that is nice to have that we don’t have resources for. We would usually handle that by requesting a pull request, or creating a low priority issue.&lt;/li&gt; &lt;li&gt;Feature requests / ideas – usually go to the issuer tracker and wait there until assigned / there is time to do them.&lt;/li&gt; &lt;li&gt;Bugs in our products – depending on severity, usually they are fixed on the spot, sometimes they are low priority and get to the issue tracker.&lt;/li&gt; &lt;li&gt;Priority Bugs – usually get to the top of the list over anything and everything else.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It is obviously a bit more complex, because if we are working on a particular area already, we usually also take the time to cover the easy-to-do stuff from the issue tracker.&lt;/p&gt; &lt;p&gt;Important things:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;We generally don’t pay attention to releases, unless we have one pending for a product (for example, upcoming stable release for RavenDB).&lt;/li&gt; &lt;li&gt;We don’t usually try to prioritize issues. Most of them are just there, and get picked up by whoever gets them first.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We following slightly different workflows for Uber Prof &amp;amp; RavenDB. With Uber Prof, every single push generate a client visible build, and we have auto update to make sure that most people run on the very latest.&lt;/p&gt; &lt;p&gt;With RavenDB, we have the unstable builds, which is what every single push translates to, and the stable builds, which have a much more involved release process.&lt;/p&gt; &lt;p&gt;We tend to emphasize getting things out the door over the Thirteen Steps to Properly Release Software.&lt;/p&gt; &lt;p&gt;An important rule of thumb, if you are still the office by 7 PM, you have &lt;em&gt;better&lt;/em&gt; showed up at 11 or so, just because zombies are cool nowadays doesn’t mean you have to be one. I am personally exempted from the rule, though.&lt;/p&gt; &lt;p&gt;Next, I’ll discuss pairing, testing and decision making.&lt;/p&gt;</description><link>https://ayende.com/blog/160900/hibernating-rhinos-practices-development-workflow?Key=6d1c9165-1782-40d9-89ca-b09c4da5318a</link><guid>https://ayende.com/blog/160900/hibernating-rhinos-practices-development-workflow?Key=6d1c9165-1782-40d9-89ca-b09c4da5318a</guid><pubDate>Thu, 31 Jan 2013 10:00:00 GMT</pubDate></item><item><title>Hibernating Rhinos Practices: Intro</title><description>&lt;p&gt;I was &lt;a href="http://ayende.com/blog/160706/design-patterns-in-the-test-of-time-iterator?key=6d22c7155f0d4cf29e6084648b24fb71"&gt;asked&lt;/a&gt; to comment a bit on our internal practices in Hibernating Rhinos. Before I can do that, I have to explain about how we are structured.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The development team in Israel compose the core of the company.&lt;/li&gt; &lt;li&gt;There are additional contractors that do work in Poland, the states and the UK. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We rarely make distinctions between locations for work, although obviously we have specializations. &lt;a href="http://blog.functionalfun.net/"&gt;Samuel&lt;/a&gt; is our go to guy for “Make things pretty” and “Silverlight hairloss”, for example, Arek is the really good in pointing to the right direction when there is a problem, and so on.&lt;/p&gt; &lt;p&gt;We currently have the following projects in place:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;RavenDB&lt;/li&gt; &lt;li&gt;Uber Profiler&lt;/li&gt; &lt;li&gt;RavenFS&lt;/li&gt; &lt;li&gt;License / Orders Management&lt;/li&gt; &lt;li&gt;RavenDB.Net&lt;/li&gt; &lt;li&gt;HibernatingRhinos.com&lt;/li&gt; &lt;li&gt;ayende.com&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Note that this is probably a partial list. And you might have noticed that I also included internal stuff, because that is also work, and something that we do.&lt;/p&gt; &lt;p&gt;In general, there isn’t a lot of “you work on this, or you work on that”, although again, there are areas of specialization. Fitzchak has been doing a lot of the work on Uber Prof, and Daniel is spending a lot of time on the RavenDB Studio. That doesn’t mean that tomorrow you wouldn’t find Fitzchak hacking on RavenDB indexes or Pawel working on exporting the profiler data to excel, and so on.&lt;/p&gt; &lt;p&gt;Next, I’ll discuss how we deal with the development workflow.&lt;/p&gt;</description><link>https://ayende.com/blog/160899/hibernating-rhinos-practices-intro?Key=c8f1ab21-1220-44c8-b516-665a90e6a3a3</link><guid>https://ayende.com/blog/160899/hibernating-rhinos-practices-intro?Key=c8f1ab21-1220-44c8-b516-665a90e6a3a3</guid><pubDate>Wed, 30 Jan 2013 10:00:00 GMT</pubDate></item><item><title>Uber Prof V2.0 is now in Public Beta</title><description>&lt;p&gt;Well, we worked quite a bit on that, but the Uber Prof (NHibernate Profiler, Entity Framework Profiler, Linq to SQL Profiler, etc) version 2.0 are now out for public beta.&lt;/p&gt; &lt;p&gt;We made a &lt;em&gt;lot&lt;/em&gt; of improvements. Including performance, stability and responsiveness, but probably the most important thing from the user perspective is that we now support running the profiler in production, and even on the cloud.&lt;/p&gt; &lt;p&gt;We will have the full listing of all the new goodies up on the company site soon, including detailed instructions on how to enable production profiling and on cloud profiling, but I just couldn’t wait to break the news to you.&lt;/p&gt; &lt;p&gt;In fact, along with V2.0 of the profilers, we have a brand new site for our company, which you can check here: &lt;a href="http://hibernatingrhinos.com/"&gt;http://hibernatingrhinos.com/&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;To celebrate the fact that we are going on beta, we also offer a &lt;strong&gt;20%&lt;/strong&gt; discount for the duration of the beta.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Nitpicker corner, please remember that this &lt;em&gt;is&lt;/em&gt; a beta, there are bound to be problems, and we will fix them as soon as we can.&lt;/p&gt;&lt;/blockquote&gt;</description><link>https://ayende.com/blog/159425/uber-prof-v2-0-is-now-in-public-beta?Key=90fbb3f4-d674-4f99-a280-aec8792e20cb</link><guid>https://ayende.com/blog/159425/uber-prof-v2-0-is-now-in-public-beta?Key=90fbb3f4-d674-4f99-a280-aec8792e20cb</guid><pubDate>Mon, 22 Oct 2012 06:25:00 GMT</pubDate></item></channel></rss>