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.
Last week I’ve been to Budapest to attend Craft Conference. This was first edition, but they started big. One workshop day, two day of talks. 3 tracks, around 25 speakers (just look at the lineup – it’s awesome), few hundred attendees. All that in beautiful Budapest. On the paper it all looks great
In reality… well, it was OK but not great. Many tracks were very low quality. Either not very skilled speakers, or speakers I know they could better, but seems like they didn’t care. Slots for talks were pretty short (around 40 minutes), and this could have ruined few talks – especially that speakers learned about it on place. Also organizers didn’t keep the time very rigorously, what caused that breaks between rooms didn’t sync. You often missed beginning of talk in another room, because previous one in the other ran longer. But the worst thing ever was the sponsors pitch for the beginning. Total mood killer.
But this sounds too harsh, because overall I had awesome time. Organizers managed to gather great crowd of attenddees. We also had big contingent from Poland. Some people I knew very well, other just from twitter and met them IRL for ther first time. It was nice just to hangout around venue, which BTW was very cool. Modern construction from steel and glass componed into some older building. Many places to charge your electronics and WiFi that worked for the most time. Really good choice.
As we talked with friends afterwards – we don’t go to conferences for the talks. That’s why we all very much enjoyed Craft Conference. Will definitely try to put it on my calendar next year.
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.
Miałem taki post w głowie od dłuższego czasu, a dodatkowego kopa dał mi wpis Gutka o Warszawskich grupach programistycznych. Problem polega na tym, że nie ma jednego miejsca, gdzie znajdować te grupy. Ich strony są rozrzucone po meetupie, fejsbuku i innych miejscach. To jest prawdopodobnie niekompletna lista grup działających w Trójmieście. Jeżeli kogoś pominąłem, lub informacje są nieaktualne/niekompletne, daj znać – poprawię.
Trójmiejska Zawodowa Grupa .NET www Tematyka: .NET, ogólnie o programowaniu Gdzie: Zieleniak, Gdańsk Kiedy: Każda druga środa miesiąca
Grupa .NET Politechniki Gdańskiej (grupa studencka) www || facebook Tematyka: .NET, ogólnie o programowaniu, przedsiębiorczość Gdzie: Politechnika Gdańska Kiedy: brak stałych terminów, spotkania odbywają się dośc często
Cocoaheads Tricity facebook Tematyka: iOS, mobile UX Gdzie: Pomorski Park Naukowo Technologiczny, Gdynia Kiedy: brak stałych terminów, spotkania mniej więcej co miesiąc
Google Developers Group Tricitywww || facebook Tematyka: Android Gdzie: Pomorski Park Naukowo Technologiczny, Gdynia Kiedy: brak stałych terminów, spotkania mniej więcej co miesiąc
Java User Group Trójmiastowww || facebook || twitter Tematyka: Java, JVM, ogólnie o programowaniu Gdzie: Gdański Inkubator Przesiębiorczości Starter Kiedy: brak stałych terminów, spotkania mniej więcej co miesiąc
meet.js Gdańsk www || facebook || twitter Tematyka: JavaScript, frontend Gdzie: Gdański Park Naukowo Technologiczny Kiedy: Brak stałych terminów. Spotkania w Gdańsku odbywają się mniej więcej co dwa miesiące.
Geek Girls Carrotswww || facebook Tematyka: ogólnie technologicznie, ogólnie o programowaniu, women in technology Gdzie: Gdański Park Naukowo Technologiczny ; Pomorski Park Naukowo Technologiczny Gdynia Kiedy: Brak stałych terminów, spotkania mniej więcej co miesiąc
TRUGwww Tematyka: Ruby, Rails, web development Gdzie: Sopot, Aleja Niepodległości 807/5 Kiedy: Trzecie środy miesiąca
PLSSUG Trójmiastowww Tematyka: SQL Server Gdzie: Siedziba firmy Hempel, Gdańsk, ul K. Szymanowskiego 2 Kiedy: W czwartki
Agile 3Mwww || facebook Tematyka: Zarządzanie projektami, Agile Gdzie: Klub Atelier, al. Mamuszki 2, Sopot Kiedy: Brak stałych terminów, spotkania mniej więcej co miesiąc
Warto jeszcze wspomnieć o dwóch inicjatywach. 3Hack (www || facebook || twitter) stara się zbierać w jednym miejscu informacje o technologicznej i startupowej scenie trójmiasta. It3c także informuje o spotkaniach grup technologicznych i zamieszcza oferty pracy.
Tricity is the area I live in Poland. This post is to summarize technology groups that are actively meeting in the area. Post is inspired by Gutek, who wrote about Warsaw usergroups (Polish). The problem is, that you can’t find this info in one place – groups are scattered all around internet. This list is probably not complete, so if you have some information that could be added here, don’t hesitate to tell me.
Tricity Professional .NET group www Topics: .NET, general software development Where: Zieleniak bulding, Gdańsk When: Every second Wednesday of a month Language: Polish
Gdańsk University of Technology .NET group (student group) www || facebook Topics: .NET, general software development, entrepreneurship Where: Gdańsk University of Technology When: no regular dates, but meetings happen very often Language: Polish
Cocoaheads Tricity facebook Topics: iOS, mobile UX Where: Pomeranian Science and Technology Park, Gdynia When: no regular dates, meetings happen around once a month Language: English
Google Developers Group Tricitywww || facebook Topics: Android Where: Pomeranian Science and Technology Park, Gdynia When: no regular dates, meetings happen around once a month Language: English
Java User Group Tricity www || facebook || twitter Topics: Java, JVM, general software development Where: Gdański Inkubator Przesiębiorczości Starter When: no regular dates, meetings happen around once a month Language: Polish/English
meet.js Gdańsk www || facebook || twitter Topics: JavaScript, frontend Where: Gdansk Science and Technology Park When: no regular dates, meetings happen around once every 2 months Language: Polish/English
Geek Girls Carrotswww || facebook Topics: general technology, general software development, women in technology Where: Gdansk Science and Technology Park ; Pomeranian Science and Technology Park, Gdynia When: no regular dates, meetings happen around once a month Language: Polish/English
TRUGwww Topics: Ruby, Rails, web development Where: Sopot, Aleja Niepodległości 807/5 When: Every third Wednesday of a month Language: Polish
PLSSUG Tricity www Topics: SQL Server Where: Hempel company building, Gdańsk, ul K. Szymanowskiego 2 When: Thursdays Language: Polish
Agile 3Mwww || facebook Topics: project management, agile Where: Atelier Club, al. Mamuszki 2, Sopot When: no regular dates, meetings happen around once a month Language: Polish
There are also two initiatives worth mentioning. 3Hack (www || facebook || twitter) is trying to gather all relevant informations about meetings on Tricity technology and startup scene. It3c also gathers news about usergroups and technology job offers in the area (unfortunately only in Polish).
I got into fun side project in node.js, and being Windows kid, I wanted to run it on my Windows dev machine. The thing is, it’s not that easy. Well, you can install node easily, and there is some tooling available too. The biggest PITA is that some packages are hard to build on Windows. And when you go through issues at GitHub, popular response seems to be “I don’t have any Windows box to test it and make it work” ;)
It took me several hours, but I managed to fix all the issues I had yesterday, so here’s my answer to some popular errors:
Error: Can’t find Python executable “python”
Npm (node package manager) uses build system called gyp, that runs some python scripts. It would be hard to find linux machine without python, but Windows folks often don’t have it, because they don’t need it. Me including. So install python first! They say 2.7 is good choice for gyp. And after that, add PYTHON env variable that points to your python catalog. Actually, it should point to your python.exe, because you’ll get another error I don’t remember right now (something about ENOENT).
MSBUILD : error MSB3428: Could not load the Visual C++ component “VCBuild.exe”
From what I read around Internets, this error affects Visual Studio 2013 users. It happens, because when you install node.js it has built-in node-gyp package. When you npm install node-gyp, this built-in instance is not updated, so you don’t have latest version. And sometimes it’s good to get latest version, i.e. to get VS 2013 support. This instruction helped me to update built-in node-gyp.
A little bit about tooling
I’m new to node.js and currently cannot decide what’s my favourite tooling. I’m switching between IntelliJ IDEA plugin, Node Tools for Visual Studio or running it manually from Powershell. All of them have their ups and downs. I like IntelliJ plugin, because it is stable and plays nicely. Node Tools for VS seems to have much potential, and integrate neatly with VS look and feel, but are *very* unstable (they’re still in alpha). One example – running project, where you lack some of the dependencies cause whole VS to crash. If you want to try them anyway, Scott Hanselman wrote nice introduction post.
Anyway, after fixing those build errors, node.js seems like something fun to learn. I may be covering this topic more in the future.
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.
Three weeks ago I was at Øredev conference in Sweden and had a great time there. I just wanted to share few thoughts about it. I won’t dive into specific talks, as there were simply too many. Just my general impression – what I liked, and what in my opinion didn’t work.
Øredev is well established, big, Scandinavian software conference. It’s held in Malmö, Sweden and this year the venue was Slagthuset – old butcher house. Really liked that place. Nice looking, spacy, wheelchair friendly.
Speaker list was long, but it kinda lacked big names. There were some rock stars, but not as many, as compared to similar in size NDC. Also level of
talks varied – some of them were awesome, but also there were some that just sucked. I liked (and wrote about already) that my new toy – F# (and
functional programming in general) were so well represented.
Usually during conferences you meet lot of great people, and Øredev was no different. I was told by people, who attended previous edition, that creating great environment for sharing knowledge has always been very important for organizers. And also – we had quite large Polish Crew, which made whole event even funnier.
Øredev usually has some theme, and this year this was “arts”. It had potential, but I think it was pulled too far. Some talks felt forcefully “artified” to match it. Also keynotes were more focused on arts, than software, which made them also “weird” and in my opinion mostly unsuccessful. I don’t think software conference realy need theme, especially if it come out so unnaturally.
I also had a chance to attend NDC earlier this year, and it’s hard not to compare those conferences. They’are similar in size, both held in Scandinavian cities with big software communities. Speaker list looked more impressive and talks were on higher level in general. NDC also had area, where you could watch talks when you were undecided. 8 screens (one for each track), you just grabbed headset, and you could switch between sessions. Now, this is slightly controversial – because you don’t get direct contact with speakers. But when you were tired and really undecided, this was good place to just take nap or switch between session to pick one. What I also liked about NDC is that there where no designated lunch times. Food was there all the time – continous delivery ;).
NDC forked this year, and there will be another instance in London. I won’t be there, but maybe you should try?
On the final note, I have subjective feeling, that I had much more fun during Oredev. In this place, I would really like to thank Emily Holweck, who made this trip possible. She convinced me to come, and helped me overcome all medical obstacles I had. She’s very committed to making Øredev great, and I believe this also impacted why I had so much fun there. Because at the end of the day it’s all about people.
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.