20 July 2017

What I learn from .018 : Coursera course : Usable Security


Ages ago. I enrolled myself into course Usable Security on Coursera. 


    It was about usability and Human-Computer Interaction related to security. If you are interested in UX.  I highly recommended this course.
Sadly, I lost some of my notes, but this is what I still remember from  I learned from this course:

  1. Human-Computer Interaction (HCI) is a study how people interact with technology.
  2. Tasks are goals that users set out to accomplish when they are using the system. 
  3. To evaluate the usability of the system, you need to create a representative list of tasks and evaluate the usability of those tasks according to following factors:
    1. Speed (how quickly task can be accomplished)
    2. Efficiency (how many mistakes are made in accomplishing the task)
    3. Learnability (how easy is to learn to use the system)
    4. Memorability (once learned, how easy is to remember how to use the system)
    5. User Preference (what do users like?)
  4. Tasks.. 
    1. should NOT  be leading or descriptive (shouldn't have instructions what to do step by step)
    2.  should NOT be too specific (shouldn't say like third link )
    3. should NOT be a focus on least important  or rare elements than users will do (like checks list of authors of the website)
  5. Mental models
    1.  let understand how users perceive systems.
    2. are used our experience and/or knowledge from all other parts of our life to  interact with new things. 
    3. are important to understand as If we take these mental models into account when we're design software, we can build things that will be easier learn, remember and easier to use faster and more efficient.
  6. A mental model is a combination of:
    1. Affordances  (Affordances are things within a system that show a user how they're supposed to be used. 
    2. Mapping
    3. Visibility
    4. Feedback
    5. Constraints (how a system can prevent us from doing things that we shouldn't and how the design of it can encourage us to do things the right way.
  7. There are much more to learn from this course but I forgot it already.
Conclusion
    It is a great course for people who are interested in UX. It is worth spend some time on readaing about basics of cognitive psychology and learn how memory works as It will help you learn much more from this course.

14 July 2017

Coolpointer.015 : An Interesting UI design of volume control





        In this article Fabricio Teixeira shows an 'interesting' approaches to design  volume controls . Some of them indeed makes listening things ... adventurous. 

Worth to see if you have 3 minutes on your lunch break





6 July 2017

What I learn from 017 : Kotlin Dojo by Kotlin London User Group

Recently, I spoke with some colleagues about Kotlin and I decided to do some research about this language. Kotlin is a statically typed programming language that runs on the JVM and it can be translated into ECMAScript apparently. My first impression about Kotlin was it is like Java without a legacy mess and with many synthetic sugar features but at the time of writing this, I didn’t explore language enough to make any statement with some evidence. 

Accidentally, I discover Kotlin London Meetup that was organizing the Kotlin-Dojo. I always want to see how dojo sessions look like, so it decided to attend.  Before I went, I managed to grasp basic syntax and that turns out to be a bare minimum to be able to enjoy this dojo. 

 It was very well organized. Quick introduction, tasks were usually well explained and they have some learning value (not only code practice) and they provide links to various references. Some exercises were about learning Kotlin. Some of them show when IntelliiJ was helpful and where was misleading. Presenters after some time show solution and give an opportunity to others to show their solutions too. 
 I paired with a guy who seems to know many things so I could learn a lot and as I saw some syntax I was able to contribute some stuff too. What I learn from Kotlin Dojo:
  1. Kotlin has decent IDE support but still, there are many misleading glitches.
  2. Kotlin is an interesting language to learn, but I feel it is more a mod to Java language than independent language.
  3. It is mature enough to be used in production. There are already a few companies who are using Kotlin.
  4. I really like some synthetic sugar in Kotlin like var (mutable variable) and val (immutable value) and much more.
  5. I have noticed that when other languages that compare themselves to Java, they highlighting fact that they compressed syntax to improve readability. Yes, there is less noise on screen and it makes developing is faster but later on, understand and debugging code us more difficult. These syntax optimizations reduce readability and memorability (ability to re-learn what code does and why). So far I have noticed this problem in Groovy, Scala and ... Kotlin where somebody struggles to understand what compiler was moaning about


 Overall, it was a great meetup. I will try to attend in future. In 2018 where I am planning learning this language as 2017 is a year I am learning Python.

 If you are interested in learning Kotlin, check this meetup:
https://www.meetup.com/kotlin-london/

 If you want to see exercise check this github: https://github.com/springernature/kotlin-dojo

1 July 2017

What I learn from.016 : What I learn from "The JVM as a platform for building smart contracts" by Ben Evans



"The JVM as a platform for building smart contracts" by Ben Evans

https://www.meetup.com/Londonjavacommunity/events/240079438/


I attended to meetup organized by London Java Community. It turns out to be interesting and bit confusing presentation but overall I found very useful.


Most interesting quote: "User is always the weakest part of the system".


What I learn from:

  1. Java was created for the job, not as academic research. Java is very pragmatic and conservative in change and that's one of the reasons why is so popular choice.
    • It is something that Brian Goetz (Java architect) mentioned too. I still believe that some stuff should be removed, but I can live with it. 
  2. I learn what strictfp is for and so now  Most CPU can do better precision. strictfp prevent from this happen.
  3. I heard basic about Cryptocurrency. 
      • I learn that a digital currency in which encryption techniques are used to regulate the generation of units of currency and verify the transfer of funds. (Source: Wikipedia)

    Why it was a bit confusing? This due fact that talk suddenly switched from cryptocurrency into how to implement it in Java. However, to be fair, Ben asked people how familiar are they with this concept and majority were very familiar and actually I learn quite a bit about it, so I am very happy.

    FOLLOW AUTHOR:


    TWITTER: https://twitter.com/kittylyst/


    FOLLOW LONDON JAVA COMMUNITY


    MEETUP: https://www.meetup.com/Londonjavacommunity/

    21 June 2017

    What I learn from 015 : article by Richard White titled "How We Use Trello & Google Docs to Make UserVoice Better Every Day"




    "How We Use Trello & Google Docs to Make UserVoice Better Every Day" by Richard White

        Jira and Confluence tools from Atlassian are one of the well-known standard tools used for product management and team collaboration. In the article "How We Use Trello & Google Docs to Make UserVoice Better Every Day" by Richard White, we can see and alternative way to do product management using Trello a great "get things done" task tool and google docs.
    It is worth reading it.

    What I learned from this article:


    • A person is not required to take the top card from the list but rather the top card that it feels most comfortable to handle. 
      • It is a great idea. For example for pair programming when you can switch pairs between tasks as different people like different things and want learn different things, so they can switch pair on the ticket basis.
    •  Etiquette is that you should never have your face on more than 2 cards at a time: 1 major project and 1 minor.
    • Something that I should work on in the future. Currently, I do not follow this rule as for when I finish the task but I need to wait for our CI to finish successfully, I have a habit to pick-up something new.
    • If a bug is considered as “Critical” by the customer team then it can be pick up by “developer on call”.
    • They set limits to pick 7 bugs per week. It prevents development to be disturbed because there are always bugs and the customer team always wants them all fixed. They learned that set a constant throttle of how much time they spend on bug fixing helps them to have more stable development.
    • If you don't have a dedicated support team, then having a limit for a number of bug fixes to do is crucial. I experienced a chaos when our team suddenly need to take care of support and it turns our development into a mess. We fixed it by having dedicated person who handles these issues.
    • We keep a list of areas that we think might need refactoring. Engineers take small cards when they feel like it and add them to in progress; larger cards need to be planned in the Next Up list.
    • It is a great idea to have 'spare time' to spend on improving code without hassle.
    • One of they board is called The Planning Board is where CEO, PM, and head of UX spend the majority of the time. It has the following columns: Next Up,  Spec (This means “someone needs to write a spec”.  Design (This means that the card needs a designer to take a look at it), Ready (We have a spec that’s been reviewed by the idea creator and by the design team. )
    • It sounds 3 amigos style meeting that helps sprint plan.
    • Have a single prioritised list for the product team to work from. Don’t have a separate system for bugs because from they experience having more than one list breaks down a prioritisation.


    Overall, the useful article to read if you want to learn on how to organise your team when what tools can you use if you don't want to spend the fortune on Atlassian products.



    FOLLOW AUTHOR:

    LINKEDIN: https://www.linkedin.com/in/rrwhite/
    TWITTER: https://twitter.com/rrwhite

    12 June 2017

    Doms learn Chinese: Word Game v17.2 released!

    Doms learn Chinese: Word Game
    v17.2





     You can download from here:


    It is a maintenance release ,where I fixed few ui glitches..

    CHANGE LOG
    1. Fix few UI glitches
    2. Add few words
    3. Minor improvements 

    LINKS



    Twitter: 

    5 June 2017

    Coolpointer.014 - Github Audio





            Very cool tiny project that play music where musical note is a event that happen on Github.
    It will never create a song that will win Eurovision, but output can be quite interesting.
    It is usually sounds like music for meditation, sleeping or  relaxing. 

    developed by Sudhanshu Mishra


    FOLLOW AUTHOR on:


    29 May 2017

    Coolpointer.013 : What the... JavaScript? talk by Kyle Simpsons





    " What the... JavaScript? " by Kyle Simpsons is a quite funny talk about " interesting design decisions " made by JavaScript. Kyle explains why some of them are logical even if they are not intuitive. If you are interested in general JavaScript and you want to answer this question:

    "what in the hell is that ?"


     when you read Javascript code, then it is worth watch it.

    "WTF the ... JavaScript?" by Kyle Simpsons


    FOLLOW AUTHOR on:



    24 May 2017

    How run test multiple times in IntelliJ IDEA ?

    Solution works for :  IntelliJ IDEA 2016.3 and later, but I don't know when it was added.

    Ages ago, IntelliJ IDEA added really cool feature to repeat test.
    If for whatever reason you need repeat test x amount of times then follow these steps:

    1. Run test (tests) first.
    2. Go to Edit Configuration
    3. In configuration tab, in top right corner, you can specify repat test


    Apply and run it :)

    Small warning!  For very large amount of test IntelliJ IDEA start works very very slowly. I usually I don't have problem with running more than around 65535  and more tests,but it depends on tests amount and size of the project :).



    21 May 2017

    How to prevent Firefox from being automatically updated ?

    WARNING!  Do not use out of date Firefox for anything than run the test! Shitware can screw your PC badly and you don't want have trouble at work, do you? Don't believe me, check recent news about WANNACRY which attack Windows that haven't been updated for just 2 months!

    STORY:
            I am back-end developer. On rare occasion, I am invited to do some basic front end stuff. I have done my ticket. I needed to run the test now to ensure that I didn't break this fragile AngularJs code. It turns out that I need to have a specific version of Firefox. The problem is Firefox is the maniac about updating itself to the newest version which is a great thing! Unfortunately, it was a problem in my case. So what to do?

    SOLUTION:


    I did these steps and my Firefox was cured of obsession to update itself.

    1.  Install older version of Firefox (https://ftp.mozilla.org/pub/firefox/releases/)
    2.  Install as usual (DO NOT SELECT check for update).
    3. DO NOT RUN after installation.
    4. Go to the installation folder and delete these files:
    5. delete update.exe
    6. delete updater.ini
    7. delete update-settings.ini
    8. delete maintenanceservice.exe
    9. Uninstall Maintance Service (if installed)
    10. Run Firefox.
    11. Go to settings and disable auto update.
    12. Done!

            From now. Firefox will not start the auto update on run and Firefox will be unable to auto update itself in any way. Yes, Firefox has other ways to figure out that update is required. For example, when you click on "About Firefox". Don't panic! It will download a new version and then failed to run the updater. As a side effect, you will get an error message.