Daylight

Blog about business, people, and technology.

Simple Python SMTP server for developmentMartynasAug 17

As developers we need a local SMTP server on our machines to test web applications while developing. Standard Python library includes a built-in SMTP server for debugging purposes that is ideal for our needs:

$ python -m smtpd -n -c DebuggingServer localhost:1025

Configure your web application to send email to localhost port 1025, and you will see email messages printed out to the terminal window.

If you use Django framework, add two lines to settings.py file of your project:

EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

Good luck.

MySQL extension for Ruby on Ubuntu 9.04ArnasJul 30

If you try to install MySQL library for Ruby using standard "gem install mysql" command you will get an error like this:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.
        
/usr/bin/ruby1.8 extconf.rb install mysql
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
        from extconf.rb:1

There might be a problem with default Ubuntu dependencies for Ruby package.

Follow three steps to install MySQL extensions for Ruby.

1. Install Ruby development files:

$ sudo apt-get install ruby1.8-dev

2. Install required MySQL development files:

$ sudo apt-get install libmysqlclient15-dev

3. And now you can install MySQL extension:

$ sudo gem1.8 install mysql

That's it!

ARTVILNIUS'09MartynasJul 13

July 8-12 the first international contemporary art fair in the Baltic States ARTVILNIUS'09 took place in Vilnius. We were sponsors of the event, so I am pleased to tell you briefly about my visit.

More than 100 art galleries from 31 countries exhibited their works of art. It was impressive. Three large rooms of the exhibition palace where full of people. There were so many artists, foreigners, works of art, and visitors.

I am very happy that we had the opportunity to support this initiative and help to use the technology to the dissemination of art.

The Future of Software DevelopmentMartynasMar 12

There is a great article about agile software development. It's like a short introduction to Agile for managers.

Click here to read it at ReadWriteWeb.com

Some ideas that I liked:

  • "The Waterfall Model is now considered a flawed method because it is so rigid and unrealistic"
  • "To build software today all you need is a few good men (or women!)"
  • "Using the Waterfall Model, these changes were impossible, the development cycle was too long, systems were over engineered and ended up costing a fortune, and often did not work right"
  • "...in nature, dynamic systems are not engineered, they evolve"
  • "Make the simplest possible system that satisfies today's requirements and when tomorrow comes, be ready to adapt"
  • "Like living organisms, these systems are continuously reshaped to fit the dynamic landscape of changing requirements"
  • "Without a doubt, agile methods made a major impact on how we think about building software today - dynamically and continuously"
  • "Digg, del.icio.us, YouTube and other poster children of the new web era were developed by just a handful of programmers"
  • "Equipped with a modern programming language, great libraries, and agile methods, a couple of smart guys in the garage can get things done much better and faster than an army of mediocre developers"

What SOA means to business?MartynasMar 02

Recently we have been talking about RESTful SOA principles. This topic is very interesting, so we are going to write about our experiments more in the future.

Who needs SOA? Why some people say that this is the only way to build good software for today's and tomorrow's needs? Why so many companies have been investing so much money to implement SOA solutions and SOA governance?

The answer is: this is because SOA should dramatically lower the costs of software development. Thomas Erl in one of his books talks about SOA from the business point of view. This is what I think after reading it:

  • SOA-based solutions cost 1.5x more to develop at first
  • Then SOA-based solutions cost 6x less to grow and reuse web services
  • It is much cheaper to create new software using the collection of web services
  • SOA-based IT infrastructure is more flexible

This is the theory of SOA and real numbers depend on situation, but they seem to be true.

As for everything else, harmony exists and SOA has some problems too:

  • SOA-based software is slower and may require optimization workarounds
  • The first stage of SOA-based software development is more expensive
  • Organizations have to align themselves to SOA and implement SOA governance to avoid SOA failure

Idiles people experienced that too. One of the biggest problems in our SOA development was the speed of those web applications. We had to put more time and money to make optimizations and fix problems that do not exist in monolithic apps. When you have loosely-coupled web services, you cannot do joins and other operations on the database layer, so some logic is put into the code and it becomes much slower. Now we try to avoid this developing RESTful web apps that are small, well-structured and implements a set of logic for use in other web applications.

Practice gives you lessons and makes you better each time you fail. We hope this blog is will be helpful for you.

Agile Scrum guarantees higher ROIMartynasFeb 18

We use Scrum project management methodology that works great if you know how to do it right. I recommend the book Scrum and XP from the Trenches by Henrik Kniberg, we have learned a lot from it.

One of the best things in software development using Scrum is high return on investment (ROI) for the customer and smooth work for the development team without big bottlenecks. Work becomes pleasure when is managed in Agile fashion.

If you use old-fashioned Waterfall principles for your project (that are still great for manufacturing, but don't work in software business), you can implement 10 features from 12 planned (for example) if you meet risks, planning issues or changing business needs.

If you use Scrum, you can implement the same 10 features from 12 planned because of the same reasons, but those 10 features may differ a lot from what Waterfall would offer.

With your 10 features implemented using Agile techniques you will probably get more benefits, because they are what you need today, not what you signed off 4 months ago. This is a big difference. You pay only for feautures you need when you have more information, not for those that exist on the contract.

And this is the rule: in every project about 50% of all features are less important and means lower ROI. Furthermore, only about 20% of planned features are really important for benefiting in less time, and the rest of them can be reprioritized and implemented in the near future.

Experimenting with lightweight SOAMartynasFeb 03

Service-Oriented Architecture (SOA) is a software architecture paradigm for creating highly-reusable software: at first you create a collection of lousely-coupled components called Web Services, then compose software reusing those components without need to reimplement or install them each time. This is a very abstract description of SOA, you can find more information on the internet or books like Service-Oriented Architecture (SOA): Concepts, Technology, and Design by Thomas Erl, and other sources.

SOA and Web Service are well known words in Java and .NET communities today, because IBM, Microsoft, Sun, HP, Intel and other large corporations have been creating SOA standards, tools and middleware for almost 10 years now.

But what about the others? Do Python, Ruby, PHP and other web-oriented communities that dominates the web market today use SOA?

Practice shows that SOA is for effective IT infrastructure, but it is not widely used for web applications today. On the other hand, Amazon.com, eBay and LinkedIn are only a few examples of successfull SOA for large web applications.

Developers who like REST says that the internet was RESTful web services platform from the beginning. Depending on the point of view, they are right. Internet web sites have web resources (like news, blog posts, etc) with a unique URL (for example, http://www.idiles.com/daylight/1 is a web resource). RESTful web services are very interesting and lightweight SOA solution that works. It differs from WS-* standards very much and lacks lot of features, but RESTful web services are very natural and lightweight. We cannot say that REST is better that WS-* or vise versa, but we can say that for Python/Ruby/PHP world REST is the answer for professional web development.

Last year Idiles developers have been experimenting much with lightweight SOA using Pylons, WSGI and JSON, developing easy-to-use SOA middleware called Dragonfly for use in our own projects. We have been asking ourselves: how can we do more in less time and avoid deep abstractions for reusable components so that web applications remain light and won't become slow and hard to maintain elephants? We have learned a lot, made some mistakes, and today it is much more clear what is bad SOA and what practical SOA for lightweight solutions. We are going to talk more about SOA here in the future, also Idiles is going to make the Dragonfly open source this year.

This is how WS-* and RESTful web apps differ:

  • for WSDL/SOAP based software you have to create web services using well-know tools like NetBeans and integrate them in your software using standard SOAP calls
  • for REST based web services you have to develop small and specific web applications that have RESTful APIs with automated data transport (using Dragonfly)

There is a niche where RESTful SOA together with scripting languages are great. It is very important to notice that there are no universal solutions. RESTful SOA will success in one environment and fail in another. The same with WS-* and other technologies. Nevertheless, for small and mid-sized web applications that run online business we are very happy to use Python and other web-related open source technologies.

Agile works for both sidesMartynasJan 23

Agile is the answer for today's dynamic web applications development. Idiles team members have been developing software for more than 9 years now on their own, and 2 years for Idiles, so we tried several different ways of doing the job right:

The best way depends on the project, the team and the client, but for internet business app development Agile seems to be #1. We think that it is not impossible to develop web applications fast and for the smallest possible cost that do great things for customer business. And if you can develop software that makes profit fast, the customer will be very happy and may ask you for help implementing more functionality or another app (this is what we learned from practice). This is great for both the customer and the developers, so we believe that Agile is the key to internet business success. Agile is more human-oriented, not process-oriented.

Gainlog beta releasedMartynasJan 06

We are very happy to announce the first release of our new work organizing tool Gainlog.

At first Gainlog was created for ourselves to solve common work management problems, and it worked! We made Idiles team more effective by using Gainlog, and we are still looking for new practical work organizing and agile project management ideas.

Feel free to try Gainlog yourself and check interesting features like task lists, employee workload calendar, labels and other capabilities. Gainlog is free if used by a single person, nevertheless, teams can try it for free 30 days, and then pay a small subscription payment per month.

We hope that Gainlog will help you at work too. Please visit gainlog.com for more information.

Daylight blog

Read more →

Featured links

What clients say

"Passionate, determined, and caring. Deliver excellent quality of work. Great Partners."

Eglė Karalytė
InfinVision

Contact us

Let's discuss your business ideas and wishes together.

Email hello@idiles.com
Phone +370 612 60488
+370 5 2357131