Hackathon ikincisi olduk

Merhaba bu yazımda sizlere Hackathon nedir? Süreç nasıl işler? Fishackathon nedir? Projemiz neydi? Nasıl dereceye girdik? Hackathon’da nelere dikkat etmek gerekiyor? gibi sorulara cevap vereceğim.

Öncelikle hackathon, programcıların, grafik tasarımcılarının, iş geliştirmeden sorumlu insanların takım oluşturarak verilen problem için aralıksız çalışmayla 24-48 saat aralığında değişen sürelerde bir çözüm sunmasıdır. Bu çözüm çok iyi hazırlanmış bir iş planı ya da bir mobil uygulama olabilir. Hackathon süresince ara vermeden, uyumadan ya da çok az uykuyla ürünü geliştirmek gerekmektedir.

Fishackathon, 65’den fazla ülkede eş zamanlı olarak düzenlenen deniz ve denizle ilgili araştırma alanlarında kalite, sürdürülebilirlik ve verimlilik için başta yazılım olmak üzere teknolojik çözümlerin geliştirilmesine odaklanan özel bir hackathondur.

Bizim katıldığımız 10-11 Şubat 2018 tarihinde İzmir’de Dokuz Eylül Üniversitesi Deniz Bilimleri ve Teknoloji Enstitüsünde gerçekleşen Fishackathon etkinliğine 18 farklı grup katıldı. 36 saat boyunca süren bu hackathonda Juri bizi en iyi ikinci grup olarak seçti ve ödüle layık gördü.

Fishackathon başlangıcında bize seçmemiz için 0nlarca vaka verildi. Biz içlerinden en iyisini yapabileceğimizi düşündüğümüz vakayı seçtik. Bizim seçtiğimiz vaka: Kuluçka tanklarını uzaktan denetleyebildiğimiz ve kontrol ettiğimiz bir mobil uygulamaydı.

Yaptığımız mobil uygulamanın web servisini ve simülasyonunu diğer arkadaşlar yazdı. Android kısmını ben yazdım. Bu yazıda sadece android kısmını anlatacağım.

Diğer kısımlarda ihtiyacım olacak kadar bilgi edindim ancak ağırlığımı kendi iş bölümü üzerinde tuttum. Projemizin Android kısmında neler kullandığımı açıklamaya başlayayım.

Projemizde takip etmemiz gereken depo tankları bulunuyor. Bu tankları sıcaklık, oksijen ve ışıklandırma süreleri parametleri ile takip ve kontrol edeceğiz.

Mobil uygulama son 12 saatlik verileri gösterdiği için şu anda grafik çizmiyor.

Projemizin Android kısmının tamamını Android Studio‘da JAVA programlama dilini kullanarak geliştirdim.

Webservis bağlantılarını AsyncTasks ile yaptım. Kendi web servisimizden aldığımız tüm verileri bu yapı ile Android ortamına çektim.

Webservisten çekilen verileri daha düzgün bir şekilde kullanıcıya sunabilmek için MPAndroidChart kütüphanesini kullandım.Bu kütüphanede tasarımsal olarak daha güzel olduğu ve bizim verilerimizi daha iyi gösterebileceği için LineChart (cubic lines) tipini kullandım.

Verilerimizin gösterildiği ekranlarda yükleme animasyonu olarak ve yenileme işlemlerinde progressBar ile zaman kaybetmemek için SwipeRefreshLayout kütüphanesini kullandım.

Tanklardan optimum değerlerin dışına çıkıldığında kullanıcıyı uyarmak için bildirim sistemi kullanmamız gerekiyordu. Bildirim sistemi olarak da OneSignal kullandım. Firebase sisteminin sunduğu bildirim sistemi daha kolay uygulanabilir olmasına rağmen bunu kullanma nedenlerimize gelecek olursam da hata anında bildirime simülasyondan görüntü eklemek gibi bir planımız vardı. Ancak zamanımız bu özelliğe yetmediğinden dolayı ekleyemedik.

Tankların genel listesini oluşturmak için List View kullandım.

Bu liste içerisinde tanklardan birinde olağan dışında bir durum oluştuğunda o tankın alanı kırmızı oluyor ve telefonunuz 2000ms titremeye başlıyor. Aslında titreşim eklesek mi diye düşündüğümüzde ekleyelim artı özellik olur demiştik. Kolay bir şekilde entegre edilen titreşim özelliği hocalarımız tarafından çok beğenildi.

Verileri çektik uygulamamız da kullanıcımıza gösterdik peki ya kontrol kısmı? Burda da şöyle bir çözüm düşündük. Optimum aralıkta olmayan değerleri kullanıcı arttırıp, azaltması sırasında bazı sorunlar oluşabilirdi. Mesela eş zamanlı olarak 2 kullanıcıya giden bildirim sonucunda 2 kullanıcınında değeri optimum aralığa getirmek için müdahale etmesi sonucunda ya istekleri listeleyip ona göre değerlendirme yapmamız gerekecekti ki kısıtlı süremizi olduğunda zaman kaybı demekti ya da iki işlemde gerçekleşecekti. Bu da aslında çok sağlıklı çalışmayan bir sistem olacaktı. Bende arttır, azalt yerine optimize et tuşu kullanılması konusunda takımı ikna ettim. Böylece aynı anda onlarca emir gelse bile web servis bunu optimum aralığa getir olarak algıladığından hiç bir çakışma olmayacaktı. Ve yazılım, sistemi tanımayanlar tarafından bile kolaylıkla kullanılabilecekti.

Android uygulamasında kullandığım teknolojiler bu kadar. Ancak bence bize büyük bir avantaj sağlayan simülasyon kısmıda çok önemliydi. Çünkü verileri gerçek zamanla olarak almamız neredeyse imkansızdı Eray bu nedenle kendi verilerimiz oluştuğu bir simülasyon sunmayı önerdi ve gayet başarılı bir simülasyon hazırladı. Eğer Eray blog yazısını yazarsa buradan onun da yaptığı kısımlara gidebilirsiniz.

Benim edindiğim bazı deneyimleride buradan sizinle paylaşmak isterim.

  1. Sunum süresini etkili kullanmak amacıyla takım arkadaşlarınıza süreyi bölmek ve bu süreye sadık kalmak daha iyi bir sunum yapmanıza yardımcı olacaktır. (Demoyu göstermek için sürenin %40’ı kaldı. Planlanan sürenin %80’i idi.)
  2. Sunum esnasından public bir ağ üzerinden demoyu göstermek yerine kendi mobil verinizi kullanmanız size büyük avantaj sağlacaktır. (Çok geç giden bir bildirim daha düşük bir puan almamıza neden oldu.)
  3. Projenize bir sürü özellik eklemek yerine çalışması gerekli temel özellikleri çalıştırdıktan sonra ek özellikleri eklemeye başlamak yarım bir ürün çıkarmaktan çok daha iyi olacaktır.

Sonuç olarak gayet uyumlu, çalışan bir ekip olduk ve güzel bir iş çıkardığımızı düşünüyorum. Sunum süremizi daha etkili kullanabilseydik daha iyi olabilirdi. İnşallah daha fazla Hackathon‘a katılıp daha iyi başarılar elde edebiliriz. Yazmayı unuttuğum, değinilmesi gereken kısımları yorumlar kısmından bana iletebilirsiniz.

Sevincimizi tüm İzmir’de yaşadık. 😂🤣

Bir önceki yazım TCDD Yaz Stajı buna da bir göz atabilirsin. Beğeneceğini umuyorum.

4 Replies to “Hackathon ikincisi olduk”

  1. Bu kadar kısa sürede böylesine bir iş yapmanız gurur verici. Dahası gelecektir, başarılarınızı takipteyim. (Y)

    1. Teşekkür ederim.

  2. Tebrikler instagramdaki url ile girdim blog unuza çok güzel bir yazı olmuş

    1. Teşekkürler.

Bir cevap yazın