Sunday, January 18, 2015

Perl Already Won

This post is a response to the Yet Another Perl Rant article which appeared on hackernews.

Without being a special kind of paranoid or conspiracy theory adept, I can't help myself noticing that from time to time an article appears which tries to convince us that Perl is dead and there are no reasons to learn it.


Perl already won once - in the nineties it was the technology that powered the whole web. It got a market share that none of the 'cool' languages will ever be able achieve - be that Python, or Ruby, or Go, or Node, or whatever. Be that backed by Google, Facebook, Twitter, Craigslist or PHP is coming close, but it won't achieve it, exactly because of the cool new programming languages, because of the much larger internet market and of the diversity of software developers. 

I believe the main reason haters gonna hate Perl forever is because their language of choice will never achieve its dominant adoption.

Transition to Perl

I started programming in Perl in 2010, after 4 years of professional software development (in progress) and after I did some projects in PHP, Ruby and Python.

I have to admit, as a programmer it wasn't really easy to start with Perl:

  1. Having those list, scalar, string, or void contexts is pretty confusing when you're first exposed to them. 
  2. The types of variables are totally different from anything that I've seen that far - scalar, array and hash type. 
  3. It was also hard to get along with the TIMTOWDI (There Is More Than One Way To do It) principle which is everywhere - should the $customer->orders method return undef when no orders are present, or should it simply return, or should it return an empty array or maybe an empty array ref - this is just one question that I found myself asking over and over again.
I had all of the above issues clarified after I read Damian's Conway Perl Best Practices and Intermediate Perl.

I came for the money and stayed for the robustness

I decided to switch from Progress because there was only one company in Cluj-Napoca that was using it. While you would normally expect, as an extremely specialized technologist, to earn a bigger salary because of the scarcity of experts in a certain field, the opposite was true - I earned a smaller than average salary, exactly because I could do nothing about it (ie I didn't had where to go). Although I wanted to switch to Java, the first opportunity I had was Perl. Given that we had at that time about 5 companies that were doing Perl development in Cluj, and that the salary this company offered, as a junior Perl developer (I wasn't able to even code the 'hello world' without googling it), was bigger than the one I got as a senior Progress developer with a commitment of salary negotiation after one month with the company, signaled me that there had to be something good with the language that I've only heard about it looks the same before and after it is encrypted. 

While I worked as a Progress developer, I was doing the whatever part time project I wanted to work on using technologies like PHP, Ruby and Python, mostly because of the high costs of running a Progress app (at that time they were charging even for the runtime VM, I don't know if that still applies). I don't have any public project since that time. When I switched to Perl I decided to use it for everything I do - I wanted to see if that's possible, without losing any productivity and in order to become more proficient in the language.
As a result, I currently have 2 extra projects that I work on and have real users (a food ordering application) and (a crowd speaking platform).

The right tool for the right job

Since 2010 when I started to develop in Perl, I found out that Perl has everything that I needed, some more and they're all rock solid pieces of software:

  1. Want a RoR like framework? go with Catalyst
  2. Want a Sinatra like framework? choose between Dancer2 and Mojolicious
  3. Want an uber ORM? - go with DBIx::Class (dbic)

That's why Perl became my golden hammer

Young but wise

I think that the average age of a Perl developer is about 35 years (I have no official data for this, my hunch is based on the people I saw at numerous YAPCs I had the opportunity to be present at). Assuming this is true and assuming a dev enters into production at 23 years old, it results that the average Perl developer has 12 years of software development experience.
What kind of code would you prefer in your business critical, money making software products? one written by people with an average of 12 years experience in the language of choice, or one written in a language that appeared on the radar in the last decade:
  1. Ruby on Rails, the framework that made Ruby popular was launched in late 2005
  2. NodeJS is not yet at version 1, having its first version launched in May 2009
Regarding youth, Perl's last stable version is 5.20.1, released in 14th of September 2014. The Dancer2 framework had its first release in 2013 and it had 37 more releases since then. Mojolicious reached version 1 in December 2010, now it's at version 5.72 - have a look at the frequency of releases.

In my imagination a language that is dying does not have frequent releases, nor it has modern frameworks and it doesn't inspire other languages also.

A short story

I currently work on a project written completely in Perl for a company that sells economic reports - lets call it X, because I don't have their permission to use their name. The project was started around 1998 and for about 8 years there were less than 3 developers who supported the whole online division of the company. The company that I currently work for (an outsourcing one) started to assist the X company with the project around 2008. If I remember correctly, between 2008 and 2012 there were no more than 5 developers assigned to the project from my company at any one time.

In late 2012, a new CIO was hired by the X company in order to help with modernizing their so called legacy codebase. It was indeed legacy - the whole website was done entirely with The new CIO promised to rewrite the whole system in .NET in just one year, because you know, how much functionality can be implemented by an average number of 3-4 developers in a technology that is so old and rusty as CGI, while also maintaining the core, business critical and money generating, functionality?

So, in November 2013 they started to lay out the business logic that takes place in the online app in order to be able to start implementing it in early 2013 so it would be done by the end of 2013.

It was March 2013 when the CEO decided to stop the idea of rewriting the app in .NET because they weren't able in those 4 months to even define the scope of the project. The CIO was out.

My company made the commitment to rewrite the whole app using Modern Perl and to also respect the original schedule, compensating the time lost because of the unsuccessful .NET rewrite attempt. I remember my department manager saying after he came back from company X with the project "I might have made the most stupid commitment ever, but it might also be the best".

Long story short - by October 2013 we rewrote 90% of the old application using Catalyst and DBIx::Class on the backend and Bootstrap from Twitter on the front end. By the mid of 2014, the old application, the CGI one, was taken out of production.

There was no business interruption because of the rewrite.


Watch out for whoever says that Perl is an ancient technology, because they're either ignorant and completely clueless about what's really happening in the world of computer programming, or they have hidden agendas.

I know, this might be a biased post - I love Perl, but so are the posts that people wright when they say it is irrelevant. Let me ask you a few biased questions:

  1. Why do you love Perl?
  2. How did Perl helped you in your profession?
  3. How did Perl helped your company?
  4. How do you intend to use Perl in the next years?

Monday, September 8, 2014

Making a "Simple" Site is Damn Hard

If you're somehow related to the IT field (you're a sys admin, a QA, a Project Manager, or even a programmer) you surely got at least one request from a relative who just opened a business, to create them a "simple" website. This term - "simple" - lies anywhere from some texts that don't need to be updated in the future, to online stores or web scale streaming platforms. How hard can it be? it's just a "small" web page after-all. You're in luck, my friend. This post is here to help you make them appreciate the simplicity of web sites.

 This impression, that to build a good web site is so simple that even the nephew of one of my wife's cousins who's only in his 9th grade is able to do, is our fault.

We, the people from IT, fail to communicate properly how complex and what a big deal it actually is to have a "Hello World" correctly displayed in a web page. After all, there might be a reason (related to social and communication skills) why when you ask somebody what job this guy
has, most of the people will say he's an IT guy.
People are ignorant by definition and this also includes us, the software developers. If you start talking to me in nautical jargon, I'll most probably understand only your linking words and phrases. Why should we expect from our non-technical peers to understand that in order to avoid sql injection attacks on their "small" web site, we have to use prepared statements or ORMs? Or that they want their site protected against cross site scripting vulnerabilities and we have to use some sort security encoding library or framework? No, they don't have to know all this and it's absolutely normal for them to expect to have a web site that in a month or so after you finished, it will still display their content and not some commercials to the blue pill for men or genuine fake watches.

They instead can, and actually should understand, that software development is hard. The simplest way to convince them that web development is a difficult process is to ask them to press ctrl+u (if they use a PC and Firefox or Chrome as browsers. If they use other "browser", one of the most helpful advice you could give them is to switch to a real browser) and have a quick glance at the source code of any web page.

And then explain them that all the gibberish characters they see there is actual code that a programmer (most probably you) has to write, all of it. And then, tell them that if instead of jQuery you happen to write jquery, none of that part of the code will work anymore.

Next, let them know that the whole process of building a "simple" web site is a stream of decisions that you have to make:

  • Will you design the site from scratch? Will you buy and use an existing theme (disclaimer - that link contains my referral id to the themeforest site)? 
  • Will they require a CMS?
  • What features will they need on the site? (shopping cart,  newsletter, contact form, forum, blog, calendar, polls, etc.)
  • Will you implement the above features by yourself or you'll re-use existing solutions?
  • What kind of hosting will you recommend (dedicated server, VPS, shared hosting, etc)?
  • etc

Of course, you'll have to take some of those decisions together with the beneficiary of the web site, but most of them you'll take by yourself. The fact that you take as many of those decisions by yourself and get off the burden from the shoulders of your potential client, will increase their appreciation of your work because having to make too many decisions increases the anxiety of normal people.

Please notice that I haven't even brought into discussions the decisions related to:

  • What programming language should I use? (although it should be Perl, obviously)
  • What framework should I use?
  • Should I use a relational database, or some no-sql technology?
  • What's the caching strategy that I'll adopt?
  • Full-text search solution?
  • Hosting OS?
  • What web server should I use in production?
  • etc

I haven't mentioned these kind of questions, because they don't concern average Joe. The ignorance of normal people regarding those questions is absolutely normal, and we should only bring them into discussions when we want to be seen as some special kind of smart asses. It's like someone would've told me that he tied a becket hitch  instead of tying a knot. I'm not a walking wikipedia to know everything and neither are our non-technical friends. 

In conclusion, the more you make regular people understand why software development is a complex process, the less difficult will be for them to appreciate your work and accept your hourly rate. Share this article with your friends and help them become a little less ignorant regarding the complexities of web development.


Want to see some of my work? have a look at PRForge - a crowd speaking platform where you amplify your message with the help of your friends and brand ambassadors across different platforms (for now we support facebook, twitter, reddit and hackernews). We'll soon open the private beta, so leave your email address in the form there, to catch a seat in the first row.

Wednesday, April 23, 2014

Facebook Authentication in Perl with Mojolicious (Lite)

Below is the minimum you need in order to have a web app that provides Facebook authentication.

Although there are less than 100 lines of code (including comments), this is a complete Facebook application implemented in +Perl  , using the +Mojolicious web framework. It provides Facebook authentication and accesses user's Facebook username. Of course, with proper scope settings it could also access user's list of friends, the pages that the user manages, or many other interesting things that Facebook offers access to.

So, the complete app:

In order to make it work, you have to first create a Facebook application and then fill in the values for $config->{facebook}->{app_id} and $config->{facebook}->{secret}  with the values provided by Facebook on the application Settings page:

Also, you have to provide a Site URL to your Facebook app. This is the URL where the user will be redirected after Facebook authenticates him. In our app, the URL is  - of course, is not a valid domain, but an alias I made in /etc/hosts that points to the IP of the machine that runs our Mojo Lite app - Facebook seems to be OK with this URL.

After you have installed the dependencies:

You can start your app in dev mode by executing: morbo facebook

When you click on the Click here to authenticate with FB link, you (and your users) will be redirected to Facebook and presented with a screen like this

After you authorize the app to access all the scopes set on line 39, Facebook will redirect you back to your app. Note that this authorization phase is done just once - after that, every time you log in with that account, Facebook will simply redirect you to the app.

If you read this far and liked the article, get rid of your shyness and share it using the buttons on the left :)

Sunday, January 5, 2014

Voting Rings - Bad or Good?

Voting rings can be a low cost alternative to AdWords and Facebook ads to promote high quality content.

What are voting rings or voting cliques?

Reddit, in their faq section, answers to the question What constitutes vote cheating and vote manipulation? with:
 A "vote ring" is a group of people who agree to vote on certain things together, either a specific submission, a user, a domain, or anything like that.
And they, not only discourage this type of practice, but they explicitly forbid it. Other websites that highlight voted content like hacker news, digg, delicious, stackoverflow, quora and basically all the rest, also forbid the practice of participating in voting rings.

Why are voting rings so alluring

Because it helps you get on the front page of hacker news, or of any popular reddit thread - and this, my dear reader, brings a huge amount of traffic to your site. 

As an example, my post titled Why I'll never leave Romania as a software developer was on the front page of the /r/programming thread on reddit for one day. As a result, the post got 26k visits, most of them from reddit. And the visitors were highly targeted people, all interested in programming. 

You don't have to be a rocket surgeon to estimate that, at a modest cost of 30 cents/click with AdWords, this amount of traffic would've cost 7800 dollars. Imagine what happens when you are on the front page on /r/technology (which has 10x times more subscribers than the /r/programming thread) or reddit itself.

Most of the algorithms that decides what post to be on the front page are based on a combination between the number of votes it receives, and their recency, such that, the more votes a post receives right after it is posted, the upper it gets on the front page, thus being exposed to a bigger number of readers, increasing its chances to be upvoted even further. 
On the contrary, no matter how good an article is, if it doesn't get a few upvotes early on, right after it is submitted, it will go down the drain on the path of internet forgetfulness.

Voting rings are a current practice of internet activity

If you love a certain's author style, there are big chances that you like, share, tweet or upvote the content they publish, creating a voting ring, so the better an author is, the biggest their voting circle is, the bigger the chances that their content gets featured on social networks and so on. Indeed, you might say, having many followers, the author has proven track record that they create notable content. 
For the rest of us, the mere mortals, things are a little bit different - we have to be proactive in promoting our content in order to have it exposed. 

Unfortunately, this proactiveness is considered bad practice and it might get your account banned from the vote enabled, content bubbling sites. Fortunately, it is difficult to accurately identify voting rings, especially due to the fact that popular authors posts look liked they're promoted through voting ring schemes.

So, whether you explicitly ask your friends to upvote your submission or you share your submission on your social network profiles, you encourage your friends to upvote your creation, thus you are susceptible of ad-hoc voting rings creation. 
In my opinion, voting rings are a reality, whether they're good or bad is debatable, but, when I spend 3, 4, or even more hours to write an article, I want to make sure it gets all the possible feedback - be that positive, or negative, so it seems normal to promote it on all the channels I can and ask a few friends to help me with it. 
I don't even know if there's anyone to be featured on the front page of any popular social content aggregator who got there without help (ie early upvotes) from friends or acquaintances. If you have knowledge of highly popular content that got its notoriety without some initial boosting, please mention it in the comments section of the article.


I'd say that voting rings are a natural way of association among individual. It happens day by day in our offline lives. It happens when we ask for endorsements, it happens when a political party or NGO starts a social movement or a protest and the examples could go on and on. 
So, creating a voting ring to give you an initial boost to your content is a good thing. The people in the community will take care and show you the place where that post belongs in an instant anyway, by upvoting or downvoting it.
Why would we ban those practices from the online environment? I expect the online world to be an enriching experience to our offline lives, not a restricting one. I expect it to offer at least what the offline world offers (in the limits of the current technology available, of course), and a little more.

The worst case scenario would be when a group of, lets say, 1000 people group together and act in a monopolistic way against the community they're part of, by keeping the front pages filled only with their content. Such a group of people will take time to be created and there are little chances that just one group will be. There would be more groups, acting in opposition, simply balancing the focus the internet gets.

An Experiment

Not long while ago, together with a group of friends, we created PRForge. It is thought as a platform for audience amplification. Whenever someone posts a link in a group on PRForge, the link gets spread on the social properties of all the members from that group, thus amplifying the total reach of that piece of content. The social platforms supported until now were just Facebook and Twitter, but starting the last days of 2013, we implemented reddit and hacker news upvotes:
If this post convinced you that voting rings are OK to use, join the group on PRForge and be part of the voting ring I created. 

After you sign-up, install the firefox plugin from the link 
Go Get It Champ
which is on the left sidebar. 
Let that Firefox instance running with a Reddit and Hacker News account logged in. Whenever an authorized to post member of the group will submit a Reddit/HN link, it will be automatically upvoted by all the members of the group. 

In order to become authorized to submit links, let me know in the comments section of the group. 
After you sign up you'll be also able to create your own, private groups.

Please note that although PRForge's main functionalities are working right now, it is in a really early release and there are things that will not work. Please bear with us while we fix the glitches that will appear.  

If you read this far, you might want to follow me on twitter

Friday, December 13, 2013

How to screw up a startup community


Organize meetings, social events and hackathons, pretend you want to help the community, then use the ideas you saw there to serve your personal purpose. In order for this to work, you have to keep for yourself everything that you work on until the launch day, while you encourage the participants to tell you as much as possible about their businesses. If they ask you something about what you're working on, lie to them, otherwise they might not come to your future events.

This happened to me (I was at the receiving end of this "business model")

I started to work on EatFab sometimes in November 2011 in order to solve the problems we faced with food ordering management (the major problem is that a lot of time is spent to centralize the orders). We started to use it at my current employer in September 2012. 

In December 2012 I found out about Open Coffee Cluj - a group formed for the like minded people, entrepreneurs and people with initiative. At least that's what the organizer of the meetups, Marius Mocian, told us. Everything seemed to work well, we exchanged ideas, we talked about what we're working on, the problems we faced and we had brainstorming sessions whenever someone raised an issue. Except that when Marius was asked what he was working on he was always vague, saying only that he mostly mentors other startups. 

Six months later, around May 2013, a mobile application is launched for the food delivery market in Cluj-Napoca. Shockingly (in an unpleasant way) for me, I find out that Marius Mocian is the one responsible with the marketing of the app, with some responsibilities in product development and he was occupying that role for several months. While keeping his main occupation secret until the last time is legal, I find this to be immoral, to say the least, because he kept organizing the startup related meetups and encouraged us to keep giving statuses related to our workings.

Although all of my gut feeling alarms went crazy, I deceived myself by telling me that it just looks like we're competing in the same market: his application is for individual deliveries, while EatFab is for office food ordering, so we're kind of complementary and he didn't had any kind of moral duties to disclose he is deeply involved in development of a competing application. 

So, I continued going to the events he organized and continued to be very open related to EatFab - that's what you read on hackernews, /r/technology and /r/startups afterall: be as open as possible and let as many people as possible know about your ideas. I brought several people to the meetings, in the hope that we'll grow the whole startup community together. I also went to the Startup Live event that he organized in Cluj just because he didn't had enough participants - I convinced one of the Evozon's owners to pay the tickets for a whole team there and also persuaded several other developer friends to come. All of this, just to help the local startup community to grow and to have meaningful events here.

The cunning gets real

In September 2013, I saw an ad on the biggest social network, aimed exactly to EatFab's market: office food ordering. After thorough investigation (because the domain owner enabled private registration), I found out that the man behind it is Andrei Barabas, the owner of Barandi Solutions - a company from Cluj, with its owner deeply involved in the startup "community" created by Marius Mocian. Andrei also participated to the Startup Live event I mentioned earlier, as a mentor and member of the jury. 

Let me remind you that this was happening almost a year after I told them about my approach on the food ordering market: office delivery for groups of people. And 4 months after Marius's application launch (not quite his app - he's just an employee there) - an application that didn't had the expected impact on the market, although it's a very sexy application and they had a decent budget for marketing.

I found the idea of a competing web application, exactly in Cluj, exactly on the main workings of EatFab, after a very short period of an unsatisfactory launch of a competing app, done by a guy who knew about EatFab as a huge coincidence.

Being in the same market, I thought about letting Marius Mocian know about my findings. 
I also asked him if he knows anything about it - his answer was a very strong "I have no clue", but said that he'll ask Andrei about it. A few days later I asked Marius if he talked with Andrei and he said that yes, but that he can't tell what the site is about and that I'll have to ask Andrei.
Today I met with Andrei (the guy who works on EatFab's copycat) and asked him about what he's working on. 
His answer "The web part of Marius's application"

Business rules, and types of people

While what Marius Mocian did is not illegal (not from what I know at least), it is highly immoral: lying, deceiving, cunning and betraying are not healthy ways to build communities and businesses. While my unfair advantage is the usage of +Perl and +Mojolicious, having a high productivity and short time to market, it looks like Marius takes the idea of unfair advantage literally. 
Marius's kind of people when employed, are able to develop a parallel business based on your business model while you pay them a monthly income in good faith. They're able to steal the source code of your application, put a different skin on it and try to build a company based on it (Marius said once that copycats of his app started to appear on the market soon after their launch - an affirmation which in hindsight might mean more than I thought). 

I hate rants and public complaints, and this post is exactly that, but, while I learned about Marius Mocian the hard way, I want to ask you to help other people find out about this typology. 
So, please share this article on reddit, hackernews and wherever other people involved in technology and startups are present so that when someone will be interested to collaborate with Marius, they'll do it knowingly.

Also, by making this type of articles popular, people will become aware on the importance of honesty and will realize that the greatest asset we have as individuals is our reputation.

Sunday, October 13, 2013

Why I'll never leave Romania as a software developer

I am a +Perl software developer for 3 years and I'm a paid software developer for 7 years. I live in Cluj-Napoca, which is the second most populous city in Romania. 

It's been around 4 years since I started to have this feeling that I wouldn't have the same standard of living in another country as a software developer that I have in Romania. Back then I was netting around 700 EUR/month. Given that the average net income in Romania in that period was less than 325.91 EUR, it was probably the fact that I'm earning more than 2x than the national average income that created this feeling that I don't want to leave. Anyway, that was just a feeling and although I was earning that much compared to the rest of the people, I felt like struggling with money from one month to another. This struggling was caused  by my lack of money management, by the fact that back then my wife just started as a lawyer and the income she brought was nearly zero and by the fact that the overall purchasing power in Romania is extremely low.

Programmer's Income in Cluj-Napoca

Although the trend changed here and there from time to time, the general rule for paying a decent software developer in Cluj is the following (I'm always talking about after tax money - net income): 

  1. the developer starts with about 400 EUR
  2. every 6 months she gets a 100 EUR raise

Within some exceptional cases, things might vary - for good, or bad. 
In a good sense the programmer is able to force a raise:
  1. by simply asking
  2. by going to interviews to other companies,
  3. by changing workplaces from company A to company B and then back to A
  4. and of course, by having extraordinary performances and negotiating a raise
In a bad way, programmer's income can increase slowly if:
  1. the company he works for does not perform well
  2. he is not a good negotiator
  3. the company is a shitty one and, given that he's satisfied with what he earns, is not raising his salary although he deserves so
  4. he is not performing well

So, it not exceptional to find a programmer with 5 years of experience netting 1500 EUR/month, or one with 7 years of experience who earns 1700 EUR/month.

From Feelings to Numbers

Recently I found the great numbeo site which gathers prices from the cities all over the world and exposes them publicly. More, it can show comparisons between 2 cities regarding prices, salaries and correlating that with the total purchasing power, it gives estimates of one's needed income in order to live in another city.  With its help I could justify the feelings and confirm my hunches that it's impossible to live that well in other part of the world as I do in Cluj:

CityReference IncomeRent in foreign cityIncomeYearly net income
New York48485,494.402,214.007,708.4092,500.80
San Francisco44845,081.872,216.007,297.8787,574.40

How I reached those numbers

Reference - it is how much one should earn in the given city to have the same quality of life as in Cluj, when in Cluj earns 1500 EUR net/month. In the table are displayed money after taxes, or net income, paying rent in both cities.
Income 1 - It is the net salary that one should earn in in the given city in order to be at the equivalent of 1700 EUR in Cluj, paying rent in both cities. I consider 1700 EUR, because this is close to my actual salary and it is an average income for one developer with 7 years of experience.
Rent in foreign city - rent for a 3 bedroom apartment, outside of city centre
Income 2 - given that I don't have to pay rent in Cluj and I'd have to pay in the foreign city, this is computed by accumulating Income 1 column and Rent in foreign city column
Yearly net income - Income 2 column multiplied with 12 

More Data Needed

We'd definitely have a much more clearer image if there would be a column with average programmer net income in those cities. Unfortunately, most of the sites I've looked are displaying only the gross (pre-tax) yearly income and it is rather impossible to compute the net income without thoroughly knowledge of the local laws and fiscal policies. So, if you have knowledge of the average net income a programmer earns in the above cities, please share them with us in the comments and I'll update this post.

Programmers Lifestyle in Cluj-Napoca

Given the low purchasing power in Romania in general, the day by day prices are also very small. Have a look at the numbeo page with prices for Cluj
In 1700 EUR/month you have whatever type of life you want - for a party animal, a way of living here can be: 
  1. eat in the city every day (12 EUR for 3 meals/day * 30 days = 360 EUR/month).
  2. go out in the most expensive clubs every weekend (30 EUR/night * 8 nights = 240 EUR/month)
  3. have as many beers you can drink every day of the work week in the most expensive pubs (5 beers * 1.5 EUR/beer * 22 days = 165 )
  4. circulate only by taxi (5 EUR/day * 30 days = 150 EUR)
  5. pay rent and utilities (370 EUR)
  6. total: 1285 EUR/month
If you like to live healthy, the costs are much lower. 
Cluj-Napoca is a university city, during the academic year its population increases with 33% (100 000 students are here) making it a busy town. Almost every day there is some cultural event to be part of, a movie projection somewhere, a concert to attend, or a party in some club. Being surrounded by so many young people makes me feel younger (I'm not that old though, I'm 31).
I live at one end of the city and Evozon's office is in the center of the town. It takes me 10 minutes by car to reach there, it's great.


Besides money, there are definitely other things when I considered moving, like entrepreneurial opportunities. That is why I chose the above cities: they are some of the most active cities with regards to startups and IT in the world. Those would be the cities I'd consider moving to when my entrepreneurial desires will take over. But until then, I am staying here and I'm doing my best to be an active part of the young startup communities that are getting born in Cluj.

If you read this far and liked the article, get rid of your shyness and share it using the buttons on the left :)

Saturday, August 17, 2013 for promoting Perl

I got the opportunity to be present at YAPC::EU 2013 in Kiev and it was great. I even had a lightning talk in which I talked briefly about PRForge and presented a way in which it can help the perl ecosystem to increase its overall reach and audience.

Although I prepared my talk thoroughly beforehand (by repeating it more than 10 times in front of my computer's camera), when I reached the stage my voice started shaking and I got so nervous that I wanted to run off the stage, thus I didn't manage to get into much detail regarding prforge. I hope this post will clarify the details I left out of the presentation and bring in some more.

What is PRForge

PRForge is a web platform, where users can create groups based on shared, common interests. Whenever a member of a group posts something in that group, the posted URL will get promoted automatically on each other's member social profile through a set of social network actions: 
  • facebook share
  • facebook like
  • retweeted
  • favorited on twitter
The above are the social actions that we've implemented for now. In the near future we might integrate actions on Google+, LinkedIn, Pinterest and others.

PRForge is made with Perl, Mojolicious, DBIx::Class, Bootstrap and a healthy dose of love and passion.

Popularize Perl through PRForge

Use PRForge to promote Perl and get in a win-win-win situation, whichever of the below categories you find yourself in:

Perl supporters, fans and enthusiasts

You will get to be seen by your friends as hard core perl users and perl evangelists, because you'll have several perl related articles on your social network profiles with no effort.

Perl bloggers and content creators

You will increase your overall audience because of the contstant and extended sharing that takes place through PRForge.

Perl community

The overall increase in perl awareness can be nothing but beneficial to all programmers, because they will be exposed to an efficient and highly productive language - Perl.

Get up and running with PRForge and promote Perl

In order to use PRForge to promote perl, you have to satisfy several conditions:
  • you must have an account on PRForge
  • you must be a member of the Perl group on PRForge
  • you must have PRForge's Firefox plugin installed
  • you must have Facebook and Twitter accounts logged in with that Firefox instance
If you want to be able to promote Perl related links through the group, you must have the role of influencer in the group. Right now, I am the only person who can promote you to influencer, because the UI is not implemented yet in PRForge. So, please hit me an email after you join and ask me to make you one at tudorconstantin at gmail, or write in the comments section of this blog post (although, I think I'll find out more through the email)

  1. Sign-up PRForge and join the Perl Group
  2. Download (from the "Go get it champ" URL in the left menu bar) and install (by drag&dropping the prforge.xpi file downloaded earlier over your ff browser) the Firefox plugin
  3. Log into FB and Twitter on that FF instance
  4. Drop me an email and let me know if you want to be an influencer (if you want to be able to submit perl stuff to be promoted through the group)
That should be it - let the Firefox browser instance running with your FB and Twitter accounts logged in, and it should get jobs to to from PRForge whenever an influencer posts something to the group.

Promote Links

For now, only individual Facebook and Twitter posts can be promoted. So, below are the steps you need to make once you are an influencer in the Perl group.

For Facebook: 
  • the one who promotes the URL, will share it on facebook publicly
  • go to the individual link of the post (by clicking on the timestamp near the world globe icon of the post)
  • paste that link into PRForge

For Twitter:
  • go to the individual URL of the tweet (click on the tweet, then click on details)
  • paste that link into PRForge

Privacy Concerns

You have to install the PRForge Firefox plugin, which, as any other plugin, can do a lot of stuff - the only thing PRForge does, is making requests to the social networks that you enabled for each group you are a member of and to to ask for jobs, in the context the browser has (ie: in the name of the logged in account).

Regarding what other users will do (what links they'll share), we can not know that beforehand, but we start with the assumption that all the members of the group and especially the influencers are well intended. I will do my best to find out the relationship each influencer has with Perl and deny the advancement to influencer to people that have absolutely no whatsoever with Perl.
Will any influencer be able to submit links that promote the manly blue pill and fake brand watches? Sure they will, but just once, because they'll get banned right afterward.

I want to let you know that PRForge is in close, private beta, and the only group that got access until know, is the Perl group. This is because I feel that programmers can relate better to potential bugs that might appear in early stage products (like PRForge).

If my YAPC lightning talk didn't convince you to join PRForge, I hope this post did, so please sign up, join the perl group and start making noise about Perl. It's a whole world out there who doesn't know what is losing for not using Perl - let's help them!

That's it. If you need further help, please don't hesitate to contact me - in the comments or at the email I specified earlier in the post.