I recently purchased a Motorola G8 Power, following some of the reviews found on the web: finally a decent affordable phone with a battery that could last several days.
After some time of use, I started realizing several things:
My Polar watch would pair with the "Polar flow" app via bluetooth, but gave constant errors when syncing, so I was not able to sync my runs. For the first time in my life, I had to download the computer app and sync from there.
I often experienced Wifi disconnecting and reconnecting again. Most of the time my Wifi speed was 25 Mbps at best. In some very few occasions it was 34 Mbps (my Wifi limit is 37 Mbps).
Youtube and Netflix played fine, but not a TV streaming app that I used on a daily basis it was not fluid and was stuttering from time to time.
I had never had any problems with any other device at home: they were all syncing perfectly with my Polar watch and all other devices were showing a consistent 37 Mbps speed and no disconnects.We are talking about devices that were 4 years old or more. The TV also worked fine on and iPad and an iPhone SE from 2015 and 2016.
As a curious computer engineer, I started investigating and found that many other people complained about problems with wifi and bluetooth in this particular Motorola Moto G8 power.
These were my findings:
This phone only has the old 2.4GHz Wifi but not the today's standard 5GHz one. Yes, this is mentioned in the specs on the phone, but does it make sense in 2020?
When bluetooth is on, the 2.4GHz Wifi and the bluetooth interphere with each other, even when no bluetooth devices are connected.
Below is a comparison of an Internet speed test with bluetooth off and on, respectively.
Internet speed test with Bluetooth OFF
Internet speed test with Bluetooth ON (no devices connected)
Note that how the Wifi was much more unstable and there was a 5.7% packet loss during the test when bluetooth was on!
I then decided to test this fact in particular, with the "Flood Ping packet loss" Android app by Sebastian Schleitzer (thanks Sebastian for providing this app for free!) and these were the results.
Packet loss when pinging - Bluetooth is ON (no devices connected)
It cannot be seen on a static image, but the connection was briefly interrupted each time a packet was lost (marked with "x"), which explained the stuttering on my TV app. This didn't happen when bluetooth was turned off, so it also explained why sometimes Wifi was working fine and getting maximum speed (the exact moments I had bluetooth off).
When sharing these issues with others, a smart-ass colleague told me "this was my fault", as 2.4GHz and bluetooth are known to interfere (he had to look it up on the Internet, though).
It turns out that this is simply not always true, and as a customer I should not even care.
Below is a comparison of the "Flood Ping packet loss" app between and old Motorola Moto G4 from 2016 (left) with the Moto G8 Power from 2020 (right), both connected to the 2.4GHz Wifi network and with bluetooth turned on.
Moto G4 (left) versus Moto G8 (right) - 2.4GHz network, bluetooth is ON (no devices connected)
After purchasing this phone I have learned several lessons:
The Moto G8 Power is a phone with obsolete hardware (no 5GHz Wifi, when the Moto G4 from 2016 already had it!) and Wifi and bluetooth interfere. Motorola must be aware of this, because there are complaints all over the Internet, including their own forums. The fact that this has not been solved via a software updates after 9 months and no solutions are provided in the forums suggests the hardware is faulty. However, it is still sold as if it was a modern phone that works perfectly.
Do not trust reviewers. They most probably spend a few hours playing around with the phone or performing automated tests. They also often get models for free or are sponsored by manufacturers. None of the many reviews I found detected or even mentioned this flaw, or strongly recommended against buying a phone with no 5GHz wifi in 2020. All reviews saying "great phone" are still up.
Always buy from trusted retailers that are will give you your money back in cases like these. It took me around 2-3 months to figure out this issue but after explaining it to Amazon, they offered a full refund even though my return window had expired. I cannot thank Amazon enough, as I had actually bought THREE (!) of these phones (one for me, two others for family members) based on the reviews (and they all showed the same problems, in different Wifi networks and households). Imagine trying to return this at your average shop after 2-3 months...
So, if you are experiencing Wifi/bluetooth issues with this phone, now you know why. It's not your fault, it's not your problem: you were sold a malfunctioning phone that simply does not work properly. Use the "Flood Ping packet loss" or a similar app to prove your point and just go complain and ask for your money back. Package loss because bluetooth is on (particularly on a wifi with no activity and no bluetooth devices connected!) or any other bizarre explanations are not acceptable. As I mentioned, I have reproduced these problems on 3 of these phones in 2 different Wifi networks, all of them bought in August and with the latest software updates applied until November 2020.
After this, I bought a Samsung M31, a bit more expensive, but with slightly better specs. Great 5GHz Wifi, longer battery time, and a joy to use. Compared to it, the Motorola Moto G8 Power seemed like a nightmare to be forgotten. Once and no more, Motorola.
I always liked planes and I have played many flying games. One of the first I purchased was F19 Stealth Fighter and one of my favorites was B-17 Flying Fortress. I also had a really old version of Microsoft Flight Simulator but never played much because scenery and simulation were poor and I honestly did not see the point.
I then lost interest for literally one and a half decades until 5 years ago, for reasons I can't recall, I started playing Microsoft Flight Simulator X (FSX). Wow, things had really changed. Not only was the scenery relatively decent, but planes looked realistic. You could press buttons, switch on lights, adjust the altimeter, tune the radios. Furthermore, an ecosystem had flourished where you could get add-ons for virtually anything: airports, photorealistic scenery and study-level planes. There was even this online network called VATSIM where you could fly online and talk to air traffic controllers using real procedures. Amazing.
However, I wanted to go step by step, so I spent hundreds of hours playing the plain FSX. FSX actually impressed me: I think it was a product ahead of its time. Instruction in the game was excellent, air traffic control (ATC) was also very decent, and documentation was abundant and targeted towards real simulation. And, above all, you could have a lot of fun (and learn a lot) playing missions, like landing on an aircraft carrier or Loopy Larry.
I was so into it that I even took my first flying lesson on a Cessna 172 at Palo Alto airport, doing a short flight to Half Moon Bay and back. Years later I took another one to refresh, just for fun. Because FSX was showing its age, I tried other products like Prepare3D and some newly released flight simulators but eventually moved to XPlane, like most people.
Flying on XPlane simply felt more realistic. I had to buy a new computer as it required much more powerful hardware and I missed many things from FSX. ATC was very bad. There were no missions. So I focused on the simulation and tried to make it as realistic as possible:
Planes: I purchased some add-on planes that were great, but I finally stayed with the excellent Zibomod, modeling a Boeing 737 (for free, great job and thanks!). Many consider the 737 the "de facto standard" airliner and it is possibly the one plane with the most documentation available. In fact, some airlines like Ryanair only operate this plane.
Terrain: I installed some terrain from the excellent SpainUHD site (thanks guys for doing this awesome job for free!). This was really impressive, as one of the weak points of flight simulators has always been the bad quality of scenery and the terrible autogenerated buildings, bridges, roads, etc. I honestly much prefer having plain good quality realistic 2D satellite terrain than 3D autogenerated things that look terrible.
Airports: I purchased the airports I normally visit, to make the experience more realistic and feel like at home.
Charts and flight planning: I purchased a subscription to Navigraph and learned to read and interpret charts and learned how to prepare a flight plan, for which I used EFASS and later SimBrief.
Weather: I tried some add-ons but eventually gave up. I did not want to do another PhD degree to configure how the clouds should look like. I could live with standard weather.
Voice ATC: To me there is absolutely no point in simulating ATC by pressing a button on the keyboard. A simulation challenge is to learn ATC phraseology and communicate like real pilots do (using the radio), so I played a few times on VATSIM but I was shouted at once very rudely by a controller and lost interest. I later found Pilot2ATC which, while a bit cumber, did a great job and made the whole experience much more realistic. I was so into ATC that I even got ATCpro and played for a while to better understand how a traffic controller works.
Shared cockpit: I played with a friend a couple of times using SmartCopilot.
Traffic: Playing alone or with simulated traffic is no fun, so I eventually got World Traffic v3 to add some realism.
Nearly everything was perfect, but honestly. Playing using one or even two monitors still sucked, even with flight panels, rudder pedals, and joystick. Luckily XPlane later introduced VR! Of course, I purchased a VR headseat only for that.
This was probably the biggest game changer in the field. Something absolutely astonishing. Not only because of the realistic 3D vision but also because of the controllers. Now you could push buttons and turn knobs with your own hands inside the virtual space! It was still a bit cumbersome to play in VR (for example, how did you check charts? Avitab later came to the rescue!), but eventually virtually all problems were solved.
Flying was nearly perfect, but I was missing, like most of us, a more integrated approach. Add-ons were cumbersome to install and maintain, version updates caused problems, etc. Would one day everything be nicely packaged? Probably not, but why not dream?
And then Flight Simulator 2020 was announced
Suddenly, nearly out of the blue, a new product was announced: Microsoft announced in 2019 they were releasing a new Flight Simulator that would be revolutionary and showed a trailer. An alpha program was started where people could join to test and help develop the product. Facebook groups were everywhere. Every airport in the world was promised. Tons of planes. As I said: an absolutely revolutionary product. That would also work on the XBox (!). A flight simulator in a console?
As a software developer and project manager, I immediately became suspicious when developers started releasing videos about themselves and making so much noise way before anything was released. They were also disclosing every little aspect of the game on their web and Youtube channel before the general public could enjoy it. I consider this a childish marketing strategy: "look guys how awesome our product is, how good it looks, we are having loads of fun but you'll have to wait". This continued for months and created a lot of hype and thousands of fanboys. I was harassed and literally kicked out of a Facebook FS2020 group for politely asking and questioning certain things about the simulator related to ATC, VR, and plane models. I was told "if you were part of the alpha group and already enjoying the game you would not be saying those things, loser!".
And finally released (August 18)
As a flight simmer and curious person, of course I was gonna try it anyway. But as a skeptical person also, I didn't want to purchase it. Fortunately, Microsoft included it in its affordable subscription-based Game Pass. After all, it looked absolutely stunning and I was probably being unfair. This was the promotional video below:
I start the download and notice the following things.
Firstly, the install failed several times. A 100+GB download is no joke, as it can take a whole day in places where we don't have ultra-high speed internet. First, the installer froze. Then I left it and when I came back to check, it was not longer there. I restarted it and it started from scratch. 100GB. Finally, it worked at the 4th attempt. And before you make any judgements, yes, my machine and whole configuration are of very decent quality. Stable 40Mbps internet connection, recent i7 computer with an SSD, 32GB of RAM, and a very capable NVidia GPU, aside with all Windows updates. Anyway, at launch day and at such massive scale, problems are expected. It's okay.
Secondly, I choose a plane. Where are the airliners? OMG there are only two, one of them the Boeing 747 which is not exactly easy to handle and cannot depart from most airports in the world. Where is the de facto standard for short-mid haul flights, that most of us learned to fly with, the 737? Okay, fine, I'll choose a Cessna.
Thirdly, I search for an airport I know well in Spain and from which I departed very often on XPlane: Zaragoza airport, LEZG. It’s not listed. Actually, Spain’s map is pretty empty. I must be doing something wrong, as this game promised "fly form any airport in the world". Zaragoza airport has two runways over 3Km long. There are international flights, Cargo Boeings 747 depart from there very often, there is a NATO base and LEZG is one of the NASA landing sites for the Space Shuttle. It is also obviously officially listed as one of the major airports in Spain.
No, I'm not wrong. I fly over and the airport and runways are simply not there.
Okay fine. I think I know what's going on (more later), but let's give it another try. I will now tour around Graz, where the company doing the revolutionary AI on the maps is based. I know the area well and certainly they would take care of their own city. On Google Maps/Google Earth Graz looks spectacular in 3D.
I fly over the exact same section, and this is what I find:
The main street on the right is flat, there is no pavement or trees. The street on the left (where a small river barely visible to the pedestrian runs) is flooded. And what's worse: all buildings are auto-generated and not even a person living there would recognize the area.
I then checked other places I know very well and I was equally disappointed. They look much worse than anything you are used to on Google Maps 3D. I flew over the Spanish Pyrenees and was really disappointed: rivers flowing in the middle of hills instead of in the valleys, footpaths that looked like roads, etc. Nothing like the stunning Google Maps 3D also available as Google Earth VR.
Yes, I understand now, and as I expected: everything depends on the quality of the sources and Bing is not the best in many areas. Zaragoza airport is not there because it is a bit blurred/pixelated on Bing Maps Satellite probably because of being a NATO base. However, the airport is a major one, it is listed in official sources, there are charts, and the runways are modeled in very good detail in Bing's Map view.
The "famous AI" advertised was misleading: it is not reconstructing realistic 3D scenery based on imagery all over the world, but it is doing the classical "autogen" in a smarter way: probably based on map information, height, etc... it is inferring that a line there on the map is a river and that one a road, and this is a house, and that a block. The problem with that is that in that a city I know well there is no cathedral (stunning in Google Maps in 3D) but a block of apartments and the bullfighting ring has been substituted by something that looks like a UFO.
In one sentence: I don't recognize the city where I grew up and the areas I visited the most in Spain, while I do with Google Map plain 2D Ortophotos, which I much prefer. The streaming technology and AI generation might be impressive on paper, but these fake autogenerated areas were one of the biggest problems of past flight simulators that FS2020 promised to solve and they didn't. There was no revolution there.
The 737, the plane that flight simmers use the most to do real flights in between cities is not there either. And the ones I quickly tried are not as well modeled as on XPlane. No revolution there either. I still have to play longer, and certain things seem to be good like weather and real traffic, but those are not revolutionary either, as they already existed. What to say about VR. I know Microsoft has promised it will come shortly, but it is still not there while it's working perfectly on XPlane. I do not foresee any revolution coming either. Once you have played a flight simulator on VR, there's no way back and anything else looks from a past era.
For me the biggest missed opportunity has been voice ATC. Voice recognition is working since ages ago. All major players are advertising their "AI-powered" voice tech: we can ask Google Assistant to do tasks for us in our smart home, Siri can answer complicated questions, Alexa seems useful, and Microsoft has Cortana. Voice ATC should be much easier than any of this, as it is rule-based and uses standard phraseology. Indeed, Pilot2ATC seems to have been developed by a single programmer using Windows voice recognition and it is very decent. However, Microsoft decided to stick with the 20 year old absolutely unrealistic menu-based commands that bring us back to FSX.
Yes, Microsoft and Asobo Studio, I am personally happy you made it accessible for another generation to join the flight simulation scene. I also understand the aim is to sell as many copies as possible and concessions need to be made for a dual PC/console game.
However, to me, an average flight simmer, this does not look like a revolution in flight simulation but just a small step in the right direction (map streaming) and a missed opportunity in other areas, particularly Voice ATC, and a bluff on others (realistic scenery and all airports in the world available). I think the most revealing proof is that I pre-downloaded and installed the game 5 days ago and I have probably spent 1-2 hours on it, because it does not appeal to me. Later I discover a marketplace where you can purchase add-on planes, airports and I even find out ORBX will be selling airports/scenery. Didn’t this simulator have it all?
A good friend of mine who also plays flight simulators (more console-oriented) told me: "you are the only person I know who's not impressed". Am I?
Un informe cómico sobre el resultado de un concurso de tortillas de patata en el que perdí :)
The Meetup Tortilla Experiment
Background: Tortilla (scientific name: "tortilla de patata") is a dish based on a mixture of eggs, potatoes and onions, not to be confused with the Mexican tortilla, based on a wheat or corn dough. Although some local experts do claim the opposite (see "Spanish cuisine: myth or reality?"), most scientists agree that tortilla can be considered a representative dish in the Spanish cuisine. As everything else in Spain, the recipe and approach to making tortilla has been passed from generation to generation, and every cook claims their own is the best. In this study we perform a blind experiment to try to establish a clear winner among two expert Spanish cooks.
Materials and Methods: A full laboratory was set up by a British designer in a neutral environment (San Mateo, California) under a fake potluck that served as an excuse to attract volunteers for the experiment. Twenty-four cooks from a representative sample of European countries were selected, after showing their passport and a signed copy of a recipe to the referee. The volunteers were asked to try both tortillas and pick a color card that represented the tortilla they liked the most. In the middle of the process, tortillas and cards were swapped to minimize dishonest suggestions and bribes from both cooks and selected participants. After the referee made sure all participants had tried both tortillas, the number of cards were counted to establish a clear winner. (Note: the experimental set-up complied with California law: yellow and red cards were kindly donated by the referee from a previous experiment, and the cards were subsequently reused again for a game).
Results: After revealing the secret color codes from the blind experiment, results showed that 65% of the volunteers preferred tortilla "B" (yellow cards), and 30% preferred tortilla "P" (red cards). 5% of the participants were lost in the process. On average, participants employed 17.5 percent more time, and drank 0.23 liters of extra wine when tasting tortilla "B". When chewing tortilla "P", participants showed a smile on their faces. However, when chewing tortilla "B", participants seemed concentrated on the force they needed to apply to their jaws. After the results were made public cook "P" was sent to do the dishes, and some people (mainly cook "B", and some others) cruelly asked for public humiliation.
Limitations: Both cooks employed dirty strategies to attract the attention to their tortilla, and one of them even tried to bribe participants. In the middle of the process, the number of yellow cards grew exponentially, especially after a subject from an unclear nationality interfered in the process, previously knowing the secret color codes. Only taste, but not swallowing time, or amount of drunk liquid were considered relevant for the results.
Conclusions: After eliminating all subjective factors and contaminated votes from participants, results could not be distinguished from a completely random vote, showing that there is no scientific evidence that tortilla "B" was better than tortilla "P". However, most participants did strongly believe so, emotions arose, and the cook who lost was even asked to write a public humiliation letter in the Meetup group, confirming that peer pressure, especially when strong leaders are involved, can quickly spread cruelty among individuals. A conclusion that is in good agreement with the one presented in the Stanford Prison Experiment from 1971, and suggests that no further competitions should be performed in future Meetups.
Yesterday I read the article "why Jobs is no Edison". And today Steve Jobs died. As the rest of his neighbors, I came by to say goodbye:
Setting aside Steve Jobs' contribution to technology, we shouldn't forget the strong message he left at Stanford's speech: "You've got to find what you love".
This is a possibly incorrect translation done by the author of this blog of the original text "Aragón también existe", by the Spanish well-known writer Arturo Pérez-Reverte. Please leave any corrections in the comments. Some notes (in italics and parentheses) have been added to clarify the context to international readers.
Aragón también existe - Aragon exists as well
It was about time. In this best-seller list, in this outrageous competition of ignorance, manipulation and bad faith when reinventing (Spanish) History, one is fed up of always listening to the sameones (nationalists), as if no one else had anything to say. And, suddenly, someone reacts properly, says 'that's enough', and decides it's time to speak clearly and make all the cheaters and scroungers shut up: those who pay their own historians to unstitch and remanufacture taylor-made versions of History that are later included in textbooks, in fantastic movie scenarios that Samuel Bronston would have loved to share. All this is going on while those who have the knowledge stay quiet because they are cowards, because of what others might say, or because they get something in return. And then we end up living in an unrecognizable virtual Spain.
So, good for you, Aragón, or whoever decided to prepare the exhibition "Aragón, kingdom and crown", which I don't know if it's still around, but was open in Madrid during May. In all that stupidity I mentioned earlier—now it turns out that a Catalan empire existed but inexplicably became unnoticed to historians until a few years ago, or that the invincible Basques were never part of Spanish military or business missions—Aragón had been silent for a long time, although it had a lot to say, or to clarify, from that far eleventh century when Ramiro I, contemporary of El Cid, founded the pillars of a kingdom that would cover Aragon, Valencia, the Majorcas, Barcelona, Sicily, Sardinia, Naples, Athens, Neopatria, Roussillon and Cerdanya, and ended up forming the current Spain in 1469, due to the marriage of its king Fernando II of Aragón with Isabel, queen of Castile.
That is the true fact, and rewriting History will not change what happened, including the elitist and fraudulent use of the famous red and yellow bars that were the royal sign of, not a kingdom or territory, but a regnant House or family. A regnant House that absorbed the House of Barcelona, extinguished in 1150 by mutual convenience and desire of the holder of the latter, Count Ramon Berenguer; who, marrying Petronilla, daughter of Ramiro the Monk, king of Aragón, acquired a superior lineage, but renouncing his own, becoming only princeps of his regina spouse; so their child, with Barcelona already incorporated to the Crown, was titled rex of Aragon, and never of Catalonia. Luckily, not all archives are held by who I'm thinking of—I'm just trembling in case that could happen—and documents to prove the obvious are still there. By the way, regarding the historical property of the famous red and yellow bars, it's worth remembering Bernard Deslot's chronicle from 1285, which stated: «I think no galley or ship would ever try to sail the sea without a safe-conduct from the king of Aragon, nor a fish could cut through marine waters without its tail showing a coat of arms with the emblem of the king of Aragon».
So, I am glad, let me tell you, that that honorable and old forgotten Aragón, excluded, suffocated by the wretched politics of this wretched country, is still capable of saying 'here I am', denying the many opportunists, manipulators and misers. Reminding that an Aragonese Crown existed and constituted the vastest empire in the medieval West where, under its name and bars, Aragón, Catalonia and Valencia shared adventures, commerce, wars and history, enriched bloods and languages with Latin, Catalan and Castillian, cartographed the World, built ships, walked Almogavar mercenaries and ruled territories that later contributed to what we now call Spain, with the manifestation of jurisdictions and freedoms characteristic in that tremendous, marvelous and solemn formula: the «si non, non» inherited from the ancient Goths by means of which the Aragonese nobles«that are as much as thou, and together more than thou» («que somos tanto como vos, y juntos más que vos») complied with the authority of the King on first name terms, acknowledging the King only as «the main among the equal» («el principal entre los iguales»).
This is why these initiatives, and these exhibitions and these things are good. They are very good, even hygienic; and I am surprised that no more efforts, occasions or money are devoted to them, as an antidote against the manipulation and obscurity that are converting this country called Spain into a wreck and an unsupportive, fatuous brothel. For example, the money spent in the indispensable urgency of substituting "La Coruña" (in Spanish) for "A Coruña" (in Galician) in the road signs of every road and highway throughout Spain. Including, I assume, N-340(a road) at Chiclana(Cádiz, Andalucía, 1000 Km away from Galicia).
How would an average programmer working in industry convert an integer to hexadecimal in Javascript?
He would assume that he is not the first one in having the problem. He'd bet Javascript itself has a specific function or some standard library out there solves the problem.
Just googling around he would find a quick, clean and nice answer such as this one:
yourNum = yourNum.toString(16);
And, what about the average academician?
He would probably spend a whole day building and testing an impossible-to-understand, prone-to-error implementation.
Here is some Javascript I found at the website of some top-researchers in knowledge representation from a well-known university.
// *** Hexidecimal/Decimal Functions (needed to determine QuickTime version number from VBScript) ***
function tohex(i) {
a2 = ''
ihex = hexQuot(i);
idiff = eval(i + '-(' + ihex + '*16)')
a2 = itohex(idiff) + a2;
while( ihex > 16) {
itmp = hexQuot(ihex);
idiff = eval(ihex + '-(' + itmp + '*16)');
a2 = itohex(idiff) + a2;
ihex = itmp;
}
a1 = itohex(ihex);
return a1 + a2 ;
}
function hexQuot(i) {
return Math.floor(eval(i +'/16'));
}
function itohex(i) {
if( i == 0) {
aa = '0' }
else { if( i== 1) {
aa = '1'}
else {if( i== 2) {
aa = '2'}
else {if( i == 3) {
aa = '3' }
else {if( i== 4) {
aa = '4'}
else {if( i == 5) {
aa = '5' }
else {if( i== 6) {
aa = '6'}
else {if( i == 7) {
aa = '7' }
else {if( i== 8) {
aa = '8'}
else {if( i == 9) {
aa = '9'}
else {if( i==10) {
aa = 'A'}
else {if( i==11) {
aa = 'B'}
else {if( i==12) {
aa = 'C'}
else {if( i==13) {
aa = 'D'}
else {if( i==14) {
aa = 'E'}
else {if( i==15) {
aa = 'F'}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return aa
}
We were keeping our eye on 1984. When the year came and the prophecy didn't, thoughtful Americans sang softly in praise of themselves. the roots of liberal democracy had held. Wherever else the terror had happened, we, at least, had not been visited by Orwellian nightmares.
But we had forgotten that alongside Orwell's dark vision, there was another--slightly older, slightly less well known, equally chilling: Aldous Huxley's Brave New World.
Contrary to common belief even among the educated, Huxley and Orwell did not prophesy the same thing.
Orwell warns that we will be overcome by an externally imposed oppression. But in Huxley's vision, no Big Brother is required to deprive people of their autonomy, maturity and history. As he saw it, people will come to love their oppression, to adore the technologies that undo their capacities to think.
What Orwell feared were those who would ban books. What Huxley feared was that there would be no reason to ban a book, for there would be no one who wanted to read one. Orwell feared those who would deprive us of information. Huxley feared those who would give us so much that we would be reduced to passivity and egoism. Orwell feared that the truth would be concealed from us. Huxley feared the truth would be drowned in a sea of irrelevance. Orwell feared we would become a captive culture. Huxley feared we would become a trivial culture, preoccupied with some equivalent of the feelies, the orgy porgy, and the centrifugal bumblepuppy.
As Huxley remarked in Brave New World Revisited, the civil libertarians and rationalists who are ever on the alert to oppose tyranny "failed to take into account man's almost infinite appetite for distractions." In 1984, Huxley added, people are controlled by inflicting pain. In Brave New World, they are controlled by inflicting pleasure. In short, Orwell feared that what we hate will ruin us. Huxley feared that what we love will ruin us.
This book is about the possibility that Huxley, not Orwell, was right.
Let's go to yet another online store to buy some stuff. This time it's a poster. I search the Net and find an interesting one. I click on the .com site, but it redirects me automatically to the .es store. No problem. Prices are shown in euros, even though it's a US store. Not very comfortable now: I don't like a store charging in several currencies. Normally the customer never benefits of that, but let's forget about it. Maybe there are different prices for the US and Europe. Weird but... okay, I'm tired enough for thinking about that. Let's pay 14.10€, taxes and shipment included, and relax.
I purchase my item and get an email with a link to the order status. I click and my invoice now shows the prices in US dollars. The final price, including taxes and shipping is $12.81. I go to Google and the currency exchange rate shows that $12.81 = 9.59€. And I paid 14.10€!.
I go to the "help" section and read the following:
"AllPosters.com computes local currency prices for all items using competitive exchange rates. The local currency total displayed in your shopping cart (or as a sale price) is figured as the sum total of the US dollar prices for each item ordered, and then converted to your currency. From time to time, this amount may vary from the sum of the individual local currency prices of the items listed in your shopping cart, because of rounding differences that arise when converting the figures. This amount, if any, will be very small - up to one cent (USD $0.01) per item."
I ask the support team about this issue and the answer is:
"We apologize for the error online. Due to some technical glitch, it is showing wrong order total. I have sent you the correct invoice for your order. Your order total is $18.87 (EUR 14,10)."
So it showed $12.81 but it really was $18.87? Technical glitch? Mmm, bad start. I don't like this kind of things. Bugs in the orders related to payments?. And am I the only one affected by this issue?. Pretty strange, but it might be. Bad luck. A nice and quick response from the support team is always welcome.
However, I'm not still sure why but I think that something is wrong with that site. I try to access this URL for a sample poster. And what I find is... unbelievable. Depending on certain conditions (.es or .com site, browser and... I don't know what other!) I get three different prices for the same item!!.
Google Chrome, .es site, from location A (Spain)... currency shown in... dollars?: $24.99
Mozilla Firefox, .com site, from location B (Spain)... currency shown in... euros?: 28.90€
Internet Explorer, .com site from location B (Spain)... currency shown in... euros?: 21.00€. It's even funnier that if you try to buy the product and send it to Europe, the item's price automatically changes to 28.90€ (shipping and taxes appart).
Come on, are you joking?. I don't know how this can happen. And, by the way, $24.99=18.85€, which does not correspond to any of the prices shown in euros!!. Isn't that annoying?
Now someone will quickly come across with an explanation: "Huh, you don't know what's going on but I do! Oh, dude, that's super-easy! Can't you see it at a glance? The HTTP request header sent by your localized browser is used to detect your country, then different prices are applied depending whether you buy from the US or Europe... blah, blah, blah".
Nope. That's not what the online store policy says. It says the site charges in dollars and it will do the currency conversion for me. Why is it showing me the price only in euros then?. And whenever I've seen dollars, the price in euros is superhigh in comparison with the correct currency exchange rate. Something customers do not like at all. That's cheating, guys.
Seeing three different prices in the same store depending on... (I don't know exactly what criteria) is enough for me. Not to speak about currency exchange rates that don't match.
UPDATE: A second email with customer service informs me that currency is calculated depending on the IP address of the connection.
This is an awful solution. It is detecting my 3G connection as being in the US and showing $24.99 for the item in the .com site. I go to the .es site and it shows 28.90€, when it should be 18.85€ with today's USD-EUR currency exchange rate. Is that the "competitive currency exchange rate" that the site policy states?.
Allposters.com is definitely fooling users paying in euros. I don't even think it's legal. Please be aware.
If you have a Fujitsu-Siemens Amilo A1655G and have tried to install the linux operating system, you have probably been dissapointed with its wireless card: a Broadcom BCM4318. It has two main problems:
It is not directly recognized nor supported by major linux distributions. In fact it does not work with the b43 driver for the Broadcom 43xx wireless cards, even though it is a 43xx model and it is the driver suggested by Ubuntu 8.10.
It does not have a hardware switch to turn it on and off. Instead, you need to use a radio button which is controlled by a software driver.
The lack of wireless capabilities is the main reason why I stopped using GNU/Linux in my laptop. The good news is that, after two years from that experience, wifi can be now used! I've tried Ubuntu 8.10 and a couple of kernel modules and it works!.
Here is the information you need to solve the two main problems of this wireless card described above:
Follow the instructions and files provided in Samuel Barrett's blog to use the Windows driver with ndiswrapper and install the wifi.sh script. Thanks Samuel!
Download the fsaa1655g module (I used fsa1655g-kernel-2.6.26.tar.bz2) from Martin Vecera's site. Follow the instructions to build it and install it as a kernel module. Thanks Martin!
Add the fsa1655g module at the end of the wifi.sh startup script: sudo modprobe fsaa1655g. This will turn the wireless card on by default when you boot your machine.
This has worked for me perfectly in Ubuntu 8.10. Now I can scan an connect to wireless networks using Ubuntu's Network Manager. Unbelievable!
Of course, use this information at your own risk. If you don't have the same laptop and linux distribution or you don't take care in certain steps, you can mess up your system and you will be the only responsible for that :)
Who doesn't talk to his colleagues about programming?.
Sometimes it's more interesting to talk about the human aspects of programming than about the technological issues that techies are talking about all the time (a thread here, an interface there, let's add some reflection...).
There are ideas that my most respectable colleagues agree on but that unfortunately seem to be forgotten (or unkown) by a vast number of people working in the field.
They can be summarized in the following sentences:
If you're a software engineer, your basic building material is human intellect and your primary tool is you.
A leader has the expertise of a competent programmer and recognizes that programming is only 15 percent communicating with the computer and 85 percent communicating with people.
Programming is communicating with another programmer first and communicating with the computer second.
Some creative programmers view the discipline of standards and conventions as stifling to their creativity. The opposite is true. [...]. Without standards and conventions on large projects, project completion itself is impossible. Creativity isn't even imaginable.
A programming masterpiece requires just as much discipline. If you don't try to analyze requirements and design before you begin coding, much of your learning about the project will occur during coding and the result of your labors will look more like a three-year-old's finger painting than a work of art.
By all means, get excited about programming. But excitement is no substitute for competency. Remember which is more important.
Opps... wait! I forgot to say something before you just discard this post: these sentences are not ours. They're Steve McConell's.
Today, I was reading a colleague's blog. In his last post (in Spanish) he defends the programmer as a software professional and provides a great outlook of its —generally misconceived— role, duties and difficulties. That immediately reminded me about the opposite figure: the architecture astronaut as described in Joel Spolsky's article. At some companies both roles officially exist (software astronauts not being desing as such but in other pompus terms). Sometimes they even group them into separate buildings, Kilometers away from each other.
What does all this has to do with this post's title?. Well, I dare say that officially separating both roles warps each individual's mind towards two software design approaches. Top-down and bottom-up. Analysis and synthesis.
Astronauts deal with ideas, designs and hopes. They analyse a problem. They concieve a view of the solution and try to put it somewhere, somehow. Call it a UML diagram or whatever. They generally don't care too much about technological or programming issues, as every difficulty can be overcome, and think the hard work is done. Remember, top-down. Once decomposed it should be easy.
If you ever wrote a line of code in a medium-sized project —which you might not if you're in the Cosmo Team—and you're humble and honest —scarce virtues— you know that, at this point, the process just reverses and it's not easy at all.
Programmers need to deal with lines of code and machines. They are forced to syntethise, given their circumstances. They take some sort of specification, design —when lucky—, a technological environment in form of software and hardware and need to combine all this to produce something that works —or, at least, appears to—. In some way, it's pure bottom-up. The programmer's materials for the building process are existing technologies, libraries, language primitives, etc. that must be mixed together "upwards" to match the design, functionality or specification. The same materials that might have been overlooked during the analytical process.
This is the main reason why, when left alone —probably by inertia—, most programmers take the bottom-up approach. The bad news is that they generally forget that the bottom-up approach is also a design approach that also involves an analytical process. But they generally rush to code. When the main program and some tricky parts are outlined the hard work is done. Remember, bottom-up. Design will magically arise and every piece will fit. Once a few things are outlined or coded it should be easy.
Same dog, different collar?. Sure. Now a different set of problems arises: forgotten functionalities, huge refactoring efforts, this-is-not-what-I-expected user dissatisfaction, etc. but that's another story.
So, why don't we take the best of both worlds and use 'Sandwich Design' practices?. Let's analyze the problem without overlooking or ignoring the building materials, skills or details. Let's take a wider point of view and try to provide a solution from both sides, from the top and from the bottom.
In the software development world you'll often see architecture astronauts proposing completely absurd, complex or already solved solutions. You'll often see programmers who excel at programming and know about tiny pieces of technology that could potentially solve complex problems but who don't care at all about what the general problem is.
I think that working from both ends, analysis and synthesis will converge more easily, also mitigating friction among teams and processes and providing a shorter schedule.
This is much easier to achieve in small or medium-sized companies that take a more integrated approach in Software Development. In fact, I believe the best ones really forget about prejudices and myths, roles and methodologies and, aware or not, are using Sandwich Design all the time.
"A beta version or beta release usually represents the first version of a computer program that implements all required features although additional features may be added. It is likely to be unstable but useful for internal demonstrations and previews to select customers, but not yet ready for release."
Yes, we all confuse terms from time to time but, come on, this one is easy. Isn't it?
What is NOT beta software:
An idea you had while having some beers with a couple of friends at the local pub which led to a wonderful (but empty) web site to announce it. (Great way to confuse and disappoint people).
An attempt to show how cool you are in a new language or framework by creating a new, incomplete and buggy implementation of a useless program which you never think to finish or mantain. (Does it make sense to call something beta if you're not following a development cycle?).
Three lines of code at sourceforge.net that you want other people to develop and finish for you without event knowing exactly what you want. (Do the words 'analysis', 'design' or 'specification' mean something to you?).
A program which constantly shows error messages when you're using it as expected. (That's not unstable, that's crap).
Desktop software without any kind of documentation, tips or hints on how to install it or use it, that only works on your computer. (Great way to distribute it!).
A way to publicize other products or projects by means of a powerpoint presentation about a non-existing program which shows a couple of screenshots you designed the day before. (No comments).
Software development is hard and anyone can do whatever he wishes, but fortunately English is a very rich language. Some other useful terms that may describe some programs more accurately include (from Wikipedia again):
"Pre-alpha: Sometimes a build known as pre-alpha is issued, before the release of an alpha or beta. In contrast to alpha and beta versions, the pre-alpha is usually not "feature complete". At this stage designers are still determining exactly what functionalities the product should have. Such builds can also be called development releases or nightly builds."
"Alpha: The alpha version of a product still awaits full debugging or full implementation of all its functionality, but satisfies a majority of the software requirements. It often lacks features promised in the final release, but demonstrates the feasibility and basic structure of the software."
"Vaporware(...) is software or hardware which is announced by a developer well in advance of release, but which then fails to emerge (...). The term implies deception, (...) it implies that the announcer knows that product development is in too early a stage to support responsible statements about its completion date, feature set, or even feasibility."
Snake oil is a Traditional Chinese medicine used for joint pain. However, the most common usage of the words is as a derogatory term for medicines to imply that they are fake, fraudulent, and usually ineffective. The expression is also applied metaphorically to any product with exaggerated marketing but questionable or unverifiable quality."
So could we all please stop spreading the wrong meaning of 'beta'?
Yep, you finally managed to pass all your exams and deliver your final project on time. Five or more years dealing with complex algorithms, software engineering practices and countless other topics which give you a solid base and a bit of fun. Now you should be prepared to face reality with a relatively high degree of comfort. Are you sure?.
A math teacher recently told me that all formal studies are taught based on the supossition that when you finish that stage, you'll continue studying. Primary School is a preliminary to High School, High School to University, University is your career towards your PhD, and so on. So, what happens when you find a job, thus breaking the education link?.
Your mileage may vary, but I bet most of us felt really annoyed during that transition. Reality can be very different to what you had imagined. You need to get used to it.
With your permission, here's some advice that can make the transition smoother:
Learn English (and learn it well). If you're in the IT field, no matter in which country, English is no longer a plus. It's a must. Just as nowadays you can't conceive a computer with no network, think of English as the mean of communication in the field. Superficial understanding of a technical article is not enough, so make a little effort if you need to improve it.
Find a good mentor. This is a difficult one, but try hard to find a mentor inside your organization if you can. He can be your boss, a colleague or maybe even someone from other department. An experienced, willing-to-teach person can solve your doubts, clear your thoughts, refer you to good information sources and guide you towards the right direction.
Search the Web. Yeah, the web can be full of rubbish but, believe me, it's also full of invaluable information and incredibly smart people. To begin with, don't miss a single article from Joel Spolsky . Browsing through his weblog you'll learn how to write a specification, how to schedule a project, etc... in a useful and realistic manner, far away from formal methods that are rarely used (another lesson you'll learn when you face reality). This is just an example, have a look and you'll find other superb sources of information.
Read books. Fortunately, superb books are available on every conceivable topic. I don't recommend you to buy very technical books, cause they are expensive and they'll get outdated in a year. These are the kind of books that should be bought by your company. Instead, spend a few bucks in classic or more pleasant to read books that you can leave on your bedside table. There are lots of them, but maybe you can begin with "Peopleware: Productive Projects and Teams" or "The Pragmatic Programmer", depending on your interests. Buy them in English and always check an on-line store before paying extra money at some expensive bookstores.
Be patient and humble, but believe in yourself. Your career dind't begin at University. It begins now. So be patient and humble, ask when you need it and learn as much as you can. Experience is important, but don't underestimate yourself when you hear or read from others, cause you might surpass their abilities in a short period of time. Many people exaggerate (or even lie), so be critic and believe in yourself as much as you believe in others.
This is just a little introduction that I hope can help you through this process, but don't forget that your experience is the one that matters. So go for it.
PS: How was your transition from University to your first job? Any advice? Share your story with us!
Play with as much as possible as you can - do a Ruby On Rails application, write a Python script, make a modification to a PERL program and contribute to a SourceForge Java application. It's not going to hurt and you will learn different techniques that you may not be officially taught at Uni.
Have at least one demonstration program you can reference in your resume and show off when asked. Preferably this should be something in the field that you want to get into. If it's desktop applications - make sure you have a version that runs on your laptop backed by a MySQL or Access database, if it's web based make sure that your name is on the site somewhere and include the URL in your resume as well as having a local test copy on your laptop.
Always take your laptop to interviews with you. Make sure it's loaded with code, you have a local copy of MSDN or the JRE runtime reference, or the Python library reference as well (preferably all of them). Be prepared to show off your own code if that answers a question in more detail than you could yourself (Remember - actions speak louder than words).
SourceForge projects may be considered lame - but they are very public and it is quite easy to send a link to a list of contributions that you have made. It also shows that you can work in a team, respond to externally submitted bugs and make your own contributions. All of this is important.
Writing is hard. Writing in a language you learnt at school and you seldom use is even harder. Just add about ten years of scientific-oriented education and you can get an idea of what a challenge this can be.
I'll write in English or in Spanish depending on the subject, my mood, my abilities or who knows what.
This blog is focused towards the IT world, especially project management and software development, but don't expect to find a technology freak here.
Just take a look at the blog title again and don't despair if you find me writing about the most stupid things you could probably imagine.
Please feel free to send any comments on any mistakes (especially in English), opinions or suggestions.