archive-cr.com » CR » I » INFORMATECH.CR

Total: 292

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • Informatech CR Blog | Geeks from paradise | Page 2
    So this creates an interesting problem because the method signatures of most of the functional interfaces do not declare to throw any exceptions So for instance this is not possible Writer out new StringWriter Consumer String printer s out write s oops compiler error It cannot be done because the write operation throws a checked exception i e IOException but the signature of the Consumer method does not declare it throws any exception at all So the only solution to this problem would have been to create even more interfaces some declaring exceptions and some not or come up with yet another mechanism at the language level for exception transparency Again to make things less worse the expert group decided to do nothing in this case In the words of Brian Goetz in the lambda mailing list Yes you d have to provide your own exceptional SAMs But then lambda conversion would work fine with them The EG discussed additional language and library support for this problem and in the end felt that this was a bad cost benefit tradeoff Library based solutions cause a 2x explosion in SAM types exceptional vs not which interact badly with existing combinatorial explosions for primitive specialization The available language based solutions were losers from a complexity value tradeoff Though there are some alternative solutions we are going to continue to explore though clearly not for 8 and probably not for 9 either In the meantime you have the tools to do what you want I get that you prefer we provide that last mile for you and secondarily your request is really a thinly veiled request for why don t you just give up on checked exceptions already but I think the current state lets you get your job done So it s up to us the developers to craft yet even more interface explosions to deal with these in a case by case basis interface IOConsumer T void accept T t throws IOException static T Consumer T exceptionWrappingBlock IOConsumer T b return e try b accept e catch Exception ex throw new RuntimeException ex In order to do Writer out new StringWriter Consumer String printer exceptionWrappingBlock s out write s Probably in the future maybe JDK 9 when we get Support for Value Types in Java and Reification we will be able to get rid of or at least no longer need to use anymore these multiple interfaces In summary we can see that the expert group struggled with several design issues The need requirement or constraint to keep backwards compatibility made things difficult then we have other important conditions like the lack of value types type erasure and checked exceptions If Java had the first and lacked of the other two the design of JDK 8 would probably have been different So we all must understand that these were difficult problems with lots of tradeoffs and the EG had to draw a line somewhere and make a decisions So when we find ourselves in the dark side of Java 8 probably we need to remind ourselves that there is a reason why things are dark in that side of the JDK Further Reading Related Answer in Stackoverflow Lambda Straw Man Proposal Neal Gafter on The Future of Java Share this Email Facebook Twitter Like this Like Loading April 4 2014 by Edwin Dalorzo Categories Java Programming 14 Comments 6 Days with Windows Phone Disclaimer What follows is my personal opinion it does not reflect Informatech s position necessarily Though I ve tried to be as unbiased as possible it will undoubtedly reflect my views A friend upgrades to a Lumia 920 and a Lumia 900 is left orphaned With a Galaxy Nexus experiment going on since Oct 2012 and waiting for Apple s comeback iOS 7 plus whatever they introduce later this year I dive in for a week to see how the Windows Phone 7 8 experience stacks up Clarifications I hail from a background of Apple devices at least for a couple of years now I had Nokia smartphones before I ve been exploring Android if anything because as a developer it s unforgivable not to have any experience in it but customizability is not something that drives my purchases Beyond specific OS choices I believe in finished polished products I dislike having to hack or otherwise mod my devices Yep that includes spending hours tweaking and configuring I like my stuff to just work with minimal fuss Things can be technologically interesting but in a device I want a product That said let s delve in The Experience What do I usually do in a smartphone that will thus dictate the experience on Windows Phone Pretty much WhatsApp Facebook push Gmail push Google Contacts camera and Dropbox auto photo uploads Yes other things matter but that s what realistically I use most of the time and will be the scope of this review So let s not waste too much time discussing setup which is generally polished suffice it to say that of the above WhatsApp and Facebook were installed from the Marketplace Camera is good but there is no official Dropbox support I routed around this by enabling SkyDrive auto uploads so no biggie When setting up the Google account we hit our first snag Because Google discontinued ActiveSync the only straightforward choice is IMAP setup just for email no calendar or contacts Fortunately you can add Gmail as an Exchange server manually through the end of July This worked OK but the contact import was kinda crappy ie contacts with multiple numbers just had the first imported Once everything was working it took me about a day to get used to the concept of Live Tiles That is the driver of the Windows Phone UI where you ll launch apps get notifications and see periodic content changes of relevant content The idea is novel and elegantly implemented and after months on Android it made me feel that special care had been taken in the consistency and polish of the interface Both were very much welcome In full day to day usage the UI shines though where I felt the most joy was in the touch keyboard It is absolutely a pleasure to use no gestures or swipes straight taps and by far it s the best of any smartphone that I ve used The camera was another pleasant surprise The capture and photo browser were excellent behold The multitasking also requires a bit of getting used to as a long press of the back key will allow you to get an open app list however it will not let you kill any You have to jump in and continually press back until you exit To finish off the stock functionality the People hub was generally useful even though the Google contacts were indeed not wholly sync d It gave quick access to recent contacts and integrated well with social networks Even though Facebook is integrated in the way to properly see your Newsfeed is through the standalone app Which sadly is not developed by FB and is quite honestly sub par to similar offerings on iOS and Android WhatsApp was a similar story the implementation is not up to par with the other platforms and more annoyingly it activated the music controls and gobbled battery As a workaround you have to download a separate app that kills the music controls and run it periodically The app also seemed to implode under heavily used group chats Even with the mediocrity of third party apps I can honestly say the OS is pleasant to use and the tiles are colorful and attractive So rounding out Pros Superb interface extremely polished Quite simply the best touch keyboard I ve ever used on any smartphone Integration between social networks and contacts is almost seamless Excellent camera Lumia hardware is very capable and attractive Integration with Microsoft services is predictably good Cons Synchronization with Google services is poor especially now that ActiveSync was retired App selection and most importantly quality is low low low Years behind iOS and Android WhatsApp drains the battery and requires Stop the Music to kill it every once in a while Multitasking does not allow you close the application from the app list WP 7 8 Lack of a centralized notification area is confusing Conclusion If you re a Hotmail user and you live your life in Exchange and Microsoft Office Windows Phone is a natural fit The Lumia hardware is capable and attractive the UI is very polished and if you can live with the poor app selection and quality you ll enjoy it However if you use Google services and have gotten used to the abundance of other app stores the UI may not compensate the tradeoffs for functionality you would have to give up In the future this may change but at present it s too much to take 9 933333 84 083333 Share this Email Facebook Twitter Like this Like Loading June 13 2013 by pjpalm801 Categories Mobile Tags lumia windowsphone Leave a comment Memoized Fibonacci Numbers with Java 8 Since today is Fibonacci Day I decided that it would be interesting to publish something related to it I believe one of the first algorithms we all see when learning non linear recursion is that of calculating a Fibonacci number I found a great explanation on the subject in the book Structure and Interpretation of Computer Programs SIC and I dedicated some time to playing with the Fibonacci algorithm just for fun While doing so I found an interesting way to improve the classical recursive algorithm by using one of the new methods added in Java 8 in the Map interface and which I used here to implement a form of memoization Classical Recursive Fibonacci In the classical definition of Fibonacci we learn that We program this very easily in Java public static long fibonacci int x if x 0 x 1 return x return fibonacci x 1 fibonacci x 2 Now the problem with this algorithm is that with the exception of the base case we recursively invoke our function twice and interestingly one of the branches recalculates part of other branch every time we invoke the function Consider the following image taken from SIC that represents an invocation to fibonacci 5 Clearly the branch to the right is redoing all the work already done during the recursive process carried out by the left branch Can you see how many times fibonacci 2 was calculated The problem gets worse as the function argument gets bigger In fact this problem is so serious that the calculation of a small argument like fibonacci 50 might take quite a long time Memoized Recursive Fibonacci However there is a way to improve the performance of the original recursive algorithm I mean without having to resort to a constant time algorithm using for instance Binet s formula The serious problem we have in the original algorithm is that we do too much rework So we could alleviate the problem by using memoization in other words by providing a mechanism to avoid repeated calculations by caching results in a lookup table that can later be used to retrieve the values of already processed arguments In Java we could try to store the Fibonacci numbers in a hast table or map In the case of the left branch we ll have to run the entire recursive process to obtain the corresponding Fibonacci sequence values but as we find them we update the hash table with the results obtained This way the right branches will only perform a table lookup and the corresponding value will be retrieved from the hash table and not through a recursive calculation again Some of the new methods in the class Map in Java 8 simplify a lot the writing of such algorithm particularly the method computeIfAbsent key function Where the key would be the number for which we would like to look up the corresponding Fibonacci number and the function would be a lambda expression capable of triggering the recursive calculation if the corresponding value is not already present in the map So we can start by defining a map and putting the values in it for the base cases namely fibonnaci 0 and fibonacci 1 private static Map Integer Long memo new HashMap static memo put 0 0L fibonacci 0 memo put 1 1L fibonacci 1 And for the inductive step all we have to do is redefine our Fibonacci function as follows public static long fibonacci int x return memo computeIfAbsent x n fibonacci n 1 fibonacci n 2 As you can see the method computeIfAbsent will use the provided lambda expression to calculate the Fibonacci number when the number is not present in the map this recursive process will be triggered entirely for the left branch but the right branch will use the momoized values This represents a significant improvement Based on my subjective observation this improved recursive version was outstandingly faster for a discrete number like fibonacci 70 With this algorithm we can safely calculate up to fibonacci 92 without running into long overflow Even better to be sure that our algorithm would never cause overflows without letting the user know we could also use one of the new methods in Java 8 added to the Math class and which throws an ArithmeticException when overflow occurs So we could change our code as follows public static long fibonacci int x return memo computeIfAbsent x n Math addExact fibonacci n 1 fibonacci n 2 This method would start failing for fibonacci 93 If we need to go over 92 we would have to use BigInteger in our algorithm instead of just long Notice that the memozied example uses mutations therefore in order to use this code in a multithreaded environment we would first need to add some form of synchronization to the proposed code or use a different map implementation perhaps a ConcurrentHashMap which evidently may impact performance as well Arguably this would still be better than the original recursive algorithm Share this Email Facebook Twitter Like this Like Loading May 8 2013 by Edwin Dalorzo Categories Java Tags fibonacci java 7 Comments Java 8 Optional Objects In this post I present several examples of the new Optional objects in Java 8 and I make comparisons with similar approaches in other programming languages particularly the functional programming language SML and the JVM based programming language Ceylon this latter currently under development by Red Hat I think it is important to highlight that the introduction of optional objects has been a matter of debate In this article I try to present my perspective of the problem and I do an effort to show arguments in favor and against the use of optional objects It is my contention that in certain scenarios the use of optional objects is valuable but ultimately everyone is entitled to an opinion and I just hope this article helps the readers to make an informed one just as writing it helped me understand this problem much better About the Type of Null In Java we use a reference type to gain access to an object and when we don t have a specific object to make our reference point to then we set such reference to null to imply the absence of a value In Java null is actually a type a special one it has no name we cannot declare variables of its type or cast any variables to it in fact there is a single value that can be associated with it i e the literal null and unlike any other types in Java a null reference can be safely assigned to any other reference types See JLS 3 10 7 and 4 1 The use of null is so common that we rarely meditate on it field members of objects are automatically initialized to null and programmers typically initialize reference types to null when they don t have an initial value to give them and in general null is used everywhere to imply that at certain point we don t know or we don t have a value to give to a reference About the Null Pointer Reference Problem Now the major problem with the null reference is that if we try to dereference it then we get the ominous and well known NullPointerException When we work with a reference obtained from a different context than our code i e as the result of a method invocation or when we receive a reference as an argument in a method we are working on we all would like to avoid this error that has the potential to make our application crash but often the problem is not noticed early enough and it finds its way into production code where it waits for the right moment to fail which is typically a Friday at the end of the month around 5 p m and just when you are about to leave the office to go to the movies with your family or drink some beers with your friends To make things worse the place where your code fails is rarely the place where the problem originated since your reference could have been set to null far away from the place in your code where you intended to dereference it So you better cancel those plans for the Friday night It s worth mentioning that this concept of null references was first introduced by Tony Hoare the creator of ALGOL back in 1965 The consequences were not so evident in those days but he later regretted his design and he called it a billion dollars mistake precisely referring to the uncountable amount of hours that many of us have spent since then fixing this kind null dereferencing problems Wouldn t it be great if the type system could tell the difference between a reference that in a specific context could be potentially null from one that couldn t This would help a lot in terms of type safety because the compiler could then enforce that the programmer do some verification for references that could be null at the same time that it allows a direct use of the others We see here an opportunity for improvement in the type system This could be particularly useful when writing the public interface of APIs because it would increase the expressive power of the language giving us a tool besides documentation to tell our users that a given method may or may not return a value Now before we delve any further I must clarify that this is an ideal that modern languages will probably pursue we ll talk about Ceylon and Kotlin later but it is not an easy task to try to fix this hole in a programming language like Java when we intend to do it as an afterthought So in the coming paragraphs I present some scenarios in which I believe the use of optional objects could arguably alleviate some of this burden Even so the evil is done and nothing will get rid of null references any time soon so we better learn to deal with them Understanding the problem is one step and it is my opinion that these new optional objects are just another way to deal with it particularly in certain specific scenarios in which we would like to express the absence of a value Finding Elements There is a set of idioms in which the use of null references is potentially problematic One of those common cases is when we look for something that we cannot ultimately find Consider now the following simple piece of code used to find the first fruit in a list of fruits that has a certain name public static Fruit find String name List Fruit fruits for Fruit fruit fruits if fruit getName equals name return fruit return null As we can see the creator of this code is using a null reference to indicate the absence of a value that satisfies the search criteria 7 It is unfortunate though that it is not evident in the method signature that this method may not return a value but a null reference Now consider the following code snippet written by a programmer expecting to use the result of the method shown above List Fruit fruits asList new Fruit apple new Fruit grape new Fruit orange Fruit found find lemon fruits some code in between and much later on or possibly somewhere else String name found getName uh oh Such simple piece of code has an error that cannot be detected by the compiler not even by simple observation by the programmer who may not have access to the source code of the find method The programmer in this case has naively failed to recognize the scenario in which the find method above could return a null reference to indicate the absence of a value that satisfies his predicate This code is waiting to be executed to simply fail and no amount of documentation is going to prevent this mistake from happening and the compiler will not even notice that there is a potential problem here Also notice that the line where the reference is set to null 5 is different from the problematic line 7 In this case they were close enough in other cases this may not be so evident In order to avoid the problem what we typically do is that we check if a given reference is null before we try to dereference it In fact this verification is quite common and in certain cases this check could be repeated so many times on a given reference that Martin Fowler renown for hist book on refactoring principles suggested that for these particular scenarios such verification could be avoided with the use of what he called a Null Object In our example above instead of returning null we could have returned a NullFruit object reference which is an object of type Fruit that is hollowed inside and which unlike a null reference is capable of properly responding to the same public interface of a Fruit Minimum and Maximum Another place where this could be potentially problematic is when reducing a collection to a value for instance to a maximum or minimum value Consider the following piece of code that can be used to determine which is the longest string in a collection public static String longest Collection String items if items isEmpty return null Iterator String iter items iterator String result iter next while iter hasNext String item iter next if item length result length result item return result In this case the question is what should be returned when the list provided is empty In this particular case a null value is returned once again opening the door for a potential null dereferencing problem The Functional World Strategy It s interesting that in the functional programming paradigm the statically typed programming languages evolved in a different direction In languages like SML or Haskell there is no such thing as a null value that causes exceptions when dereferenced These languages provide a special data type capable of holding an optional value and so it can be conveniently used to also express the possible absence of a value The following piece of code shows the definition of the SML option type datatype a option NONE SOME of a As you can see option is a data type with two constructors one of them stores nothing i e NONE whereas the other is capable of storing a polymorphic value of some value type a where a is just a placeholder for the actual type Under this model the piece of code we wrote before in Java to find a fruit by its name could be rewritten in SML as follows fun find name fruits case fruits of NONE Fruit s fs if s name then SOME Fruit s else find name fs There are several ways to achieve this in SML this example just shows one way to do it The important point here is that there is no such thing as null instead a value NONE is returned when nothing is found 3 and a value SOME fruit is returned otherwise 5 When a programmer uses this find method he knows that it returns an option type value and therefore the programmer is forced to check the nature of the value obtained to see if it is either NONE 6 or SOME fruit 7 somewhat like this let val fruits Fruit apple Fruit grape Fruit orange val found find grape fruits in case found of NONE print Nothing found SOME Fruit f print Found fruit f end Having to check for the true nature of the returned option makes it impossible to misinterpret the result Java Optional Types It s a joy that finally in Java 8 we ll have a new class called Optional that allows us to implement a similar idiom as that from the functional world As in the case of of SML the Optional type is polymorphic and may contain a value or be empty So we could rewrite our previous code snippet as follows public static Optional Fruit find String name List Fruit fruits for Fruit fruit fruits if fruit getName equals name return Optional of fruit return Optional empty As you can see the method now returns an Optional reference 1 if something is found the Optional object is constructed with a value 4 otherwise is constructed empty 7 And the programmer using this code would do something as follows List Fruit fruits asList new Fruit apple new Fruit grape new Fruit orange Optional Fruit found find lemon fruits if found isPresent Fruit fruit found get String name fruit getName Now it is made evident in the type of the find method that it returns an optional value 5 and the user of this method has to program his code accordingly 6 7 So we see that the adoption of this functional idiom is likely to make our code safer less prompt to null dereferencing problems and as a result more robust and less error prone Of course it is not a perfect solution because after all Optional references can also be erroneously set to null references but I would expect that programmers stick to the convention of not passing null references where an optional object is expected pretty much as we today consider a good practice not to pass a null reference where a collection or an array is expected in these cases the correct is to pass an empty array or collection The point here is that now we have a mechanism in the API that we can use to make explicit that for a given reference we may not have a value to assign it and the user is forced by the API to verify that Quoting an article I reference later about the use of optional objects in the Guava Collections framework Besides the increase in readability that comes from giving null a name the biggest advantage of Optional is its idiot proof ness It forces you to actively think about the absent case if you want your program to compile at all since you have to actively unwrap the Optional and address that case Other Convenient Methods As of the today besides the static methods of and empty explained above the Optional class contains the following convenient instance methods ifPresent Which returns true if a value is present in the optional get Which returns a reference to the item contained in the optional object if present otherwise throws a NoSuchElementException ifPresent Consumer T consumer Which passess the optional value if present to the provided Consumer which could be implemented through a lambda expression or method reference orElse T other Which returns the value if present otherwise returns the value in other orElseGet Supplier T other Which returns the value if present otherwise returns the value provided by the Supplier which could be implemented with a lambda expression or method reference orElseThrow Supplier T exceptionSupplier Which returns the value if present otherwise throws the exception provided by the Supplier which could be implemented with a lambda expression or method reference Avoiding Boilerplate Presence Checks We can use some of the convenient methods mentioned above to avoid the need of having to check if a value is present in the optional object For instance we may want to use a default fruit value if nothing is found let s say that we would like to use a Kiwi So we could rewrite our previous code like this Optional Fruit found find lemon fruits String name found orElse new Fruit Kiwi getName In this other example the code prints the fruit name to the main output if the fruit is present In this case we implement the Consumer with a lambda expression Optional Fruit found find lemon fruits found ifPresent f System out println f getName This other piece of code uses a lambda expression to provide a Supplier which can ultimately provide a default answer if the optional object is empty Optional Fruit found find lemon fruits Fruit fruit found orElseGet new Fruit Lemon Clearly we can see that these convenient methods simplify a lot having to work with the optional objects So What s Wrong with Optional The question we face is will Optional get rid of null references And the answer is an emphatic no So detractors immediately question its value asking then what is it good for that we couldn t do by other means already Unlike functional languages like SML o Haskell which never had the concept of null references in Java we cannot simply get rid of the null references that have historically existed This will continue to exist and they arguably have their proper uses just to mention an example three valued logic I doubt that the intention with the Optional class is to replace every single nullable reference but to help in the creation of more robust APIs in which just by reading the signature of a method we could tell if we can expect an optional value or not and force the programmer to use this value accordingly But ultimately Optional will be just another reference and subject to same weaknesses of every other reference in the language It is quite evident that Optional is not going to save the day How these optional objects are supposed to be used or whether they are valuable or not in Java has been the matter of a heated debate in the project lambda mailing list From the detractors we hear interesting arguments like The fact that other alternatives exist i e the Eclipse IDE supports a set of proprietary annotations for static analysis of nullability the JSR 305 with annotations like Nullable and NonNull Some would like it to be usable as in the functional world which is not entirely possible in Java since the language lacks many features existing in functional programming languages like SML or Haskell i e pattern matching Others argue about how it is impossible to retrofit preexisting code to use this idiom i e List get Object which will continue to return null And some complain about the fact that the lack of language support for optional values creates a potential scenario in which Optional could be used inconsistently in the APIs by this creating incompatibilities pretty much like the ones we will have with the rest of the Java API which cannot be retrofitted to use the new Optional class A compelling argument is that if the programmer invokes the get method in an optional object if it is empty it will raise a NoSuchElementException which is pretty much the same problem that we have with nulls just with a different exception So it would appear that the benefits of Optional are really questionable and are probably constrained to improving readability and enforcing public interface contracts Optional Objects in the Stream API Irrespective of the debate the optional objects are here to stay and they are already being used in the new Stream API in methods like findFirst findAny max and min It could be worth mentioning that a very similar class has been in used in the successful Guava Collections Framework For instance consider the following example where we extract from a stream the last fruit name in alphabetical order Stream Fruit fruits asList new Fruit apple new Fruit grape stream Optional Fruit max fruits max comparing Fruit getName if max isPresent String fruitName max get getName grape Or this another one in which we obtain the first fruit in a stream Stream Fruit fruits asList new Fruit apple new Fruit grape stream Optional Fruit first fruits findFirst if first isPresent String fruitName first get getName apple Ceylon Programming Language and Optional Types Recently I started to play a bit with the Ceylon programming language since I was doing a research for another post that I am planning to publish soon in this blog I must say I am not a big fan of Ceylon but still I found particularly interesting that in Ceylon this concept of optional values is taken a bit further and the language itself offers some syntactic sugar for this idiom In this language we can mark any type with a question mark in order to indicate that its type is an optional type For instance this find function would be very similar to our original Java version but this time returning an optional Fruit reference 1 Also notice that a null value is compatible with the optional Fruit reference 7 Fruit find String name List Fruit fruits for Fruit fruit in fruits if fruit name name return fruit return null And we could use it with this Ceylon code similar to our last Java snippet in which we used an optional value List Fruit fruits Fruit apple Fruit grape Fruit orange Fruit fruit find lemon fruits print fruit else Fruit Kiwi name Notice the use of the else keyword here is pretty similar to the method orElse in the Java 8 Optional class Also notice that the syntax is similar to the declaration of C nullable types but it means something totally different in Ceylon It may be worth mentioning that Kotlin the programming language under development by Jetbrains has a similar feature related to null safety so maybe we are before a trend in programming languages An alternative way of doing this would have been like this List Fruit fruits Fruit apple Fruit grape Fruit orange Fruit fruit find apple fruits if exists fruit String fruitName fruit name print The found fruit is fruitName else Notice the use of the exists keyword here 3 serves the same purpose as the isPresent method invocation in the Java Optional class The great advantage of Ceylon over Java is that they can use this optional type in the APIs since the beginning within the realm of their language they won t have to deal with incompatibilities and it can be fully supported everywhere perhaps their problem will be in their integration with the rest of the Java APIs but I have not studied this yet Hopefully in future releases of Java this same syntactic sugar from Ceylon and Kotlin will also be made available in the Java programming language perhaps using under the hood this new Optional class introduced in Java 8 Further Reading Java Language Specification The Billion Dollars Mistake Refactoring Catalog Ceylon Programming Language Kotlin Programming Language C Nullable Types Avoid Using Null Guava Framework More Discussion on Java s Optional Java Infinite Streams Java Streams API Preview Java Streams Preview vs Net High Order Programming with LINQ Share

    Original URL path: http://blog.informatech.cr/page/2/ (2015-08-19)
    Open archived version from archive


  • A Fable For Management: The Ill-Informed Walrus | Informatech CR Blog
    down the beach and with the shortage of herring the invasion could be dangerous No one wanted to tell the Boss though only he could take the steps necessary to meet the new competition Basil approached the Old Man After some small talk he said Oh by the way Boss a new herd seems to have moved into our territory The Old Man s eyes snapped open and he filled his great lungs in preparation for a mighty bellow But Basil added quickly Of course we don t expect any trouble They don t look like herring eaters to me More likely interested in minnows And as you know we don t bother with minnows ourselves The Old Man let out the air with a long sigh Good good he said No point in our getting excited over nothing then is there Things didn t get any better in the weeks that followed One day peering down from his rock the Old Man noticed that part of the herd seemed to be missing Summoning the XO he grunted peevishly What s going on Basil Where is everyone Poor Basil didn t have the courage to tell the Old Man that many of the younger walruses were leaving to join the new herd Clearing his throat nervously he said Well Boss we ve been tightening up things a bit You know getting rid of some of the dead wood After all a herd is only as good as the walruses in it Run a tight ship I always say the Old Man grunted Glad to hear that all is going so well Before long everyone but Basil had left to join the new herd and Basil realized that the time had come to tell the Old Man the facts Terrified but determined he flopped up to the large rock Chief he said I have bad news The rest of the herd has left you The Old Walrus was so astonished that he couldn t even work up a good bellow Left me he cried All of them But why How could this happen Basil didn t have the heart to tell him so he merely shrugged helplessly I can t understand it the old Walrus said And just when everything was going so well MORAL What the Boss likes to hear isn t always what he needs to know Share this Email Facebook Twitter Like this Like Loading Related December 19 2011 by pjpalm801 Categories Collaboration 2 Comments Post navigation CONCACAF Semi Finals New Hackathon Challenge Desarrollando América 2012 2 thoughts on A Fable For Management The Ill Informed Walrus pjpalm801 says December 19 2011 at 12 55 pm This is the story I tried to re tell last week in one of our discussions It was something that my boss at the University sent out to all his managers Very timely and appropriate I believe Reply Edwin Dalorzo says March 27 2013 at 11 22 am It was an interesting

    Original URL path: http://blog.informatech.cr/2011/12/19/a-fable-for-management-the-ill-informed-walrus/ (2015-08-19)
    Open archived version from archive

  • pjpalm801 | Informatech CR Blog
    Tags lumia windowsphone Leave a comment BackCountry Hackathon 2012 Informatech Wins API Category A little late to be sure but no less significant given that I wanted to write about this at the same time On September 22 23 Adriana Jara Johan Rodríguez and myself participated in the first ever BackCountry Hackathon 2012 Here we are at the beginning of the event What we did Adriana had the fantastic idea of using the competition APIs to build a comment and review search engine and thus Community Mining was born The APIs gave us data in JSON so using a proxy webserver we queried the data and in JavaScript analyzed graphed and displayed the results Our tech stack included Tomcat 7 jQuery jQuery UI YUI Grids Raphaël Vector Library Lots of JavaScript code We completed the main feature set about an hour before the deadline and our app proudly ran in desktop smartphone and tablet browsers What does it look like Well here you go What was learned Speaking from a strictly personal perspective I have to say that after the rush of more than 36 hours of work and the pride of feeling I still got it wore off The main takeaway was you have to choose your team well Your teammates must be talented Sometimes less people is actually better as it allows easier coordination that was the case here And very importantly you have to trust the people next to you not to blow up when the stress is high Adriana and Johan certainly fit the bill All in all good fun Michael Holst 9 933333 84 083333 Share this Email Facebook Twitter Like this Like Loading October 29 2012 by pjpalm801 Categories Informatech Mobile Web 1 Comment New Hackathon Challenge Desarrollando América 2012 Well we have signed up to carry the Informatech banner once again at a hackathon This time it will be at the Latin America wide Desarrollando América Latina 2012 Participants From Informatech we will have Adriana Jara Johan Rodríguez André Curione and myself Joining us will be Eliécer Leitón from BackCountry and our social and analysis liaison Cecilia Salazar We ll be developing a native Android application and reporting Dec 1 2 from the hackathon Michael Holst 9 933333 84 083333 Share this Email Facebook Twitter Like this Like Loading October 29 2012 by pjpalm801 Categories Costa Rica Informatech Mobile Leave a comment A Fable For Management The Ill Informed Walrus How s it going down there barked the big walrus from his perch on the big rock near the shore He waited for the good word Down below the smaller walruses conferred among themselves Things weren t going well at all but no one wanted to break the news to the Old Man He was the biggest and wisest walrus in the herd and he knew his business and they didn t want to disappoint him or put him in a foul mood What will we tell him whispered Basil the walrus XO

    Original URL path: http://blog.informatech.cr/author/pjpalm801/ (2015-08-19)
    Open archived version from archive

  • HOW TO: Win the War for the Most Talented Employees | Informatech CR Blog
    start this new year I would like to share an article I recently read and enjoyed on HR management and recruitment and some best practices and recommendations on hiring and retaining great talent http mashable com 2011 01 03 find talented employees It s very nice to know that we are on the right track here Informatech CR Have a good one Cheers from Costa Rica Share this Email Facebook Twitter Like this Like Loading Related January 4 2011 by arielargo Categories Collaboration Costa Rica Informatech Tags best practices employees hiring Human Resouce informatech market outsourcing recruitment Talent welcome Leave a comment Post navigation 2010 in review Ruby on Windows Now Easier Leave a Reply Cancel reply Enter your comment here Please log in using one of these methods to post your comment Email required Address never made public Name required Website You are commenting using your WordPress com account Log Out Change You are commenting using your Twitter account Log Out Change You are commenting using your Facebook account Log Out Change You are commenting using your Google account Log Out Change Cancel Connecting to s Notify me of new comments via email Notify me of new posts via

    Original URL path: http://blog.informatech.cr/2011/01/04/how-to-win-the-war-for-the-most-talented-employees/ (2015-08-19)
    Open archived version from archive

  • arielargo | Informatech CR Blog
    best practices and recommendations on hiring and retaining great talent http mashable com 2011 01 03 find talented employees It s very nice to know that we are on the right track here Informatech CR Have a good one Cheers from Costa Rica Share this Email Facebook Twitter Like this Like Loading January 4 2011 by arielargo Categories Collaboration Costa Rica Informatech Tags best practices employees hiring Human Resouce informatech

    Original URL path: http://blog.informatech.cr/author/arielargo/ (2015-08-19)
    Open archived version from archive

  • best practices | Informatech CR Blog
    recruitment and some best practices and recommendations on hiring and retaining great talent http mashable com 2011 01 03 find talented employees It s very nice to know that we are on the right track here Informatech CR Have a good one Cheers from Costa Rica Share this Email Facebook Twitter Like this Like Loading January 4 2011 by arielargo Categories Collaboration Costa Rica Informatech Tags best practices employees hiring

    Original URL path: http://blog.informatech.cr/tag/best-practices/ (2015-08-19)
    Open archived version from archive

  • employees | Informatech CR Blog
    and recommendations on hiring and retaining great talent http mashable com 2011 01 03 find talented employees It s very nice to know that we are on the right track here Informatech CR Have a good one Cheers from Costa Rica Share this Email Facebook Twitter Like this Like Loading January 4 2011 by arielargo Categories Collaboration Costa Rica Informatech Tags best practices employees hiring Human Resouce informatech market outsourcing

    Original URL path: http://blog.informatech.cr/tag/employees/ (2015-08-19)
    Open archived version from archive

  • hiring | Informatech CR Blog
    best practices and recommendations on hiring and retaining great talent http mashable com 2011 01 03 find talented employees It s very nice to know that we are on the right track here Informatech CR Have a good one Cheers from Costa Rica Share this Email Facebook Twitter Like this Like Loading January 4 2011 by arielargo Categories Collaboration Costa Rica Informatech Tags best practices employees hiring Human Resouce informatech

    Original URL path: http://blog.informatech.cr/tag/hiring/ (2015-08-19)
    Open archived version from archive