Two weeks ago I had another opportunity to practice my public speaking skills. It took me some time to write this post, because in the meantime I spent few days in Krakow. And Krakow is a different state of mind.
This was anotherinstance of my introductory talk to F#. It went a little better than one on get.net, but still I think there’re things to improve. I got really good feedback from Gutek, who came to see this talk. There were also some other friends from Warsaw – some of them I haven’t seen for years. It was a pleasent surprise.
Warsaw .NET usergroup seems to be similar size to one in Gdansk. There were about 40 people attending. Interesingly, some of them came there for the first time, just because of the topic. Good news that F# is getting some interest in Poland. I got best ever set of question after this session. You could clearly see people are interested and want to know more. Really liked that!
What I didn’t like is that there were no networking activities afterwards. Fortunatelly, there were some friends mentioned before, so we went for some food and drinks. Overally good time, and I’m happy I managed to get there on my way to Kraków.
On the bonus note, I had with me ticket for leetspeak to raffle. Leetspeak is tretton37‘s conference, that we organize every autumn. This year it’s happening on 4th October in Gothenburg. Tickets will be available soon.
There are also good news. I’m doing new F# talk, focused more on cross-platform capabilities. Looks like I will present it on PolyConf and WarmCroc in next few months. I’m excited and terrified at the same time, because they’re gonna be my biggest speaking gigs.
Nearly two weeks ago I had my first opportunity to speak at a conference. Get.net was organized by Łódź branch of Sii and featured all kinds of talk about .net technologies. Among the speakers you could find many familiar and well known faces from Polish dev scene like Maciej Aniserowicz, Jakub Gutkowski, Basia Fusińska, Michał Śliwoń or Rafał Legiędź. I was humbled and honored to speak in such company.
Speaking at conference isn’t much different than speaking at user group. There were just more people and I had to use microphone. Unfortunately it was the kind of mike you have to hold in your hands and this made live coding quite a challenge. Many other speakers had that issue and I hope organizers will know better next time. Apart from that, conference was quite well organized. Also venue was really nice.
My talk was slightly modified version of one I did for tricity .net group last month. But this didn’t make me feel more confident about it. After all it went quite well and there were even some positive tweets. This is good, right? I hope this sparked some interest for F# in Polish .net community. Overall this was nice experience, and I will actively look for other chances to speak at conferences.
Last week during local .net group meetup I did my first technical talk ever. Well, I did present some stuff on internal meetings in company before, but never for so many people, whom I don’t know.
I was quite nervous before – for many reasons. First of all, I’m not some F# guru. I don’t feel fully entitled to share knowledge about it. I also don’t feel very confident in public speaking situations. But it all come around nicely. I’m generally satisfied how it went.
I’m presenting it again in one month at get.net conference in Łódź, Poland. Based on this experience, I will change few things in this talk. But in general, this was good training.
If you have doubts “should I present something at usergroup”, JUST GO DO IT. But before read Zach Holman’s hints on speaking.io. I found them very useful.
Slides from this presentation are on my github. Code examples I used, were mostly from tryfsharp.org.
In one of my next projects I’ll probably use F# + redis mix. I wanted to try it out, to get some general idea how it will work. I had no previous experience with redis, and I’m still beginner in F#. I wanted to do some end-to-end example for saving and reading data. My idea was to get some Bitcoin price from external service, save it to local redis instance, read it back and chart.
In this blog post, I’ll show how I got there, and what I learned in the process.
Installing redis on Windows
Redis is in-memory key value store. It’s very fast and can store data in few data structures – strings, hashes, lists, sets and sorted sets. Official releases run on linux, but Microsoft Open Tech group developed and maintains experimental port to Windows. And this version I used for my tests.
I simply downloaded code from github, build solution in Visual Studio, and run redis-server.exe from project folder. If you want to test some commands with client, run redis-cli.exe. And if you have no idea, what are the commands try.redis.io has pretty cool interactive tutorial, that cover some basics. Running redis from code build on your dev machine probably is not the best idea for production – I would instead choose to deploy it on some linux server. But for testing purposes it’s perfect.
Getting data from external service
That part was pretty straightforward. I decided to get data from bitstamp.net, because they API for Bitcoin ticker is super easy to use. It has some limitations, but I’ll get to this later. So I made request to https://www.bitstamp.net/api/ticker/ and parsed it using Json type provider from FSharp.Data package (you can install it with Nuget). Json type provider is awesome. After you feed it with some sample data, you have all your fields just “dot” away.
https://gist.github.com/mlusiak/7901990
One thing I learned hard way in this part of code, is that in currentPrice you need those parentheses. Without them, F# will treat the whole block (lines 13 – 15) as calculating value and binding it to currentPrice – not as a function. And because values are immutable by default, it will always “return” the same price.
Saving results to redis
To access redis, I used ServiceStack’s redis client. ServiceStack is great framework to access all kinds of webservices. You can install ServiceStack.redis package using Nuget. It’s free to use up to 20 types.
https://gist.github.com/mlusiak/7902309
You can see three approaches I took (the only difference are first two lines). First one didn’t work – it saved “empty” data (empty strings, integers equal 0, etc.). As Demis Bellot explained to me on StackOverflow, StackService rely on writable properties, which immutable records in F# don’t have. He suggested to use [<CLIMutable>] attribute (which I did in third approach). In between I found this blog post, that used mutable keyword on type fields. This also works, but is not as elegant as the attribute, because it exposes those mutable fields also within your F# code.
Getting data from redis
This was very straightforward. No issues here. It just worked.
https://gist.github.com/mlusiak/7903099
Charting the data
To visualize this data, I used FSharp.Charting library. To make it work, you have to install it with Nuget and reference some libraries like System.Drawing and System.Windows.Forms. I also had to load FSharpCharting.fsx file.
https://gist.github.com/mlusiak/7903123
And it works!
Bitcoin price 11th Dec 2013 around 2am CET
Putting it all together
To summarize – getting data, saving to redis, reading back and charting – all in around 30 lines (excluding referencing libraries) of F#.
https://gist.github.com/mlusiak/7903762
Two more remarks about this code. I call Bitstamp API every 31 seconds, because it gives new data every 30 seconds anyway. If you call it earlier, you’ll get the same data as last time. Second thing is this whole #if INTERACTIVE block. I don’t know why, but when I run code in F# interactive without it, it screamed about no references to libraries. I thought referencing them in project would be enough, but no. And if I wanted to compile and run .fs file, than it failed to compile with #r clauses in it (because .fs file don’t support them, they work only in .fsx files). #if INTERACTIVE allowed me to test code in F# interactive mode, but still compile and run this code as program.
Any comments about code, and way I did things will be appreciated. I’m new to F# world, and I am happy to learn what I could do better.
Last week I had tons of fun (and learning!) at Øredev conference in Malmö, Sweden. My full writeupis still yet to come, but as videos are popping up, I’d like to show you how well F# and functional programming in general were represented during conference. On second day, you could do a streak of 3 F# talks one after another!
This are links to talk pages, where you can find video (or in some cases not – hope it will pop up soon), grouped by presenters, sorted randomly. Let’s start with F# focused links:
Bodil also gave talk on implementing your own lisp (in Clojure, of course) at nearby Foo Cafe. This was pretty hardcore, and I didn’t get much from it. But it was recorded, so smarter people will probably make use of that.
As you can see, lots of functional love. As always you could always hang out with speakers between/after sessions and ask them (in my case) some lame questions or see them hacking around. Great fun, and good opportunity to learn new stuff.
Yesterday I went for a crazy trip to London. At least most people would call that, because for me it was perfect. It had all I like – flying planes, meeting great people and learning new stuff. I woke up at 3 to catch 6 AM flight to London. Then take a train to center, took part in Prog F# Tutorials and then went back to airport to get on 8 PM flight. I was back home around midnight.
First talk by Jon Harrop was about adopting F# by large insurance company. He talked about what are best ways to convince people to start using F#, what worked, and what didn’t. I would like this session to be more technical, but there were still few interesting points he mentioned. After that, public split into two rooms. In main one, Rich was live coding (with help of audience) to solve Bank OCR Kata. It was entertaining, and quite interesting to see how someone puts his F# knowledge to solve problems. The other group were solving F# Koans with Rachel Reese. After lunch went to Rachel’s workshop “From Zero to Data Science”. Based on tutorials, you can find on tryfsharp.org, we were “learning by solving” some extra tasks Rachel prepared for us. For beginner like me, some of them were really challenging. Another difficulty proved to be tryfsharp.org’s capacity. Around 100 people trying stuff out there killed the server and it started throwing 503s. Anyway, this was my favorite session of the whole day. In second room Robert Pickering was doing his Undertone session. And to wrap up, Phillip did quick talk about using F# in finance. Unfortunately I didn’t get to see Don Syme’s talk planned for the morning. He got stuck in Germany and didn’t get on time. Bummer, cause I anticipated this one the most.
The whole thing took place in the crypt below old church (this was Halloween! :)). This is so great place to host conference, so different than standard grey rooms. The only problem was, that it was not really wheelchair accessible. But Theo and his Skills Matter crew helped me get there. From logistics point of view everything went pretty great. There were constantly resupplied snacks and coffee, tasty lunch and beer for the end. Wifi worked with some issues, but it hold pretty well, considering over 100 people doing queries against tryfsharp.org.
To sum up – this was a good day. I am okay to travel halfway through Europe to get to events like that. I only wish I could also be there on second day, but maybe next year. I am really happy, that I met in person and talked to some F# pros, whom before that day I only followed on twitter. And Skills matter crew are awesome, and I definitely will look to attend their events in future.
BTW, if you are based in London are into F#, check out this meetup group.
I mentioned some time ago, that fall will be eventful. But I didn’t know about all the events. Everyday I learn about something new, and most of it looks really impressive.
During last two weeks I attended two really well organized events. First one on 12th October. This day I planned to be at leetspeak (BTW – videos are already uploaded) in Sweden, but due some health issues I had to stay home. But there were more than one backup options. There was Warsjawa (name is nice play on polish name of Warsaw – Warszawa and Java) – full day of workshop on various JVM related topics. Not for everyone, but agenda looked solid – lot’s of interesting topics. Oskar was there on some Scala workshop. I hope, he’ll do some writeup ;)
After all I chose dotNetConfPL, which was virtual conference – as name suggests – focused on .net stack. Virtual means, that session were presented on Google Hangouts (live!), and you could comment/ask questions/interact with speakers on Twitter and JabbR channel. It didn’t have this nice part of interacting with live people between and after the sessions, but there were some upsides. You could do your dishes and cook dinner while learning some unit testing stuff (ncrunch is awesome) or JavaScript magic. All speakers were Polish (or at least they spoke Polish), but they did their talks from various parts of the world. Level of presentation was very high. Generally I was impressed, how professionally it all looked and how smoothly all worked out. Huge respect to Michał, Paweł and Jakub who organized whole event. To see how it all worked behind the scenes and see recorded sessions look at Jakub’s blog.
On next Saturday I went to Meet.js summit which took place in Gdansk – my home area. I follow Meet.js meetings for some time, but they did never fit my schedule until now. Usually meet.js consist of 2-3 talks somehow connected with JavaScript. But summit was full day conference, with food, coffee and afterparty. I won’t talk about presentations, because JS is not really my thing. I enjoyed some of them, I didn’t understand other. But whole conference was again super professional from the organisation point of view. My teammate who writes lots of JS said, that talks were solid and well prepared. Venue (Amber Expo – conference center next to Gdansk Football Arena) is awesome. Really nice, spacey rooms for conference and great area to mingle between sessions. I also met few friends from University and spent Saturday surrounded by passionate devs. Love it!
If you count in DevDay which took place about month ago, this shows that Polish developer’s community is in great shape. This makes me very happy.
Especially, that’s not the end. This weekend Łódż will be packed with great events. Starting on Friday with .NET user group meeting and then Mobilization conf on Saturday (free as free beer, and there are still tickets available). Then on 16th November Makerland is organizing meetup for hardware geeks. If you like to play around with Raspberry Pi, Arduino or Mindstorm, this will be interesting for you. And of course there’s Øredev in Malmo and Build Stuff in Vilnius, which both will be invaded by quite big polish crews.
So, don’t stay at home – find an event that fits you and get some knowledge!
So two weeks passed and I attended another conference! This time it was Leetspeak by tretton37. It took place on 20th October in Malmö, Sweden.
When I was coming back from DevDay, Martin Mazur mentioned during our chat that they’re organizing this thing. It will have great speakers and will be super cheap (200SEK, in Sweden it is like 4 beers). And is already sold out. I knew I had to be there so this wouldn’t stop me, would it? Quick e-mail exchange with Peter, booking low-cost plane tickets, convincing my manager that paying for hotel in Malmö is awesome investment in my skills and I was all set up. Sweden here I come!
Because I’m on the wheelchair, usually when I travel somewhere, I have do to research. But I’m so used to the fact, that Scandinavia is wheels friendly, that I decided to be a little spontaneous this time. On Sturup airport I realized, that only bus option to Malmö operates those high buses/coaches, and they won’t be able to get me to the city (yeah Flygbussarna, you’re not cool). But it didn’t took a long time and some friendly Swedish couple asked me, If I need a ride. Well, that was unexpected. I heard so much about people here being closed, and this was just a first event to contradict that. The rest of the evening I spent roaming around Malmö center. It’s a very nice city, you should visit it!
The conference itself took place in venue called St. Gertrud. It’s like small conference center with auditorium for ~200 people and very nice area for networking between sessions. First talk was Hadi Harriri‘s “Developers: The prima donnas of the 21st century”. He warned, that he won’t treat us nicely, and he delivered up to promise. As developers we are not good in communication. We often try to work on wrong things based on personal ambitions and put businesss at risk. He was jokingly harsh for most of his talk. At the end, he gave us some pat on the back, saying that people don’t appreciate the value of our work, and we are central to business in the 21st century. This was good talk, to start the day with overally good mood. Next up was Gary Short, who talked about math stuff in programming, like big O notation and algorithms. Most of the stuff I remembered from University, but I would rather learn the way Gary shown it, than my teachers used to. And romanian folk dancers videos were cool ;). Martin Mazur and Mark Rendle gave same talks as in Kraków, so nothing new for me here. Rob Ashton gave talk about Node JS. It was targeted at more experienced Node devs, so for me it was kind of hard to consume. But at the end, he showed a way to test asp.net mvc projects and this was interesting. Look for project Zombify at github. Jon McCoy presented his suit of tools for .net application disassembly and modification. There was cracking live demo, fun stuff. In the last session Enrico Campidoglio showed, how to control history with git. He went through most common use cases of git, visualising them with Phil Haack’s tool. Enrico kept this informative, yet funny.
Somewhere in the middle of the day, there was surprise waiting for us. At the end of his talk, Martin said, that they have gift for us. That they want to give us something useful and awesome. Something to hack on. In the lobby there was a pile of boxes wrapped in gray paper with “1337” printed on. Inside there was Raspberry Pi board. One for every attendee. You could feel the Christmas atmosphere in the room. Imagine bunch of super happy geeks unwrapping little boxes with big smiles on their faces. It looked like that. Awesome conference gift, tretton37!
If I were to compare DevDay and Leetspeak in many ways they were pretty similar. Both being small community conferences, that you don’t have pay a lot of money for. Full of passionate people, who want to invest they time in learning. Talks in Malmö were more technical and I liked venue more. Although talks in Kraków focused more on soft side of being programmer, I needed that to get inspired and loved it too. I also prefer booze prices in Poland ;)
We had some fun in the evening. I talked with many Tretton37 ninjas, and they’re great people. All that stuff I heard about Swedes being closed and introvertic – it’s total bullshit. They’re very friendly and have awesome community. I hope to see them next year. Or even earlier.
Next day I headed home. Big thanks to Peter for organizing me transport to the airport! Plane was late, some Poles got arrested at the airport, but I didn’t care. I still had big smile after the conference, and head full of ideas how to use my Pi.
Last week I was at the DevDay 2012 conference in Kraków. Not the first conf in my life, but this was different. This one left some disturbing, yet inspiring thoughts in my mind. I suck. I’m a phony. And I need to do something about it. Like right now.
The conference itself had freakin’ awesome speaker lineup. Just look it up yourself. I got excited when I saw Scott Hanselman‘s tweet, saying something like “See you in Poland”. I knew I had to be there, and I would do everything to get there. Then I saw whole agenda, and realized that all speakers are very interesting people. And best of all – it was free. Totaly free, like free beer free. Even better, company which sponsored whole event didn’t want to stick it in your face. Just a little logo here, banner there, some leaflets. Very classy.
Scott’s talk was all about productivity, and how to get what’s important from information flood, we get everyday. Most of what he presented I have read before on his blog, so there was nothing groundbreaking for me. But having this all in one presentation, and seeing Scott live was really great experience.
There were other talks, that were much more technical. Rob Ashton spoke about how JavaScript sucks, and how you can deal with it. He showed some tricks and tools, that make JS development a little bit less painful. Sebastien Lambla gave a talk about HTTP caching. He had very energetic attitude, but I didn’t get much from his presentation. This lacked some visual aids or better examples. There was also talk by Mark Rendle in which he showed some less known coding tricks and techniques that he used in his Simple.Data and Simple.Web frameworks. This one showed, that for complicated tasks, there will always be complicated code. If you don’t see it, it must be somewhere under the hood. I’ll probably never use some of the tricks that Mark showed, but they were fun to watch. On the other hand I didn’t enjoy Antek Piechnik‘s presentations. It was full of slogans, without any specifics, and sounded more like advertising of his company than informative talk. And the end of the day Greg Young talked about how to quickly jump into new project and identify most important problems as a consultant. I don’t remember much of this, because I was really tired at this point. Seven 1-hour talks is a little bit too much, especially if you didn’t sleep much last night.
There was one not-so-technical talk during a day, that I found most awesome and inspiring. It was Martin Mazur‘s “Why you should talk to strangers”. There was technical part, that showed what kind of inspiration we as .net developers can have from other languages. Martin went through interesting concepts from languages like Ruby, Erlang or Haskell, and how they can be applied in C#. In the other part he focused what .net community can gain from looking at other communities. He compared how stiff in so many areas are guys coding in C# and Java compared to Ruby Developers. There is some notion, that our conferences must be dead serious and our frameworks must be named super professional, and there are no good reasons for that. There is nothing wrong in bringing marching band to conference. And “God won’t kill kittens if we name library silly” (that was one of my favorite quotes).
I also had a chance to fly back with Martin on one plane form KRK to WAW, so we could chat a little about agile practices and how to become better developer. I found this part of the conference most inspiring. I realized that I’m only few years younger than Martin, and If I want to grow as a developer, I need to change some things in my life. In couple of years ahead I would like to be more like Martin Mazur, and less like my coworkers who are his age.
Generally, the networking part of the conference was awesome. I met some great people like Michał and Rafał, who organized conference. I had chance to talk to speakers personally, which was great experience. I even had my “13yo-girl-at-Justin-Bieber’s-concert” moment, when Scott signed my t-shirt ;). Talks were good, but you can watch them on the Internet. To engage in interesting discussion with people, you have to be there. And have courage to talk to strangers. That’s why I’m planning to attend more conferences. Actually, while writing this words, I’m waiting for my plane to Malmö, to attend Leatspeak. More to come!
* This blog post is one of the outputs of the DevDay. I hope, this is beginning of my regular blogging. I wanted to do it for a long time, but didn’t know how to start. During conference Scott Hanselman told story that comedian Paul Raiser told in some podcast. Paul met the actor Peter Falk and asked him if there was a secret to writing a movie script. Peter Falk said “get some paper, put it in a typewriter, type FADE IN…and keep typing.”