Site public archives.

Menu > First page | Previous page | Next page | Last page Page 7 out of 16
Archive index of this page:

Jan. 28th, 2009 14:10MOBILUCK.COM: SOCIAL NETWORK FOR GEOLOCALIZED MOBILE PHONE
Jan. 28th, 2009 13:16The True Story of Unix Shell 'IF'
Jan. 19th, 2009 22:56S.T.O.R.M.: back in memories
Dec. 16th, 2008 12:23Sansévérino, live album at théatre des bouffes du nord: a gold nugget!
Dec. 9th, 2008 12:06iPhone development: how to rename a project in XCode 3.1
Dec. 4th, 2008 15:39What do I need 500Gb for in my laptop or why being geek does not pay

MOBILUCK.COM: SOCIAL NETWORK FOR GEOLOCALIZED MOBILE PHONE

Jan. 28th, 2009 14:10 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/859 — updated on Nov. 13th, 2018 00:43 exists for 16 years & 3 months ago

In May 2007 I have joined the startup MobiLuck.com as the Chief Technology Officer (CTO). This startup is focused on geolocalized social network for mobile phones.

Closer to my friends: geolocalization and social networking.

Users are geolocalized automatically so that they benefit from advanced features such as find the nearest indian restaurant or meet handsome people close to them. Users receive SMS alerts when their friends come close.

Our technology is carrier-independent as we have developed an original and the service works worldwide as it is available in more than 10 languages including chinese, arabic and hebrew.

Traffic explosion: I.2M users & 35M pages/month

This LBS friends finder service has attracted more than 1.2 million users (June 2009) since its launch in August 2007.

Currently the service recruits an average of 2K to 8K users per day as per the current trend.

By end of Q2 2009 we saw our traffic doubling every 3 months which hit 35 millions pages per month!

Technical environment

Server side: clusterization of the application

The server-side development is based on LAMP: Linux, Apache, mySQL and PHP.
The service is distributed throughout a cluster of servers (ranging from duo core 2 with 4Gb of ram to octo-core with 16Gb or RAM).

Each box is given a role -- and only one every time is possible:

  • front server: run the Web server (Apache2)
  • back server: run a mySQL instance

In order to face the traffic explosion we have, I recently clusterized mySQL itself and switch to a Master/slave replication on two octo-core servers. I migrated to mySQL 5.1 from 5.0.

Client-side: iPhone and Facebook

- Client-side development in xHTML and xHTML Mobile
- iPhone development in Objective-C/Cocoa: geolocalisation API, networking and communication with the back-office
- Facebook app development: enable facebook user to run mobiluck from within Facebook

Web-services

We interface with many third-party through web services: Twitter, Yahoo!, Google, Maporama, SMS brokers, advertising agency, cartography, geocoding & reverse geocoding, etc.

Advertising platform and service wide monitoring

The business model relies on ad distribution based on users’ profile and localization. We integrate miscellaneous advertising agencies and distribute ads on a per country or per profile basis in order to maximize our revenues.

Our system embeds an home brew monitoring system and statistics tracker that enable us to conduct the business and take decisions in an agile way.




The True Story of Unix Shell 'IF'

Jan. 28th, 2009 13:16 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/858 — exists for 16 years & 3 months ago  Content not available in English.

I came across an issue with one of my server script while I was giving it a refresh this morning. The script is a backup script that lays on every single box of my cluster which purpose is to make the backup of each box in regards of each individual box role in the cluster.

So I which to (pseudo) code the following:


thisbox = gethostname

if thisbox is a front server then do backup front files

if thisbox is a back server then do backup databases


Which I too much quickly translated in shell script as follows:


HOST=`hostname -s`

if [$HOST=='ns6511']
then
# do somthing
fi


And guess what? you're right, it doesn't work. Shell complains as follows (HOST contains 'ns651' on this box):


/home/mobiluck/backup/mlo.backup.sh: line 28: [ns6511: command not found

It simply shocked me in the very first seconds I read this report, but quickly felt as Newton did with his "Eureka".

What you might consider as a pure sheel syntax -- the square brackets -- is not actually! So what's this?

[ is a linux command -- I mean an executable file which you can see by doing this on your own box:


# l /usr/bin/[
-rwxr-xr-x 1 root root 29K aoû 28 11:59 /usr/bin/[

Alright, [ is a command. So what? Why the hell my script fails?

It fails because I forgot to put blanks between the command and the arguments! Hence the command it though I was interested in was [ns6511.

In fact $HOST, ==, ns6511, ] are the options of [ command.

So insert all missing blanks between the command and its options and all will work as expected.

Finally the correct syntax is obviously as follows:


HOST=`hostname -s`

if [ $HOST == 'ns6511' ]
then
# do somthing
fi


Hope this reminder pleased you and this learning session just proves something important: how Unix -- which, at first sight, could be considered as a deprecated technology of the 70s -- is really not. The answer is probably: simplicity.

And simplicity here means power and evolution.




S.T.O.R.M.: back in memories

Jan. 19th, 2009 22:56 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/857 — exists for 16 years & 3 months ago

Yvan got in touch a few days ago about the Saturn SKU of S.T.O.R.M. one of the game I created in 1996. He wanted more information about it. And as does a great jobs I wanted to let you know that Yvan maintains a site about all Sega-based games called http://www.segadatabase.net which compiles tons of information about those games.




Sansévérino, live album at théatre des bouffes du nord: a gold nugget!

Dec. 16th, 2008 12:23 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/849 — exists for 16 years & 4 months ago

Yeaaaaaah!

Hey guys, last june I was at the concert and was remarquably impressed by this performance. New songs and new style -- back to the root: all songs revisited!

Get to iTunes to see this album

And now, the live album is out on iTunes and is really really great.

I tell you that this album is simply the best of his production! I urge you to order it and enjoy right now, you won't regret it, I give my word.

Check out my concert photos below:

Sansévérino concert




iPhone development: how to rename a project in XCode 3.1

Dec. 9th, 2008 12:06 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/847 — updated on Dec. 16th, 2008 13:04 exists for 16 years & 4 months ago

Programming a new system or platform always makes you start from existing code snipets or even sample project for you to experiment with.
As you put much and much time on it, you often end up with a project that does not have to do any longer with the original sample. And you probably want to somewhat rename it with your final app. So here we go, here is a small process to do that with xcode projects version 3.1 -- but surely works with different version.

All the steps:

  1. quit xcode
  2. rename the old folder to the new name -- in this example say oldproject to be renamed to newproject, do that straight from the finder
  3. still with the finder, get to the folder newproject and rename the files oldproject.xcodeproj and oldproject_Prefix.pch to newproject.xcodeproj and newproject_Prefix.pch respectively
  4. delete the folder build
  5. run xcode and open newproject.xcodeproject
  6. open the window Project|EditPoject Settings and clik on the Build tab
  7. find the Product name from the list -- it appears in bold, and edit with the value: newproject -- note that it might be originally empty tough
  8. take textmate and load the file *project.pbxcode" from the file newproject.xcodeproj which is actually is a folder
  9. search for the string "oldproject". Do that manually please, don't use the the replace option form textmate.
  10. any time you find oldproject just retype newproject on it. There is an execption though. It is useless to change the delegate names such as oldprojectappdelegate. But as you probably want to to so, you'll do that eventually straight form xcode itself.
  11. save this file and swtich back to xcode.
  12. xcode asks for refrshing the project.pbxcode, just tell yes.
  13. clean all targets and build and go.
  14. everything works with no hassles.
  15. last optional step: use xcode to rename all delegates files -- don't forget to do that in the related code and classes.



What do I need 500Gb for in my laptop or why being geek does not pay

Dec. 4th, 2008 15:39 by Stéphane de LucaPermalink | TrackBack: https://stephanedeluca.com/trackback/846 — exists for 16 years & 4 months ago

Just curious.

Why and what my hard drive space is currently used by.

I recently upgraded my laptop and stuffed my MacBook with is 500Gb brand new hard disk drive.

Once everything moved from the former disk, I am only 167Gb of free space!

So what my 300+Gb of information are used for?

Ok, ok, I have:
- 70Gb of iTunes stuffs (music, movies, etc.)
- 6Gb that holds my 60K+ photographs in Aperture
- 40Gb used by iMovie HD to store my own movies.

But it still misses 180Gb.

Ok, ok, I'm a geek, I mean a real one, programming almost 100% of my life, night and day. So is it possible my source code fills this up???

I prove it.

- Take a standard but fast-typing professional typist who can achieve 45 words/min.
- Say that is me -- allas, I'm not that fast I'm afraid...
- Say I am able to work night and day, 365 days a year -- allas, that's pretty much me :D
- Say I use an simple, back-to-the-roots, old-early-loving-days editor -- that's mean you only got what you typed on your disk, not that tons of crappy microsofty-bin-stuff trash

How much I can fill my disk with for my long life -- say I will be there 120 years after I'm born. Don't laugh, my grand mother as already 94, and she's pretty well!

- 45 * 6 = 270 bytes / min -- yeah, I use UTF-8 encoding, typing in english and french assuming a 6-char word length average
- 1440*270 = 388800 bytes / day, that is 388,8 kb
- 365*388.8 = 141.912 Mb / year
- 120*141.912 = 17.03Gb

Ok then. During my looong life I will be able to fill only 17Gb of disk space! So what do I need 500Gb??????

PS: As I'm on it, how much my typing is worth?

Say I'm hired for a constant 120k$ a year -- yeah, that's nice, thank you.

Every single byte I write worths : 120/141,912 = 0.08 cents.

Mmmm. I should make something else for my living... writing songs?!




Menu > First page | Previous page | Next page | Last page Page 7 out of 16