Showing posts with label IT. Show all posts
Showing posts with label IT. Show all posts

Thursday, April 23, 2015

The Smart Phone Is Taking Over

When smart phones appeared first on the market I was not impressed. Ok, I saw you can use them as a mini-computer to browse on the net, read your emails or chat on the go, but apart from this I didn't see any killer app that would make my life easier. I'm not into gaming, I'm not into photography, so having two cameras or a processor that can run whatever game was not touching me at all. The first application that convinced me to buy such a phone was Google Maps (or any other maps) combined with GPS capability. I didn't have a GPS at that time, but I was considering buying one, so when I found that I can do the same thing with a phone I just bought the phone. The smart phone just killed an entire market of GPS devices, their only niche at this moment are the car companies where they can get deals to pre-instal their devices.
Now and then I find an application that can really help me with some task. If you go to a baby expo you will see countless of systems to track your baby if she sleeps in another room for example. Not needed anymore, there are application for your phone like Baby Monitor which can do the same thing and call another phone if your child starts crying in the middle of the night. Two days ago I was in line at the pharmacy and as usually I didn't have the fidelity card which gives you some discount with me. The man behind me at the queue told me that there is an application (VirtualCards which is tailored for the Romanian market, but there are others too) where you can store all your cards. It generates the same bar code as the one on the card and you can scan your phone instead of the actual card. Bang, you don't have to carry all those cards with you, the phone will suffice.
So if you know other cool applications for the phone let me know, I'm interested in simplifying my daily routine :)

Wednesday, February 20, 2013

Another plugin bytes the dust

Two years ago I went to a conference at University Politehnica of Bucharest and in one of the panel discussions there was a topic about the future of web technologies. I stated my point that plugins in browsers are annoying and the trend in the following years will be to get rid of them. Some guys from Adobe Romania were very vehement and upbeat about the future of Flash especially. Two years on the situation is clear: Flash was banned on iPhones and iPads for stability and security reasons, Adobe announced that they will no longer develop Flash and open-sourced the Flex platform, we have a version of YouTube that runs videos using HTML5 player. And a few days ago Mozilla released a new version of Firefox that has a PDF viewer, so you can see PDF files in browser without using the Adobe Reader plugin. I am on the beta update channel for Firefox, so I had this feature for a couple of months and it works just fine. Since the PDF viewer is written in JavaScript and it's open source I expect a similar feature to occur in the other browsers in the near future. Enjoy!

Monday, February 04, 2013

El Plato Supreme

The patent war goes to Super Bowl. Maybe you heard about patents, but even if you didn't, they already affect your life one way or another. The principle behind the concept of patents is correct, namely to protect one's invention for a period of time, so that he can excessively benefit from her idea. The problem is that this system leads to everybody rushing to claim a patent on any idea they have each morning and to formulate their brand new idea as vague as possible, so one can later claim that is applicable in different places than where was used originally. In IT field the result was also a series of patent wars and lots of litigation, which further made companies acquire as many patents as possible in what is effectively an arms race. The latest war of this kind is between Samsung and Apple over the design and features of smart phones and this war was brought to the most watched television event in U.S., the Super Bowl final in American football, by the commercial bellow. Enjoy the game!

Friday, December 16, 2011

Invest in a software developer today!

The post about hug a developer today was by far the most visited entry on this blog ever, so I think it's about time to push it to the next level. In these dire financial times, but at a moment when holidays are approaching, what better option do you have than to invest in a software developer? Because according to the well respected business magazine Forbes:

"The one absolutely solid place to store your capital today — if you know how to do it – is in software developers’ wallets. If the world survives looming financial apocalypse dangers at all, this is the one investment that will weather the storms. It doesn’t matter whether you are an individual or a corporation, or what corner of the world you inhabit. You need to find a way to invest in software developers."

You don't really need to read all the details in the article, as the author at some point thinks very low of us software developers, but it's important to understand the basic things: how tough and miserable the life of a software developer can be (please insert a hug here) and, on the other hand, how good is an investment in a software developer (probably the best investment you can do at this moment). So here is a very easy way you can profit from this once in a lifetime opportunity: I officially open my wallet for donations investments from anybody interested in such a good business. Contact me and I will provide detailed instructions on how to quickly transfer your money in my wallet. I can even promise to write a few lines of code for each donation deposit received :)

Don't waste time anymore: invest in a software developer today!

Thursday, October 06, 2011

The beauty of computers

What can be beautiful in can of silicon and wires and which also usually contains lots of bugs? Knuth entitled his famous books "The Art of Computer Programming" because he considered that computer programming cannot be considered yet a science, but it's rather a craftsmanship. All software licensees have a part where it is stated that the particular software is not "fit for a particular purpose" (see for example Mozilla Public License, section 7 here). The best joke about software engineers is the one where all kind of engineers try to fix a car and the software guy proposes that all step out of the car, get back in and try to start it again. This is how much the programmers trust their work! So in this wonderful (i.e. full of unanswered questions) industry of computers there was a man who maybe thought: we may not be able to do it right, but at least let's make it beautiful. And he did it time and again: from the calligraphic fonts that he introduced on computers, the mouse and the careful researched user interfaces, to the overall design of all Apple products. Then Bill Gates copied some of his ideas and Google guys were probably inspired by him when they designed their user interface. If so many people still use these beasts called computers and don't totally hate us for it, it is in part due to the work of Steve Jobs, who for sure will be remembered for a long time.

Saturday, October 01, 2011

Computer science on paper

Blogger changed its interface and templates and when I tried to migrate I lost some of the settings I had on the old one, so I decided to use a new template. The new one it's a tribute to the good old days when we did computer science on paper. You just had to think carefully on the algorithm, write it down on paper, run it in your head again and then eventually get your turn to work on a computer to implement it (punch card or even keyboard version cause we were kind of short on computers). I think that being able to write down the algorithm and run through it really makes one understand it better, so actually in the year when I was a teaching assistant at University of Bucharest I asked many of my students to explain a few steps of their basic algorithms (back-tracking, divide et impera and the like) on paper in order to make sure they understood them and didn't just copy the project from a coleague. Some of them even liked it :)

Tuesday, September 27, 2011

Hug a developer today...



...ability to work under pressure and meet deadlines, flexibility to changing priorities, be able to learn new technologies (like every other month), ability to express ideas in technical and non-technical terms, most unpaid overtime than almost any other profession...

Pouvre, pouvre developers :)

Monday, July 11, 2011

Bubble-sort with Hungarian ("Csángó") folk dance

If you ever got bored while studying sorting algorithms, this is a fun way to do it:



Now in order to evaluate complexity you need to see how tired the dancers are in the worst case scenario :)

Tuesday, May 10, 2011

A cartel of a different kind

According to Webster an economic cartel is "a combination of independent commercial or industrial enterprises designed to limit competition or fix prices". Usually a group of companies conspire to have higher prices on their products (like the recent case of detergent market in E.U., or the infamous notarial price lists from Romania) or to deter other parts to enter their market (what Vodafone and Orange were charged in Romania), but in this case a group of companies tried to fix the price of labour. Well, labour is a special market anyway, with a lot of social implications, but this market usually has an important asymmetry of information over salaries between the employer and the employee, as many private companies require their employees not to disclose their income (the study of asymmetry of information in markets and its implications was developed by Joseph Stiglitz and he was awarded the Nobel prize in economics for it) . Even in these conditions some companies (namely Apple, Google, Adobe, Intel, Intuit, Lucasfilm and Pixar) allegedly engaged in even more anti-competitive practices (like an agreement not to try to hire employees of one another)? I understand that the competition for talented engineers is tough in Silicon Valley, but these companies are among the most profitable on this planet. It's always nice to save some pennies though, isn't it?

See the full story here with a nice diagram showing the suspected bilateral agreements between various companies.

Wednesday, April 27, 2011

Autism - what lies beneath

I first heard about autism in a computer science class, Computer Processing of Pictorial Information, that I took at UMD. It's true that the professor, Yiannis Aloimonos, was quite unconventional and was telling us lots of stories about human and computer vision, and left us to decipher the equations used there by ourselves. One of his main ideas was that in order to make progress in computer vision was to understand as much as possible how the human brain processes the visual stimulus that results in human vision. But apart from recommending us books on human vision research he told us about a book of a different kind: clinical tales of a neurologist (The Man Who Mistook His Wife For A Hat). In this book Oliver Sacks describes various cases of conditions or accidents that lead to an abnormal functioning of the brain and how people cope in these situations. One of the chapters in this book is about autism. This is a born condition that affects some children and which impairs social interaction and communication (a less severe form is the Asperger syndrome). But a good number of these people show some remarkable abilities: superior skills in perception (e.g. the ability to draw very accurate texture details), attention and computing (e.g. the ability to tell in an instant is a fairly big number is prime or not). This lead to a theory that somehow there is a trade-off in our brain: the computing power there is sufficient to be able to do instant computation of prime numbers but most of the time is shut down and the brain is wired for things much more useful to us like the ability to communicate and interact socially with other people.
Now I'm sure you'll have a different view on some piece of news like this one: A twelve year old rewrites Einstein's theory of relativity.

Saturday, April 02, 2011

More than radio: semantic radio

Semantic web is basically the idea of adding some meta-information (usually tags) to the information presented on the web in order to facilitate automatic processing by hinting the computers about what that information is about. For example, the labels that I try to put to my posts that you can see of the left hand side of this blog. The big problem with this approach is the effort needed to tag all the information on the web, that's why there is also a big interest in processing unstructured data, which recently lead to a spectacular Jeopardy show won by a machine build by IBM.
Comming back to radio, this principle of meta data first occured a few years ago when appart from the audio signal the broadcasters added a station id meta data that was used by the radios in the cars to automatically discover the local frequency of an FM radio. This was a nice feature cause once you have your presets in your car then anywhere you would go the radio player will automatically identify the local frequency of that radio based on the radio id metadata.
But a few weeks ago one of my favourite radios (Radio Guerrilla) introduced an even more spectacular feature. They added metadata for the song currently played on the radio, so on the tiny screen in my car I could see the name of the song and singer while playing. I wouldn't care much about this feature on a classic rock radio, cause there I know most of the songs they play, but Gurrilla plays many new songs, especially British and some Romanians ones so before this metadata I was always trying to memorize some lyrics from the songs I liked in order to search for them and identify the song. Now I have right in front of me on the radio display. This will mean I will probably not know the lyrics of the songs anymore :)

Wednesday, March 23, 2011

Java programming nowadays

A colleague hit a problem yesterday while testing in isolation a SCA (Service Component Architecture) component. He was trying to call WSDL method from a Java SCA component using a SCA reference. In this case you actually obtain an implementation of a generic interface com.ibm.websphere.sca.Service, and on this interface you have to use a generic invoke that looks like this:
java.lang.Object invoke(java.lang.String operationName, java.lang.Object input);

In the case the WSDL method you try to invoke has one parameter then you just pass an object (SDO - Service Data Object in fact) of that type to the invoke method, we had such a case and it worked. But what do you in case the WSDL method has 2 or more parameters? Initially we guessed that the input would be an array of objects, but it didn't work (wrong number of arguments exception) and if you think carefully it would be ambiguous to have an array of objects because one cannot distinguish if the invoke should have as many parameters as the number of objects from the array, or just one parameter (array of objects). At this point we were stuck.

So what do you do when you get stuck? You search on Google: for the exception, or a part of the stack trace, add a few keywords that you think are relevant like the application server you are using (WebSphere Process Server 7.0), framework and technology names (SCA, SDO, WSDL, Java, invocation) and the like. Sometimes you get the answer immediately if someone else hit earlier the same problem and posted the solution on a blog or a forum, but this time it was not that easy. I had to search for about 45 minutes, try all kind of keywords, read forums, blogs and help pages until I finally found the solution in a sample in some documentation manual from IBM. You basically have to use the SCA API and create a special wrapper SDO that contains all the input parameters as properties and then pass this object to the invoke method. You can read the full solution here if you are interested :)

Sunday, February 27, 2011

AI-MAS Winter Olympics

On last Sunday I went to the second day of AI-MAS Winter Olympics conference that took place at the Polytechnic University of Bucharest. The main event on this day was a presentation of the machine learning algorithm that it used for implementing Priority Inbox feature in GMail. They basically use a neural network standard algorithm, but the challenge is keeping a separate model (which might have additional user specific features which are instantiated dynamically from some templates) for each particular user and training it as you also manually sort your email. The other issue is of course scalability and processing in real time of data (for example the algorithm takes into account even the time spent reading a particular message to determine if the user really read it, or just opened it to be marked as read). Apart from the presentations there were on display projects done by students. The one I liked most was the Swim Green project done by a team from Babes-Bolyai University. It was a boat-robot which could navigate based on visual input and also pick-up plastic pieces floating on the water. The goal was to propose an automatic clean-up mechanism that could be used on lakes for example. Overall it was a very nice experience and of course I'm glad these kind of things start happening in Romanian universities.

Monday, April 26, 2010

Mastering EJB3.0

Yes, it's a new book and I almost finished it. I read it for a certification exam, after that I'll return to some more novels. It's not entirely new to me since I work with EJB 3.0 for one year and a half now. It's good important concepts like ORM, dependency injection and AOP are becoming part of the official JEE specification, it's bad it took them so long to react. These concepts are de facto standards in the Java world thanks to Hibernate and Spring frameworks.
I also still remember when I first heard about AOP(aspect oriented programming) in Bill Pugh's class at UMD. It seemed a very natural paradigm and I'm glad it made it to mainstream programming so fast.

Sunday, October 18, 2009

Architect, IT architect

So what does an (IT) architect do, apart from designing railroads? Apparently this is a role that started to appear in IT projects around the begging of 21st century (I never heard about IT architects in Star Trek, so I guess they solved the problem of writing software meanwhile) and does something to handle complex projects. I don't see myself as an architect (at least for now), but if you receive an envelope giving you this title, what can you do? Hopefully I'll have some fun when playing the architect part :)

Tuesday, May 12, 2009

Should software makers be liable for their code?

Many software vendors have an EULA (end user license agreement) that basically says that they do not guarantee their software makes a specific thing or is fitted for a specific purpose. Also they state they are not liable for almost anything that happens as a consequence of using that software. Here is an example from the Firefox EULA:

"4. DISCLAIMER OF WARRANTY. THE PRODUCT IS PROVIDED "AS IS" WITH ALL FAULTS. TO THE EXTENT PERMITTED BY LAW, MOZILLA AND MOZILLA'S DISTRIBUTORS, LICENSORS HEREBY DISCLAIM ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES THAT THE PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE AND NON-INFRINGING. YOU BEAR ENTIRE RISK AS TO SELECTING THE PRODUCT FOR YOUR PURPOSES AND AS TO THE QUALITY AND PERFORMANCE OF THE PRODUCT. THIS LIMITATION WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO THIS DISCLAIMER MAY NOT APPLY TO YOU.

5. LIMITATION OF LIABILITY. EXCEPT AS REQUIRED BY LAW, MOZILLA AND ITS DISTRIBUTORS, DIRECTORS, LICENSORS, CONTRIBUTORS AND AGENTS (COLLECTIVELY, THE "MOZILLA GROUP") WILL NOT BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO THIS AGREEMENT OR THE USE OF OR INABILITY TO USE THE PRODUCT, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOST PROFITS, LOSS OF DATA, AND COMPUTER FAILURE OR MALFUNCTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH SUCH CLAIM IS BASED. THE MOZILLA GROUP'S COLLECTIVE LIABILITY UNDER THIS AGREEMENT WILL NOT EXCEED THE GREATER OF $500 (FIVE HUNDRED DOLLARS) AND THE FEES PAID BY YOU UNDER THIS LICENSE (IF ANY). SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL, CONSEQUENTIAL OR SPECIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. "

This practice has become common because the complexity of today's software, the almost endless possibilities in which a software can be used and the interaction with other systems. This makes offering a guarantee on what the software does a very risky thing for the software developer.

It seems the European Commission wants to change this practice and force the software providers liable for their software. Details can be read here. As a consumer I can be only happy that more rights are granted to me, but as a software developer I think enforcing such liabilities on a software provider will lead to dramatic changes in the way the software is produced and priced. It will be much more expensive and more limited in communicating with third party pieces of software. Is this good or bad in the end? It's hard to say, but this kind of law should be carefully evaluated before enforcing it.

Friday, April 11, 2008

Downgrading an application

For the first time in my career I'm working on downgrading an application. We worked for about 7 months on an application where persistence is handled by Hibernate. Due to some license/patents issues with our partner it was decided to migrate the persistence layer to EJB3.0/JPA using the container provided JPA implementation(the application is supposed to be deployed on various application servers - WebSphere and WebLogic for sure - depending on the client). The problem is that the EJB 3.0 standard is less powerful than Hibernate and also the implementation is in version 1.0 (for example WebSphere uses OpenJPA from Apache which is in version 1.0.2) which means missing features and bugs, so this migration turns out to be a downgrading of the application :(

Monday, February 11, 2008

My own Java puzzles

Programming in Java for some time now (about six and a half years) I started discovering myself some Java puzzles. They first appeared as bugs in my code or in some colleague's code and investigating them lead me to discover some unexpected behavior in the core Java API. The two examples I found are the equals and compareTo methods in java.sql.Timestamp and the behavior of HashSet when holding mutable objects. Of course these issues are documented in the Sun's Java API docs(see the notes regarding java.sql.Timestamp and java.util.Set in the Javadocs), but I bet most of the people discover them the hard way :)

Monday, February 04, 2008

Microsoft wants to buy Yahoo!

So Microsoft offered to buy Yahoo! for $44 billions. The reason for the offer is to better compete with Google, but how do they plan to do that: they will definitely better control the instant messaging and web mail markets, but they badly need to improve in search. Also this move would mean that maybe Microsoft will have more open source and Java technologies on their (new) premises. Isn't that funny? :) Maybe we'll see some Java documentation on MSDN network, who knows :)

See two interesting comments on this move on The Register: here and here.

Thursday, January 17, 2008

Shopping spree

Oracle is buying BEA for $8.5bn, Sun is buying MySQL for $1bn. So for now on when I'll work on a project with BEA Weblogic application server and Oracle DB I'll have only one company to bash at. I wonder if BEA closed that bug I opened regarding their server re-start last year. The application would fail to load on server re-start if some work flow exception logging table contained data in it. Cool, isn't it? Probably they closed it to look good to their potential buyers. Anybody buying Microsoft or Google? :)