The new UE Blast may be the first great portable Alexa speaker

It’s starting to feel like the biggest threat to Google Assistant establishing a presence around the home is simply being crowded out by a swarm of Alexa gadgets. Today, Ultimate Ears — maker of the very popular Boom line of Bluetooth speakers — announced a new series, the UE Blast, with far-field microphones for Amazon’s Alexa built right in. Both the Blast and its larger, louder sibling the Megablast will begin shipping in late October for $229.99 and $299.99 respectively. Those prices are significantly higher than the mainstream Boom products, which will remain available for consumers who simply want a take-anywhere Bluetooth speaker.

From the outside, the Blast and Megablast each look basically identical to the Booms before them. But there are some key hardware differences; they’re just not obvious. For one, both Blast speakers have Wi-Fi chips inside, and that’s how they’re able to get online and connect with Alexa. Also, each has multiple microphones running around the speaker underneath the fabric. And the Megablast is able to crank 40 percent louder than Megaboom, making it the most powerful speaker that Ultimate Ears has ever produced. In the US, both speakers will come in graphite (black), blizzard (white), merlot (red), or blue.

 

You can still connect to either of them via Bluetooth, and they both have the same water and drop resistance as the Boom devices. But Ultimate Ears thinks that Alexa will add an extra layer of convenience when you’re listening around the house. The biggest convenience is that playing music over Wi-Fi (with Alexa) means that it won’t get interrupted when someone calls you.

Unfortunately, Spotify support won’t be available through Alexa at launch (just like Sonos), and it sounds like UE will need a few months to make that happen. I wouldn’t bet on it happening before the holidays, but we’ll see. You’ve always got the option of simply using Bluetooth for Spotify, though — and any other service that doesn’t work with Alexa voice commands.

The services that will support Alexa out of the box are Amazon Music, iHeartRadio, and TuneIn. That’s a pretty small list if you’re not subscribing to Amazon’s premium, on-demand music option. Pandora and Deezer will be added “in the future.”

Alongside the two speakers, UE is also launching a charging station it’s calling the Power Up. The white puck is large enough to support both Blast sizes and will cost $39.99. Having something to just drop your Blast onto for a constant charge makes a lot of sense since some people will want this to function as an always-on Alexa device. Portable battery life is claimed as “up to 12 hours” on a charge.

I’m pretty excited about these speakers. If nothing else, you could view them as more durable and portable versions of the Echo. They’ll offer Alexa’s usual assistance and most skills such as control over your smart home devices. (Alexa phone calls won’t work here, nor are they available on the Sonos One.) UE already added Alexa to the Boom 2 speakers, but that was a post-release firmware update and can’t match the convenience and integration of these new products. The Blast and Megablast are always listening for “Alexa,” whereas you’ve got to manually activate the future on the Boom.

But those prices, though. These are some expensive speakers. They cost more than the Sonos One, and I’d hesitate to predict even the Megablast sounding better than a Sonos. For $150, the Blast would be a must-have holiday gift and maybe the ideal portable speaker. Going over $200 takes something away from that appeal.

From TheVerge.com

Starting and changing mindset with Elixir

What is elixir?

Created in 2012 Elixir is functional and dynamic language, which make a real option if we want to create a web application. Since, Elixir runs under Erlang virtual machine (BEAM), which make it really stable and mature.
Created by José Valim, who is a Ruby on Rails enthusiastic and had helped the community a lot. So, he took the the best of Rails and merge it with the efficiency of Elixir + Erlang.

Elixir is special for high availability systems .

Functional

The first two meanings we have to forget are objects and classes. It’s all about functions that operate and transform data, pure functions. But, We can not rely on Elixir being a pure functional language.

Dynamic

Elixir variables don’t need to be declared as an specifics data type, It checks at runtime.

Inmutable

Data structure won’t change. For example:

# Uses the match operator to give a true on function
name = “Han Solo”

# It creates a total new value for the new variable
name = “Luke Skywalker”

Concurrency

This is something that Elixir can sell without any help, It’s a big feature here. Since, Elixir runs under BEAM, concurrency is much easier. Code running simultaneously, Thanks Erlang !

Reliability

Elixir is a young language, but It runs on Erlang VM, which is pretty old and a reliable system, one of he most around the globe.

Easy to read and write

By taking some Ruby stuff, Elixir decided to go with the syntax, which is good for us. The code is easy to read and o write.

Modules or classes ?

As I mentioned before classes are not considered in Elixir, every function is stored and handled in a modules, as their namespace.
defmodule HelloModule do
def say_hi do
IO.puts "Hello World !"
end
end

Structs

This is a map where we set up a set of keys and their default values. It’s defined in the module.

defmodule User do
defstruct name: "John", roles: []
end

iex> %User{name: "Han", roles: [:pilot, :shooter]}
User{name: "Steve", roles: [:pilot, :shooter]}

Strings

A string a basically a sequence of bytes, UTF-8 encoded binary. Elixir provides to us a set of functions to interact with our strings.

Lenght.

length/1
It returns the number of bytes in our string.
iex> String.length "Walter White"
12

Replace

replace/3
It returns a new string, It receives three parameters, the string to be changed, the pattern to be replaced and the replacement string.
iex> String.replace("Seed","e","i")"Siid"

Duplicate

duplicate/2
It returns a specific string duplicated the number of times seted
iex> String.duplicat("Hello",3)"Hello Hello Hello "

Split

split/2
Ir returns a list based on the patter of split.
iex> String.split("Hello, I'm Bond, James Bond", ",")["Hello", " I'm Bond", " James Bond"]

Collections

List

A simple collection of values, where there can be any type of data.

iex> ["String", 12.3 , :atom]["String", 12.3, :atom]

List Concatenation

++/2

iex> ["Luke", "Leia"] ++ ["Han"]
["Luke", "Leia", "Han"]

List Subtraction

–/2

iex> ["String", 12.3 , :atom] -- [:atom]
["String", 12.3]

Head / Tail

Heads is the first element of our list and the tail is te remaining elements on the list.

iex> hd ["Head", 222, :tail]
"Head"

iex> tl ["Head", 222, :tail]
[222, :tail]

Keyword Lists

It’s an associative list composed by two tuples, where the key have to be an atom data type, they are ordered and keys can be given more than once.

iex> [foo: "bar", hello: "world"]
[foo: "bar", hello: "world"]

iex> list = [{:a, 1}, {:b, 2}]
[a: 1, b: 2]

iex> list ++ [{:c, 3}]
[a: 1, b: 2, c: 3]

Maps

Maps are more flexible compare to keyword lists, keys can be any value, included variables and maps keys doesn’t follow any kind of ordering.

iex> key = :one

iex> list = %{key => 1, :two => 2, "three" => 3, 4 => 4}
%{:one => 1, :two => 2, "three" => 3, 4 => 4}

# Get an specific value from a given key.
iex
> Map.get(list, key)
1

# Add a tuple to the current list.
iex>
Map.put(list, :five, 5)
%{:one => 1, :two => 2, "three" => 3, 4 => 4, :five => 5}

# Return the map on list format. 
iex
> Map.to_list(list)
[{4, 4}, {:atom, 1}, {:five, 5}, {:two, 2}, {"three", 3}]

Enum

It is a set of algorithms to be used over collections. In this section we will just show some of them. You can check all of them over here.

All

all?/2
We supply a fn(x) where will be run for all items on our collection. Will return true if all invocations returns true, with just one that returns false the entire method will return false.

iex> Enum.all?([1,2,3], fn(number) -> number < 5 end )
true

iex> Enum.all?([1,2,3], fn(number) -> number < 2 end )
false

Any

any?/2
We supply a fn(x) where will be run for all items on our collection. Will return true if at list one invocation returns true, otherwise will return false.

iex> Enum.any?([1,2,3], fn(number) -> number < 2 end )
true

iex> Enum.any?([1,2,3], fn(number) -> number == 5 end )
false

Chunk By

chunk_by/2
Specially if we need to group our collections based in a given function.

iex> Enum.chunk_by(["one", "two", "three", "four", "five"], fn(x) -> String.length(x) end)
[["one", "two"], ["three"], ["four", "five"]]

Each

each/2
Invokes the given function for each item on the collection. It returns an atom :ok

iex> Enum.each(["one", "two", "three"], fn(x) -> IO.puts(x) end)
one
two
three
:ok

Map

map/2
Invokes the given function for each item on the collection. It returns a new collection with new values.

iex> Enum.map(["one", "two"], fn(x) -> String.upcase(x) end)
["ONE", "TWO"]

Member

member?/2
Checks if an item exists in a collection.

iex>  Enum.member?(["one", "two", "three"], "three")
true

Reject

reject/2
Return a new collection of items that returns false from the given fn(x).

iex> Enum.reject([1,2,3,4,5,6], fn(x) -> Integer.is_even(x) end)
[1, 3, 5]

Sort

sort/2
It sorts the collection by the given fn(x).

iex> Enum.sort([%{:val => 2}, %{:val => 3}, %{:val => 1}], fn(x, y) -> x[:val] > y[:val] end)
[%{val: 3}, %{val: 2}, %{val: 1}]

Unique By

unique_by/2
Remove all duplicated into our collection

iex> Enum.uniq([1, 2, 3, 2, 1]) 
[1, 2, 3]

Pipe Operator

The pipe operator |> passes the result of an expression as the first parameter of another expression.

When I was using elixir by the first time this operator called my attention immediately. Since functional programming is about sending data and transforming it thought functions it can get really messy, but the pipe operator is something to help us on that job.

Our problem:

# Return the final value of a product
formated_price(taxes(commision(product_value(), 0.01), 0.13))

Some OO solution:
prod_val = product_value()
prod_commision = commision(prod_val, 0.01)
prod_taxes = taxes(prod_commision, 0.13)
prod_final_value = formated_price(prod_taxes)
prod_final_value

Our Elixir Solution:

product_value()
|> commision(0.01)
|> taxes(0.13)
|> formated_price()
As you can see every return value of a function is passed as the first parameter of the following function. It makes our code really easy to read.

Pattern Matching. Isn’t it just assignment?

This is a deep functionality in Elixir. To understand this a little bit more I have to say that = operator doesn’t necessarily means “assign something to a variable”, instead it really means “match the left hand side to the right hand side”. It turns the whole expression into a equation.

iex> x = 1
1

iex> 1 = x
1

iex>  2 = x
** (MatchError) no match of right hand side value: 1

Useful approaches

Pattern matching becomes really useful when we use it with tuples, functions or recursion.

# We want to assign to match value with te number 2
iex>
{:ok, value} = {:ok, 2}
{:ok, 2}

iex> value
2
# If the atom value :ok doesn't match It will return a fail

iex> {:ok, value} = {:none, 2}
** (MatchError) no match of right hand side value: {:none, 2}
It seems really cool, but check this, something more functional

defmodule Greet do
def say_hi(tuple) do
case tuple do
{:morning, name} ->
"Morning #{name} !"
{:evening, name} ->
"Good evening #{name} !"
_ ->
"Default Hi !!"
end
end
end

iex> Greet.say_hi({:morning, "Luke"})
"Morning Luke !"

iex> Greet.say_hi({:morning, "Han"})
"Morning Han !"

iex> Greet.say_hi({:defaut, "Nobody"})
"Default Hi !!"
Finally, the more useful approach to me is by using Pattern Matching on functions definitions:

defmodule Greet do
def say_hi(:morning, name) do
"Morning #{name} !"
end
  def say_hi(:evening, name) do
"Good Evening #{name} !"
end
  def say_hi(name) do
"Default Hi #{name} !"
end
end

iex> Greet.say_hi(:morning, "Luke")
"Morning Luke !"

iex> Greet.say_hi(:morning, "Han")
"Morning Han !"

iex> Greet.say_hi("Leila")
"Default Hi Leila !"

Conclusion

To me, having a Ruby on Rails background, Elixir seems pretty nice and I’m looking forward go deeper and deeper into this language. This entrance is part of an introduction We did in 4geeks, you can check the full video:

Introducing the Geek Hour, 2nd season.

Hey guys! It’s been a while since we start the Geek Hour, today, I’m so happy to announce that, some years later, we releasing our Geek Hour again. We have learned so much during this time, so, we think, it’s the best moment to share all knowledge gain with the community.

The Geek Hour is an online show about technologybusiness and marketing, for free. Our idea is to share and create discussion.

If you want to be part of this release, we invite you to subscribe to the YouTube channel. All sessions will be recorded and published in there.

Since our goal is to create discussions we are happy to receive questions and feedback after each session. It would be great if you attend live to answer your questions.

We are putting together more and more sessions, which will be presented each month.

The first show will be on next Aug 31, 2017, and we will talk about Elixir.

Please, check out the schedule page, and share with your colleagues the next show. See you around!

How Important Is Take Care of the Company Culture

At the beginnings, 4Geeks started working 100% from home. Maybe was a mistake. Maybe was part of the process. And that was very difficult to grow. Lesson learned. Are your company right here?

The point is that some months ago to moved to a new office. A bit bigger. Big tables and great snacks, bla, bla. And, you know, the 4Geeks face changed a 100%. That’s exactly what your company need to do to strong their company culture.

But, why is important the company culture?

Because of the long-term vision. Public confidence. Easy to hire top talent.

So, now we are also focus on the team member’s happiness. If they are OK, the projects are OK. Clients happy. Company is OK. This is a win-win situation.

Culture is not about high salaries.

Bonuses are important in the software industry, because everything is changing very fast. So, software companies need to be sure they are a good option to get top talent.

Some “bonuses” that the team are getting are today are:

  1. Beer Friday.
  2. Snacks at the office every single day.
  3. Close communication
  4. Work from home, some days a month.
  5. Attend to tech meetups
By the way, we are planning to host monthly technical meetups here at the office. Invite some geeks from another companies and build a strong geek community across the city. I will publish a new blog post about this. Stay tunned.

If you are running a company, no matter the industry, please try to think what your employees maybe thinks and feels. Your responsability is grow every day.

Take a look at this video about our last Beer Friday. Hope you can enjoy as we did 🙂

Google code hints at headphones that run Google Assistant

 

Is Google making a pair of headphones with its virtual assistant built-in? That seems to be what snippets of code in the latest version of the Google app (7.10) suggest. 9to5Google has sifted through the evidence and found a number of references in the app’s APK to a mystery product, codenamed “Bisto.” One line of code seems to spell out what Bisto could be: “Your headphones have the Google Assistant. Ask it questions. Tell it to do things. It’s your own personal Google, always ready to help.”

Of course, just because these lines of code appear in the Google app, it doesn’t mean that the company will actually release a pair of Assistant-equipped headphones. But it’s interesting to speculate.

The code dug up by 9to5Google also mentions the ability to hear and reply to notifications using the headphones, as well as dedicated buttons for launching Assistant. “To talk to me or ask me a question, press and hold the Google Assistant button on the left earcup while talking,” says one line of the code. We’ll have to keep our ears to the ground for future developments.

From TheVerge.com

Google may take on the Echo Dot with a mini Google Home

Google is reportedly planning to unveil a miniaturized version of its Home smart speaker at a hardware event dedicated to the upcoming Pixel sequel, according to a report from Android Police. The event may occur in October as last year’s Pixel and Google Home launch event did, although we don’t have concrete specifics on when or where Google will host it.

The mini Home speaker would likely be positioned as an Amazon Echo Dot competitor. That would allow you to hook up traditional audio systems with voice control, string together multiple Home units, and access Google Assistant throughout your house without spending an additional $129 on a standalone Home speaker.

Also rumored to be at the event is a new Pixel-branded Chromebook, the…

Continue reading…

by Nick Statt via The Verge – All Posts

Email Validation: A Critical Success Factor in Email Marketing

Businesses and consumers alike rely on emails for information and as a primary communication channel. As a result, email marketing is a high priority for businesses of all types and sizes.

Despite the creation of comprehensive email strategies, very few companies include email validation as a weapon in their arsenal. Dead-end email accounts slowly clog up your contact lists, wasting time and dollars as you send messages that are doomed to bounce back. Without this essential tool, even a masterfully crafted email marketing program can fall flat.

Focus on the audience that wants your emails.

Numerous statistics substantiate the reason why marketers are investing so much in email marketing. For example, The Radicati Group states that the total number of global email accounts is expected to exceed 4.9 billion by the end of 2017. Among those email users, 57 percent spend between 10 and 60 minutes reviewing marketing emails each week, as reported by ChoozOn.

With all this in mind, it’s no wonder that 81 percent of B2B marketers use email newsletters for content marketing, according to Content Marketing Institute. But what happens when people leave companies or make changes to their personal email addresses?

Poor list quality can quickly accumulate as these email accounts are abandoned by their owners. Similarly, many companies rely on gathering email addresses at the point of sale or from a mobile device. When entering verifying information on a mobile, typos can be made by the email owner that are only discovered later, when marketing emails go undelivered.

These issues leave you struggling to reach your primary targets. An updated email list is critical to making the most of the return on investment that email marketing offers. According to Andrew Blazewicz, co-founder of the email validation service Email Checker, “Webmasters and internet marketers send thousands of emails to their clients and potential customers every day. Emails bouncing back means a reduced Sender Score, which is a rating between zero and 100 that identifies your sender reputation and shows how other mailbox providers view your IP address.”

Blazewicz explains the importance of these Sender Scores to an email marketing campaign’s success. “It is similar to a credit score when testing creditworthiness. Instead, it tests deliverability worthiness. A high Sender Score means the majority of email campaign messages will reach the inboxes. In contrast, a low Sender Score means messages will end up in recipients’ junk folders or be blocked by the mailbox provider.”

Realizing the benefits of email validation.

Email verification, or email validation, is a potential solution to the epidemic of inaccurate or abandoned email addresses. Email verification can step in to keep your connections current with loyal subscribers or interested prospects for better email marketing results.

Using an email validation process includes real-time verification of subscribers on your email list, both as they enter the email and in batch form with your existing list. It’s ideal for ensuring accuracy for both new and long-established email lists.

When you send an email campaign to thousands of email addresses, imagine how much a more accurate list will benefit your marketing program.

1. Saving money and improving ROI.

The biggest benefit is the amount of money you can save through reduced marketing costs. Every message that is sent represents dollars spent, so each marketing message that travels to nonexistent or inaccurate email addresses equates to dollars down the drain.

With a more accurate, validated list, you’ll likely report an overall higher return on investment for your efforts — after all, your campaign statistics will no longer come back lower than expected. When management starts to see significant results from your email efforts, those results can translate to more dollars directed toward future email marketing campaigns.

2. Actionable data insights and segmentation.

Along with poor campaign statistics, an inaccurate email list won’t provide actionable data insights that can offer direction for future engagement strategies or content themes. That information is vital for your return on investment, and a chorus of bounced emails provides nothing but noise.

A validated email list will tell you who’s an active user and who has used your company’s services or products in the past, among many other insights. This provides a way to further segment your email marketing strategy. You can send separate messaging to each group, incentivizing group members to return or offering them updates related to their recent purchases.

3. Enhanced reputation.

If your bounce rate increases and email providers start banning you from their services, your reputation as a business will be on the line. No one wants his brand to have “spammer” associated with it. Therefore, email validation can go a long way toward maintaining your status as a reputable brand with your Email Service Provider (ESP), Internet Service Provider (ISP) and target audience.

While we all want to handle emails properly and change our information when we need to, the reality is that marketing subscriptions often fall through the cracks. Your audience members won’t always remember or take the time to report to you when their addresses change.

That’s why you need an email validation tactic in your email marketing strategy to stay relevant and reap the many benefits of an email marketing campaign — otherwise, your message is just falling on deaf ears.

Source: Entrepreneur.com

A new 4Geeks website is up

Hey guys. I’m so happy to show you the new 4Geeks website. We improved some important design points, and added new services. That’s the good part.

This look change comes with new 4Geeks era, focused 100% in customers final results. We want to impact millions. I’m pretty sure that you will hear us constantly. We also want to hear you.
Our team is growing. Same our mindset and responsibility. So, some new services are VR/AR, Voice Service (business integrations with Google Home or Amazon Alexa), Paid Media and Inbound Marketing.

We love share knowledge and valued content with the community. To win, our philosophy is to give.

We put our heart on every project that we worked on. We never lose. We learn. Our mindset is always winner, and we want to win again together with you by making you bigger and stronger.

Tech lovers. Website is running in the Google Cloud Platform. By the way, now all the 4Geeks website is encrypted, so to browse on it now is safer. 
I have tons of new ideas. My role is go for it. Step by step. Let’s go out from the comfort zone and let’s make real HUGE ideas. 
If you have any free time, please visit the website and let me know your feedback.

(Q&A) 4Geeks Payments, sesion #1

Hoy fue la primer sesión de preguntas y respuestas aquí en la oficina, acerca de 4Geeks Payments, y aquí les tenemos la grabación del video, por si no pudiste verlo en vivo, o por si quieres verlo nuevamente.



De verdad que estamos muy contentos de poder ayudar a muchos proyectos interesantes en Costa Rica, a ser global lo más rápido posible.

Posiblemente esta no sea la primer sesión, así que síguenos en redes sociales para que sepas lo último.

Si aún no te has dado de alta en 4Geeks Payments y empezar a usar el sistema de pruebas, aplica aquí.

Documentación para 4Geeks Payments está arriba

Esta semana hemos estado trabajando en el sistema de documentación de 4Geeks Payments, que ayudará a los desarrolladores a integrar sus aplicaciones actuales con nuestro sistema de pagos.

Por el momento toda la documentación usa ejemplos de solicitudes HTTP, mediante ejemplos con curl. Poco a poco vamos a ir entregando librerías específicas en Ruby on Rails, Python, Javascript, etc, para que la integración sea mucho más sencilla.

Como sabes, sólo estamos permitiendo un grupo pequeño de empresas que puedan utilizar 4Geeks Payments.

Esperamos aprender durante este proceso, corregir y mejorar, lo más pronto posible, con el fin de estar preparados para recibir a muchos más empresas.

Si aún no estás en el programa BETA de 4Geeks Payments, y te gustaría estar, por favor, aplica directamente en http://4geeks.io/payments.

Estamos planeando reunirnos con virtualmente, de forma personalizada, con cada empresa que haya sido aceptada durante el estado BETA.

Si tienes dudas, escribeme abajo en los comentarios.

Saludos!