I recently just picked up MEAN.IO, and decided to work on my Windows machine today, Set up everything but one one thing, initialize a new MEAN project, gave me all the time "Prerequisite not installed: git". If you experience this too and have git installed already, don't beat up yourself so hard, it's a simple fix.

https://www.turn-on.de/media/cache/article_content/media/cms/2016/03/160303-Samsung-Gala-y-S7-Edge-3.jpg

After a long wait, the Nougat update appeared on my phone earlier today, It had been available for Vodafone user's since late January but now appears to be fully rolled out for everyone in Germany. The size of the update is 1232.44 MB.

If you do not have the update yet, you can check if it is available for you by going to: 
Settings -> About Device -> Download Updates Manually.

  

Android Nougat is the latest version of Android (v. 7) and brings in some important features, I will post some noticeable changes in the Galaxy S7 edge after installation is completed.

After a disappointing run of form in 2016, sony finally gears up and goes all out in 2017. Cramping so much troll features into the Xperia XZ upgrade. Sony finally seems ready to compete with Samsung and Google. Everything about the phone is exciting, right from larger camera pixel sizes, to display resolution and super-slow-mo ability.

Camera (Super Slow MO, Large)

Before now, Sony cameras in recent times, especially before Xperia XZ, have been disappointing, which makes us wonder why they make very good camera sensors for Samsung an Apple yet, don't make good cameras for their own brand. This year Sony gears up perfectly to change all that.

The device features predictive capture and super slow mo (first for a mobile device), enabling users to capture videos at 960fps for an amazing super slow motion effect (Bullet time like), THAT IS AMAZING.


It also features larger pixels than that of Xperia XZ, making the camera much much better even at a lower resolution of 19MP. The front camera remains at an awesome 13MP.

Display (4K + HDR)

I totally did not buy the old Xperia XZ for 2 reasons, the display and the RAM (even though 3gb is more than sufficient for 1080p). I didn't really care much about the processor (820 was good enough) but sticking to 1080p was not welcomed. This year Sony brings back 4K resolution from Xperia Z5 premium and tops it up with HDR support (I can already imagine PS4 remote play with HDR :D :D :D :D ). It is another first for a mobile device. 
The display comes at 5.5",  which is good but I would have preferred it came at 5.7" like the S7 edge, at 4k this won't do much damage to the already monstrous pixel density.

Hardware (Snapdragon 835, 4GB RAM)

XZ premium comes with the latest Snapdragon 835, with a 4GB Ram (as expected for a 4k + H DR display). It's a BEAST!.It comes with 64GB internal memory expandable to 128GB. Now, that is awesome!

Design (Glass on both ends

)Glass back returns to the XZ, featuring Corning® Gorilla® Glass 5 on both the front and rear. It comes, it looks pretty similar to the Xperia XZ; retains the beauty but in larger more glassy form.

More on Xperia XZ premium here.

A friend of mine, Gbenga Medunoye (founder of Laxus Animation) just made his first animated short film, titled Dotted Lines. The film depicts a young girl's traumatic ordeal with a form of depression induced by loneliness. The Animation samples vocals of Jamie Bell from Greenday's music video titled "Wake Me Up When September Ends".

The short film was made totally from ground up by Gbenga, who recently went into the field of CGI and 3d Modelling, it is a good start, seeing a Nigerian build this up with a simple laptop, yet making such wonderful effort as to creating his film in just few months after devoting time to learning 3d Modelling.

Have a look at the video below:


Although lots of improvements can still be made, especially with regards to the number of frames per seconds, but nonetheless, this was built over a very minute (non-existent) budget. With a reasonable budget and the proper tools, it is clearly obvious he can piece together an awesome animated, AFRICAN MADE animated movie.

Please show some him some support through here his GoFundMe campaign, he hopes to bring traditional African stories to life through CGI and his startup "Laxus Animations".

To help Laxus Animation grow!!!! click here.


Simulating keypress in Windows forms was very easy due to the availability of the Sendkeys.send method, but this is absent in WPF, even if you import the Windows.Forms namespace it still won't work and will recommend SendWait. I only just noticed recently when I needed to implement something similar. I finally got it working and this was how.

I had previously used user32.dll for moving mouse cursor programmatically but recently needed to also simulate keypresses and since SendKey was unavailable for WPF I had to resort to using the user32.dll's SendInput method, midway into that I stumbled on this awesome library, Windows Input Simulator which is a wrapper for user32.dll's SenInput and implements very convenient methods to simulate/trigger key-presses even text input.

You can download from here, unzip and import the inputsimulator.dll, and use the WindowsInput namespace and you're good to go. The readme from the author very easy to follow.

Give it a try, it's awesome. It saved me a lot of time instead of working all over again with SendInput, it was very helpful and time saving!!




It is a bit unusual for Sony to throw in A-list PS4 games into free for download Playstation Plus monthly games, usually, they throw in Indie games (sometimes, very cool ones at that) but Sony turns on the HEAT this month.


Sony delights us all by adding Little Big Plante 3 to Playstation Plus free list of February, this is quite a fun game and can be played with kids and friends. It is an awesome move by Sony, hopefully we will see lots more generosity from their end this year.



Remember these games are only available for download within the month they're released, if you miss it now, you probably have to buy it when you get to feel like playing it, so hurry and download now and have access to it forever. 

Ever experienced this error when installing MikText for using latex on windows. This was a weird one, given we ran the installation as admin and in an administrator privileged account yet the error kept given this error. The solution was very simple and direct.


Restarting may not really help you out with this. What worked was installing in safe mode. This can be gotten to on Windows 10 in several different ways.


  • Right click on Start and click run (or simply type in Windows Key + R).
  • Type in msonfig
  • Within MSConfig, click on the boot tab.
  • Click on Safe Boot (ignore the sub options).
  • Click on Apply, ok and restart your PC.
The setup should run perfectly. (Repeat the above process to disable Safe Boot)

When you are back in normal mode, go to Command Prompt, and tpe pdflatex and see it work :
image from blog.smartthings.com


Just earlier working on an app, I realized I needed to display tabbed information to users in a dialog box. This is quite different from the usual Tabbed Activity.

Dependency

The first step is to make sure you have "'com.android.support:design" in your build.gradle file.

Layouts

Next is to create the layout xml files for the custom dialog and your fragment. Your custom dialog may look like this:

dialog_sample.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:orientation="vertical" android:layout_width="match_parent"  
   android:layout_height="match_parent">  
   <android.support.design.widget.TabLayout  
     android:id="@+id/tabLayout"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     />  
   <android.support.v4.view.ViewPager  
     android:id="@+id/masterViewPager"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     />  
 </LinearLayout>  

And for the purpose of this tutorial, we will use a minimal Fragment, like the one indicated below:

fragment_sample.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:orientation="vertical" android:layout_width="match_parent"  
   android:layout_height="match_parent">  
   <TextView  
     android:id="@+id/textView"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content" />  
 </LinearLayout>  

Implementation

Next up is, building the java classes for the dialog, the fragment adapter, and the fragments.

Here is a sample implementation of the viewpager's adapter:

CustomAdapter.java
 public class CustomAdapter extends FragmentPagerAdapter {  
   List<Fragment> mFragmentCollection = new ArrayList<>();  
   List<String> mTitleCollection = new ArrayList<>();  
   public CustomAdapter(FragmentManager fm) {  
     super(fm);  
   }  
   public void addFragment(String title, Fragment fragment)  
   {  
     mTitleCollection.add(title);  
     mFragmentCollection.add(fragment);  
   }  
   //Needed for  
   @Override  
   public CharSequence getPageTitle(int position) {  
     return mTitleCollection.get(position);  
   }  
   @Override  
   public Fragment getItem(int position) {  
     return mFragmentCollection.get(position);  
   }  
   @Override  
   public int getCount() {  
     return mFragmentCollection.size();  
   }  
 }  

Note: you must override getTitle for the Tabs to have proper names.



Below is also a sample fragment for illustration purposes, we'll keep it simple for now:

CustomFragment.java

 public class CustomFragment extends Fragment {  
   private String mText = "";  
   public static CustomFragment createInstance(String txt)  
   {  
     CustomFragment fragment = new CustomFragment();  
     fragment.mText = txt;  
     return fragment;  
   }  
   @Override  
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
     View v = inflater.inflate(R.layout.fragment_sample,container,false);  
     ((TextView) v.findViewById(R.id.textView)).setText(mText);  
     return v;  
   }  
 }  


Go ahead and create your dialog's class:

TabbedDialog.java
  
 public class TabbedDialog extends DialogFragment {  
   TabLayout tabLayout;  
   ViewPager viewPager;  
   @Nullable  
   @Override  
   public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  
     View rootview = inflater.inflate(R.layout.dialog_sample,container,false);  
     tabLayout = (TabLayout) rootview.findViewById(R.id.tabLayout);  
     viewPager = (ViewPager) rootview.findViewById(R.id.masterViewPager);  
     CustomAdapter adapter = new CustomAdapter(getChildFragmentManager());  
     adapter.addFragment("Boy",CustomFragment.createInstance("John"));  
     adapter.addFragment("Girl",CustomFragment.createInstance("Stacy"));  
     adapter.addFragment("Robot",CustomFragment.createInstance("Aeon"));  
     viewPager.setAdapter(adapter);  
     tabLayout.setupWithViewPager(viewPager);  
     return rootview;  
   }  
 }  


And there you have it, it displays similarly to what's shown below:

Full source can be found here: https://github.com/kunmi/BlogTutorials/tree/master/TabbedDialog




You may have experienced many times when you move between countries; your google language is determined from the IP of where you're browsing from. Here is how you can enforce your language of choice without having to use translate feature of chrome.

If one the google site you're on, there's no language switch in site, modify the url to and add the quey hl=(2 letter language name) e.g hl=en. If there are queries already before it, then &hl=en, if it's first, ?hl=en.

e.g
https://console.developers.google.com/apis/dashboard?hl=fr
https://www.google.com/adsense/signup?subid=ww-ww-org-signup&signup=rs&hl=en