Starred Notes from Indy.Code() 20171
I was lucky enough to hear about and get to attend the inaugural Indy.Code() conference last week. It was fantastic, with a lot of really relevant content, well prepared speakers, motivated attendees and well organized to boot. It sounds like they’re planning on another go-around next year already.. and I highly recommend you check it out if you can!
Similar to before, I’d like to share some highlights from the sessions I attended. 🙂 I also bolded the biggest takeaway from each session, in case you want to skim even faster.
Please keep in mind this is only my paraphrasing or lessons learned from each talk, and may not be even remotely accurate of what the speaker was trying to convey. We all hear what we want to hear.. 😉
- Searches on normalized data can be painfully expensive with recursion/joins, you need to denormalize
- Azure Search provides natural language processing, relevant scoring, recommendations, geospatial capabilities, faceted navigation and hit highlighting.
- NLP handles verb tenses, plurals, synonyms, etc.
- Message queues can be used as a processing queue to hold onto messages for later processing
- Message queues utilize a two-step GetMessage/DeleteMessage pattern with automatic configurable timeout to guarantee processing completes
- WebJobs can be setup to sleep/wake whenever a queue message arrives
- Kudu has site extensions (e.g. log browser)
- Sessions timeout in ~4.5 seconds, longer running operations are not available
- Custom skill responses include both the voice response as well as the card content to be shown in the Alexa app
- Custom slots are used for placeholder values (e.g. enumerations, search phrases)
- Super cool LCARS (GitHub source) demo was given. Impressive!
- Amazon actively gates publication of skills. Recommend overriding default intents (e.g. Help, Stop, Cancel), verifying requests are authentic from Amazon and generated within the last 2.5 minutes.
- Evolutions to motivation theory have generally been driven by psychology studies
- “It sucks to be a control group” – Arthur Doler
- Type I: Intrinsically motivated, self-renewable resource, money is a hygiene factor, perform best long run
- Type X: Extrinsically motivated, exhaustible resource, money is the end goal, short term performer
- A person can be Type I in some areas and Type X in others. Neither is right or wrong.
- To filter Type X, offer lump sum settlement to leave two weeks after hire
- “Hire good people and leave them alone” -William McKnight
- A data scientist is better at statistics than most developers
- A data scientist is better at development than most statisticians
- Spends majority of their time in ETL
- To get started, brush up on basic mathematics/statistics
- Do not roll your own
- Graphics cards can calculate 11 billion hashes per second
- Use a slower hashing algorithm to slow down brute force attacks. A user won’t mind 300ms vs. 1ms for login but huge impact to attacks.
- Vision is the ability to ability to see the soul/potential of the product
- People who help progress towards the vision are the ecosystem
- Your priorities should only come from the ecosystem, not always the same as employees/customers
- Maturity barrier – just because an idea is good doesn’t mean it’s ready to be accomplished
- There is no lack of communication.. UserVoice, votes, surveys, comments, etc. We’re inundated with opinions.
- Likes/ratings are proxies for a priority list. Ask for the priority list directly and weight based on alignment with the vision.
- Prioritization needs to be very timely (reset regularly)
- Microsoft Cognitive Services has Vision, Speech, Language, Knowledge and Search APIs
- Can use a Raspberry PI to communicate over REST to hosted Cognitive Services as well as integrate with IoT
- Language -> Text Analytics, review sentiment of reviews
- Vision has been used to power glasses for the blind (Video)
- SignalR abstracts over WebSockets, Server Sent Events and polling
- Browser link is SignalR driven
- Rx is good for aggregating/filtering streams (e.g. doing things like throttling/debouncing)
- Singleton, scoped (request) or transient lifetimes
- Doesn’t work for .NET Core, just ASP.NET Core
- Can use built-ins or externals (e.g. Autoface, StructureMap.. don’t use NInject yet)
- Great for sporadic, irregular workloads.. but does not replace your workhorses
- Pros: Lower operational cost, low complexity, easy to scale
- Cons: Relatively new, poor debugging, infrastructure/vendor lock-in limitations
- Reused switch keyword instead of the more popular match keyword to avoid backwards compatibility break with existing programs that use the word ‘match’ as a variable (yep I’ve got a few of those in CodeMaid)
- F# pattern matching is first class, C# is more of a bolt-on that isn’t as fleshed out
- Classic FizzBuzz can be solved using C# 7 tuples and when clauses on case statements.
Indy.Code() 2017 Summary
I was really impressed with this conference and want to say a big thank you to the organizers, speakers, sponsors, staff and everyone who participated.. well done and thanks for a great time! I hope to see you next year. 🙂