Firma digital: transforma tu empresa, ahorrando tiempo sin esfuerzo

Recibes un contrato, lo imprimes, firmas y escaneas para volver a enviárselo al emisor. ¿Quién no ha hecho esto? A parte de ocuparnos mucho tiempo (más de los segundos que debería) no queda profesional cuando todo el mundo habla de transformación digital. Hoy en día todos (autónomos y empresas) estamos obligados a tener nuestro un certificado digital, y firmar documentos es una de sus posibilidades más sencillas. Vamos a ver dos formas de hacerlo, ambas son de lo más fácil.

Seguir leyendo en Emprenemjunts.

Amazon Business, el Amazon de siempre con funcionalidades para autónomos y empresas

Hoy en día todos compramos en Amazon. Es fácil, rápido y tiene de todo. El problema llega cuando eres autónomo o empresa, ya que a la hora de elegir tienes que tener en cuenta que el IVA (si aplica) se te devolverá, además tendrás que solicitar y gestionar las facturas (lo que puede ser una odisea en función del vendedor) o incluso integrar la información en tus sistemas. Me harté de esto el otro día y me puse a investigar un poco, descubriendo que todo se soluciona fácilmente con Amazon Business.

¿Qué es?

Amazon Business es la variedad de Amazon con funcionalidades pensadas para empresas y que resuelve todos estos problemas.

No está disponible para todos los países. Por ejemplo, en México no está, pero sí lo tenemos en España o en USA.

Funcionalidades

De partida, cuando tienes una cuenta de Amazon Business, en los vendedores que aplican IVA te muestra ambos precios y te ordena por el precio sin IVA.

Además, te permite crear políticas para restringir qué productos se compran, ya sea por categoría, vendedor o si son vendedores que generarán factura y te podrás desgravar el IVA. No te quita esos productos de las búsquedas, ni te impedirá comprarlos, pero sí que te mostrará un aviso bastante llamativo para que tengas la información a la hora de hacer la compra.

Te permite dar de alta a distintos compradores, esto permitirá acceder a distintas personas sin necesidad de compartir contraseñas. A parte, con que uno introduzca los métodos de pago, todos podrán usarlos; de ese modo, no tienes que ir dando los datos de una tarjeta de crédito al personal.

Proporciona reportes y dashboards para tener toda la información a mano y acceder a las facturas de cada pedido de un modo muy sencillo, lo que evitará perder tiempo en gestiones inútiles.

Integración

Si tu empresa tiene algún sistema de gestión de compras, es posible que puedas integrarlo. Amazon admite los sistemas Punchout basados en cXML y OCI, así como los sistemas de pedidos basados en cXML y OAG. En concreto, los sistemas admitidos son:

  • 2bits
  • Ariba
  • Awardco–Direct-Ordering
  • BASF–Direct–Ordering
  • Basware
  • Beka
  • BirchStreet
  • buy@Facebook
  • BuyerQuest
  • catalog360
  • Coupa
  • Determine
  • DIG
  • EB2BProcurement
  • Epaxios
  • ePhilos
  • ESKER
  • Fourth
  • HubWoo
  • IBX
  • InitialRewards–DirectOrdering
  • Inplan-Pro
  • Integra-eProc
  • Ivalua
  • JbxeBusinessSuite
  • Maxxeo
  • MSG_Clickapporter_DirectOrdering
  • NEWTRON
  • Onventis
  • OpusCapita
  • Oracle-iProcurement
  • OracleSupplierNetwork
  • Other-Purchasing-System
  • Oxalys
  • PaperCavalier–Direct-Ordering
  • pitchukp_DirectOrdering
  • pitchukp_PunchoutTest
  • Plenus
  • Pool4Tool
  • Proactis
  • ProActive
  • Procurify
  • Promitea
  • Qualiac
  • SAP-SRM
  • SciQuest-Jaggaer
  • Simeno
  • Spectrum
  • SynerTrade
  • Tradeshift
  • Veenion
  • WaxDigital
  • Weco
  • Workday
  • WPS

Para animar a la gente, ofrecen un 50% en la primera compra de hasta 100€, aunque creo que con todas las facilidades que dan para el día a día, eso es lo de menos. A mi, al menos, me tienen convencido.

¿Cómo elegir la siguiente tarea?

Una persona muy especial para mi está montando un negocio, un espacio de más de 1000m² en el centro de Valencia dedicado a las artes gráficas digitales. Entre eso, el día a día y algunas cosas personales, tenía un montón de tareas y le estaba resultando difícil elegir cuál debía ser la siguiente. A sabiendas de que este tipo de problemas se me dan bien, me pidió ayuda, ¡qué responsabilidad! Aquí se la mando.

Quien más, quien menos ha visto alguna versión de la “Matriz de Covey para la Gestión del Tiempo”. Covey, que es un paladín de la efectividad, básicamente viene a decir que ejecutes cuanto antes lo que sea importante y urgente (cuadrante 1), planifiques lo que sea importante pero no urgente (cuadrante 2), delegues lo urgente pero no importante (cuadrante 3) y pases olímpicamente de lo que no sea ni importante ni urgente (cuadrante 4).

Esto está muy bien, pero ¿qué pasa si no tienes a nadie en quien delegar? ¿Y si no te puedes deshacer de esas tareas que ni son importantes ni urgentes?

Además hay otro “problema”, una tarea puede no ser importante per se, pero puede estar contribuyendo a un objetivo importante… y ahí está la madre del cordero (la oveja): en los objetivos.

Objetivos

En un acercamiento a GIST, creo que hay que empezar por definir cuáles son nuestros objetivos.

Por ejemplo, hacer una obra o diseñar una web no es un objetivo en sí. El objetivo aquí puede ser inaugurar ese espacio. No es reunirte con un profesor o el viaje todos los días hasta el cole, es dar una buena educación a tus vástagos. El objetivo no es cambiar el aceite del coche, es tenerlo a punto para poder circular con menos probabilidades de tener contratiempos.

Con las tareas, muchas veces, es difícil discernir si son importantes y sobre todo si son urgentes. Con los objetivos es mucho más fácil.

Tareas

Para lograr un objetivo concreto es probable que haya que realizar distintas tareas incluso, a priori, puede ser que no tengamos claras todas las tareas y que sólo conozcamos cuales son los primeros pasos a dar.

Además, las tareas no acostumbran a organizarse por si solas en modo “lista” dejando claro qué es lo que hay que hacer antes o hay que hacer después. La dependencia entre tareas suele ser un árbol y hasta que no cortes unas hojas no puedes adentrarte en algunas de las tareas que necesitas realizar.

Elegir

Una vez que tenemos clara la urgencia e importancia de nuestros objetivos, en qué tareas se descomponen y como son las dependencias entre ellas, ya podemos pensar en qué hacer en cada momento.

Más que priorizar, creo que es mejor tener un algoritmo que nos permita elegir sin darle muchas vueltas. Al fin y al cabo, priorizar es decir que esto tiene que ir primero que lo otro, y creo que las listas inamovibles al final pueden ser un lastre.

Además muchas tareas van con fecha o no dependen de ti en exclusiva, con lo que tampoco las puedes afrontar cuando quieras.

Urgentes e importantes

Lo primero, como no puede ser de otra manera, es afrontar las tareas que nos lleven a objetivos urgentes e importantes. Hay que quitarlos de en medio cuanto antes.

Además, estas cosas son una fuente de estrés (como todo lo urgente), así que hay que tener cuidado de no dejar entrar demasiadas cosas en ese grupo de cara al futuro. Con esto me refiero a que si mañana nos pide un cliente que hagamos algo urgente que realmente no podemos asumir, nos estamos planteando dejar de comprar pan industrial elaborando el nuestro… hay que saber decir que no antes de comprometerse con obligaciones que se convertirían en objetivos importantes y/o urgentes.

Es muy importante saber decir que no, a veces casi vital.

Importantes pero no urgentes

Estas son las cosas en las que más deberíamos centrar nuestra atención. Esos objetivos a medio/largo plazo que harán que nuestra vida (trabajo, familia, vida social, evolución personal…) mejore.

Dado que no son lo primero, puede ser que nos veamos aplastados por las tareas de los objetivos del primer grupo, y que por tanto nunca lleguemos a realizar estas. Eso siempre es un problema, pero todo problema tiene una solución.

La solución la he tratado a menudo con distintas personas como Nacho o Juan (¡hola chicos!) y en realidad es trivial.

Si tienes una reunión importante la semana que viene y tienes una tarea de la que depende -como preparar la reunión- en tu calendario, en el hueco que más rabia te de, te reservas la hora que necesitas para preparar esa reunión.

Si tienes un proyecto personal que para ti es muy importante, te reservas un hueco en la agenda todas las semanas, cada quince días o cada mes ¡lo que tú quieras!

Lo importante es establecer un periodo de tiempo concreto en el que vas a realizar la tarea X que lleva a un objetivo importante, o reservar un tiempo para invertir en conseguir el objetivo Y. Si te comprometes con esa reserva de tiempo y eres fiel a ella, habrás convertido algo que era sólo importante en importante y urgente, pero no por haber dicho un “sí” sin pensar si no por decisión propia y tras una reflexión.

Urgentes pero no importantes

Estos objetivos son complicados, como ya anticipaba. Desde luego, hay que evitar estresarse por ellos, porque por muy urgentes que sean, si no son importantes no merecen nuestra preocupación.

Cualquier cosa no importante es susceptible de no hacerse o de que sea hecha de otro modo o por otra persona.

En general, lo ideal es delegarlas pero no siempre. Si son tareas que puedes resolver más rápido del tiempo que te daría darle una vuelta y decidir que hacer, lo mejor es ejecutarlas y quitarlas de en medio. Hay que ser cuidadoso y no dejar que nos conviertan en un apagafuegos porque haya demasiadas de estas, en su caso habría que tomar otras medidas, como por ejemplo contratar a alguien para que apague esos fuegos por nosotros (delegar), pero tiene que ser alguien que nos quite trabajo, no que nos de más.

Cuando no tienes en quien delegar una tarea de este tipo, tal vez tengas suerte y puedas hacer lo que los americanos llaman “pushback”, que es algo así como no hacer. Básicamente, es decir con mayor o menor elegancia: este no es mi problema. Conocí a un hombre que era un artista en esto, interrumpía las “calls” internacionales independientemente del jefazo que estuviese interviniendo y decía algo así como “Disculpadme, pero creo que no puedo aportar nada en este tema, llamadme si el proyecto avanza y me necesitáis para algo en lo que sí pueda aportar”. Colgaba y veías como empezaba a twittear sobre su pasión y su proyecto personal.

Tomar la decisión de no hacer algo cuesta al principio, pero cuanto más se hace más fácil es.

Si no podéis permitir que no se haga, la otra opción es delegar. Hay gente que no sabe delegar, pero a todo se aprende, y como con el “no hacer” es más fácil cuanto más se hace. Lo más importante a la hora de delegar es asumir que no se hará como nosotros lo habríamos hecho. Se hará mejor o peor, pero seguro que distinto.

Una forma de delegar en cosas del día a día puede ser la subcontratación.

¿Tienes que mantener el jardín? Es urgente porque empieza a parecer una selva y podar los árboles tiene que hacerse justo en esta época. Puedes invertir un montón de tiempo en conseguir herramientas, estudiar cómo tienes que hacerlo y hacerlo, o puedes llamar a un jardinero. Lo mismo te sorprende lo barato que es.

¿Tienes que hacer la comida de mañana? ¿Ir al súper para llenar la despensa? Puedes comer un menú en casa Pepe o pedir la compra por Internet. Te saldrá ¿3€? más caro pero, ¿cuánto cuesta el estrés o el tiempo que inviertes?

Ni urgentes ni importantes

Las tareas que llevan a objetivos de este tipo no deberíamos ni tratarlas, pero no siempre se puede optar por ignorarlas. Hay que pintar esa habitación, hay que ver a ese familiar, hay que llamar a la casera porque se ha roto un estor… Hay cosas que podrás desechar -como algunas del grupo anterior- pero otras que no, aunque no sean urgentes ni realmente importantes.

Para estas, creo que lo mejor es hacer lo mismo que con las anteriores, o dejarlas para momentos en los que no puedas dedicarte a otra cosa. Cómo no son importantes, no pasa nada si estás en un momento en el que no prestas mucha atención, ya que si salen mal no pasa nada. Cómo no son urgentes, si no las acabas -porque no sabías cuánto iba a tardar Fulanito en colgar el teléfono- y las tienes que retomar en otro momento, tampoco va a pasar absolutamente nada.

El objetivo está claro ¿y la tarea?

Como decíamos antes, normalmente las tareas no sea alinean para ponérnoslo fácil. Suele haber un árbol en el que distintas tareas pueden ser ejecutadas en paralelo. Cada una puede llevar un tiempo distinto y no todas van a depender exclusivamente de nosotros.

Obviamente, de ese árbol tendremos que escoger las hojas. No vamos a poder hacer algo hasta haber dado los pasos de los que dependa.

Dentro de las hojas, lo más lógico es iniciar el camino que más vayas a tardar en andar. Y por lo general es lo ideal, pero no siempre.

Puede que en el camino más largo te toque revisar presupuestos para la instalación de Aire Acondicionado y que, en este momento, te apetezca no pensar durante un rato o que necesites hacer algo que te motive, obtener un pequeño triunfo. En esos casos, y en contra de lo que dice toda lógica, puedes darte un respiro y elegir otra hoja. No es algo que podrás hacer continuamente, pero por un rato que te dediques a una tarea más creativa o menos exigente, tampoco va a pasar nada.

TIPS

Altunos trucos que ayudan, pero de los que ya tendríamo que hablar otro día son:

  • Visualizar todo, por ejemplo con post-it o pizarras blancas.
  • Apuntar los objetivos (o tareas u obligaciones, ya los convertiras a objetivos) según vayan surgiendo.
  • Tachar, marcar, realizar alguna acción cuando acabemos con algo.
  • Automatizar, automatizar, automatizar.

Fuentes de noticias tecnológicas

Hoy en día es difícil mantenerse informado, hay muchas fuentes de noticias y es difícil cribar para quedarse con las realmente importantes. En especial, en tecnología, con la cantidad de avances que hay día a día, puede convertirse en una autentica locura. El camino más sencillo para cualquiera es leer el “Tech Roundup” que mi amigo el bot publica cada sábado en este mismo blog, pero si necesitáis más o si no quieres delegar esa elección en una “inteligencia artificial”, veremos los mejores sitios para mantenerse al día en un mundo tan cambiante.

Mi algoritmo “inteligente” a veces falla, y mete cosas que no son donde no son. Seguro que hay otros que lo hacen mejor en algún sitio, desde luego este podría hacerlo mucho mejor dedicándole unas cuantas horas. Sin embargo, creo que a día de hoy la inteligencia artificial aún no es capaz de batir en casos como estos a otras inteligencias.

Para filtrar noticias y artículos podríamos ponernos en manos de editores que nos den confianza. Por ejemplo, viendo que las noticias que salen en un sitio como TechCrunch o Hacker Noon nos parecen relevantes, podríamos convertirnos en fieles seguidores para mantenernos al día con sus actualizaciones.

Otra inteligencia que bate a la artificial y, en casos como estos, creo que también a la de los expertos (los editores que comentábamos), es la inteligencia colectiva. Hay sitios que están pensados para que destaquen las noticias que más interés despiertan, ya sea basándose en votos o en otras interacciones de los usuarios.

Inteligencia colectiva

Para mi, la primera de la lista con mucha diferencia es Hacker News, el foro de noticias de la aceleradora Y Combinator. En él hay noticias de todo tipo, pero la gran mayoría están relacionadas con la tecnología.

Tampoco se puede olvidar reddit en especial algunos subreddits como technology o programming.

Sin embargo, hay muchos más donde rascar y obtener las últimas novedades poco después de que hayan ocurrido.

habr es una comunidad hacker rusa, que recientemente abrió un site en Inglés. Se pueden leer artículos de calidad con cosas que son difíciles de encontrar en otro sitio.

Lobsters es otro sitio en el que puedes encontrar noticias, artículos y papers puramente técnicos.

Hay clones de HN dedicados en concreto a algo, como este de javascript o este especializado para datascientists.

Además de estos, últimamente están proliferando mucho los grupos de slack especializados, para los que es relativamente sencillo conseguir invitación como por ejemplo opendatascience.

Y tú ¿dónde te informas? ¿cómo cribas las noticias tecnológicas?

¿Con quien compites a la hora de contratar personal técnico?

Hoy en día, por suerte para los técnicos y por desgracia para las empresas, hay más puestos a cubrir que personal cualificado para cubrirlos. Hay mucha competencia, pero ¿quienes son? ¿Quienes entorpeceran tu camino cuando te propongas contratar personal técnico?

Las empresas contratando son muchas, bien, pero no son todas iguales.

Están las grandes que se pueden permitir pagar bien y colocar a la gente en proyectos grandes, que sólo se pueden hacer en empresas de ese estilo. Como contrapartida, les suele dar igual que a quien coloquen sea Juan o Pepe, y lo mismo el personal hoy ha caído en un proyecto chulo y pasado mañana está en un bodrio.

Están las PYMEs que no suelen pagar tan bien, y donde a lo mejor los trabajadores acaban teniendo que hacer alguna ñapa. A diferencia de las grandes, aquí es posible que (para bien y para mal) les importe bastante que el trabajador sea Juan o Pepe.

En un punto intermedio están las startups, donde el personal técnico empieza en una situación similar a la de las PYMEs aspirando llegar a un punto como el de las grandes empresas en dónde sí importe que sean Juan y no Pepe, asumiendo un riesgo bastante alto por su parte, de no llegar nunca ahí.

Cuando vas a contratar personal técnico, por tanto, no basta con que pienses lo que ofrece tu amigo con el que alternas que tiene una empresa similar a la tuya. Tienes que ver que le ofrece todo el mercado a ese tipo de perfil, pues con todo el mercado estás compitiendo.

Y siendo la competencia tan grande ¿qué podemos hacer?

En primer lugar, es muy importante determinar bien tus necesidades para tener claro el perfil que necesitas y no querer algo que no puedas afrontar. Está claro que no vas a contratar a un maestro cantero para poner ladrillos. Y desde luego no vas a contratar a un experto en los nuevos ladrillos de plástico forjado (del que sólo saben cuatro en España) si te vale con poner ladrillo rojo del de toda la vida ¿verdad? Vale que muchas veces, las empresas no saben si sólo se va a tratar de poner ladrillos o algo más, pero para eso hay que analizar la situación y tener un poco claro qué es lo que viene y ante la duda hacer las cosas lo menos sobredimensionadas posibles.

Por otro lado, es importante saber en qué grupo estás. No hay que competir en cosas en las que sabes que no puedes ganar. Por ejemplo, si sólo puedes pagar 10 asume que no vas a poder contratar a la gente que quiere 20 y piensa que les podrías ofrecer como incentivo a los que se podrían conformar con 10 porque no miran sólo la pasta.

Por último, y esto es algo que he observado repetidas veces, hay que conservar a cada uno de los que consigas contratar. Vale que hayas llegado hasta este punto montando un gran equipo de márketing (o de producción, o de lo que quiera que se nutra tu empresa) sin esfuerzo, porque es un sector en el que no hay tanta competencia. Vale (aunque me parezca muy mal) que hayas tenido a personal cualificado haciendo trabajo vital para la empresa contratándolo como becarios. En el momento que quieres meter la cabeza en tecnología, tienes que asumir que se acabó. Tendrás que explicar a tu equipo de marketing (o producción o whatever) que la nueva gente es distinta (o que a ellos los has estado explotando durante años). Tendrás que asumir que si necesitas un senior para contratarlo tendrás que tratarlo como tal, y que en cuanto le trates como tratas (de mal, normalmente) al resto de tu personal, lo más probable es que te diga adios y nunca vuelva la vista atrás.

Los mejores recursos para trabajar en tu MVP

Ya vimos en su día una serie de plataformas serverless con las que podríamos construir casi cualquier cosa en Internet. Sin embargo ¿qué hay antes de eso? ¿Hay alguna guía o herramienta que me pueda ayudar? Hoy vamos a ver algunos recursos que nos ayuden a plantear nuestro MVP.

¿Qué e un MVP?

Producto viable mínimo (MVP, del inglés Minimum Viable Product) es un producto con suficientes características para satisfacer a los clientes iniciales, y proporcionar retroalimentación para el desarrollo futuro.

Wikipedia

Herramientas y recursos
  • Sketchboard: para hacer dibujos y diagramas online en equipo de un modo creativo en una pizarra blanca sin límites.
  • Bizplan: software y herramientas para hacer planes de empresa online.
  • Bootstrapping a profitable SaaS Business: un ebook sobre como construir negocios basados en software como servicio por una sóla persona. Los capítulos disponibles tratan de como construir y validar un MVP.
  • The Epic Guide to Bootstrapping a SaaS Startup from Scratch: es el primero de una serie de artículos que habla de como empezar negocios desde cero.
  • Canvanizersirve para hacer un canvas online con el que entender cuales son los puntos clave de tu MVP. Tienes la opción de crear un Business Model Canvas o un Lean Canvas, por ejemplo.
  • Make my persona: Hubspot tiene una herramienta para la creación de personas, con la que podrás de un modo sencillo y muy gráfico definir a los usuarios tipo de tu MVP.
  • Customer journer map onlineUXpressia tiene una herramienta online que te permite definir y analizar fácilmente qué es lo que hace tu usuario tipo antes, durante y después de utilizar tu MVP.
  • Startup Metrics for Pirates: AARRRen el post enlazado tenéis la explicación de las 5 métricas más básicas e importantes que deberíais tener contempladas en vuestro MVP. El video de Dave McClure merece mucho la pena y son sólo 5 minutos.

Con estos textos y herramientas, será mucho más fácil planificar nuestro MVP. De este modo, seremos más efectivos a la hora de implementarlo.

Best papers awards in Computer Science of 2018

2018 has finished with a lot of innovations. It brought a lot of awards for papers about several disciplines of Computer Science at different conferences this year. Here we have the abstract of some of them:

  • Memory-Augmented Monte Carlo Tree Search

    This paper proposes and evaluates Memory-Augmented Monte Carlo Tree Search (M-MCTS), which provides a new approach to exploit generalization in online realtime search. The key idea of M-MCTS is to incorporate MCTS with a memory structure, where each entry contains information of a particular state. This memory is used to generate an approximate value estimation by combining the estimations of similar states. We show that the memory based value approximation is better than the vanilla Monte Carlo estimation with high probability under mild conditions. We evaluate M-MCTS in the game of Go. Experimental results show that MMCTS outperforms the original MCTS with the same number of simulations.

  • Finding Syntax in Human Encephalography with Beam Search

    Recurrent neural network grammars (RNNGs) are generative models of (tree,string) pairs that rely on neural networks to evaluate derivational choices. Parsing with them using beam search yields a variety of incremental complexity metrics such as word surprisal and parser action count. When used as regressors against human electrophysiological responses to naturalistic text, they derive two amplitude effects: an early peak and a P600-like later peak. By contrast, a non-syntactic neural language model yields no reliable effects. Model comparisons attribute the early peak to syntactic composition within the RNNG. This pattern of results recommends the RNNG+beam search combination as a mechanistic model of the syntactic processing that occurs during normal human language comprehension.

  • Voice Interfaces in Everyday Life

    Voice User Interfaces (VUIs) are becoming ubiquitously available, being embedded both into everyday mobility via smartphones, and into the life of the home via ‘assistant’ devices. Yet, exactly how users of such devices practically thread that use into their everyday social interactions remains underexplored. By collecting and studying audio data from month-long deployments of the Amazon Echo in participants’ homes-informed by ethnomethodology and conversation analysis-our study documents the methodical practices of VUI users, and how that use is accomplished in the complex social life of the home. Data we present shows how the device is made accountable to and embedded into conversational settings like family dinners where various simultaneous activities are being achieved. We discuss how the VUI is finely coordinated with the sequential organisation of talk. Finally, we locate implications for the accountability of VUI interaction, request and response design, and raise conceptual challenges to the notion of designing ‘conversational’ interfaces.

  • Relevance Estimation with Multiple Information Sources on Search Engine Result Pages

    Relevance estimation is among the most important tasks in the ranking of search results because most search engines follow the Probability Ranking Principle. Current relevance estimation methodologies mainly concentrate on text matching between the query and Web documents, link analysis and user behavior models. However, users judge the relevance of search results directly from Search Engine Result Pages (SERPs), which provide valuable signals for reranking. Morden search engines aggregate heterogeneous information items (such as images, news, and hyperlinks) to a single ranking list on SERPs. The aggregated search results have different visual patterns, textual semantics and presentation structures, and a better strategy should rely on all these information sources to improve ranking performance. In this paper, we propose a novel framework named Joint Relevance Estimation model (JRE), which learns the visual patterns from screenshots of search results, explores the presentation structures from HTML source codes and also adopts the semantic information of textual contents. To evaluate the performance of the proposed model, we construct a large scale practical Search Result Relevance (SRR) dataset which consists of multiple information sources and 4-grade relevance scores of over 60,000 search results. Experimental results show that the proposed JRE model achieves better performance than state-of-the-art ranking solutions as well as the original ranking of commercial search engines.

  • An empirical study on crash recovery bugs in large-scale distributed systems

    In large-scale distributed systems, node crashes are inevitable, and can happen at any time. As such, distributed systems are usually designed to be resilient to these node crashes via various crash recovery mechanisms, such as write-ahead logging in HBase and hinted handoffs in Cassandra. However, faults in crash recovery mechanisms and their implementations can introduce intricate crash recovery bugs, and lead to severe consequences.In this paper, we present CREB, the most comprehensive study on 103 Crash REcovery Bugs from four popular open-source distributed systems, including ZooKeeper, Hadoop MapReduce, Cassandra and HBase. For all the studied bugs, we analyze their root causes, triggering conditions, bug impacts and fixing. Through this study, we obtain many interesting findings that can open up new research directions for combating crash recovery bugs.

  • Delayed Impact of Fair Machine Learning

    Fairness in machine learning has predominantly been studied in static classification settings without concern for how decisions change the underlying population over time. Conventional wisdom suggests that fairness criteria promote the long-term well-being of those groups they aim to protect.
    We study how static fairness criteria interact with temporal indicators of well-being, such as long-term improvement, stagnation, and decline in a variable of interest. We demonstrate that even in a one-step feedback model, common fairness criteria in general do not promote improvement over time, and may in fact cause harm in cases where an unconstrained objective would not.
    We completely characterize the delayed impact of three standard criteria, contrasting the regimes in which these exhibit qualitatively different behavior. In addition, we find that a natural form of measurement error broadens the regime in which fairness criteria perform favorably.
    Our results highlight the importance of measurement and temporal modeling in the evaluation of fairness criteria, suggesting a range of new challenges and trade-offs.

  • Large-Scale Analysis of Framework-Specific Exceptions in Android Apps

    Mobile apps have become ubiquitous. For app developers, it is a key priority to ensure their apps’ correctness and reliability. However, many apps still suffer from occasional to frequent crashes, weakening their competitive edge. Large-scale, deep analyses of the characteristics of real-world app crashes can provide useful insights to guide developers, or help improve testing and analysis tools. However, such studies do not exist — this paper fills this gap. Over a four-month long effort, we have collected 16,245 unique exception traces from 2,486 open-source Android apps, and observed that framework-specific exceptions account for the majority of these crashes. We then extensively investigated the 8,243 framework-specific exceptions (which took six person-months): (1) identifying their characteristics (e.g., manifestation locations, common fault categories), (2) evaluating their manifestation via state-of-the-art bug detection techniques, and (3) reviewing their fixes. Besides the insights they provide, these findings motivate and enable follow-up research on mobile apps, such as bug detection, fault localization and patch generation. In addition, to demonstrate the utility of our findings, we have optimized Stoat, a dynamic testing tool, and implemented ExLocator, an exception localization tool, for Android apps. Stoat is able to quickly uncover three previously-unknown, confirmed/fixed crashes in Gmail and Google+; ExLocator is capable of precisely locating the root causes of identified exceptions in real-world apps. Our substantial dataset is made publicly available to share with and benefit the community.

  • SentiGAN: Generating Sentimental Texts via Mixture Adversarial Networks

    Generating texts of different sentiment labels is getting more and more attention in the area of natural language generation. Recently, Generative Adversarial Net (GAN) has shown promising results in text generation. However, the texts generated by GAN usually suffer from the problems of poor quality, lack of diversity and mode collapse. In this paper, we propose a novel framework – SentiGAN, which has multiple generators and one multi-class discriminator, to address the above problems. In our framework, multiple generators are trained simultaneously, aiming at generating texts of different sentiment labels without supervision. We propose a penalty based objective in the generators to force each of them to generate diversified examples of a specific sentiment label. Moreover, the use of multiple generators and one multi-class discriminator can make each generator focus on generating its own examples of a specific sentiment label accurately. Experimental results on four datasets demonstrate that our model consistently outperforms several state-of-the-art text generation methods in the sentiment accuracy and quality of generated texts.

  • Understanding Ethereum via Graph Analysis

    Being the largest blockchain with the capability of running smart contracts, Ethereum has attracted wide attention and its market capitalization has reached 20 billion USD. Ethereum not only supports its cryptocurrency named Ether but also provides a decentralized platform to execute smart contracts in the Ethereum virtual machine. Although Ether’s price is approaching 200 USD and nearly 600K smart contracts have been deployed to Ethereum, little is known about the characteristics of its users, smart contracts, and the relationships among them. To fill in the gap, in this paper, we conduct the first systematic study on Ethereum by leveraging graph analysis to characterize three major activities on Ethereum, namely money transfer, smart contract creation, and smart contract invocation. We design a new approach to collect all transaction data, construct three graphs from the data to characterize major activities, and discover new observations and insights from these graphs. Moreover, we propose new approaches based on cross-graph analysis to address two security issues in Ethereum. The evaluation through real cases demonstrates the effectiveness of our new approaches.

  • LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation

    The monolithic server model where a server is the unit of deployment, operation, and failure is meeting its limits in the face of several recent hardware and application trends. To improve heterogeneity, elasticity, resource utilization, and failure handling in datacenters, we believe that datacenters should break monolithic servers into disaggregated, network-attached hardware components. Despite the promising benefits of hardware resource disaggregation, no existing OSes or software systems can properly manage it. We propose a new OS model called the splitkernel to manage disaggregated systems. Splitkernel disseminates traditional OS functionalities into loosely-coupled monitors, each of which runs on and manages a hardware component. Using the splitkernel model, we built LegoOS, a new OS designed for hardware resource disaggregation. LegoOS appears to users as a set of distributed servers. Internally, LegoOS cleanly separates processor, memory, and storage devices both at the hardware level and the OS level. We implemented LegoOS from scratch and evaluated it by emulating hardware components using commodity servers. Our evaluation results show that LegoOS’s performance is comparable to monolithic Linux servers, while largely improving resource packing and failure rate over monolithic clusters.

  • Should I Follow the Crowd? A Probabilistic Analysis of the Effectiveness of Popularity in Recommender Systems

    The use of IR methodology in the evaluation of recommender systems has become common practice in recent years. IR metrics have been found however to be strongly biased towards rewarding algorithms that recommend popular items –the same bias that state of the art recommendation algorithms display. Recent research has confirmed and measured such biases, and proposed methods to avoid them. The fundamental question remains open though whether popularity is really a bias we should avoid or not; whether it could be a useful and reliable signal in recommendation, or it may be unfairly rewarded by the experimental biases. We address this question at a formal level by identifying and modeling the conditions that can determine the answer, in terms of dependencies between key random variables, involving item rating, discovery and relevance. We find conditions that guarantee popularity to be effective or quite the opposite, and for the measured metric values to reflect a true effectiveness, or qualitatively deviate from it. We exemplify and confirm the theoretical findings with empirical results. We build a crowdsourced dataset devoid of the usual biases displayed by common publicly available data, in which we illustrate contradictions between the accuracy that would be measured in a common biased offline experimental setting, and the actual accuracy that can be measured with unbiased observations.

  • SuRF: Practical Range Query Filtering with Fast Succinct Tries

    We present the Succinct Range Filter (SuRF), a fast and compact data structure for approximate membership tests. Unlike traditional Bloom filters, SuRF supports both single-key lookups and common range queries: open-range queries, closed-range queries, and range counts. SuRF is based on a new data structure called the Fast Succinct Trie (FST) that matches the point and range query performance of state-of-the-art order-preserving indexes, while consuming only 10 bits per trie node. The false positive rates in SuRF for both point and range queries are tunable to satisfy different application needs. We evaluate SuRF in RocksDB as a replacement for its Bloom filters to reduce I/O by filtering requests before they access on-disk data structures. Our experiments on a 100 GB dataset show that replacing RocksDB’s Bloom filters with SuRFs speeds up open-seek (without upper-bound) and closed-seek (with upper-bound) queries by up to 1.5× and 5× with a modest cost on the worst-case (all-missing) point query throughput due to slightly higher false positive rate.

  • A Constant-Factor Approximation Algorithm for the Asymmetric Traveling Salesman Problem

    We give a constant-factor approximation algorithm for the asymmetric traveling salesman problem. Our approximation guarantee is analyzed with respect to the standard LP relaxation, and thus our result confirms the conjectured constant integrality gap of that relaxation.
    Our techniques build upon the constant-factor approximation algorithm for the special case of node-weighted metrics. Specifically, we give a generic reduction to structured instances that resemble but are more general than those arising from node-weighted metrics. For those instances, we then solve Local-Connectivity ATSP, a problem known to be equivalent (in terms of constant-factor approximation) to the asymmetric traveling salesman problem.

  • Authoring and Verifying Human-Robot Interactions

    As social agents, robots designed for human interaction must adhere to human social norms. How can we enable designers, engineers, and roboticists to design robot behaviors that adhere to human social norms and do not result in interaction breakdowns? In this paper, we use automated formal-verification methods to facilitate the encoding of appropriate social norms into the interaction design of social robots and the detection of breakdowns and norm violations in order to prevent them. We have developed an authoring environment that utilizes these methods to provide developers of social-robot applications with feedback at design time and evaluated the benefits of their use in reducing such breakdowns and violations in human-robot interactions. Our evaluation with application developers (N=9) shows that the use of formal-verification methods increases designers’ ability to identify and contextualize social-norm violations. We discuss the implications of our approach for the future development of tools for effective design of social-robot applications.

  • HighLife: Higher-arity Fact Harvesting

    Text-based knowledge extraction methods for populating knowledge bases have focused on binary facts: relationships between two entities. However, in advanced domains such as health, it is often crucial to consider ternary and higher-arity relations. An example is to capture which drug is used for which disease at which dosage (e.g. 2.5 mg/day) for which kinds of patients (e.g., children vs. adults). In this work, we present an approach to harvest higher-arity facts from textual sources. Our method is distantly supervised by seed facts, and uses the fact-pattern duality principle to gather fact candidates with high recall. For high precision, we devise a constraint-based reasoning method to eliminate false candidates. A major novelty is in coping with the difficulty that higher-arity facts are often expressed only partially in texts and strewn across multiple sources. For example, one sentence may refer to a drug, a disease and a group of patients, whereas another sentence talks about the drug, its dosage and the target group without mentioning the disease. Our methods cope well with such partially observed facts, at both pattern-learning and constraint-reasoning stages. Experiments with health-related documents and with news articles demonstrate the viability of our method.

If you want more, you can visit the Jeff Huang’s list.