Mostrar mensagens com a etiqueta Google Play Store. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Google Play Store. Mostrar todas as mensagens

quarta-feira, julho 26, 2017

Android App: "Spinner Portuguese Style" by MySelfie


(If you want to try it, install it via Google App Store

Every time a new fad appears in the classroom, there are nay-Sayers saying how good/bad/whatever they are for children. Then they disappear, to be replaced quite quickly by something else - there usually seems to be a fad-free hiatus of anything from a couple of weeks to several months. Sometimes these fads, like these spinners, are related to things that have been around for ages, and can fulfill the same purpose, in this case the purpose fidget objects have for many people. But often kids have them simply because other kids have them. Then, of course, there are the adults who collect this sort of retro nostalgia stuff, with an attic stuffed full of Teenage Mutant Heroes cards, Moshi monsters, Star Wars memorabilia, and loom bands - but that's another story! Although they may be a fad for kids, fidget spinners for adults have been around for years. There is a fidget spinner database online that lists over 100 manufacturers. Many spinners are made of various solid metals (brass, stainless steel, titanium, and others) and cost many hundreds of dollars. Lots of different designs too. So, this isn't a fad!

But even if they were a fad, at least they wouldn't be as bad as bottle-flipping, which was the fad-du-jour late last year. How does bottle flipping work? Take any plastic drinks bottle, half fill it with water for weight, and then flip it vertically, with the aim being to have it land & stand on its base. The instability caused by the volume of water moving inside the container is what makes it a challenge. The downsides are that it's noisy (the water swishes in the bottle), it's visually distracting (flying water bottles aren't discreet), and as soon as one kid starts, every other kid in the classroom is digging in their bags to prove they can flip their own bottle better than the kid sitting next to them. Now, this is stupid!

When we were kids, for a while we used to go around with seriously powerful slingshots (with elastics made out of strips of car tire air tube) and we actually gave them up ourselves since they were seriously dangerous (as in: potentially deadly). Still, the pea shooters we mostly used in our local "wars" in the forest could potentially take an eye off if they hit directly (we used a kind of berry which was harder - and thus further flying - than peas). The point being that when pointed out to them, even kids will on their own do some level of risk reduction, just don't expect them to try go all the way to zero risk, since that almost always takes all the fun out of things. This was also stupid! Kids will be kids! Yes, someone will eventually be hurt. Unfortunately that goes for pretty much everything interesting in life:
  1. If you allow wrestling in the school gym eventually a kid will break their neck.
  2. If you allow kids to run in the playground eventually a kid will fall, crack their head badly and end up brain damaged;
  3. if you allow kids to climb trees eventually one will fall and break their spine;
  4. If you allow kids to play with toothpick and rubber bands eventually someone will lose an eye.
But the alternative is a childhood wrapped in cotton wool without climbing any trees or wrestling or running and that's a non-trivial price which gets paid by many many children for every one you save from some permanent injury or death. The rational way to approach the problem would be to quantify the risks in terms of QALYs (quality adjusted life years) or micromorts (each 1 in a million chance of death). A childhood that includes all these minor dangers has value it it's own right. It improves quality of life in a non-trivial way. But try selling that to the public : it's basically impossible to parade a million children who enjoyed their life a bit more than they would otherwise in front of the camera but easy to bring on the one poor kid with a shattered spine or a missing eye. I still fondly remember that I used to nick my granny's hairspray (those were the days) to make the best flamethrower in my neighborhood. Better than a magnifying glass for laying waste to small defenseless creatures; there was always some kid who said they knew someone who'd been killed when the flame backed up into the can and it exploded in his hand ("It's TRUE! I swear! I read about it. It happened in America."). Don't kids make their own dangerous 'toys' anymore? I also remember making a bow and arrow with a tree branch;  lollipop sticks with a pin tied to one end with cotton and a small nut for weight and cardboard flight at the other end made a great dart; best was a sewing needle with a bit of wool threaded through and then fire it off blow-dart style with a narrow tube, pea-shooter or even a Bic Biro with the refill removed. Great at school firing one off and then hiding behind the desk lid.

Come September, the spinners will be forgotten by 90% of kids. At this time of year, shops have to be very careful with these things, because we're only a couple of months into the summer and they need to have enough in stock to milk the so-called fad, but not have too many left by the time the school start in September. Otherwise they will stuck with hundreds of spinners that no one will want any more, and they'll have to clear the shelf of all the left over loom bands to find somewhere to put them.

Not so with my version of the Spinner. It's here to stay. My little boy has been having a ball playing with it on his mother's smartphone. He keeps on asking for it in Manelês: "Pai, quéo spinna" ("Dad, I want spinner"; sorry, I cannot give a proper translation in English, but you get the gist)...

What do I need to go about it? Find a couple of equations regarding the angular momentum and the Force applied on the spinner. The rest is just code...Link on Google Play Store above if you care to try it.



r, radius of the object's circular motion
T, The cycle of the object's circular motion

quinta-feira, dezembro 08, 2016

Android App: "Messenger App for Drivers"

Follow my blog with Bloglovin
(If you want to try it, install it via Google App Store


In the beginning of the universe I was hoping to use messenger to send/receive Google Voice texts and "Google Voice" app to check voicemail. Messenger as a redundant app to send/receive carrier texts is not useful. That's why I started using only text with my "Google Voice" number. The cruz of the matter is that the "Google Voice" app is not very good for texting. The texts are not grouped properly. Texting (or messaging) is meant to be asynchronous. This makes chit-chat possible in terms of having a conversation take place over several days. The "Google Voice" app cuts this chit-chat into many entries that should be placed together. When I ask someone a question about something on Wednesday night, and they don't answer back until Saturday morning, I expect that communication to be contained in just one entry. Fat chance! I think that the "Google Voice" app is only good for voicemail. I also like the transcription and playback without having to "call in" to get it, but that's as far as it goes liking-it-wise.

What about "Hangouts"? I can use "Hangouts" for texting with "Google Voice", but that means  I can't see the voicemail anymore, because voicemail is entered into the same container list as the texts and can't be split. Who was the genius at Google to think this through?? If I choose to use hangouts, then a banner is placed inside the "Google Voice" app (don't forget I' also trying to check voicemail) prompting me to either open "hangouts" or quit using it altogether. I know what you're thinking. Get rid of the banner. Nope! I can't remove this banner. This gets translated into the fact that "Google Voice" app cannot be used in a productive manner, as far as I'm concerned!!! I was hoping to use "Messenger" to send/receive "Google Voice" texts and "Google Voice" app to check voicemail. Forget it!

I actually use my Google Voice number primarily and I did that to keep things less baffling and to keep one number forever, but as of late, Google has just made things more complicated especially since "Google Messenger" does not support "Google Voice". It's ludicrous that I've to get a carrier number to pay for and then use it with free messenger (Google Messenger is even advertising on Google Hangouts for a product that doesn't support Google Voice...!!)

There are now 3 separate google apps for texting and still no good way to do it for Google Voice.

Because of this I decided to make my own messaging app based on the "Google Speech Recognition Engine/API" to be used when I'm on the go (e.g., driving). It's still a work-in-progress. More features in the works to be released in 2017. It's a disgrace that only in 2016 Google opened up its speech recognition API to third-party developers. I'm sure will see Google pricing it at a later date just to fuck us up. Let me enjoy it while it lasts...

For the record, Apple's virtual assistant Siri’s voice recognition capabilities pale in comparison to Google’s. We've yet to see an API for developers to use the Siri tech in their own apps. Not that I'm thinking of switching to the crappy dark side...I much prefer staying on the good side, even with all Google's shenanigans in place...

sábado, novembro 26, 2016

Android App: Brick-a-Brack


(If you want to try it, install it via Google App Store


My idea of fun isn’t always fun for someone else. Listening to music, reading, playing/developing/creating games, exploring (scuba-diving, hiking, biking), and watching Shakespeare plays are just a few things that are fun in my book.  I’m so glad I live in the 21st century, because most of these activities can be done or extended by using current technology.

I love Android technology!  If I had to save a few things in a fire, it'd be my Shakespeare library (some P. D. James as well, and a few others), my smartphone and tablet (my electronic content is already in the Cloud so I wouldn't have to worry about portable disks and my Synology Home Server), and a few other bits and bobs. This leads me to the question. Is programming Fun? It surely is! For those of you who have never written any code before, it really is delightful.  I understand that “programming” can sound intimidating to someone who has never written a line of code before, but if you’re reading this post, then you’re probably pretty familiar with using modern devices, which means most of the hard learning is already done.   

Why is programming fun is the follow-up question. Thinking about it I must say it's because of the absolute joy of creating things. I've always liked to tinker with computer stuff, as well as the fact I love to be always learning. Making things pleases my inventive leanings built deep within me.



When I was starting out in the 80s with my BBS, I couldn't imagine what would happen 20 years or thirty years later. If someone had handed the 12 year-old me a Samsung smartphone or a 10-inch tablet, I’d have assumed they were props from Star Trek.  I can do literally everything with these magic little gadgets.


Google, Samsung, Apple have crammed so many amazing features into smartphones, and I can only marvel at the inventive things I can do with them. As someone who's always been interested in geeky stuff,  the smartphone capabilities are without parallel in the computing world. Gone are the days when my only means of connecting with a computer were the keyboard and mouse.  Cameras, microphones, touch screens, and motion sensors enable me to experience and do things on the smartphone and tablet that were pure SF before this past decade.  Not only are they fun to use, but they’re so fun to tinker with!  Anyone who enjoys taking apart and tweaking with stuff can appreciate the joy of understanding how a computer, smartphone, and tablet works and then bending them to do my will in new and creative ways.



With so many features packed into such a small device, it's easy to access the microphone and then transform sound and video clips that I store in my phone’s memory.  Being a Maker I can hack away at my own game, adding motion and touch events like tilting the screen (like I did with this "Brick-a-Brack" game).  It doesn’t have to be pretty or polished, either ("Brick-a-Brack" game is anything but that; if you try it you'll see why). Just getting my app to recognize a sideways movement and moving the paddle in one direction, then in the other, can be an amazingly fulfilling moment.

When I was coding for a living, some of my superman moments came at the end of a long period of time coping with a specific issue, finally being able to "see the light" that allowed me to connect to a Database server and successfully understanding the way a SQL statement was supposed to work or why a particular database was having performance problems in production. 

Isn’t it fun to play with magic?

NB: My other Apps.

NB2: SF = Speculative Fiction.

domingo, novembro 20, 2016

Android App: Whack the Minion!


(NB: Sorry. I haven't been able to upload this to the Google Play Store. This is what I got in reply: "After review, Whack the Minion, has been suspended and removed from Google Play as a policy strike because it violates the impersonation policy." Damn the minion. I should have chosen "google, the minion moron" instead...)




import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
public class Game extends JFrame{
private JPanel panel;
private JLabel[] holes = new JLabel[16];
private int[] board = new int[16];
private int score = 0;
private void pressedButton(int id){
int val = board[id];
//if val is 1 = mole
//if val is 0 = empty hole
if(val==1){
score++;
}else{ //val==0
score--;
}
lblScore.setText("Score: " + score); //update the score
clearBoard();
Whack A Minion

genRandMole();
}
private void initEvents(){
for(int i = 0; i < holes.length; i++){
holes[i].addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
JLabel lbl = (JLabel)e.getSource();
int id = Integer.parseInt(lbl.getName());
pressedButton(id);
}
});
}
}
private void initGUI(){
setTitle("Whack A Minion");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 608, 720);
JPanel contentPane = new JPanel();
contentPane = new JPanel();
contentPane.setBackground(new Color(0, 51, 0));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
JLabel lblTitle = new JLabel("Whack A Minion");
lblTitle.setForeground(new Color(153, 204, 0));
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
lblTitle.setFont(new Font("Century Gothic", Font.BOLD, 20));
lblTitle.setBounds(0, 0, 602, 47);
contentPane.add(lblTitle);
panel = new JPanel();
panel.setBackground(new Color(0, 102, 0));
panel.setBounds(32, 105, 535, 546);
panel.setLayout(null);
contentPane.add(panel);
Whack A Minion

holes[0] = new JLabel("0");
holes[0].setName("0");
holes[0].setBounds(0, 396, 132, 132);
panel.add(holes[0]);
holes[1] = new JLabel("1");
holes[1].setName("1");
holes[1].setBounds(132, 396, 132, 132);
panel.add(holes[1]);
holes[2] = new JLabel("2");
holes[2].setName("2");
holes[2].setBounds(264, 396, 132, 132);
panel.add(holes[2]);
holes[3] = new JLabel("3");
holes[3].setName("3");
holes[3].setBounds(396, 396, 132, 132);
panel.add(holes[3]);
holes[4] = new JLabel("4");
holes[4].setName("4");
holes[4].setBounds(0, 264, 132, 132);
panel.add(holes[4]);
holes[5] = new JLabel("5");
holes[5].setName("5");
holes[5].setBounds(132, 264, 132, 132);
panel.add(holes[5]);
holes[6] = new JLabel("6");
holes[6].setName("6");
holes[6].setBounds(264, 264, 132, 132);
panel.add(holes[6]);
holes[7] = new JLabel("7");
holes[7].setName("7");
holes[7].setBounds(396, 264, 132, 132);
panel.add(holes[7]);
Whack A Minion

holes[8] = new JLabel("8");
holes[8].setName("8");
holes[8].setBounds(0, 132, 132, 132);
panel.add(holes[8]);
holes[9] = new JLabel("9");
holes[9].setName("9");
holes[9].setBounds(132, 132, 132, 132);
panel.add(holes[9]);
holes[10] = new JLabel("10");
holes[10].setName("10");
holes[10].setBounds(264, 132, 132, 132);
panel.add(holes[10]);
holes[11] = new JLabel("11");
holes[11].setName("11");
holes[11].setBounds(396, 132, 132, 132);
panel.add(holes[11]);
holes[12] = new JLabel("12");
holes[12].setName("12");
holes[12].setBounds(0, 0, 132, 132);
panel.add(holes[12]);
holes[13] = new JLabel("13");
holes[13].setName("13");
holes[13].setBounds(132, 0, 132, 132);
panel.add(holes[13]);
holes[14] = new JLabel("14");
holes[14].setName("14");
holes[14].setBounds(264, 0, 132, 132);
panel.add(holes[14]);
holes[15] = new JLabel("15");
holes[15].setName("15");
holes[15].setBounds(396, 0, 132, 132);
panel.add(holes[15]);
Whack A Minion

setContentPane(contentPane);
}
private void clearBoard(){
for(int i = 0; i < 16; i++){
holes[i].setIcon(loadImage("/moleIn.png"));
board[i] = 0;
}
}
private void genRandMole(){
Random rnd = new Random(System.currentTimeMillis()); //seeding random int moleID = rnd.nextInt(16);
board[moleID] = 1;
holes[moleID].setIcon(loadImage("/moleOut.png"));
}
private ImageIcon loadImage(String path){
Image image = new ImageIcon(this.getClass().getResource(path)).getImage();
Image scaledImage = image.getScaledInstance(132, 132, java.awt.Image.return new ImageIcon(scaledImage);
}
public Game() {
initGUI();
clearBoard();
initEvents();
}
public static void main(String[] args) {
Game frame = new Game();
frame.setVisible(true);
}
}

NB: I didn't bother correcting the code indentations. Beware of attempting an implementation without that. On top of that, the above code implementation does not follow to the letter the app on the Google Play Store, meaning, the app on the google play store is not the latest version. I still have to update the app with the above-mentioned source code. One of these days...Or probably never...So much to do, so little time to do it...

NB2: App developed with Matilde's help, for our baby boy Manuel Maria. May he spend many happy hours whacking the minion...

terça-feira, junho 30, 2015

Android App: "Sons de Bichos"





The sounds animals make. App made for Manuel Maria to enjoy, and to let his parents sleep...

Just a tap is enough to start Manuel Maria on his fun path to discovery. He's encouraged to learn the names of animals and their characteristic sounds, and cute sound effects!

NB: "Sons de Bichos" = "Animal Sounds".



segunda-feira, junho 01, 2015

Children's Day: "Urso Taralhouco", A Flappy Bird Look-alike




My doddering bear leaping and tumbling in Lisbon...Mind you, this is only a study for a full-fledged game to be developed later on. Don't consider this to be a proper "game"...

Today being children's day, I thought it'd be great to publish here one of the games I've been working on for the past weeks. It's still on beta stage, i.e., there's only just one level to play, but as soon as I put my game hat on, I promise to develop it further.

When Flappy Bird come out on the Google Play Store I was totally, and hopelessly hooked. I knew that one day I'd have to have my own flappy. And this is it.

I believe games like these have a deeper meaning when it comes to human pysche. What makes it so addictive? I think its appeal lies in the fact that we can connect it with the difficulties of life. Everyone going through life, avoiding hurdles only to fail, know what I'm talking about. "Urso Taralhouco" show us the lesson of getting back up again and pushing through. Sometimes we just need a distraction for a few minutes (or hours, depending on the degree of addiction...). 

Google Play Store Link on the image above for you to try it out.

Have fun.

NB: For my english-speaking followers, Urso Taralhouco" means "Doddering Bear" in Portuguese.