Engineers @ NudgeNudge – Augmented Reality and 3D

26 Jul

This is a master class in 3D application development for the new glasses-free 3D mobiles on the market. The class is for anims and Android devs, and will step through the creation of an application specifically for 3D phones.  Engineers have a great honor to be the headliners of the event covering the topic of 3D game development.

The very first lecture I gave just a few days ago, “Augmented Reality and 3D”, was very well accepted by the audience and the organizers. I’ve raised some quite challenging propositions that we will be working on over the next weeks and months, such as using worldwide common markers instead of the predefined static ones (car tires, traffic signs, logos, etc…).

The lecture, which is the result of couple of weeks research and development by the Engineers astrophysics-mathematician-developer Damir Burazerovic and myself, is summed up in the slides which I’ve used at the event. As there are quite a few things which I have talked about and are not here, feel free to pop up any questions and start any discussion in this thread.



Building an online betting solution – Bet variations

1 Jun

This is just a short introduction to what I believe are the most interesting bet variations on the market, and is written for the reason of introduction to the further posts for the “Building an online betting solution” series of posts I will write over the next couple of weeks. If enough interest is produced by this post, I’d be happy to write more about what interests you the most.

There are various ways a bet can be placed and interpreted. I will name three most interesting examples:

  1. Sport bets
    1. Bets before a competition/game has begun
    2. Live betting
  2. Auction bids
    1. Prebids – bids before the auction has began
    2. Live bids
  3. Visual bets
    1. Betting against a credible estimate

Sport bets

In sport bets or any other bets of this type, betters are betting against the final outcome. As the final result is final, the bet is final as well. A bet represents a legally binding contract between the better and the betting company. Further more, betting company must have  special licence to operate such business.
Sport bets which are placed before a game begins are the most common ones. Users are betting on a final outcome of a game in terms of any of it’s parameters (final score, number of final attributes (i.e. sets in tennis, or corners in soccer… the list is infinite).
Live betting is referred to an action where users are betting during a game on various outputs/results which occur during the game and mostly within a short time span (i.e. who will score the next goal, or who will foul next… the list is, again, infinite…).

Auction bids

Auction bids are an interesting category and is probably rarely spoken about in this context. The main difference from bets is that bids do not present a final contract between a bidder and an auction host, as bid can be overbid at any time. Only the highest (winning) bid is the legally binding one. In this case, bidder is bidding against a final score, where the score represents the highest bid on which the bidder has a direct influence over. A company hosting an auction does not require special licences to operate such business.
Two of the scenarios are the most interesting ones:
Auction hasn’t yet started and bids are being placed which represent a sum one would pay for something that he/she does not know the final cost for yet. These bids are usually hidden until the auction starts. Once the auction begins, the highest prebid is the opening price instead of the opening price initially set by the auctioneer.
Auction has started, and bidders are always aware of what is the current highest (winning) bid and they bet in correlation to that one.

Visual bets

Visual bets are not amongst the most common ones, but are quite an interesting example. A prime example is company called Best of the Best, a luxury goods competition company where every one someone is guaranteed to win a Supercar.
This is how the “game” is being played:
  • A sporting picture that has had the ball permanently removed from it is presented to the one betting
  • Using best judgment, the individual is to click on the picture where they think the center of that ball should be
  • The bid is actually x:y coordinate of where the individual has clicked
  • When the competition is closed on a set date and time, the same picture is presented to a credible panel of Judges who repeat the same process
  • The winner is simple the person who is closes to the judges position.
This type of betting does falls under gambling as well as the sport bets, and requires a special licence for the company to operate.

CSS3 – Creating a multi-layered background

30 May

Creating a multi-layered background with CSS3 is quite simple – all you need to do is to specify multiple background images for the wrapper class:

However, we do need a fall back mechanism for browsers which do not support CSS3 and will never do (&*#*$& !!!). Further more, we’ll implement 3 backgrounds on top of each other in order to produce a result which:

  1. Has a background pattern
  2. Is enriched with another pattern which appears at the top of the page and disappears downwards
  3. Has another visual effect which for examples throw a sunlight effect behind the content
We start simple by adding background to the .body, which sets our base pattern for the page:
Now that this is set, we go ahead and prepare our page HTML structure:
The .container element is an independent element laying on the page and has no child elements. We set it’s position to fixed and give it the maximum size:
The background of this element has the texture we want to apply over the background .body pattern. At this point we are set with two background images, one over another. Note that the position of the element is fixed.
The next step is adding the effect over the body and texture. That would be our “light” element:
Again, this is an independent element with fixed position and z-index is just one above the container which allows us to create a visual light effect over the container. It’s up to you where you want to position the .light element in the page and you can control it’s position by either CSS or jQuery if you need it specially positioned at certain place while keeping it’s position dynamic in regards to the other elements.
The last but lot least is the .content element where you would place you page content:
This is the element which will finally has its own child elements (basically, your entire page). Main characteristics of this element are:

  1. z-index is higher than the .light element’s z-index (use small numbers so that you don’t run into problems with modal pop-ups)
  2. note that the position is absolute
  3. you can even set it’s own background if you need to

That would be it. Feel free to ask any questions.

Developer Tip of the Day – ASP.NET MVC 3 and the @helper syntax within Razor (Html Helper extensions)

25 May

Quick intro: “Razor”, a new view-engine for ASP.NET MVC 3 speeds up the development in terms of writing view templates, and what’s more important, puts you in a place that you do not need to interrupt your coding to explicitly denote the start and end of server blocks withing your HTML. The best overview out there is, of course, at Scott Gu’s blog, so go ahead and read it if you need more insight into that.

A hidden “Razor” gem that I want to mention today is @helper syntax, which enables you to create reusable helper methods and use them on the go – again, Scott Gu’s post about it, and the solution of how to get an access to the ASP.NET MVC Html helper methods within which is not supported by default.

Building an online betting solution – Introduction

25 May

Couple of years ago I spent 2 years working for BWIN.COM, Europe’s largest eGaming provider, as a part of the Sportsbook development team. It was until this year when I met face to face again with a similar project in terms of the back-end system – online live auctioning solution for property rentals –, our new client. Zumper, founded by a highly capable team of Harvard Business School students, is an online real estate market in which students and young professionals can bid on and secure properties in a more efficient and transparent manner. Further more, implementing money flow and virtual currency system (amongst all other systems) into, brought many things together in terms of algorithm which handles inner and outer transactions.

The series of posts I am about to write are not going to reveal any business secrets or pieces of code used in all these projects, but rather give you an insight of complexity of such systems together with some hidden tricks and tips.

Here’s the list of topics I am going to cover (not necessarily in this order, and the list may change as I go along):

  1. Betting scenarios
  2. Currencies and virtual currencies
  3. Back-end logic vs. database logic
  4. Placing bids/bets
  5. Live visual result tracking
  6. Logging and history
  7. Handling user errors
  8. Handling system errors
  9. Security
  10. Money flow
I will blog about our first topic, “Types of bets/bids”, in the next couple of days. Watch this space…

Engineers at Internet Week Europe 2011

25 May

Internet Week Europe 2011 – the follow-up to last year’s highly successful inaugural event – will take place across London from 7-11 November, organisers announced today.

Engineers were Internet Week Europe Official Event Partner last year with two events:

Both events were a success with over 40 participants. We are already planning to repeat the last years success in 2011 and we are open to any suggestions for our events this year. If you’d like to hear us talk on a certain topic, please let us know.

jQuery & IE – Naming functions and elements

24 May

After so many lines of code in the past decade, we ran onto an issue which should never happen if you follow naming standards… still, a moment of tardiness at 3am after 18 hours long work day you ran onto these as well, and I wanted to share.

Simple, ridiculous, but possible, and guess what – IE doesn’t like it:

– here’s my element:
<div id="DoSomething"></div>

– here’s my action link:
<a href="#">Click here</a>

– here’s my function:
function DoSomething() {//whatever}

Clicking the link won’t work in IE and Safari. Firefox and Chrome are just fine with it.

Note to myself: Follow naming conventions at all times, functions and elements should never have the same name!